The GPL is not an EULA

Before I get to the meat of this blog post, let me make sure nobody would misunderstand for a lawyer. What you’re about to read is a half-rant about Free Software projects distributing Windows binaries with pretty much default installer settings. It is in no way legal advice, and it is not being provided by someone with any semblance of legal training.

If you follow Foone or me on Twitter, you probably have noticed one time or another our exchanges of tweets about GPL in Windows installers.

The reason for this annoyance is that, as Foone pointed out many times in the past, licenses such as GPL and MIT are not EULAs: End-User License Agreements. They are, by design, licensing the distribution of the software, rather than its use. Now, in 2020 a lot of people are questioning this choice, but that’s a different topic altogether.

What this means for a consumer is that you are not required to agree to the GPL (or LGPL, or MIT) to install and use a piece of software. You’re required to agree to it if you decide to redistribute it. And as such the install wizards’ license dialogs, with their “I accept the terms” checkboxes are pretty much pointless. And an annoyance because you need to actually figure out where to click instead of keep clicking “Next” — yes I realise that the tiniest violin may be playing at that annoyance, but that’s not the point.

Indeed, the point why I make fun of these installers is because, at least to me, they show the cultural mark of proprietary software on Windows, and the general lack of interest in the politics of Free Software from pretty much everybody involved. The reason why the installers default to saying “EULA” and insisting on you to agree to it, is because non-Free Software on Windows usually does have EULAs. And even the FLOSS installer frameworks ended up implementing the same pattern.

VLC, unsurprisingly, cares about Free Software ideals and its politics, and went out of its way many years ago to make sure that the license is correctly shown in its installer. For a few other projects, I sent patches myself to correct them, whenever I can. For others… well, it’s complicated. The WiX installer toolkit was released years ago by Microsoft as open source, and is used by Calibre and Mono among others, but it seems like the only way to have it show a non-EULA screen is to copy one of its built-in dialogs and edit it.

As I said recently on Twitter, we need a reference website, with instructions on how to correctly display non-EULA Free Software licenses on Windows (and any other operating system). Unfortunately I don’t have time to go through the releasing process as I’m about to leave the company in a few weeks. So either it’ll have to wait another couple of weeks (when I’m free from those obligations), or be started by someone else.

Until then, I guess I’ll provide this blog post as a reference to anyone who asks me why am I even complaining about those licenses.

Looking for a license

I’m writing this blog post in hope that somebody who’s more experienced than me in open source licensing can suggest me whether such a license exists already, or if a simple well-known exception to GPL would work, or finally if it’s the case that this was submitted to FSF for an eventual future GPL version.

The licensing terms I’m looking for are focused mostly on embedded systems; I just want a license that works exactly like GPL with the exception of leaving it possible to use the code, statically linked in a single binary image, on systems where you really don’t have a final OS, without “infecting” the rest of the system with GPL requirements. It might sound bad to you but there is really nothing more than a special calling interface between the kernel, the runtime linker and the glue code from the compiler that makes a program what it is.

So if instead of having a main() function that gets called, you got a softunit_main() which is called by an otherwise isolated system, and instead of multiple files you got just different addresses in memory, it makes sense to be able to still use it like it was its own software, working at an arm’s length.

This is usually considered area for LGPL, but I’d sincerely like something in the middle between the strict GPL and the lax LGPL. I guess a GPL exception would work out quite fine, but I’m not sincerely sure about it so I’d like to ask for comments.

Thanks in advance!

CnM Minibook, xine, and GPL

If you remember my post from yesterday about xine license being violated, I was able to contact CnM through KMS support contact. They have been very friendly, and are taking the right steps to correct the situation, the answer yesterday came very quickly:

Hi Diego,

Thanks for bringing this to our attention, we will rectify this as soon as
possible.

I am waiting for contact details from the manufacturer for anyone wishing to
get hold of the source code, which will be via post or download from our
site.

