Over the last 1.5 years we at OnTime have been making a serious investment into rewriting our backend for the OnTime Group Calendar product. The most fundamental change has been the change from a traditional Notes/Domino application (if it ever was a such) to be a server/API first approach. This means that there's now a layer of separation between the business logic on the server and the business login in the clients namely the API. The API is now king!! It means that most, if not all, knowledge about the server operation and data storage has been removed from the clients and server and clients may evolve indepently of one another.
Another key benefit of an "API first" approach is that new exciting UI's and uses of the OnTime data has started to pop up as it's now easy to get going. As an application developer you do not have to worry about the OnTime backend or even worry about Domino. As long as you have HTTP access and may use JSON you're all set.
As an example of where you've seen the power of the API approach - maybe without thinking about it - is in Mail and Calendar in Notes 8+. Think about how adding Java views to the "mail and calendar experience" in Notes 8+ has allowed the "mail and calendar experience" to leapfrog the rest of the client. This is because there's a layer of separation between the data and the views and it allows them to evolve separately and at different paces.
Redesigning OnTime to an "API first approach" hasn't been a smooth ride all along and sure there has been things we've changed along and way and the API backend has been rewritten more than once. The key is however that the interface to the API has only changed once which really wasn't so much a change as a move to a new, additional, data format for the response messages. This has been key as it allowed the clients to stay constant while the API changed.
The server side API has been written in Java all along which has been a very good choice for us. The request and response messages started out being in plain text in our own proprietary format which worked out well in the beginning but it has become clear that the end user (programmer) still needed a fair amount of knowledge about OnTime to use the API. Over the last 7-9 months we've made a transition from first plain text in/plain text out, over plain text in/JSON out to a place where we're now completely JSON in/JSON out. Taking it slow has been important as not to break any clients meaning our own clients or any customer API programs there might be out there now since we opened up the API for purchase.
One thing we've learned however is that API versions in the "real world" needs to coexist and we really couldn't rip and replace. We've now move to a model where the user of the API sends an expected API version number along with the requests to signal what API version he/she expects to be returned and the API will honor that. This means that we've managed to move along while still maintaining backwards compatibility. Furthermore we are quite safe that we will be able to futher evolve the API while shielding customers and clients.
The real beauty about the API is the Domino application server though.
We have implemented and evolved on the API from day one using nothing more than a standard Domino server - running the HTTP task if HTTP access to the API is required - using standard Java agents. No fancy OSGi plugins here (yet!) - everything is plain ol' Domino. Keeping everything on Domino has also allowed us to easily leverage the API in an integration problem we're doing at a Danish customer at the moment (more on that in a later post). How? Using the web services framework available in Domino of course. Nothing fancy there. Just add a web services endpoint to respond to a SOA server and we were golden - it too scales extremely well.
Builing on Domino hasn't limited us in any way yet - quite contrary. It has allowed us to add additional application endpoints using the easy of development approach of Domino and it has allowed us to scale well beyond thousands of users (think 15.000+ users) without problems. All this and still allowing us to seamlessly service clients from Domino 7 and upwards. So sweet.
Below is the API stack we're using as you can see Domino feature prominently at the bottom of the stack.
(click image for a larger version)
So start building you own API's for your Domino apps. It will be very much needed to get the full potential from Notes 8.5.4 Social Edition and the embedded experiences support in there. It's all nothing if there is no API to read from. If only there were a Domino oAuth provider... Oh well - I'm sure it will all be there in good time.
So I'm back from a 16 day travel which had me home for 50 odd hours after the 5 days away. First Boston for the Leadership Alliance in Boston which of course - as seen other places on the interwebs is very hush hush - and then Tokyo for 8 days to meet up with our OnTime partner there. The trip was far easier from a jetlag perspective than what I had expected but then again I usually cope with jetlag very well. I did come back with pneumonia though :(
As mentioned what happens at the Leadership Alliance stays at the Leadership Alliance but suffice to say that it was indeed VERY interesting. If you are wondering whether IBM Connect 2013 will be worth attending it would be a resounding YES!!!! from my point of view. The message is better than it has been for a long while if you ask me. Of course IBM still needs to execute on it but man it's looking good!
In Tokyo we joined our partner at the booth at the annual ITPro Expo. I'll do a separate blog post on our adventures in Japan and how the event went as it really deserves it. Also it should be a lesson to many IBM Lotus Notes/Domino markets out there as it clearly shows why Japan is a thriving and vibrant Notes/Domino market. They do so much stuff right marketingwise and leaves so many markets in the dust. Including Denmark. Really. It was very interesting to see.
Now once I'm off this pneumonia thing I will be back in full swing. Stay tuned.
The agenda for the upcoming Social Connections IV event in Amsterdam is now public and I'm happy to say that it includes yours truly. I will do a 30 minute introduction to the joys of widget development for IBM Connections. I'm pretty sure that there are still slots available for the event so if you're in Europe on 30 November and you're working with IBM Connections you really should join us. Oh - and bring your customers...