Supporting of non mainstream platforms considered harmful?

Ulrich Drepper, RedHat employee, wrote 2 extremely interesting posts: first, titled "Users and complexity vs Bugs", and second tilted "Dictatorship of minorities". To sum it up: these articles are about difficulties of cross-platfrom development. The latter post is especially interesting. To put it simply, Ulrich argues that it is unnecessary to support as many different platfroms as open source projects strive to. Moreover, it is even unfair to support proprietary platforms in free software.

He writes:

Many of the GNU projects are ported to a wide variety of platforms, even to undeserving once like cygwin and mingw. The use of autoconf makes this to some extend quite easy (I'll write some more about winers who complain about the auto* tools at some later point in time). In the early days of the GNU project, a time most of who are using the code today know nothing about, this was kind of necessary since there was no GNU system (or simply a free+libre system) which could be used for the development. But this time is over. We have such a free+libre system today: Linux. There is no need to develop on those proprietary or irrelevant systems anymore. It does not further the cause of free software.

Now that is excellent and completely correct point! Dropping support for rare platforms makes perfect sense not just because it is unfair (supporting proprietary software with free software), but from technical perspective.

While supporting a variety of, let's say, Unix-like systems may seem easy at a first glance ("C'mon, they are all Unices anyway") turns out to be a major pain. As soon as you write anything slightly more complex than "Hello world", you are in trouble.

Take for example, dynamic libraries. Solaris and Linux implementations are similar but devil is in details. HP-UX's implementation is completely different. And going into arcane details like symbols versioning will certainly drive you nuts.

There software libraries that help in cross-platfrom development, like Apache Portable Runtime, Netscape Portable Runtime, or ACE. There is even whole class of languages (Java, C#) that were designed to deal with different platforms in an unifrom way. But none can fully insulate you from platfrom-specific stuff.

And it is not just development effort that has to de duplicated (or tripled, or quadrupled...). In commercial software development we have to test and provide support for platforms we claim to be working on.

So, there is no wonder that software vendors try to minimize a number of platforms. Most of them work with only one platfrom. Others try to bring number of supported platforms to a minimum.

For a free software project it makes sense to concentrate on mainstream platform (that is, Linux, of course). For a commercial vendor, there are two or three platforms that are important. First and foremost is, without a doubt, is Windows. Linux and MacOS X are in the second tier.

The list may vary though depending on software kind. For example, graphical design software venodrs cares about Windows and MacOS X, and does not care about Linux and other Unices. Vendor of server software of high performance computing package may or may not care about Windows, certainly does not give a damn about MacOS X , but will certainly prepare stuff to work on Linux, Solaris, maybe even Itanium and PA-RISC, beacuse these are the systems that run high-performance multiprocessors and clusters.

Posted in Software engineering frolov's blog | add new comment

Submitted by frolov on Sun, 2005-05-29 11:44.

Subscribe





Enter your Email





Powered by FeedBlitz

Navigation

Browse archives

« November 2008  
Mo Tu We Th Fr Sa Su
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Syndicate

XML feed

User login