Garrett Rooney wrote an article called “Preserving Backward Compatibility” where he talked about how backward and forward compatibility is maintained for Subversion, client/server source control management (SCM) system. Garrett talks about the importance of planning ahead, not throwing anything away, and of hiding the details. He also talks about exposing and hiding the dependencies of your API. This is a great article to read about how backward compatibility is maintained in a complex real-world system.
Symbian’s API Change Control Process
![]() | Wednesday, September 8th, 2010 |
The Symbian Developer wiki defines a process for public API changes to the Symbian platform. This involves a submitting a Change Request (CR) to an Architecture Council for approval before code is integrated. The main principles of their API development process are:
- Public APIs must remain backwards compatible during their lifetime.
- Public APIs can be extended with non-disruptive changes.
- Public APIs must go through a deprecation period before removal.
For details, see:
The API process is illustrated with the following figure:
KDE’s Binary Compatibility Policy
![]() | Wednesday, September 8th, 2010 |
The KDE Project offers some guidance on the difference between source and binary compatibility, and provides a great list of Do’s and Don’ts if you want to maintain binary compatibility for an API.
This document defines binary and source compatibility as:
A library is binary compatible, if a program linked dynamically to a former version of the library continues running with newer versions of the library without the need to recompile.
If a program needs to be recompiled to run with a new version of library but doesn’t require any further modifications, the library is source compatible.