We will be adding this information to our web site as soon as possible and
making sure that customers are aware of this when they purchase the product.

I will email back when this has been done to check that you are happy that
we are complying fully with the GPL Licence.

Regards

Stephen Jones

And then again today, after a request if I could quote them on the blog:

Hi Diego,

Sorry for the late reply, but I wanted to have as much information as
possible for you.

We have rectified the licensing information on our site, included an address
to request a copy of the source code and will have the code available for
download very soon.

The next batch of miniBooks will be shipping with an addition to the welcome
letter which includes information about the GPL Licence and how to request a
copy of the source code.

I think we have covered all the necessary parts of the GPL by doing this,
but if there is anything else that you believe we may have missed please can
you email me back with advice on it.

You can put the contents of this email and the previous one on your blog if
you would like, it might paint us in a better light because some people have
been saying that we were unwilling to comply with the GPL and have been
obstructive when contacted. I would like to think this isn’t the case and we
have tried to resolve this issue as quickly as possible.

This miniBook might not be the ideal platform for development because there
are no applications on it to allow access to the underlying OS, but I know a
few developers have already figured a way around this and it is probably a
challenge to get it setup the way you want it to be.

Thanks for your pointing out this problem and your help with resolving the
issue.

Regards

Stephen Jones

And as they said, the information is available on MiniBook site (in particular, you can see this page). It might not be perfect yet, and the source code is not yet available for download, but it’s the first step, and took less than two days, in August, to come to this point.

I guess CnM made a mistake in good faith, and they are interested in playing by the rules and fix it. It’s nice to see.

The same doesn’t seem to old true for someone else

xine license violated

I have to thank Daniel Silverstone for reporting the post of Rob Kendrick about the “MiniBook” sub-notebook, sold in the UK (for what I gathered) by KMS Components .

On the “firmware” of that notebook you’l find, among others, xine-lib-1.1.7, which of course is released under the GNU GPL and contains also code of mine.

Now the problem is to make sure that the issue is solved. I wonder if Harald Welte has been already warned about this, I probably should warn him myself.

THe nice thing about KMS is that to contact them you need to be a registered customer, which means the only way I have right now to contact them is either by phone or fax, which aren’t exactly the nicest things once you think that they are long distance..

But I will prepare a fax now, the nice thing of having a decent fax-by-mail provider.

I bought a software license

I finally decided to convert my video library to Mpeg4 containers, H.264 video and AAC audio, rather than mixing and matching what I had before that. This is due to the fact that I hardly use Enterprise to watch video anymore. Not only because my office is tremendously hot during the summer, but more because I have a 32” TV set in my bedroom. Nicer to use.

Attached to that TV set there is an Apple TV (running unmodified software 2.0.2 at the moment) and a PS3. If you add to that all the other hardware that can play video I own, the only common denominator is H.264/AAC in MP4 container. (I also said before that I like the MP4 format more than AVI or Ogg). It might be because I do have a few Apple products (iPod and AppleTV), but also Linux handle this format pretty well, so I don’t feel bad about the choice. Beside, new content I get from youtube (like videos from Beppe Grillo’s blog) are also in this format — you can get them with youtube-dl -b.

Unfortunately, as I discussed before with Joshua, and as I tried last year before the hospital already, converting video to this format with Linux is a bit of a mess. While mencoder has very good results for the audio/video stream conversions, producing a good MP4 container is a big issue. I tried fixing a few corner cases in FFmpeg before, but it’s a real mess to produce a file that QuickTime (thus iTunes, and thus the Apple TV) can accept.

After spending a couple more days on the issue I decided my time is worth more than what I’ve been doing, and finally gave up to buy a tool that I have been told does the job, VisualHub for OSX. It was less than €20, and that is usually what I’m paid by the hour for my boring jobs.

