I have just finished up judging all the entries for the OpenNTF Development Contest and I must say there were some great entries, it certainly wasn’t an easy job trying to pick out the best so I went about my scoring criteria slightly differently. I started by giving everybody full points in each category and then deducted points based on different things that I found. Unfortunately a lot of the apps didn’t pass some of what, in my opinion, are fundamental points when it comes to application development in Notes/Domino.
Here are some of the points that developers of full applications should look at for future contests.
Learn how to use templates
All of the entries that I looked at were NSF files that you had to copy to the server and sign. While this is no problem for the initial deployment of an application what happens when you have an upgrade? Full applications should be distributed as an NTF with all it’s template information filled in. Then your deployment instructions are copy the NTF to the server, sign and create a new database based on the template, for an upgrade it is copy to server, sign and do a refresh design of your production application.
Set a default ACL in the template
When using a template based approch for application you can set up the default ACL for databases created from the template that is different from the ACL used for the NTF file. This is done by adding your default ACL entries to the NTF but surrounding them with square brackets. So if the ACL entry -Default- needs to have no access then you would add [-Default-] to the ACL of the template with those rights. This helps the admin ensure that when a new databases is created from the template the ACL is 90% configured correctly.
Detect when your app is not configured
Some of the applications in the contest needed configuration to be done before they could be used successfully however in some cases the applications main homepage appeared with error messages instead of content. Rather then let these errors be displayed you should write some routines to detect if the configuration has been done or not. If not, redirect to a configuration page or a page explaining that the app needs to be configured. If you need a role in the ACL to configure the app then detect that also and let the person know if they don’t have the role. If an admin sees errors on the first run of an app there is a higher probability that they will just delete it as not working correctly.
Test your app in XPiNC and disable it if if you don’t support XPiNC
When you create a new application from a template the first thing that the Notes client does is try open the database. If you have set the launch options for the notes client to open your main XPage then you should test to make sure that it works in XPiNC. A few of the entries just produced an Error 500 message on screen when they initially opened in the client. My suggestion here would be to create a traditional ‘page’ design element that explains that the application should only be used from a web browser pointing to the server.
Documentation should be in the archive from OpenNTF
A number of the applications in the contest didn’t have any documentation in the file downloaded from OpenNTF. No setup instructions, no usage instructions etc. When the app was finally running on the server there was a link to the developers website where they had either documentation or a blog posting explaining the app. This is not documentation, your site could be down or you move to a different system.
These are just a few of the things that I looked for when doing the judging and I’ll be the first to admit that sometimes I cut corners and forget to do things like the default ACL on full apps but that last bit of fit and finish is all that stands between your app being used in a corporate environment or been deleted because it didn’t work immediately.
Oh and if you submitted a custom control to the contest your not going to get off easily, I’ll have some pointers for you in a following blog post.