Free Software: not so 'Free' after all?

Every decent Linux user has heard of the Free Software Foundation. And they also know the FSF’s motto: ‘get us a girlfriend for Richard Stallman’. Oops, no, wrong one. ‘Make everything GPL.’ Yes, that is it. If we have to believe the FSF, the GPL is the perfect license, and everthing should be GPL’ed. But, this is an utopia. It will never happen that everything will be GPL’ed. Companies need the money, and they can’t make money with GPL software. In theory, they can, but in practice, everyone can redistribute the software for free. When you pay for Red Hat, SLES, or another paid Linux distro, you pay for the support, not for the OS itself.

Back to the point. The FSF has brainwashed most of us with the idea that all our software should be under the GPL. I also prefer free as in speech software myself, but in a non-perfect world — i.e. perfect according to the FSF — there is also software that isn’t under the GPL. Not a problem, you say. It’s a lot different from a users’ perspective than from a programmers’ perspective. For example, I am a programmer myself, and I program both open-source and closed-source programs.

The main ‘problem’ of the GPL is its ‘viral’ nature: when you link a GPL library, your program should also be GPL. While this will make the ‘perfect world’ come closer, there is still a problem when you want to use a GPL library to design a non-GPL program. Suppose I would want to write a program connecting to a MySQL server, for which there are official drivers, but under the GPL. I either could:

  • Use the official MySQL drivers, and GPL my program — easy, but undesirable
  • Write my own MySQL drivers — difficult, takes a while
  • Use PostgreSQL — easy, and their drivers are BSD licensed.

So, after thinking a while, I descided to replace MySQL with PostgreSQL. In this particular example, I was using Java with JDBC (a cross-SQL server driver framework), so replacing MySQL with PostgreSQL was only changing one line of code. If I really wanted to use MySQL, I could have bought a license, and no, not a cheap one. But PostgreSQL does the job just as well. And since I’m now used to PostgreSQL, and have set up a PostgreSQL-server on my development machine, I’ll be using it for my open source projects as well. Voila, the effects of the GPL!

The next issue is what I call “Free Software — freedom, as defined by the FSF”. When you use the GPL, the FSF descides what is free, and what is not free. Total freedom means: do what the heck you want with this piece of software. In other words: public domain. Freadom means: no restrictions. And the GPL sure has a lot of restrictions, doesn’t it? The GPL “freedom” as defined by the FSF. And their definition isn’t freedom at all: like I said, there are tons of restrictions. The FSF sure likes the fact that they made the so-called “4 fundamental freedoms” and that they can determine what is free, and what not. In fact, they’re becoming pretty “good” at it. “Good” in the sense that they have classified a lot of licenses as free and others as non-free. Which brings us to licence-compatibilty: is licence XYZ compatible with the GPL?  In other words: can you use code written under license XYZ in a program under the GPL? Their own documentation license, which is used a lot, for example at Wikipedia, is “incompatible” with the GPL. Most of the Creative Commons licenses are “incompatible” with the GPL. The APSL, or Apple Public Source License, is “incompatible” with the GPL — while lots of stuff from Apple could be used to improve support of Linux on the Mac platform. But oh, XNU (the Mac kernel) is APSL, and Linux GPL, and therefore you can’t take code from XNU and adapt it to Linux. Instead they have to rewrite the code from scratch. Sounds dumb? I think that as well.

Another thing is: suppose you’ve a very large program released under, say, the BSD licence. You add a few lines of code under the GPL (an algorithm of some kind perhaps?). Bam, you can release your entire program under the GPL. Suppose I wrote a “Hello World” and released it under the GPL. Would that make everyone obligated to release their “Hello World”s and deriatives under the GPL?

Next stop on the list is the part when it comes to for what kind of software the GPL was designed. The GPL, and its sidekick, the LGPL (which I like slightly more, but still has a few flaws IMHO), were designed for general compiled-and-linked languages, such as C and C++. But these days we have stuff like interpreters, virtual machines, inter-process communication, client-server stuff, SSI, etc… Let’s take the MySQL example again. MySQL is often used together with PHP. Since PHP is released under the GPL, that’s not a problem. But, you know, not every PHP script is GPL, while they still do use the MySQL functionality. So, when I write a script in PHP, I can use MySQL without GPL’ing my script. But using MySQL with Java would require that I GPL my program. So, you can clearly see an ambiguity. The GPL needs to be redefined. Either you allow all linking (which they won’t) or disallow all linking (which means that every PHP script on the net needs to be GPL’ed, not something many developers of professional — read commercial — PHP sites will do).

I just mentioned inter-process communication. That means that one process can send messages to another process which is configured to recieve and reply on those messages. So, in other words, I’ll just write a so-called middleware server. The middleware server will connect to MySQL. My program will connect to the middleware server through inter-process communication that is not GPL. I release the middleware server under the GPL, and voila! Everyone can use MySQL without needing to GPL their programs, if they use my middleware server (which can be very simple, or even trivial, by just passing everything it recieves to MySQL, and returing MySQL’s answer).

In the beginning of the article, I mentioned that the GPL is “viral”. In other words: everthing that once was GPL, stays GPL. Even if the FSF decides the GPL is obsolete and create something new (maybe after they read this article? ), you can’t do a lot but still use the GPL. Even if you find a better license, you’re still stuck to the GPL. I personally recommend that you first release your program under the BSD license, or your own license, before sticking to the GPL.

Yet another point where the GPL restricts us: the Linux kernel. We’ve all heard about the driver problems, especially when it comes to the nVidia or ATI GPU drivers. The problem is not that they can’t be redistributed: nVidia allows you to put their driver on the CD if you are making “any OS derived from the source, such as Linux or BSD”. I don’t know for sure what ATI says in their license. The real problem is that the GPL does not allow you to use the driver, since you’re linking non-GPL code with GPL code. If Linux would be “de-GPL-ised”, or a extra exception would be added, it would benefit hardware support a lot. For example, closed-source GPU drivers, APSL code from Apple, etc…

Sometimes I even consider the GPL a form of DRM. DRM on the source code, that is. It effectively restricts you what you can do with your source code, what parts you can add from a piece of source code, what libraries you can link to, etc. If Richard Stallman ever reads this section (if he didn’t die from a heart attack yet), I hope that I can find a nuclear bunker .

I hope that this article made it clear that the GPL isn’t always the best choice for your software, because it isn’t “Free” at all. Unless you want compatiblity (the licence-kind of compatibility, not the software/technical kind) with GPL programs, I discourage you to use the GPL. I haven’t found a acceptable replacement yet, but we all know Google, don’t we?

- SeySayux

BTW, this article does NOT fall under the GPL. Instead, I put it under the simple terms:

Do whatever you want with this text, as long as

  1. You don’t change anything fundamentally, you are allowed to take parts of the text or embed it in another article, as long as it is clear what parts are mine, and you don’t add stuff I didn’t say.
  2. You put the following attribution somewhere: © SeySayux, 2008. See http://seysayux.wordpress.com/2008/12/25/free-software-not-so-free-after-all/ for the orignial article.
  3. You agree that I’m not responsible for anything happening after you place this text somewhere. You should clarify that you aren’t associated with me in any way, or that my opinion doesn’t always conform with what you think.
  4. You don’t release this under the GPL.
None