LWN.net Logo

Avoiding the tar pit

Avoiding the tar pit

Posted Feb 16, 2007 4:46 UTC (Fri) by Max.Hyre (subscriber, #1054)
Parent article: Avoiding the tar pit

Don't forget Free Software's freedom to ignore backward compatibility: every so often the mess exceeds some developer's aesthetic threshold, and a section gets ripped out and (more) cleanly recoded. Not doing that periodically leaves a trail of tar pits behind, each of which must be worked around by all new code.

There are two aspects to this.

First, and the lesser, is that the process is affordable. Someone wants to do it, and there's no one to insist otherwise. If you've ever tried that in a proprietary setting, you know how quickly you get slapped down for ``unproductive'' effort. Since the old stuff works well enough for the users (they bought it last time, didn't they?), there's no percentage in making it work better. Adding shiny new stuff is where the bucks are.

The second, greater, is that Free Software can afford to blow away backward binary compatibility. This is because most of the code's clients are also Free Software. This means many changes can be handled by a recompile, and the rest can be recoded to match. Witness the kernel's cavalier attitude toward the ABI.

I wonder how much NT and its offspring could be cleaned up if they didn't have to run unaltered binaries from the MS-DOS days. Does Vista still do that?


(Log in to post comments)

Avoiding the tar pit

Posted Feb 16, 2007 12:18 UTC (Fri) by copsewood (subscriber, #199) [Link]

I wonder how much NT and its offspring could be cleaned up if they didn't have to run unaltered binaries from the MS-DOS days. Does Vista still do that?

NT supported MSDOS by using a DOS emulation box. Vista will support 95/98 through use of virtual machines. The Microsoft virtual PC product is a good enough VM that you can even run Ubuntu/Linux on it - I have, and it works with consumer XP even though it doesn't claim to.

I think virtualisation and emulation are significant developments partly because these techniques allow newer technical architectures to provide backwards compatibility to older ones without getting bogged down by them. This approach is also usable in Linux to support older binaries if you prefer not to recompile or have lost the source, or never had source in the first place.

Emulation has also been used for many years to test software on machines in the process of development that don't yet exist. Tracy Kidder wrote about this in his very readable book "Soul of a new machine".

Avoiding the tar pit

Posted Feb 16, 2007 20:13 UTC (Fri) by dvdeug (subscriber, #10998) [Link]

Then again, Free Software frequently doesn't ignore backward compatiblity. X predates Microsoft Windows, and Unix predates DOS. We still use shells that are compatible with the Bourne Shell. A lot of Free Software (particularly old GNU code) is littered with code to support systems that are ancient. It wasn't until C89 was 20 years old that GCC finally dropped support for systems without a C89 compiler, and it still supports a number of old dying systems. On the other hand, new Windows code supports Intel x86, ia64, and AMD64 chips running a couple versions of Windows.

Avoiding the tar pit

Posted Feb 17, 2007 8:01 UTC (Sat) by daf (subscriber, #27590) [Link]

While the kernel developers may modify their internal interfaces on a regular basis, they're fairly strict about maintaining the userland interface. Changing that would be incredibly disruptive.

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds