Wednesday, August 31, 2011

Lotus Notes as a Platform

Recently, we have been exploring different software platforms as possible alternatives for our future development efforts.  As with all platform choices, it's not an easy decision.   However, as I have been thinking about this, I've had some soul searching around using Lotus Notes as a platform - which for all practical purposes, we have been using for many years.

These possible platform choices kinda look like this:
Spring + SQL variant
Spring with Groovy and Grails + SQL variant
Ruby and Rails
Node.js (maybe with CouchDB)
Microsoft .net + SQL Server and IIS

While I can debate the merits of all of these platforms, the one 'platform' that we are cautiously re-evaluating for future development is Lotus Notes.  That is a bit strange, since Lotus Notes is inherently a platform - and a pretty awesome platform at that.  Notes includes some great stuff - most of which is just starting to show up in other environments/platforms.

Let me count the things that I like about Notes (as a platform):

  1. Fully functional and robust multi level security model - server, database, document, field level
  2. A 'no sql' database without the pain of relational data models
  3. A replicating database - that is  really fast - even over slow connections
  4. Internal directory management and hooks to all popular directories
  5. Rich development environment including support for Java, xml, JS, Lotuscript, etc..
  6. Nice deployment model (using templates and replication)
  7. Server based management tools and very rich admin tools
  8. HTTP stack - although the servlet container and other tools are dated
  9. Ability to easily update development, testing, production environments by simply updating database templates and replicating databases
  10. Stability and scalability

Here are many of the standard issues/platform consider impediments that we experience with Notes - most of which will familiar to folks in the Notes field.

  1. We will only be able to sell into existing Lotus Notes shops
  2. No good cloud based runtime model/hosting scenario - or good runtime model that works in 'non Notes' shops
  3. Licensing is confusing and expensive
  4. Young employees/prospective employees don't understand the platform or have any skills
  5. I don't think IBM considers Lotus Notes as a viable platform and they (IBM) would like to see folks move to their industrial strength platform - Wepsphere

So, as we consider future platforms, and hear young developers espouse the virtues or Ruby/Rails, Spring, 'no sql' databases that just deal with name/value pairs, etc, I'm always brought back to the idea that many of these platforms are repurposes functionality that has been available in the Notes community for many years.

So, we will take the relatively safe approach and stick with Java, Spring, Groovy, JQuery, maybe some Grails, and then mount a standard SQL db under the covers.  We will run under Apach/Tomcat and use standard libraries such as Log4J, Velocity, etc..