mahiwaga

I'm not really all that mysterious

versioning

The Old New Thing discusses the different macros you have to set in order to ensure library compatibility in Windows.

It seems like a complicated mess, but it’s not like Linux and Mac OS X are really all that better. Except for one factor: most of the time, you actually have the source code.

While Windows has multiple flavors, some of which can share code, and some of which can’t, Linux has at least a hundred different distributions, all of them running different kernels with different versions of the C libraries and with different versions of different toolkits (GTK+ vs Qt, for example) This makes it pretty dicey to try and mix and match binaries from different distros.

Since Mac OS X comes solely from Apple, you would think that you wouldn’t have to deal with such messes, but the fact is if you want to use the latest open source tools, you end up screwing around with various distribution mechanisms: do you just compile from source yourself and link against the system defaults, do you install Fink, or do you install MacPorts (neé Darwinports)?

But the fact that you have the source means that you can always have the latest version of the latest app in the open source world. Compile it yourself (or with the help of Fink or MacPorts on Mac OS X, or whatever mechanism you use on your flavor of Linux) and it will tell you which libraries you may need to upgrade (although this path can still lead you to dependency hell) And if you don’t have the latest version of Gtk+ or Qt or GNOME or KDE or Perl or Ruby that the app needs, you can compile that too.

Yes, compiling is a lot more time consuming than simply clicking on an installer, but you’ll always know that the app your running is compatible with your system and it’s own idiosyncracies.

And the maintainer only has to maintain a single code base with the minimum of versioning macros. You can compile exactly the same app on the hundred different versions of Linux, or you can compile it on Mac OS X, or any flavor of BSD, or even Solaris, AIX, or HP-UX. Hell, you can even compile it on Windows if you use Cygwin.

Now I realize that most end-users couldn’t give a damn about this, but I still think having access to the source code is a big deal.

initially published online on:
page regenerated on: