The GPL, the App Store, and you
My colleague Chris wrote a post about the popular video playback client VLC being pulled from the App Store following objections from a developer who worked on the project that it was in breach of the GNU Public License. [The app has now been released on Cydia for jailbroken devices.]
This unpopular move had provoked strong reactions throughout the Mac blogging world, and Chris made a strong case for the prosecution in his post. However, every story always has two sides (and somewhere between them lies the truth). I'm here today to present the case for the defense: why Rémi Denis-Courmont was absolutely in the right to do what he did.
However, to do so, I'm going to have to lay out some open source history to give structure to my arguments. Please follow me on.
A primer on why VLC was pulled from the App Store
We've covered the story previously, but here's the bare-bones facts you need to know. VLC (hosted at http://videolan.org) is a cross-platform, full-featured media player with a long and distinguished history. VLC is licensed under version 2 of the GNU Public License (GPL). A company called Applidium, not affiliated with the project, took the VLC source code and ported it to a free iOS app so that iPhone and iPad users could use it to play back a wider range of file formats than either device supports natively – such as AVI or MKV files. In accordance with the GPL, Applidium made the full source code to the modified version publicly available.
This provoked mixed feelings on the VLC developers' mailing list, with some developers OK with it, and others who felt that they did not want their work (written to be open) used on a platform, such as iOS, with a reputation for being closed and with some restrictions on code reuse for App Store-distributed apps. This culminated in one developer, Rémi Denis-Courmont (who personally wrote a lot of VLC code) petitioning Apple to remove the VLC iOS app from the App Store as it breached the GPL license under which he had contributed to the project.
Several months later, Apple appears to have complied without arguing the case and the app was taken down, although Denis-Courmont has stated that he's skeptical about the timing -- for this to have been a true response by Apple to his copyright claims, it should have acted a long time ago.
So who's in the right?
A brief history of open source licenses
First of all, why does the world need Open Source at all? Well, because sometimes programmers start projects on their own time (or they are academics working without commercial pressure – the roots of the UNIX family of OSs are largely Open Source and largely came from universities, which is no coincidence), and it grows beyond what they can handle on their own. They'd like to get help, fixing bugs and adding new features, and thanks to the internet, there's no shortage of volunteers; so they put the code out under an Open Source license so that they can publish the source and recruit collaborators.
It sounds like it'd never work, but in fact, Open Source has brought us many high-quality software products: the gcc C compiler, the Mach kernel, the Apache HTTPd web server, the bash command shell, the Perl and Python programming languages and the WebKit rendering engine used in Safari. These and hundreds more are all Open Source, and they are all shipped as part of Mac OS X. Clearly, Apple believes in Open Source.
Looking beyond software, the Creative Commons family of licenses -- which were written to extend the ideas of Open Source software to other creative endeavors -- has given us Wikipedia. Going the other way, Open Source itself approximately mirrors the scientific process, where researchers openly publish their methods and findings so that later researchers can build upon their work. As a holder of a doctorate in computer science, these ideals are very important to me. I think it's fair to say that the concepts behind Open Source software have brought us all significant benefits.
So, let's imagine Alice is a programmer who has written a small utility. Another programmer, Bob, really likes her program, but he wants to change it a bit to make it better for what he wants to achieve. Alice has the idea of releasing the source code to her program so that Bob can make his changes.
The simplest sort of "license" Alice can use is to put her code into the public domain. This means that anyone anywhere can do whatever they want with it; the author has voluntarily surrendered all rights over the code. Bob can make his changes and keep the new-and-improved version for himself, or he can set up a small shop and sell it. He can even take it to his boss, Charlie, at Microsoft, and they can sell Alice's tool in the next version of Windows without her ever seeing any of that money. If you think that's not exactly fair to Alice, you're not alone; hold that thought for a second.
Next up is a family of similar licenses that include the MIT licence, the BSD license and the Apache license. These allow Alice to still own the copyright on her code, but they also grant anyone who downloads it the legally-protected right to modify it and to distribute their modified versions. Different variants of these licenses also require Bob to keep mention of Alice's name somewhere in the software, similar to a Creative Commons-Attrib license. However, none of them stop Bob from selling his copy of the program and refusing to give his changes back to Alice.
The GPL and other copyleft licenses
To solve that problem, the Free Software Foundation wrote the GNU Public License. This is often called copyleft to embody how it differs from the other licenses we are talking about here. Philosophically, the GPL is designed to protect the following four freedoms for all users of any software released under the GPL:
- The freedom to run the program, for any purpose.
- The freedom to study how the program works, and change it to make it do what you wish.
- The freedom to redistribute copies so you can help your neighbor.
- The freedom to distribute copies of your modified versions to others.
The license itself is (of course) a rather dense tangle of legalese designed to enforce this philosophy in a legally binding sense, but these four freedoms are the gist of it. Note that the second and fourth freedoms require that the source code to any GPLd program is made available in addition to the program you actually run. This is why you often see companies using GPL programs in embedded devices, such as routers, hosting download pages (for example, Netgear) packed with their source code. Of course, this allows their competitors to see exactly how their products work -- but they've made the commercial decision that the potential loss from that is outweighed by the leg-up they can get by building on top of Open Source components.
Returning to Alice and Bob, let's see how the situation plays out now. Alice makes her source code public. Bob writes his patch and sneakily decides to sell his new version of Alice's program. Alice isn't dumb, though, and she notices and gives Bob an ultimatum: release the source to his changed version, or go to court for breaking the contract under which he received Alice's version (i.e. the GPL). Bob, inevitably, folds and releases his code; not once when this has happened in real life has the defendant ever allowed the case to go to court. Most people regard this as proof that the GPL is solid and watertight – no one wants to contest it.
Can the App Store and the GPL co-exist?
The most obvious conflict between the App Store and the GPL is the third freedom – "the freedom to redistribute copies so you can help your neighbor."
There has been lengthy discussion about this issue, with people advancing arguments on both sides. Sadly, the bottom line is this: firstly, it's a gray area, and secondly, it's unlikely to ever be certain one way or the other without a legal trial. We're unlikely to ever get a trial because Apple (as software distributor for all App Store programs) is probably not going to ever go to bat for an Open Source package in a courtroom. So the practical outcome is that the App Store and the GPL are incompatible until proven otherwise, and it's probably never going to be proven otherwise. Apple certainly thinks so, or it wouldn't have removed VLC (and other Open Source apps like GNU Go) from the App Store.
The Free Software Foundation, authors of the GPL, also doesn't think so. The argument revolves around the following clause in the GPL v2:
Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein.
Now consider the App Store User Agreement:
(i) You may download and sync a Product for personal, noncommercial use on any Apple-branded products running iOS ("iOS Product") you own or control.
(ii) If you are a commercial enterprise or educational institution, you may download and sync a Product for use by either (a) a single individual on one or more iOS Product you own or control or (b) multiple individuals, on a single shared iOS Product you own or control.
(iii) You shall be able to store App Store Products from up to five different Accounts at a time on compatible iOS Products.
The FSF's legal council takes the stance that these are restrictions on what the user can do with software obtained from the App Store, so that's immediately a breach of the GPL. It doesn't matter that the iOS port of VLC is free. In fact, it might be clearer to imagine it wasn't.
Consider if Applidium had charged $5 for their port of VLC, while also distributing the full source on their website. Nothing in the GPL precludes developers from charging for derived works, so that's fine and above board. Mike buys a copy for $5, and he wants to give a copy to his friend Steve (as is his right under the GPL), but he can't. Steve is free to pay another $5 for his own copy, but he can't get it from Mike; he has to go back to Apple.
In this instance VLC was free, so Steve doesn't mind that he has to get a free copy; but that might not be true of some future software, and in any event, it doesn't matter because the legal terms of the GPL do not allow exclusions just because a piece of derived software happens to be free.
Note that the FSF page makes reference to only installing apps on five iOS devices at once as another restriction of user's rights; this appears to be an error, as this statement only appears in the iTunes content part of the User Agreement and doesn't apply to iOS apps. It's also possible that the iTunes User Agreement was modified after the FSF article was published.
What about other GPLd programs that are in the App Store?
Another common misconception is that once a piece of code is released under the GPL, that's the only way it can be distributed. That is not the case. If all the copyright holders -- i.e., everyone who contributed code to the project -- agrees, then the software can be dual-licensed.
Consider the case of Java. Java is licensed under the GPL, and yet Apple has taken that source from Sun, modified it (so that Java apps run under the OS X JVM have a more native look-and-feel) and not distributed the source code to its modified version. How? Because it took the source code from Sun under a different license, which Sun can do because (at that time) they owned the copyright to all of Java. They were free to release it to the general world under the GPL, whilst giving it to Apple under some other contract.
For most large open-source projects, like VLC, that have accepted public patches from the community for a long time, it's almost impossible to now retroactively obtain permission for dual-licensing from each and every contributor. Other codebases, however, were released as GPL but never accepted patches, meaning the main version of the code is still wholly owned by one person or company. Doom is one example that can be found in the App Store. Another is BeTrains, and the developers of this talked about how they worked around the GPL and the App Store recently.
Should the GPL change to accommodate the App Store?
This is where the discussion shifts from contract legalities to software politics. There is a certain defensiveness here on the part of GPL advocates that is, I think, often mistaken for zealotry by people outside the Open Source community. However, GPL violations are, in fact, upsettingly common. For example, a recent survey of hundreds of Android tablets by Matthew Garrett found almost all of them in violation of the GPL. In other words, each of those manufacturers have taken 99 percent of a free system, added 1 percent of their own stuff on top, and are now selling the resultant system as if it were entirely their own.
Unsurprisingly, developers who contributed their own spare time to projects are outraged by this, and that's why they are often very quick to condemn anything that looks even remotely close to a GPL violation. This can often come across as zealotry, or even a user-hostile attitude, but all it really comes down to is a group of people who wrote something on their own time and are fed up with seeing companies try to make a quick buck off of their efforts.
There's also a fear that any leniency they may show is the thin end of the wedge -- that it'll only make companies more bold in their future GPL violations, perhaps to the point where the FSF's meager resources can no longer keep up with finding and threatening these companies into doing the right thing by the community they are borrowing from.
Should the App Store change to accommodate the GPL?
This is what some VLC developers, like Ross Finlayson, want to happen. Rather than see VLC removed from the store, they would prefer to see the App Store terms changed somehow in order to have a special exception made for GPLd apps. It's not impossible that we'll see such a move, but Apple (for all its willingness to use huge swaths of Open Source throughout Mac OS X) is not famous for a willingness to compromise in dealing with developers around App Store issues. It's unlikely to happen, particularly for a free app where Apple takes no cut of purchase prices.
Could VLC be released under a different license?
As of today, it would be almost impossible for VLC to re-license itself under a different license – perhaps restricted entirely to Applidium – because that would require the explicit agreement of everyone who had ever worked on the project, which would clearly not be forthcoming from Denis-Courmont, amongst others.
If VLC had never been licensed under the GPL in the first place, or more accurately had never accepting patches from third-party developers under the terms of the GPL, then this issue wouldn't exist. However, without the strong guarantees that the GPL provided, they would have run the risk of attracting less developers to their project. It's impossible to know if the project would have succeeded or not.
When a software project chooses the GPL or other copyleft license, as opposed to a more open MIT or BSD style license, the developers are making a strong commitment to keep all derived works open. This commitment is not without cost, however. In choosing the GPL, the initial developers of VLC made a promises to all their future collaborators that their work would remain free -- forever. It is the FSF's explicit position, as well as Apple's implicit one, that the App Store does not support that definition of free. Neither organization is noted for an ability to compromise, but until one does, apps like VLC built on existing GPL'ed code bases will not be able to grace the App Store. This is undoubtedly a shame, but the both sides feel that the principles at stake outweigh the loss of a few apps.
Finally, a note to my commenters: there are doubtless other facets to this complicated debate I have skimmed over or omitted entirely, some out of a desire for clarity, others through my own foolishness and ineptitude. I would ask only this: be kind, because this is too sprawling a topic for even a post this long to do any sort of justice to. And secondly, please tell us about them!
Software Updatesmore updates
- Apple Remote Desktop updated with Yosemite support
- OS X Yosemite 10.10.2, iOS 8.1.3 updates now available
- Sports Illustrated 120 SPORTS channel comes to Apple TV
- Logic Pro X update brings AirDrop support, new effects, tools, and more
- Parallels Access 2.5 released, adds file manager, computer-to-computer remote access
- The Google Translate iOS app is about to get a lot smarter