I got the software, tried it out, the result was nice. Video and audio quality on par with mencoder’s but a properly working MP4 container that QuickTime, iTunes, AppleTV, iPod and even more importantly xine can play nicely. But the log showed a reference to “libavutil”, which is FFmpeg. Did I just pay for Free Software?

I looked at the Bundle, it includes a COPYING.txt file which is, as you might have already suspected, the text of GPL version 2. Okay, so there is free software in here indeed. And I can see a lot of well-known command line utilities: lsdvd, mkisofs, and so on. One nice thing to see is, though, an FFmpeg SVN diff. A little hidden, but it’s there. Good.

The doubt then was if they were hiding the stuff or if it was shown and I did just miss it. Plus it has to have the sources of everything, not just a diff of FFmpeg’s. And indeed in the last page of the documentation provided there is a link to this that contains all the sources of the Free software used. Which is actually quite a lot. They didn’t limit themselves to take the software as it is though, I see at least some patches to taglib that I’d very much like to take a look to later — I’m not sharing confidential registered-users-only information by the way, the documentation is present in the downloadable package that acts as a demo too.

I thought about this a bit. They took a lot of Free Software, adapted it, written a frontend and sold licenses for it. Do I have a problem with this? My conclusion is that I don’t. While I would have preferred is they made it more clear on the webpage that they are selling a Free Software-based package, and that they would have made the frontend Free Software too, I think they are not doing anything evil with this. They are playing well by the rules, and they are providing a working software.

They are not trying to exploit Free Software without giving anything back (the sources are there) and they did something more than just package Free Software together, they tested and prepared presets to use for encoding for various targets, included Apple TV which is my main target. They are, to an extent, selling a service (their testing and presets choices), and their license is also quite acceptable to me (it’s like a family license, usable on all the household’s computers as well as a work computer in an eventual office).

At the end of the day, I’m happy of spending this money as I suppose it’s also going to further develop the Free Software part of the software too, although I would have been happier to chip in a bit more if it was fully Free Software.

And most importantly, it worked out of the tarball solving me a problem I was having for more than an year now. Which means, for me, a lot less time spent trying to get the whole thing working. Of course if one day I could just do everything with simply FFmpeg I’ll be very happy, and I’ll dedicate myself a bit more on MP4 container support, both in writing and parsing, in the future, but at least now I can just feed it the stuff I need converted and dedicate my time and energy toward more useful goals (for me, as in paid jobs, and for the users with Gentoo).

Does Electronic Arts infringe LGPL?

So, if you remember my post about RTS I’m a very big fan of realtime strategy games. Even if my sister finally brought to me my Total Annihilation CDs, I wanted to try something new, so I decided to finally order Command & Conquer Tiberium Wars (C&C3), Mac edition, even if I first had some concern about the fact that the porting was done by TransGaming, of Cedega fame.

So yesterday I received my C&C3 DVD (with some problem on delivery by UPS, in Italy deliveries this month are quite late, so I’m fine with receiving it in just three days, rather than waiting till the holidays are gone). I installed it and read the manual in the mean time, after the first game, I noticed the copyright listing at the end of the manual.

I already suspected that TransGaming used some sort of modified Wine code for the porting, and it seems like I was quite right. The copyright page lists quite some free software projects:

  • libpng by the eponymous project;
  • libjpeg by the Independent JPEG Group;
  • dmalloc by Wolfram Gloger;
  • SDL by the eponymous project, this is LGPL’d;
  • bstring, by Paul Hsieh, this is under dual BSD or GPL license;
  • iniParser by Nicolas <devillard, under MIT license;
  • FreeType by the eponymous project, under dual FTL or GPL-2 license;
  • Squish ;
  • FFmpeg by Fabrice Bellard, et al.; this is LGPL to a minimum, GPL if GPL’d code is enabled;
  • ReWind quite obviously;
  • Wine totally obviously, this is under LGPL, and I’m one of the contributors too.

