From time to time, like today, the topic of software backward compatibility comes up. A common issue is involves how many versions ‘back’ a software product should support. Restated: If I release Pedersen 10.0 (coming Monday, actually), should it have to support files from Pedersen 8.0, 2.5, 2.0.3? This is an age-old question for software companies: How many prior versions should we support? There are at least two balancing acts to consider.
First: How much effort must be expended to maintain backward compatibility? As your product goes through multiple generations, the object model (or ‘engine’) will change. Generally, when the object model changes so does the database (e.g. file format). Using an automotive analogy, you buy a small 4-cylinder car. The car manufacturer starts offering larger cars, they can go faster, but best equipped with 6, 8, or 10 cylinder engine models. As the car manufacturer, just how much time should you spend designing new engine mounts, stocking them in inventory (physical or digital), so your cars can use last-decade’s 4 cylinder engine? At what point is it simply ridiculous?
Requiring the car maker to do ‘something’ to let you plop your 4-cylinder engine into a car designed for a 10-cylinder engine is absurd. Yet that’s exactly the situation users routinely put software makers in.
The second balancing act revolves around determining when a customer’s no longer a customer. So, a customer bought a $100 word processing program designed to work on Mac OS 3.1, 15 years ago. The OS has evolved through numerous versions, completely changing platforms along the way (4 cyl now 10). It’s great, convenient, that the customer can still use that app today, 15 years later.
Now you, as the platform provider, have spent those same 15 years continuing to invest (e.g. spend cold hard cash) in your platform. The customer wanting to use that 15 year old application hasn’t made -any- further investment. Note, fighting to get it to work doesn’t count<g>.
The argument can be made that the customer with the 15-year old app, not having spent any further money with you, is no longer a customer. Now the question becomes: When is a customer no longer a customer? After 15, 10, 5, 3, or 2 years? After the release they bought is 1, 2, 3, 4 versions old?
Funny thing is, for customers who have matched your level of investment (e.g. you ship a new OS, they buy a newer compatible version of software) generally don’t complain about compatibility.