Why GPL would have done nothing to prevent Google from closing up Android

I read an interestig article on The Verge the other day entitled ‘Google’s iron grip on Android: Controlling open source by any means necessary’. It basically details how Google is slowly but surely closing up Android, by stopping maintenance and new development on the Open Source versions of most important apps and instead improving only the closed source forks of these apps in the Google Play store.

Locked Android
(Image courtesy of Anythingbutiphone.com)

It is an interesting strategy: Start out by giving something away for free and only once you have gained a strong foothold in the marketplace, start closing it up so you get/keep full control and can start milking your new cash cow.

Turns out that The Verge is doing a series of articles on this subject and I spend quitte some time reading some of them. I also tend to read comments and it was one of the comments that triggered this blog post. Basically the commenter was saying that if Android would have been GPL licensed this strategy of Google would not have been possible:

OK, a Nook can run programs that were coded for an older version of Android, maybe even a recent version. But it cannot be called, nor IS it called “Android.” This is sorta like Linux where you can only use version 2.2. Except that Linux is GPLv2, which would never allow this sort of foolishness.

This is pertinently false!

I hate it when people spread disinformation about topics I care about, such as Open Source. So much so that I created an entire blog just to store the standard message I give people who claim that Open Source software is not necessarily free as in free beer, when in fact it is.

So why would a GPL license here have done nothing to prevent ‘this sort of foolishness’?

Because Google is the copyright holder of Android. It *owns* the code. It can do whatever it wants with it. It can publish it under the Apache license (as it has done), under the GPL, under a commercial license, or all at the same time!

Yes the GPL has restrictions to prevent people from closing up the source that the Apache license does not have. But these restrictions do not apply to Google itself! Google is the copyright holder. The copyright is the sole legal right that gives Google claim over the code. It’s what makes it possible for Google to license it to third parties under any license in the first place.

Let this sink in. Google *owns* the code, so the license they attach to it does *not* apply to them!

To be honest, any contributions made by third parties under the GPL license would be covered by the license and Google would not be able to close up those contributions. But in reality this is hardly ever a problem. MySQL for example is dual licensed under both the GPL and a commercial license. So Oracle (the owner of the code) would not be able to distribute contributions made by third parties under their commercial license… except that they can because they require any contributors to sign an agreement that basically gives Oracle a copy of the copyright. They basically make you share your ownership of the code with them so they can dual license it. If you don’t sign they will not allow your contribution in their distribution.

So what’s all the quid-pro-quo talk by the Free Software Foundation about then? Are they lying?

In short: Yes!

The more nuanced answer is that they (intentionally or not) are not telling the whole story. They seem to insist on leaving out crucial details in their laymen’s explanation of the legalese that is the GPL. For example, in their FAQ they explain why you should use the GPL like this:

Using the GNU GPL will require that all the released improved versions be free software. This means you can avoid the risk of having to compete with a proprietary modified version of your own work. However, in some special situations it can be better to use a more permissive license.

The lie is in the first sentence. Specifically in the word ‘all’. As explained above, not *all* improvements will have to make it back into the Open Source project. The owner of the code can choose freely whether he will publish his improvements under the GPL or not. This may seem like nitpicking about details, but this is a crucial detail.

The FSF created the license, so they must know what it does and does not require/permit. They are programmers, so they must know the importance of the word ‘all’ and how it’s light years separated from ‘almost all’ and ‘most’ and other fuzzy terms like that. ‘All’ means no exceptions, but there is a huge exception here. One that Google could have exploited to do exactly what it is doing now.

So they are leaving out a crucial detail and I suspect they are doing it on purpose.

The same goes for their much quoted line Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”.

Again, they must know the logical meaning of the word ‘not’. This sentence implies that free software might not be free as in free beer, when in fact it *is* free as in free beer. Always. There is no way around it. So if they know this, why would they write it this way? They actually spend time explaining how you could charge for the floppies etc. which we all know is a pipe dream. If your software is actually useful and people may spread it for free, don’t count on selling many floppies or download bandwidth or whatever. But apart from that practical consideration, a floppy is not software. Bandwidth is not software. Time is not software. The *software* is free. In all meanings of the word.

I suspect they are spreading disinformation on purpose. Call it fud. At the least they are inaccurate on crucial details. At the worst they are downright lying. They have a mission. A political one. And apparently when one practices politics, the truth becomes something that can be bent your own way. Shame on them!
Still, the GPL has it’s purposes. The second sentence is true. The GPL is a very effective way for a publisher to prevent third parties from forking the code and closing it up. It just does not prevent the original publisher from doing so!

