Giving proper credit: the GNU Project’s ongoing battle

While hardly a fresh topic, I’ve never really blogged about this, and it came up in a recent discussion on IRC.

In particular, a user identified as “MTecknology” pointed me to his blog entry on the topic, which seems to take a stance opposing the GNU Project and the Free Software Foundation (FSF) in their bid to seek proper credit for nearly three decades of work on free software. (Note: “free software” here and elsewhere in the post refers to freedom, not price, specifically the four freedoms definition used by the FSF.)

I’d like to respond to and rebut these points as best I can. For space and time reasons I am not going to respond to every point made in the original post. An omission of any points in MTecknology’s original post should not be interpreted as an acquiescense to its validity.

Before I get to that, however, I’d like to point something out that not a lot of people know. Richard Stallman and the free software movement began in 1984. They had been going for years before the major BSD-derived Unixes we know today (OpenBSD, FreeBSD, NetBSD, DragonFly BSD) gained any serious traction, and well over a decade before the “open source” movement splintered off from it. Without the free software movement, the “open source” movement would have had nothing to splinter off from.

I don’t directly support the open source movement at all, only the free software movement. I use free software almost exclusively. The exceptions I make are very few and far between, most notably for firmware and font software.

Anyway, on with the rebuttal. Single-level blockquotes are MTecknology, double-level are from the FSF as quoted by MTecknology, mostly if not entirely from the GNU/Linux FAQ and the Linux and GNU page. I’ve left all the text intact, as it was in MTecknology’s blog entry, so any spelling/grammar/punctuation mistakes in the quotes are his. I have also my best to verify quotes attributed to the FSF actually came from the FSF.

I ventured onto the gnu.org website wanting to read what their licenses actually were. In the process I decided that I should figure out what GNU actually is. Aside from discovering that the FSF seems to be just a source of income for GNU, I was quite disturbed.

Note this alongside a statement MTecknology made on IRC, which, by the way,
is one of the most egregious things I’ve ever read in an IRC client window:

2011-05-08T19:32:17 <MTecknology> I guess in my head though, FSF is a microsoft type corp trying to sit over top of the free software movement
2011-05-08T19:32:29 <MTecknology> key word 'try;

The FSF is a 501(c)3 non-profit (essentially, a charity) which shepherds the development of software under the free software movement, specifically and most prominently the GNU operating system. This by itself makes any comparison with Microsoft, a multi-billion-dollar for-profit corporation, patently egregious and completely devoid of any reason or sanity.

Developers of software released under free software licenses tend to actually care about their users. Microsoft, in particular, wants to charge $30 just to file a bug report (at least as of the last time I checked). There have been instances where Microsoft has refused to even acknowledge obvious bugs in their products, much less deliver a timely fix.

But that is not the deepest way to consider the question. The GNU
Project was not, is not, a project to develop specific software
packages. It was not a project to develop a C compiler, although
we did that. It was not a project to develop a text editor,
although we developed one. The GNU Project set out to develop a
complete free Unix-like system: GNU.

Well, you have yet to produce this complete system. So to this point
all you have contributed to the FOSS community IS in fact just a set
of software packages. Don’t get me wrong, these are great pieces of
software, but the point still stands.

The GNU operating system is nearly complete, here in 2011. The only component of the GNU operating system that has not been completely developed is the kernel, the GNU Hurd. Like it or not, most systems incorrectly labeled “Linux” are in fact GNU variants, booting Linux, the kernel. Porting software to Linux, the kernel, does not change the fact that it’s still software from the GNU Project and part of the GNU operating system.

