Ok, so I pointed out a couple of things to the developers full applications based on the entries to the OpenNTF Development Contest that I judged, now it is time for the developers of the controls.
Make use of the OpenNTF Import/Export Plugin.
There is a great project on OpenNTF that allows you to generate a zip file containing your nsf/ntf along with the license files and a special importlist.xml file that specifies exactly which design elements make up your control. Once this is uploaded to OpenNTF other users can use the same plugin to copy those exact design elements to their application, this will make your control much more reusable.
Create A NameSpace for your design elements
Decided on a prefix for all your design elements that make up the control so that when they are copied into another application there is a much lower chance that they will clash with any other existing design elements. For example I might name a graphic as qtzar_alerts_accept.png rather then accept.png so I know I don’t have to worry about another control that also uses accept.png. The developer using your control will thank you as they won’t have to make any changes to the code to avoid a clash.
Is your control more suited for an Extension Library
If you have developed a fairly complex control that has lots of options and external graphic resources etc. then you should take a look at the Starter XSP Kit project on OpenNTF and learn how to convert your control into an Extension Library. Now that OSGi plugins can be easily deployed to the server via an UpdateSite NSF the admin has no excuse for not deploying the library and by putting your control in a library you make it easier for the developer who doesn’t have to worry about copying in all the other required design elements.
Don’t require server file system changes
A couple of the controls that I judged required that I make changes to the file system on the Domino server, This included changing the java security policy file and in some cases also required adding additional file to the CKEditor system. As an admin I’m going to need a very good reason to change/add files at the file system level and mainly because if I do a server upgrade some of these files may be deleted or reverted back making my upgrade process longer then 5 minutes. For a single control this reduces the reusability significantly.
I’m sure there are a few more, if you have suggestions then please feel free to leave them in the comments.
Great tips, Declan. I wrote about this a longer time ago and only about custom controls as opposed to all types of reusable controls.
However it should really be updated: http://heidloff.net/home.nsf/dx/07202011021359AMNHE9BT.htm
Serdar had also good input.