2 responses to “Why GPL would have done nothing to prevent Google from closing up Android

  1. Nice article.

    However I disagree with the following:
    “The GPL is a very effective way for a publisher to prevent third parties from forking the code and closing it up. It just does not prevent the original publisher from doing so!”

    Well, there is non revocability build into the licence. A quick google search found me this:
    http://lwn.net/Articles/169434/

    but then this said something different:
    https://news.ycombinator.com/item?id=7614550

    It seems that as long as there are many different contributors (without having all of them signed their copyrights away…), it is not possible.

    I was really convinced that the GPL was non revocable, better do more research. found this: https://lwn.net/Articles/266675/
    “US copyright law has some “notwithstanding” elements that allow the owner/owners of the copyright to revoke, provided proper notice, after 35-40 years. Notice is to be given not less than two, but not more than ten years from the date of revocation. ”

    Hmm, If that is the case, then we would be safe. This article seems most trustworthy: http://www.groklaw.net/article.php?story=2006062204552163
    “If you change your mind and don’t want to use the GPL any more, you can stop and use something else on new code going forward, and you can dual license your own code, but you can’t redo the past and pull back GPL’d code.”

    I am not implying you don’t understand this — btw — just checking stuff and keeping a log in this comment.

    To conclude consider the situation between openoffice and libreoffice, which might be very similar to android. Google can put new version out of gpl, but not the old versions; therefore, if they too aggressively get android out of open source, the community will just fork the latest free version and it will be hard for google to compete with that.

    But aren’t there already truly open android forks? yes there are.
    http://www.replicant.us/
    https://en.wikipedia.org/wiki/CyanogenMod#Licensing

    But the problem is in the api’s. Google develops new functions ‘n gizmo ‘n geezes and markets them to make them seem cool. And some of them are cool, for developers and users alike. Therein lies the catch: Apk’s that are build with the google api (necessary or unnecessary) can only run on devices with the Google play Services: https://en.wikipedia.org/wiki/Google_Play_Services

    Is this bad? Depends… I find it fucking annoying. I have just vanilla android on my phone (for freedom, speed, battery life and stability reasons.) Obviously I don’t have the play store, and that is ok. I use F-droid which I find really cool. The problem is that many open source apps must be modified before they work, worst still, developers often don’t know that by using some google api convenience function, they limit the open source usage of their code. Luckily, there are others who fix these problems for them. Here is one notable example: (https://github.com/slp/Telegram-FOSS)

    “Several proprietary parts were removed from the original Telegram client, including Google Play Services for the location services and HockeySDK for self-updates. Push notifications through Google Cloud Messaging and the automatic SMS receiving features were also removed.

    This version of Telegram is available on FDroid: ”

    I would like to end with this wiki copy-paste (https://en.wikipedia.org/wiki/Google_Play_Services#Concerns)

    “As many of the Google apps are developed intimately tied with Google Play Services, they do not function without them being available. This means that any party interested in distributing Google Play Services as a part of the Google apps package must acquire a license from Google, which more often than not results in a contractual agreement locking the manufacturer in to Android. Additionally, enthusiasts who are not able to or are not interested in signing such an agreement, but are interested in modifying the Android system are required to either opt for not using Google apps (such as YouTube and Gmail) and 3rd party apps that use Google Play Services (such as including Google Maps) or for simply obtaining the Google apps package either from a device which has them pre-installed or an unofficial source.[12][28] Google Play Services demands 80 permissions without explaining why all these permissions are needed. Google Play Services cannot be found in Google Play Store, which will not work if Google Play Services is not activated. “

  2. Hi asdfg, that’s some great research you did there.

    “It seems that as long as there are many different contributors (without having all of them signed their copyrights away…), it is not possible.”

    Yes this is spot on. For this reason, Oracle will ask you to sign a contributor’s agreement that allows them to dual license MySQL, including your code. Other companies do the same thing.

    The GPL *is* non-revocable (as far as law permits), but… you know… this is software we are talking about. If new versions appear that are not GPL’d, the OSS verson is in effect a dead end. UNLESS someone is motivated enough to fork it and maintain the fork. But they will have the problem that for them it is impossible to dual-license it.

    Also, you are again spot on concerning the Play services. It’s a very smart strategy for Google and one that plays well with their company structure as they are a services-oriented company anyway.

    Thank you for your insightful comment. Just too bad you chose the username you did… I can’t pronounce it 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s