28 March 2015

The Rise of Elitism in FOSS

WARNING: This post consists primarily of opinion, rather than fact.  You might even quite fairly call it a 'rant.'  Please don't take anything here as a challenge to your identity or beliefs, though I do hope that you find something useful in it.

It's a simple statistic: the Linux kernel is currently, by a large margin, most common foundation for FOSS operating system distributions.  That kind of unification is something that I could scarcely have imagined fifteen years ago, and I'm completely in favor of it.

There is, however, a darker side to the success of the various GNU/Linux distributions (to say nothing of Android): quite a few software authors and hardware vendors have fallen under the enchantment that supporting the Linux kernel and the GNU userland, to the exclusion of other platforms, constitutes fully embracing open-source software.  I'd like to assert the potentially dangerous opinion- and I'm considering buying a set of full-body armor for this- that it doesn't.  In fact, I'm going to go so far as to suggest that supporting only a single operating system, even one both as open and as popular as GNU/Linux, to the exclusion of others is antithetical to the spirit (though perhaps not the definition) of "free and open-source software."

How can I say that, when something that is both... well... free and open source... is the very definition of the term?  Because, in my twenty years of dealing with FOSS, there has always been an implicit understanding that "free and open-source" also generally implied "cross-platform."  That was certainly not ubiquitous: there were always a few FOSS applications that were just for Windows, or just for Mac OS (X and 'classic').  The bulk of FOSS software, and reliably the most popular tools, were generally made cross-platform.  They might start out as Linux-only, or Windows-only, or Mac OS-only, but were ported within short order.

The graphical terminal client PuTTY is a great example of the above model: it started out as a Windows-only program, and it filled a niche there which was otherwise unoccupied (i.e. free graphical SSH client and related tools).  Later, as Linux gained more mainstream popularity, many users coming from Windows were intimidated by the different-but-perfectly-capable OpenSSH clients in the terminal, and wanted their familiar PuTTY GUI client.  So the author of the original piece got some help, put commendable work into it, et voila!  There's now a Linux port, and there are rumors of official ports underway to both Mac OS X and 'classic' (yes, you read that last one correctly).

At the risk of sounding like the quintessential old man shouting at the kids to get off of his lawn, that's how FOSS should be.  The original developer(s) may or may not have time and skill to port their software to other platforms based on demand, but if others are willing to take up the mantle and do the work, more power to them!

That's not what I'm seeing in many open-source projects right now.

I've recently encountered, for the first time in my twenty years of dealing with FOSS, an aversion to and scorn of porting software to other platforms.  What's worse is that it seems to be contagious.  The most nefarious villain in the room right now is the Direct Rendering Manager.  For the uninitiated, it's a graphics stack component, originally written for Linux, that allows direct communication between graphical client software and the supporting graphics hardware, making e.g. accelerated 3D graphics possible, or at least less painful, on such systems than the traditional X11 client / server model would otherwise allow.

Reading the freedesktop.org page linked above, and the corresponding Wikipedia entry, one might be led to believe that DRM is only for Linux.  Neither page has any mention whatsoever of DRM being used, available, or supported on other platforms.  Unfortunately, nothing could be farther from the truth.  I use 'unfortunately' here in a very encompassing sense- both the omission itself and the usage on other platforms are unfortunate.

DRM is used on Linux, all of the modern BSDs (FreeBSD, NetBSD, OpenBSD, DragonflyBSD), Solaris (since the OpenSolaris days), and probably quite a few other lesser-known FOSS operating systems besides, and probably even some otherwise closed-source 'Unix-like' systems as well.

Good luck telling anything in the above paragraph to the "official" developers; they don't want to hear it.

The only "official" DRM is the Linux DRM.  Other operating systems might call their equivalent projects DRM, and they might be derived from the same code base, but oh no!, they're not the DRM.  Developers on other platforms (including myself) often face (at best) disregard or (at worst) scorn, vitriol, annoyance, or outright hostility just contacting the "official" DRM project with questions, trying to understand a particular piece of code or function call, for the sake of porting it.  As a direct result of this hostility and the "our castle" mind set, otherwise-capable developers avoid the project, which is a major contributing factor, though by no means the only one, to accelerated graphics support on those other operating systems often being years behind Linux.

So why use DRM / DRI at all?  One word: X.org!  The debate and dissent over which FOSS X11 distribution would become the de facto standard for FOSS 'Unix-like' operating systems was settled more than a decade ago, for better or worse, and X.org is the only free and open X11 implementation with comprehensive driver support, maintained and updated, and (perhaps most importantly) supported by hardware manufacturers.  If you're not running X.org, good luck getting that latest graphics driver from Intel or NVIDIA to work!

Oh, and by-the-by, if you're on a FOSS operating system and you have anything even remotely current from Intel or AMD in terms of graphics hardware, you'd better have DRM and KMS or you're up that proverbial and 'fragrant' brown creek, and without any of the proverbial paddles.

In short, in terms of porting, the whole kit comes together, or not at all:

X.org, its drivers, current DRI/DRM, and KMS.  So, do you see why having half of the kit (the X.org part) more than willing and happy to be cross-platform, while the other part (DRI / DRM) resents it, presents a problem?  I thought so.

To add insult to injury, the same individuals who so vehemently resent the porting of DRM to other platforms then like to poke fun at those other platforms for lagging behind.  The situation rather reminds me some sick, geekish pantomime of the teenage bully who uses his victim's hand as a weapon on the victim's own head, all the while chanting, "stop hitting yourself!"

That would be bad enough in an isolated incident, but it's becoming quite common.  Certain authors of software for Linux have begun the duplicitous behavior of advocating the "free" part of FOSS, while simultaneously resenting or scorning the "open" part.  Mercifully, it's still the exception rather than the rule, but I find even a single instance of it to be counterproductive.

How has this happened?

Well, guesses abound, but I think that the answer is simple: it's human nature.  My observation has been that, for quite some time, the advocates of and contributors to FOSS had been part of a niche movement, a minuscule minority, and represented some of the more altruistic (if also quite eccentric) elements of society.  As the FOSS movement has taken off, it seems that more typical human demographics have become common, bringing the typical human baggage with them, including rampant elitism.

This, too, shall pass...

Luckily, I don't think that this is the swan-song of the FOSS movement.  This is purely optimism on my part, and admittedly almost an act of (dare I use the term?) "faith," but I think that the situation will correct itself in time.  My guess is that elitism in FOSS projects will hit a peak in a few years, and that the situation will be rather grim for a while.  Every FOSS operating system but Linux will fall behind for a while, but there will always be people who resist main-stream ideas.

My guess is that Linux will eventually become too main-stream for the most talented developers, and there will be a shift away of the greatest talent back out to other FOSS operating systems for a while, and Linux will hit a period of stagnation and (even more severe) fragmentation.  That will be the "catch-up" period for other FOSS platforms, before the pendulum eventually swings back the other direction.

We can look at history, politics, the economy... in fact, just about every element of human culture, and see oscillations in ideas and values over time.  I suspect that the FOSS movement will prove itself to be no different, and that popularity will vacillate over the course of decades between the more militantly-open systems (GPL licenses, Linux, etc.) and the more permissively-open (MIT / BSD style licenses, the BSDs and OpenSolaris, etc.).

Am I right in those guesses?  Only time will tell.

EDIT 1 (10 December 2015): One prominent example that I suspect is related is Sarah Sharp's "Closing a Door"