I considered writing a list of GNU software that one would need to remove to get a true “Linux operating system” and the commands to do so. I’m not sure I’ll ever publish the list, even if I write one, as removing all the software on the list would reduce most GNU variants to a completely unusable state, and at minimum I’d get flames from people blindly following my instructions (“you broke my system, you %$^*@#!!”). Suffice it to say that almost every useful program on a GNU variant booting the kernel, Linux, is linked against the GNU C library, at minimum. Removing just the GNU C library will render a system running any GNU variant unusable almost immediately.

(Ironically, were I to publish such a list or set of instructions, the rm command itself, which would be deleting most of the components which came from GNU, is part of GNU coreutils, and the rm binary and the GNU C library would have to be the last two things removed from the system.)

Many people have made major contributions to the free software in the system, and they all deserve credit for their software. […] We made a list of the programs needed to make a complete free system, and we systematically found, wrote, or found people to write everything on the list. We wrote essential but unexciting (1) components because you can’t have a system without them. […]

By the early 90s we had put together the whole system aside from the kernel. We had also started a kernel, the GNU Hurd, which runs on top of Mach. Developing this kernel has been a lot harder than we expected; the GNU Hurd started working reliably in 2001, but it is a long way from being ready for people to use in general.

[…]

(1) These unexciting but essential components include the GNU assembler, GAS and the linker, GLD, both are now part of the GNU Binutils package, GNU tar, and more.

I don’t think the GNU project is the sole reason everything became an integrated system. Your work sure helped immensely, but you aren’t the glue that sticks everything together. We have an integrated system because countless developers and other contributers got together to build a complete system. You wrote “essential but unexciting” software applications and the world appreciates it. You have yet to develop your own kernel and rely on Linux.

 

GNU Hurd is a work in progress. Due to reasons I’m not entirely sure of, the development has taken quite a long time. (If you do want reasons why we don’t have GNU Hurd 1.0 yet, consider asking the developers. Maybe one of them will comment on this post.)

Just because GNU Hurd, the kernel of a complete GNU system, is not completed, does not disqualify the remainder of GNU from being an integrated system.

Fortunately, we didn’t have to wait for the Hurd, because of Linux. Once Torvalds wrote Linux, it fit into the last major gap in the GNU system. People could then combine Linux with the GNU system to make a complete free system: a Linux-based version of the GNU system; the GNU/Linux system, for short.

Perhaps it’s the other way around. Perhaps Linux was developed knowing GNU was working on other software. Perhaps they kept compatibility in mind. It seems more that Linux was built in a way that would allow GNU to “fit into” the Linux based OS. This little argument goes both ways and is ineffective either way.

Linus Torvalds himself has said that Linux, the kernel, is useless without an operating system such as GNU to boot into. (This is from the README file of a very early release of Linux, the kernel, back before actual dsitributions of GNU/Linux were common.)

I went through and easily ripped all GNU apps out from various operating system. So, what should I call it now? I can’t call it “GNU/Linux” because GNU isn’t part of the system at all. I also can’t call it “Linux” by your whole rant. What can I call it then? The fact of the matter is that either way Linux is still the core and the system should be called “Linux” either way.

If one removes from a GNU variant (whether GNU/Linux or something else) all components that came from GNU, and one either has a non-functional system in short order, or one forgot to remove something like the GNU C library (which is also GNU software).

To answer the question, though, it depends on what exactly the replacement software is. If, say, the GNU libc is still there, to me, there’s still a case for calling it a GNU/Linux distribution.

Wouldn’t it be better for the community if you did not divide people
with this request?

When we ask people to say “GNU/Linux”, we are not dividing people. We are asking them to give the GNU Project credit for the GNU operating system. This does not criticize anyone or push anyone away.

However, there are people who do not like our saying this. Sometimes those people push us away in response. On occasion they are so rude that one wonders if they are intentionally trying to intimidate us into silence. It doesn’t silence us, but it does tend to divide the community, so we hope you can convince them to stop. […]

The hell you’re not dividing people! […] these two groups [“supporters of the free software movement” (and) “the open source movement”] are commonly just grouped into the “FOSS community.” Those that call their systems Linux tend to not even see this line you refer to; when they do they tend to ignore it completely. They do however still see the very clear line between (GNU, GNU/Linux) vs. (Linux).

Those who call the entirety of the system “Linux” often simply do not realize the contribution of GNU to the system they are running. And so, you get people saying “I don’t want the GNU people meddling with our software, I’m a Linux user, damnit” without realizing just how ridiculous such a statement really is.

If Linus Torvalds wanted to have a full operating system to be called Linux, he should not have stopped at writing just a kernel. As it stands today, Linux is a kernel. There are a few programs that were written specifically for Linux kernel administration, such as the module utilities modprobe/insmod/rmmod/lsmod/etc (which, while not part of GNU, still depend on the GNU libc). None of these programs in concert with each other form anything close to a complete operating system without adding software from GNU.

You’re acting as if the whole world is out against you. In my view, it seems you’re really just out against the world. Maybe you should start fighting the world and listen to it. There’s obviously something you’re doin wrong. You go so far as to blame any divisions in the community on those who don’t share your view.

I don’t think the GNU project is against anyone. They simply want proper credit for what they made. Calling the entire system “Linux” gives a disproportionate amount of credit to Linus Torvalds, and leaves people with the mistaken idea that Linus wrote a lot of programs he in fact had nothing to do with.

The comparison I use most often is that I don’t “run Linux” any more than you “drive a DieHard battery” to work. Calling the entire system “Linux” can also be considered paramount to speaking of a painting by who framed it, in such as fashion as to mislead the listener into thinking the framer and painter are one and the same. Would you be happy if you spent 5 years making a painting only to get no credit for it?

I usually, but not always, refer to “GNU/Linux.” However, on occasion, I simply refer to my system as a GNU variant, particularly in cases where the actual kernel I’m running is not particularly relevant. There are GNU variants which boot the kernel from FreeBSD, and it should be possible in theory to boot GNU varians from other kernels as well (specially the other *BSD kernels).

Many other projects contributed to the system as it is today; it includes TeX, X11, Apache, Perl, and many more programs. Don’t your arguments imply we have to give them credit too? (But that would lead to a name so long it is absurd.)

What we say is that you ought to give the system’s principal developer a share of the credit. The principal developer is the GNU Project, and the system is basically GNU.

If you feel even more strongly about giving credit where it is due, you might feel that some secondary contributors also deserve credit in the system’s name. […]

Since a long name such as GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv becomes absurd, at some point you will have to set a threshold and omit the names of the many other secondary contributions. There is no one obvious right place to set the threshold, […]

But one name that cannot result from concerns of fairness and giving credit, not for any possible threshold level, is “Linux”. It can’t be fair to give all the credit to one secondary contribution (Linux) while omitting the principal contribution (GNU).

I drew a line and it stands as my threshold. I happened to fraw that line at “Linux.” Nothing more, nothing less. I honestly don’t care where the credit is due. The system runs on Linux and that’s what it should be called. I have no interest in giving credit to individual contributors. I give that credit instead to the FOSS community which is where it belongs.

(The emphasis was added by me.)

So, MTecknology shows his true colors: a complete disregard of fairness, and complete apathy for proper credit for who wrote the software he uses. To some, proper attribution is priceless; a lack of attribution is something that can never be adequately compensated for with any amount of money if it is due and not given. Atari learned this lesson in the early 1980s when several of their top video game designers left for Activision, in part over this issue (though the pathetic salary Atari was paying them in comparison to the money Atari made from their efforts certainly didn’t help); it’s not always about the money or only about the money.

I do agree that at some point, a longer name becomes unwieldy. However, the developers of Apache, Perl, Python, FreeCiv, etc. usually do not suffer from the same problem that the GNU Project is dealing with here. You’ll hear people refer to “Apache on Debian GNU/Linux 6.0” or “Perl 5.9.1 on FreeBSD 8” etc. These other software packages simply don’t have the same problem.

Why not just say “Linux is the GNU kernel” and release some existing version of GNU/Linux under the name “GNU”?

It might have been a good idea to adopt Linux as the GNU kernel back in 1992. If we had realized, then, how long it would take to get the GNU Hurd to work, we might have done that. (Alas, that is hindsight.)

If we were to take an existing version of GNU/Linux and relabel it as “GNU”, that would be somewhat like making a version of the GNU system and labeling it “Linux”. That wasn’t right, and we don’t want to act like that.

You have yet to make Hurd a widely released product. You’re perhaps not capable? Linus built the first kernel himself. He clearly stated what it was capable of and that he didn’t expect it to go furhter. His code was then in a position to be lifted up by a community that made it what it is today. Why is it that you can’t get your kernel working? I would assume because you’re either too busy whining, you’re too busy tearing at Linux to make it fit your needs, or because you’re not capable of doing it in the first place.

GNU Hurd is working; it’s not “done” in the sense that it’s not production quality yet, but it is working and there are install releases for a GNU/Hurd system.

The early releases of Linux, the kernel, weren’t exactly that great either. I applaud the GNU Hurd development team for wanting to get it right, for not rushing a half-completed project out there as GNU Hurd 1.0 and saying “here’s our kernel.” Linux, the kernel, has come a long way since even its 1.0 release.

By the way, if the FSF really was like Microsoft, GNU Hurd 1.0 would have been released years ago, bugs and all. That GNU Hurd is still sitting at 0.4 actually speaks volumes for the honesty and trustworthiness of the GNU Project, and the Hurd development team.

The popularity has nothing to do with calling it “Linux.” The reason we use “Linux” is because all the above FUD reassures us that you’re on a whining power trip.

Wanting proper credit for one’s contributions is a power trip? Really? I don’t think asking for proper attribution qualifies as a power trip, especially in this particular case, when the lack of attribution translates to a potential misattribution to someone else, as it does in the case of the GNU operating system and Linux, the kernel.

Et tu, Google?

And Google joins the “you carry our phone in your pocket, but we still own it” club:

CNet reports on Google’s decision to nix a tethering application for its G1 phone from the Android Market. I can only wonder if this is the first in a series of arbitrary moves similar to those Apple has made.

I am almost as suspicious of Google with regard to Android as I am of Apple and its iPhone. Whether intentionally or not, Google is misleading people by advertising its use of Linux, the kernel, in Android. However, from what I have read, Android is not a GNU variant. The SDK also contains non-free software; Google also makes heavy use of the term “open source” and I believe this is an attempt to deceive in light of the presence of non-free software in the SDK.

Note these section of the EULA for the Android SDK:

3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. “Intellectual Property Rights” means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.

3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK. Except to the extent required by applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.

This looks an awful lot like it came straight out of a Microsoft or Apple EULA to me with merely a search-and-replace in the first line.

The potential for confusion surrounding Google’s use of the term “Linux” here is is a great example of the dangers of incorrectly using “Linux” to refer to the entire operating system instead of just the kernel. It is also a great example of why one must read carefully to ensure that a given software release is in fact free software lock, stock, and barrel and not to just treat “open source” as magic words. Given that Google packages non-free software with the SDK, I believe it best to treat the entire Android operating system as non-free.

The moral of the story? Don’t be fooled: on a broader scale, Android is just like the iPhone OS. If one uses an Android phone, one is trusting Google, a company that has had its share of criticism on more than one occasion.

“Meet the new boss / Same as the old boss.” –The Who, “Won’t Get Fooled Again”