From: David Moore <dcm@MIT.EDU> - 2007-11-21 19:00:38
Since people are talking about the libdc1394 API freeze, this is a good
time to discuss the goals of the freeze.
It is intended that throughout the 2.x release of libdc1394, the
application binary interface (ABI) will remain backwards compatible.
For example, consider user A who has libdc1394 2.0.0 installed on his
computer. If he compiles an application, and gives the compiled binary
to user B, who has libdc1394 2.7.1 installed, the binary should run
correctly on user B's machine -- no recompile necessary.
Note that the reverse is not guaranteed. If user B compiles an
application, it may not necessary run on user A's machine.
Having this backwards compatible ABI is very important for distributions
and their packaging systems. It means that users will not need
different versions of the library on their system at the same time,
despite having several different application programs compiled with
slightly different versions of the library.
Achieving this goal is not too hard with some discipline. The
implications on the API are as follows. During the 2.x release of
1. The definitions of existing public functions cannot be modified or
2. The definitions of existing public structs cannot be modified or
The API can be extended, but the only allowed way of doing this is by
adding new functions and/or adding new structs.
So keep this in mind as we prepare for the rc8 release. If we are not
happy with any of the existing functions in the API, we must change them
immediately, or else they have to stay that way until 3.0.
By the way, I'm patterning most of this after the GNOME folks. They
have a good description of their policy here: