Warning:. Strong thoughts ahead. This article deals with Domino as an application development platform in a no-holds barred manner. This might make difficult reading for folks, especially those still following the IBM pied pipers and their message of spin. I'm fairly unapologetic about this, as I figure you have the right to be confronted with this, and make your own decisions. Remember: I love this damn plaform, and have been up to my neck in it since 1993. Its been 16 years of my life, and I believe that its difficult to make value judgements about something that pays your mortgage. But here it is, in all its glory.
Given the complete lack of marketing in terms of Notes these days, and therefore Notes' continued perception as 'Legacy', I - as the 'Best Damn Betamax Engineer in Europe' have been giving much thought to what would make it easy to transfer to other, more marketed, and less-perceived-legacy platforms. After a very long and entertaining chat with a chap representing Microsoft, I thought I'd write some of my thoughts down.
In Notes-land, we have two main types of development:
- "Fat Client" or traditional notes client development. Bread and butter stuff. Its not changed a lot over the years - heres a form, here's a view. Some improvements in terms of Eclipse, and the ability to create composite apps and widgets. However, in a 'Notes is legacy' customer, not much scope for rolling out 8.5 stuff, especially if the environment isnt Notes 8 yet. And lets face it, in a 'Notes is legacy' environment, unlikely to ever reach Notes 8. Horror stories abound at one major London based customer still using v4.5.
Forms and views, navigators, outlines, actions, lotusscript, formula. And between all of that, and the security stuff, a pretty damn good app can be constucted. Chris Blatnick's been blazing a trail in terms of making over these apps not looking like it last partied in 1999.
So how would this type of developer move onto the MS stack (or any other damn stack for that matter.).
- "Thin Client" or Web clients. These can be broken into:
Please for a second dont think that this is in any way a horrible or badly designed application - quite the reverse. Just that Domino seems to throw every barrier possible in your way. And this wont get better, believe me.. Show folks a typically complex domino app, and watch them recoil in horror. Getting folks who can debug these is hard.
Dont for a second think that this design end-point was intentional. Remember Lotus/IBM tried to migrate domino customers to Websphere, Portal, Workspace. Investment in the http stack was not a priority, it can be concluded. It was a hack back in the 4.5 days, and its a hack today. This was summed up to me by someone recently laid off by IBM as 'Russ Hates Notes Web Programmers'. Thanks, Russ.
Some other highlights:
- The formula engine was redone in v6 and has seen little action since. There was a stab at a debugger in v5, but it was unreliable, and killed off. No debugger means complex code takes a long long long time to write, and even more time to maintain. Yet, in some contexts, thats all we have.
- Lotusscript as a language hasnt been overhauled since v4.6 days. Yes, since 1997 or thereabouts. 12 years. Polymorphism, multiple inheritance, introspection, decent persistence (try storing a "list") - all have never happened. And lets be realistic - the language itself will probably never be 'improved' to drag it kicking and screaming into this century.
- Notes views are very cool - but certain things are still impossible. Programmatically setting the column titles, for instance. Which makes internationalisation very difficult. Wouldnt it be cool to create a view on the fly, in the same manner as an SQL join ? I think so too, but you can forget about anything as useful as that. Settle for a notesviewnagivator that doesnt actually crash the client.
- Forms. Wouldnt it be cool if we had a 'source' view of Forms, so we could find+replace across all the wee property panes in a form ? And not have to use design synopsis to find stuff ? Or a decent preview? Inbuilt CSS ? And so on, and so forth. Forms, Subforms, Views, Pages were all cool in the nineties. Now they're rather like the social area in a geriatric ward. Gods waiting room. Left there by underfunding.
- X-Pages, or The Return of the Jedi. Rolled out in 8.5, and hopefully reliable and able to run in the client in 8.5.1. Its a fairly opaque, very differrent programming style from the traditional Domino web system. Thank god. There's lots of good stuff on the web, and some very good stuff coming out in terms of Apps.
Folks in 'Notes is Legacy" sites will probably never see this, as it would probably reverse the 'Legacy' decision.And from our point, can we take our typical Domino Developer ("Captain Click, didnt do CS at college level, drifted over from business to this, knows how to do forms and views") - not without some serious training. And these days, training means 'review the free stuff on the web'. Most Domino programmers struggle at structured lotuscript with error handlers, and the lower-level ones run fleeing from Object Orientated Code. This is real 'Men from Boys' stuff.
Okay. So developing in Domino - and lets be blunt here - is pretty shocking. Its a whole heap of stupid compromises ("12k summary buffer") and hacks ("Domino Web Programming"). Okay, the good news is that it means that legions of offshore programmers arent charging 50 cents an hour. And the other good news is that there is - well - no other good news. If we want sexy fat and thin clients, then that means xPages, which means retraining in any case. And 8.5 upgrades.
Put bluntly, its a pretty bald statement, isnt it ? Now, its not 'rip and replace'. Old Spaghetti-the-business-critical-app can live on the same server as Mr Flaky, the shiny new one., All the old stuff will chug along happily on the new servers - somethig that other platforms find very difficult.
Okay, so we have to retrain and invest in oder to move onwards and upwards. If you, like me, see IBM's continued lack of investment in Notes marketing as a final nail in its coffin, and xPages as "too little, too late", then what to do? How to keep paying the mortgage ?
Do Nothing, and be an Undertaker
This is a pretty bleak market assessment - but there is money in being an undertaker. I'm doing something like it at the moment, and trying to learn new more market-focused skills. Remember, even five years after cc:Mails death in December 1999, over 1m people still used cc:Mail. Given Notes fundamentally complex nature, we can also expect a similar shallow slope should Notes go the same way. Undertaking is also a pretty cushy number - just keep these critical apps happy, with little or no enhancement, and everyone's happy.
Just dont forget to keep looking over the shiny new technology as it rolls in the door, and make decisions as to which one you feel will pay most.
Evangelise, Join the Little Yellow Bubble, and buy a tamborine.
Okay, this is more than a little hippocritical of myself, as I felt I was an evangelist, until I had a wake-up call: (time for a rambling aside)
I realised, in a meeting with senior IBM VPs in January, that their mortgages were not dependent on Lotus Notes being successful. They didnt show the sort of commitment that the room full of Business Partners had. Most of us had actually staked our careers, mortgages, success, on the Lotus Notes platform. And when I realised that they thought they were in a room full of nutters, all of whom were far more enthusiastic about an application platform than they were, the moment happened.
These guys believed in their hearts that they were there, 'loving' business partners as IBM claims to, as a way to further their careers, and not the product. Weasel words were said, strong emotions were placated, the nutters were patted on the head, and encouraged to continue risking their houses on Lotus Notes. No commitment was given, none was expected, and by god us BP's in the room were absolutely convinced that nothing would happen. (Guess what - nothing did). But somehow, just being rubbed up against such important (if basically useless) people would be enough. And most of the time, I guess it was. Certainly this year was the first year in many that I got the 'morning after' 'I promise to call' treatment.
And so in my case, my bubble was burst. Promises were analysed for actual content, delivery measured. And my faith - and lets face it, in the little yellow bubble all we had was faith - evaporated.
So as you can see, a relationship based on faith, or a relationship based on empty promises, can disappear as quickly as it comes. Other bubble people have disappeared - but in a far less vocal manner.
The positive news is that you dont actually have to have real content to be a mover and a shaker in a closed, dwindling community. Some people mistake quantity for quality, connetions for influence, and volume for truth. Tub-thumping works, it would appear.
"Why get attached to Lotus Notes? Its just a business application!"
And now we come to the vast majority of Notes guys out there. People who couldnt really care less who knew about Garnet, who's having who's baby, or which Lotus person was in bed with what Lotus person. To them, Notes is something that happens at work, something to be endured, something to do work on.
Would this person bother going to Lotusphere ? Go on training ? Come to a Lotusphere comes to you ? No. Absolutely not. They do Notes, they do other technologies. Its just work. And good for them. Not for them the wasted evenings spent blogging about some arcane, pointless and useless minutae of Lotusscript behaviour. Not for them the desire to bend beyond believe the application model.
I'm in increasing contact with this group and its refreshing being able to discuss positives and negatives of multiple platforms without being accused of heresy. Without having to deal with 5,000 word eMails from OCD inflicted individuals, because you might have suggested publically that the Lotusscript debugger might be crap. (Heads up, folks. The Lotusscript debugger is a huge pile of steaming crap. Bummer if this is where you spend 50% of your time, eh?)