Now, splitting up what really uses the code from what it’s a complex task, and I haven’t spent time on that yet, but the listing already lists one component that uses FFmpeg code: libquartz.dylib. I do have that file installed together with Command & Conquer: Tiberium Wars, so they are distributing that; I suppose they are also distributing the code from the above mentioned projects, as Cider is likely to act in more or less the same way that winelib is designed to work for porting Windows applications under Unix.

So, I have the binary form, do I have the source code? Not on the DVD, I looked in all the subdirectories, but found no source code.
Do I have a written offer to receive the code? Well, something like that, the manual lists this:

Source code to the LGPL components is available via CVS access through: http://transgaming.org/cvs/

As far as I can see, this does not cover the written offer clause in GPL, as it doesn’t easily allow me to get the exact source code used for the product I bought; also it doesn’t seem to properly cover the patches, that I downloaded from the official site, and had no source code links at all (and I wonder if the patches to fix Leopard support were only to C&C’s code or also to Cider code).

I wonder if Electronic Arts knows what TransGaming used to do the porting, as they are the ones actually distributing the game.

Anyway, I hope this post will work as an head up for the projects involved (FFmpeg, SDL and Wine; the rest all seems to be covered through BSD or MIT licenses that allow use in proprietary software). While I’m actually happy to see that Free Software is helping to reduce Windows’ monopoly, even if by helping Proprietary software, I don’t really like if it’s abused infringing the license.

Entertaining the idea of Affero GPL

Not sure if you heard, but Free Software Foundation finalised the text of the new Affero GPL version 3.

It seems a decent idea, an interesting idea, and now that it’s no more GPL-incompatible (at least for GPLv3), it seems even more so.

Why am I thinking about this? Well, I wanted to restart working on gitarella in the next future and then I wondered: what if I relicense it under Affero GPL? Beside the CSS styles that I can mostly replace now, as I rewrote most of the HTML anyway, the Ruby code is all mine, and relicensing is not an issue.

The advantage by changing the license to AGPL3 is that if someone wants to fix or change some behaviour in a production Gitarella server, also has to make available the modification. My suggestion would then be to just put a cloned repository of Gitarella itself available on the page, so that it could be fetched right out of that.

I don’t really think this is too much hassle, and it would probably avoid closed-source derivatives put in production. I certainly don’t like modified code put online without sending patches to authors or at least making them available to users (like I did for my typo 4.0 patches).

And finally… maybe the community voice was heard?

The last time I wrote about FAAD2 was last January, with no improvement whatsoever from Nero AG licensing, that was for sure GPL-incompatible standing to FSF’s word (and if they don’t know, who does?), although Debian still carried 2.5 under the assumption that the Nero AG lawyers misunderstood the GPL.

I didn’t write about the change in license with FAAD 2.6, that was released some time ago, that was supposedly changed to some wording that allowed it to be GPL-compatible. Alexis contacted FSF because the terms were still vaguely reminding the previous license, and they confirmed again that the license was incompatible, and that they suggested a different wording for it.

Well, today 2.6.1 version was released with this single note replacing the previous advertisement clause:

** The "appropriate copyright message" mentioned in section 2c of the GPLv2
** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com"

And this makes it quite sure that this time it’s GPL-compatible.

Maybe my original post moved something, even if it took almost an year to get to a solution, the solution is now here.

Later today I’ll work on importing FAAD 2.6.1 in xine-lib-1.2 tree, to replace the patched 2.0.something we have at the moment. I’ll leave to Alexis taking care of adding it to Gentoo :)

Writing PAM documentation

So, as I promised to Tavis, I started working on writing some documentation for Gentoo developers on how to handle PAM in the ebuilds; I don’t have a final draft yet; just trying to write down what I think should be written in that guide took me the best part of two days, and now actually doing the documentation part is driving me so crazy that when I’m done I’ll probably need a good shrink.

