Linked by Stefan Michalowski, M. Sc. on Thu 19th Aug 2004 08:27 UTC
Editorial Lately posted on Slashdot, an article written by Joel Spolsky mentioned the trouble through which Microsoft went to make each version of Windows backwards compatible. In one case, for the game Simcity, they even changed the way memory handling was done when running that application. You can find additional stories of software tricks that recent versions of Windows have to perform in order to run these bug-dependant applications on the web. After reading the story, I discussed with a couple of friends how weird this was and how Free Software completely avoids this problem.
Permalink for comment
To read all comments associated with this story, please click here.
Binary compatibility
by Alwin Henseler on Thu 19th Aug 2004 14:46 UTC

It's sad that in Free/OSS binary compatiblity isn't considered important. When you regard source compatibility as the only thing that matters, okay. But being able to run binaries across different distro's is still very useful.

I compiled XFree86 from source a while ago, and in documentation it said that names of some libraries were changed to reflect that they were part of a newer version of XFree86. So, you have an application, and to use the newer library, you need to recompile it. The library is (as stated) fully compatible with the old one, provides the same functions, and interfaces with applications the same way. Yet, only for the sake of indicating it's part of a newer version of Xfree86, its name was changed. Frankly, this sort of thing is STUPID. Changing library names or programming interfaces should ONLY be done when really necessary.

The same goes for backwards compatibility. It's okay to break that, if that is the only way to implement new functions in an OS. But all effort should be made to avoid it when possible.

Just consider defined programming interfaces (API's). OS developers shouldn't worry about breaking apps that rely on functions not defined in API's. But they should be careful not to break apps that rely on defined API's. Keeping apps working when the OS underneath changes, is what API's are for, right?

Only source compatiblity matters? If so, you forget one thing: recompiling an application can be quick and simple, but may not be. Keeping old binaries around is always the easiest thing to do. Rebuilding a binary can be very difficult considering all build tools and dependencies that you may need. To recompile programs, you need a far more complex system, than you need for just running binaries.