Search

Mobile tag

About Me

I am the "IBM Collaboration & Productivity Advisor" for IBM Asia Pacific. I'm based in Singapore.
Reach out to me via:
Follow notessensei on Twitter
(posts)
Skype
Sametime
IBM
Facebook
LinkedIn
XING
Amazon Store
Amazon Kindle

Twitter

Domino Upgrade

VersionSupport end
5.0
6.0
6.5
7.0
8.0
8.5
Upgrade to 9.x now!
(see the full Lotus lifcyle) To make your upgrade a success use the Upgrade Cheat Sheet.
Contemplating to replace Notes? You have to read this! (also available on Slideshare)

Languages

Other languages on request.

Visitors

Useful Tools

Get Firefox
Use OpenDNS
The support for Windows XP has come to an end . Time to consider an alternative to move on.
StopTheSecrecy

« If it isn't in a regulation, it's not German - DIN SPEC 77224 Customer Experience Management | Main| From Data to Knowledge »

Backward compatibility - damn if you do, damn if you don't

My blog entry When Sofware matures you need to cut development to stay profitable, isn't it? stirred more feedback than the elaborate comment from Nathan and Phil. So there are much more thought to share when looking at backward compatibility. In his famous 2004 article How Microsoft lost the API war Joel Spolski explained using Microsoft as example how two camps, which he labeled The Raymond Chen Camp and The MSDN Magazine Camp are at odds with each other regarding backwards compatibility. Go read the entry, I'll wait for you. Joel and Nathan rightly point out, that backward compatibility is often taken for granted and is increasingly expensive (Apple worked around that using Rosetta, but from a way smaller base).
So what happens if you don't pay attention to backwards compatibility: customers will be very reluctant to upgrade since applications (especially custom applications) need to be upgraded and your version upgrades become a mayor exercise that gets cut once a customer hits rough water. In the end your speed of innovation slows down and you need to support a lot of old versions. What happens if you do: Nathan outlined that already.
So damn if you do, damn if you don't!
As the going joke goes: "God would not have been able to create the world in seven days if there would have been an installed base to take care of". The biggest challenge I see is the incredible creativity how platform APIs are used (and undocumented functions are handed from developer to developer as secret tip - you are lame if your program doesn't use any) and abused. Part of my job is to look at existing applications and I've seen a lot of code that made me cry (and laugh: like the Chinese application where everything was Chinese including field names and LotusScript variable names - yes you can do that in LotusScript). So what's the way out? Eventually we need to borrow a page from Wiliam Goldman. In his novel The Princess Bride he retells an abridged version of an older story, "just the good parts". So how would that look like for software:
  • Make upgrade management part of the software. For Domino it is a joke that updates and patches need to be downloaded manually and distributed manually. The Linux packet managers solved that problem. I would expect a page in Domino admin to allow to do that. Eclipse update can update clients automagically, so we could use that
  • Provide analysis tools. Teamstudio has the Upgrade Filters, but they don't go far enough. Well behaved code usually doesn't pose a problem when upgrading, the code I've seen will (think fragile). For browser JavaScript there is JSLint (its original tag line was JSLint will hurt your feelings), for Java there is Lint4J and Crap4J. We need such a tool for LotusScript, so overuse of client events, unencapsulated OS calls and missing Option Declare statements don't go unpunished anymore (because you can do something doesn't mean you should. Don't believe me? Try to poke yourself in the eye - you can do that). So where's the LSLint and the @Lint?
  • A upgrade pilot would show functionality that is depricated in this version and will be gone in the next. It would make a nice RTC plug-in.
  • A data conversion sandbox. If data in an older format is found it is put into the sandbox and can only graduate after update
  • ... insert more witty ideas here ...
I'd really like to see the lints.

Disclaimer

This site is in no way affiliated, endorsed, sanctioned, supported, nor enlightened by Lotus Software nor IBM Corporation. I may be an employee, but the opinions, theories, facts, etc. presented here are my own and are in now way given in any official capacity. In short, these are my words and this is my site, not IBM's - and don't even begin to think otherwise. (Disclaimer shamelessly plugged from Rocky Oliver)
© 2003 - 2014 Stephan H. Wissel - some rights reserved as listed here: Creative Commons License
Unless otherwise labeled by its originating author, the content found on this site is made available under the terms of an Attribution/NonCommercial/ShareAlike Creative Commons License, with the exception that no rights are granted -- since they are not mine to grant -- in any logo, graphic design, trademarks or trade names of any type. Code samples and code downloads on this site are, unless otherwise labeled, made available under an Apache 2.0 license. Other license models are available on written request and written confirmation.