You have no idea how convolute is to actually declare what needs to be done with respect to PAM support and PAM dependencies, how many special cases has to be documented, as although the PAM API is quite standard, just some modules are, the rest are specific of the implementation (that for Gentoo Linux is always Linux-PAM, while for Gentoo/FreeBSD it’s OpenPAM).

On the other hand, documenting this stuff is probably going to help on the long term, maybe someone will find time and will to work with me on maintaining the PAM packages, so that I won’t be the single point of failure for the default authentication system in Gentoo.

I also want to write some extensive documentation on the use of PAM on the user/admin side, and some guides on setting up extra modules (for instance I’d really like to take a look into adding some of the modules that are currently bitrotting on Bugzilla, but I just don’t have time right now); unfortunately this will require quite a lot of time, and I might just not have it at hand in the short term, so the priority of this is quite low. Bribes to change that priority, as usual, are welcome ;)

On a different note it’s interesting to know that the GNU projects are switching, one by one, to GPL-3 since the day after the release. I read it, I hope I understood it, I seem to like it. This is good because libcdio will probably switch to GPL-3 in the next future, which means that both unieject and xine will have to switch if they want to continue using newer versions of it (well, having a GPL-2+ license in Portage would be quite good already to at least pass a human test, but that’s another story).

Okay, now to decide whether I want to continue losing my life on PAM documentation (after all, I spent the whole Saturday night working on PAM documentation), or if I want to take a break for today…

How did it end with FAAD?

Somebody might remember that last month I started a sort-of campaign about FAAD 2.5 licensing ; I haven’t commented on that anymore since the post right afterward that talked about Debian using a GPL-incompatible version .

What did happen in this month? Supposedly, Ahead received at least ten to twenty mails – unlikely to be enough to actually hear community voice; I was hoping my blog post could have been reproduced by other blogs too, but that wasn’t the case – but I haven’t seen any reaction on their site, nor any contact made to distributors who contacted them before.

Debian still ships FAAD 2.5.

Let’s see what the problems are then: there’s an unfortunately low community reaction to the problem, although I remember there was an higher reaction about xine not playing aacPlus streams in the past (lot of users on #amarok complaining at least); there has been little or no interest in trying to spread the word about the idea of writing Ahead to ask them to use sane licensing for their software; there is very little concern from Debian about licensing terms when they are not making a point that makes them feel “good”.

Creating Firefox, Seamonkey and Thunderbird clones made them in the news for several days; forking cdrtools also made a lot of noise, especially since now other distributions are taking part into their noise; but fixing a GPL incompatibility with one of their packages is not a problem, not even a stopper for release it seems…

The battle with Ahead seems lost, they don’t really give a crap about Free Software, they just want to be seen as they are good, while instead they just use evil licensing terms and disallow developers from using their library without paying them for a proprietary license.

What remains to do then? First of all, the only solution to get a free AAC decoder is hoping that FFmpeg developers complete their own with other profiles like HE (currently only LC, the one used by Apple iirc, s used); if you’re a coder, you might as well try to help them yourself — caution: Maalox highly suggested if you want to deal with FFmpeg developers. If you’re a coder, but don’t want to deal with FFmpeg developers, there’s also another alternative, that would be forking FAAD2, using only code that was released under true GPL, and starting improving it from there in the mean time; MPlayer developers have a pretty much patched version that might help.. and I’ll be glad to add support to xine-lib for a fork of faad2 that fixed the API troubles and started improving the code itself, as it’s a really big piece of crap, in my opinion.

Then, if you’re a Debian user, or know a Debian user, you might want to point them on this bug to remember them that not only famous software and troublesome developers have licenses that are no good for the final users. If you’re the author of a GPL-licensed package, that in Debian is linked to FAAD 2.5, you might even want to remember they are not entitled to redistribute your software that way — would be scary if they actually put it on CDs, too!

If you do think that Free Software is important, if you do think that respecting licenses is important, then please don’t try to use FAAD2 anyway, just “because you can”, instead pay attention to these kind of problems, and back away from the dark side.