Paul Kocialkowski's coding blog

Free software, programming and stuff

What's up with the Android SDK?

Written by Paul Kocialkowski 11 comments

A couple days ago, I announced, on the behalf of the Replicant project, the release of the Replicant 4.0 SDK, motivated by some recent license change regarding the Android SDK: Google decided to put an overall non-free license for their SDK. After talking about it on IRC, FSFE member Torsten Grote decided to write an article to raise public awareness: Android SDK is now proprietary, Replicant to the rescue. In the next few hours, that news was being relayed by some online IT media and it sometimes got a bad review, calling our statement a “non-issue”. Let's check our facts and clear out the situation.

It was first brought to our attention that the SDK is being released under a non-free license only a couple days before releasing the Replicant SDK. We didn't know about it before and thus assumed that this was a recent license change. As a matter of fact, we were wrong: we have been told since then that these terms of use have been there all along the way and only a small part about fragmentation have been added with the Android 4.2 release. However, as far as I can remember from the past (and please let me know if I'm wrong), the end-user didn't have to explicitly agree to these terms before downloading the SDK. Now they are required to do so before being able to download the SDK package. That's one first thing that we find unacceptable: we believe that anyone should be able to develop applications for the Android platform without having to agree to such terms. Now let's take a closer look at what the user must actually agree to:

you may not: (a) 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; or (b) 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.

These conditions seem totally unacceptable to me and are likely to cause a reaction such as calling the Android SDK proprietary from anyone who values software freedom. However, let's not stop there and let me get back to what is right before these statements in the license text:

You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, 

The last sentence is the meaningful one: it means that basically, the restrictions are not applicable to software that is covered by another free software license. So that's basically how Google can avoid breaking other licenses terms. Moreover, Google is not the copyright holder for all of the software released in the SDK, so they basically have no right to apply such restrictions to it. Huh, we're safe, after all, the Android SDK still is free software. But wait, is it really? Are all the files shipped with the Android SDK proven to be free software? If that was the case, then why would Google waste some time writing down these terms if they actually do not apply to anything in the SDK? So that point gives us fair enough reasons to suspect that there is actually proprietary software in the SDK. Yet another good reason to release a free SDK such as the Replicant SDK. Now let's consider the Android SDK manager utility: it is designed, down to the source code, to check for plug-ins and updates from Google. If I recall correctly (once again, correct me if I'm wrong), there used to be a clear license statement for each components: the Google APIs were shown as non-free software in an explicit way and the emulator images were somewhat shown as containing mainly free software. Now Google changed all this, and all the components show the same EULA terms. Now how can the user make any difference between what's free and what's not in that components list? Sounds harder than it used to be, and like a problem to us. That's why the Replicant SDK won't check for new components from Google. So here are the reasons why we call the Android SDK proprietary and why we think that there is a problem with it. Even though not all of this is a sudden change, why would it be any less relevant to try and raise public awareness about the issues we've spotted?

2013-01-06 Update: I've checked the license of the individual software components shipped with the Android SDK and it turns out that all of them are covered by a free software license. What's the point of that overall proprietary license then?


#1  - Pete Austin said :

The terms basically give Google the power to enforce the free software licences of the components, if a third party tries to break them.

Suppose I build a product based on Android and obey the license terms of all its free components. Then Google's terms have no effect.

But suppose I do the same and break the license terms of a free component, written by a small third party. Without Google's terms, the third party could take action but Google could not, and if I could afford good enough lawyers I might not care. With the terms, Google can take action too, because my actions break its overall conditions for using Android, and Google can afford *really* good lawyers.

#2  - Daniel Nebdal said :

As I've understood it: The point is that it covers the specific binaries in the SDK package - but not the source they were compiled from.

#3  - Bill Yates said :

2012-01-06 Update: should be 2013 not 2012

#4  - brother james said :

Incase someone mods the SDK with someone else's protected code, it covers googles ass like a blanket.

#5  - A said :

Android's "open sourceness" and "freeness" seems mostly a marketing and PR stunt in a lot of ways.
The lawsuite with skyhook showed, despite google pretending to have no distribution power with with carriers and OEMs do with android, they control it very ham-handedly behind the scenes, so that any approved partner uses their services layer and makes no attempt to decompile, replace, etc.
It is designed to have an open source base or kernel, for all practical license purpose much like the iphone has an open source kernel, which becomes technically irrelevant once their proprietary root control app gets put over it. They get a lot of the benefit of the open source community, and get to put the layer over it which makes it effectively closed source with an open source core. You can get it with out the GAPS, but the project teams that determine base functionality are controlled by them, so you effectively need to install the GAPS and agree to their proprietary control and licensing for much functionality by design.
It seems like this reduces costs, they get to deliver a cheap product with little responsibility but with a serious level of control.

#6  - uberhacker said :

(b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer.

Why do they care about hardware? What difference would that make?

#7  - patbob said :

Sounds like they are trying to prevent people from making insecure versions that risk the customer. As a customer, I appreciate that, although I agree they could probably be a little more elegant in their aproach.

@uberhacker. Just define your smart phone as one of your personal computers. Its just a smaller, more compact, WLAN-connected computer with voice network calling capabilities, after all. Nothing you couldn't also get in a laptop. I can't imagine they'd come after anyone just because they want to do development from their smartphone.

#8  - none said :

One purpose is to block Canonical's use of android apps and
software on their Ubuntu phone. Also blocks anyone else doing similar stuff.

#9  - João Matos said :

@Pete Austin (#1)

That doesn't seem to make much sense because if averything contained in the Android SDK is available under a Free license, then the license violators could just claim that they got said software from a different source (e.g. Replicant SDK) and thus are not affected by Google's Terms.

#10  - LaPingvino said :

Basically the SDK itself is free software, but it comes with Google software like Maps etc to be able to test interfacing with this, to which this is of course applicable.

#11  - Paul Kocialkowski said :

@LaPingvino : As a matter of fact, it does not: Google proprietary software is not included in the SDK. You can download and install these non-free Google APIs through the Android SDK Manager (we disabled that in the Replicant SDK). That license most likely applies to that software, indeed.

Comments are closed.

Rss feed of the article's comments

Fatal error : type : 8192 message : Function utf8_decode() is deprecated file : /core/lib/class.plx.utils.php line : 843 See about type of error ============================================================ Drop this plugin now for running PluXml and report to its author !!