Wednesday, July 19, 2006

Backward Compatibility

Most people like to have newer version of a program since it will bring new feature or functionality, new design, contains bug fixes, and a lot of other reason. But this fenomena doesn't apply to System Administrator or Developer, since they have to think twice to upgrade some components when they need to preserve backward compatibility with the old version to ensure that old data will work in the new program and also the new program can read and understand the old data or else, people will have to re-work to make it compatible with the new one.

For sysadmin, it happens when there's some kind of major upgrades, such as kernel updates, or library updates. Some application need some specific requirements, but it was considered old, so the sysadmin will have some kind of dillema on this. On the other hand, (s)he wants to have the system running all the time without downtime, but in the other hand, (s)he will have to think the security of the application. Old version tends to have unfixed bugs and it has been fixed in the newer version, but if the newer version needs to upgrade some other components which are being used in other applications as well, that will be some headache for the sysadmin :D

For developer, new features are expected, but it causes a lot of compatibility problems also, since the new feature must (or should be) backward compatibility with the old application, or worst, it must be forward compatible with some features that are being planned to be implemented in the future. It requires a lot of planning in the systems architecture in order to make a good application which can solve this two major problems. Other problem that make developers had an instant headache is the requirements that it should be compatible with other formats.

One good example is Microsoft's next Office product Microsoft Office 2007 which will use OpenXML format that was urged to be compatible with the OpenDocument Format (ODF) which is now a new International Office Standard Format. They have to provide a new converter for this two kind of different format (but both are based on XML). have this kind of problems also when they wanted to switch from their old format to the new ODF format which was started at OOo 2.x. They released 1.1.5 to give customer some way (by using filter) to convert the old format to the new format (issue 34353) besides bug fixes.


  1. For the convenient of a humble end-user, backward compatibility is a must. The ODF-old format converter is essential.

    For sysadmin, backward compatibilty is depend on system architecture in overall. The essence of "system upgrade" is to bring more best practices. So why we still use old way since there are the better way?
    At least, that's what sysadmin paid for : dealing with the headache of system migration. Hehe.

    For developers, backward compatibilty often mark as "depreciated" component. In free way, means : "don't use it because we're no longer maintain the old library".

    One thing to keep in mind that backward compatibiliy is only for short-term. Sooner or later, we have to deal with the headache.

    In our case, we can take shortcut like this.
    Mark all old format API as depreciated, better yet eliminate them. But at the same time, maintain a converter for our humble end-users using the new API.

  2. Thanks, Nice comments :D

    well, yes, but sometimes it takes some time to get it better, since sometimes, new packages broke the backward compatibility with the old one. It will be safer if we have some kind of testing system where we can simulate the upgrade process first rather than directly upgrade the main server