Before I started to work on Bluemix I had worked 15 years in the IBM Collaboration Solutions space, especially on application development. Below are my personal thoughts on how app dev in IBM Domino could evolve, both on-premises and in the cloud.
App Dev Models in Domino
Since Domino has been around for a long time the app dev capabilities have grown. At this point there are developers who build rich client applications via forms and views, there are developers who use Domino pass through HTML, XPages developers who use XPages for server and client side logic, developers who build REST APIs via XPages and frontends via client libraries, etc. The good thing for Domino developers is that none of the older capabilities were removed, but instead new functionality was added on top. I think it’s time to add yet another way for developers to build applications on Domino, again, without replacing anything that exists today.
Node.js Runtime in Domino
Collaborative Line of Business Applications
Based on my experience most applications built with Domino are collaborative Line of Business applications. Here is how I define those:
Line of Business requirements often lead to the development of new applications since standard software is not sufficient. Collaborative applications allow employees to work together synergistically to get their jobs done. Collaborative Line of Business applications often require the protection of intellectual property based on roles of employees. Samples scenarios are approval workflows, teamrooms or travel expenses.
Adding cognitive Capabilities to Applications
While collaborative applications have been around for quite some time, I think the next generation of these types of applications will be significantly different. I expect new collaborative applications to heavily include cognitive capabilities, for example to provide highly personalized experiences, to leverage deep learning to detect important information for individuals via personal assistants or to use intelligent bots for conversations. Collaboration in the past seemed to have focused on the team aspects. In the future I think the personal aspects will get more focus and cognitive services and artificial intelligence can address this. Additionally natural user interfaces like speech recognition and gestures will become more and more adopted and context information from the Internet Of Things will be used to optimize collaborative experiences.
IBM provides this and more functionality, for example via services in IBM Bluemix. While Node.js applications are not the only way to consume this, they make it very easy and there are tons of examples for developers available today.
Rapid Application Development
With all the available tools, libraries and documentation I think it’s fair to call Node.js a rapid application development platform. However there is an extension of Node.js which makes it even easier to build collaborative Line of Business applications – LoopBack. LoopBack is an open source Node.js framework to build APIs and an extension of the popular Express server. Developers from the company StrongLoop are the main committers and IBM acquired StrongLoop a couple of months ago.
LoopBack comes with a connector framework to work against various databases. I think it would be great to add another connector for NSFs. Via Passport LoopBack also supports authentication against different directories and a Passport strategy for Domino could be developed similarly to the IBM Connections strategy.
Relation to Bluemix
The obvious question is how this relates to Bluemix and the cloud. It needs to be possible to deploy collaborative applications to Bluemix and use other Bluemix services, for example cognitive and IoT services, as described above.
Bluemix supports various runtimes like XPages and Node.js. So hosting the business logic on Bluemix is simple. The question is how to handle the data as long as the XPages NoSQL Database is not available for production usage. Here is an idea.
Bluemix provides several databases as services. One database I really like is the NoSQL database Cloudant which is based on Apache CouchDB. There are a lot of similarities to NSFs, certainly also because of the history. So why not using this database in the cloud? To make it easier for Domino developers to switch between on-premises development against NSFs and cloud development against Cloudant, maybe the Cloudant Node.js API could be implemented against NSF? Also if LoopBack is used changing the underlaying database is trivial and doesn’t require any code changes.
As I said these are just my thoughts and ideas. Just wanted to throw this out for discussion since people seemed to be interested in this at EngageUG and recent discussions I’ve had.