Android SDK is now proprietary
blogs.fsfe.org
blogs.fsfe.org
While the Android SDK terms have changed over the years (most notably with the recent "anti-fragmentation" clause), that's not what the post is talking about. Instead, the post is identifying the Android SDK as non-free because you have to agree to Google's Terms and Conditions in order to use it at all. That's absolutely correct, however...
As someone who downloaded the original SDK in 2007, I can tell you that this was true from the beginning. Sadly the Wayback Machine is having trouble retrieving their first crawl of the terms (February 2009), but here's a crawl from January 2010 that shows that the offending clause has been there for at least 3 years: http://web.archive.org/web/20100111025451/http://developer.a...
A more accurate title would be: Google's Android SDK has always been proprietary, but I only just noticed.
Edit: Based on the date at the bottom of the wayback page, the linked version of the agreement dates back to April 2009.
Not sure, though.
"3.3 Except to the extent required by applicable third party licenses, you may not 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. Except to the extent required by applicable third party licenses, you may not 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."
Here are some more rights you were giving up back then:
"4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, your must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier."
At first glance, I don't think 4.3 or 4.4 is unreasonable (3.3 is more complicated), but those terms are clearly non-free. Free means free to use for any purpose (including trying to invade people's privacy or taking down cell networks) because different people will reasonably disagree about what purposes are and aren't legitimate.
> "3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK."
IANAL, but this seems to be designed to prevent projects like the Kindle Fire from building their own ecosystem on Google's code. Good for Google I guess, but no longer in the spirit of open source.
(This point is a bit moot because the Fire codebase was presumably forked from an older version of Android without this license change.)
https://developer.amazon.com/sdk/fire/setup.html
To me, the real issue I have with the SDK anti-fragmentation clause is that I have no idea what it means.
Does it mean you can't develop for the Kindle Fire, Nook, Nabi et al using it? Or is it OK if your apps still work on Google devices as well? Does that mean Amazon can't use the SDK when working on the Kindle Fire OS? Or is that fine too as long as the OS passes the associated compatibility tests (and, reportedly, Amazon has been very good with compatibility to date)? And so on.
And whatever the bizarre restrictions are how in the world is Google even dreaming of enforcing them? Or are they just planning to complete with Microsoft and Oracle for the "most pirated development tools ever" prize?
Amazon, Cyanogen, OUYA etc are all fine.
This is almost the textbook definition of closed software.
No one is stopping you from writing your own SDK. Reverse engineer the API and off you go. Fork your own android. Make your own play store. Its not a violation of "freedom" because something is inconvenient.
Its like when people complain about Linus ignoring their patches. Sorry, but its still free software, its just done under terms you don't appreciate. Fork it if its such a huge problem for you.
The next bit about Linus makes no sense at all. We are not talking about Google ignoring your fork of Android or your fork of the SDK, we're talking about being prohibited from forking the SDK or using it to fork Android.
The SDK is not free. It is not inconvenient to fork it, it is prohibited. Android may be free by your definition, but the SDK is not.
The SDK sources are still Apache2, and you can build your own SDK with them if you wanted.
You just can't take the Google-built SDK binaries (except as allowed by a third party license, such as Apache 2), or non-open source pieces, and use them to do it.
Actually, the Apache 2 license does not disallow you to impose further restrictions. So, if you agree to a EULA, that is valid.
Even if you did agree to the EULA, again, the EULA applies to the binary download of the SDK.
If you want to try to claim that one of the clauses binds you otherwise, it's an interesting claim to make (though the clause is clearly written to talk about the SDK), but one i think is wrong.
FWIW: I'm an IP lawyer specializing in open source licensing
I don't see a distinction between what Aliyun is doing and what Amazon, OPhone, and Cyanogen are doing. Aliyun was, after all, accused of making Android apps available for Aliyun without the developers' OK. So Aliyun is as compatible as Kindle Fire.
There might be some reason Aliyun is different, but, so far, nobody has actually shown such a difference.
What's bad about this is that Google is putting a fence around code they have made available under the Apache license.
This is not all that different from what many open source providers do (e.g., RedHat). If you want their official binaries, there are sometimes additional restrictions, but you are welcome to compile the source on your own or find a third-party who will provide you with unofficial builds (in this analogy, CentOS).
> "3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK."
Now, IANAL and maybe that doesn't mean what I think it means. To me it sounds like you're signing a non-compete agreement just by downloading the SDK.
That way, you won't be fragmenting Android - you'll be creating something new.
Then, should Android even stagnate, someone could take the source and create a new mobile platform, similar to, but not a different version of, Android.
What is and what is not a fragmentation of Android seems to be the key here.
It says you can't distribute any modified versions of the SDK. What you choose to call such modifications isn't addressed and isn't relevant, you just can't do it.
The confusion appears to stem from the fact that people are conflating the official, supported binary distribution license with the source code distribution license. These need not be the same. While easy access to binaries are convenient, it is certainly not a requirement of open source. And while it might be nice if every single thing in binary Android SDK was open source, this is also not an automatic requirement (depending on the license).
Reading the Terms and Conditions through this lens makes perfect sense -- the clauses about reverse engineering, distributing, developer key protection, all apply to the binary SDK. The source does not have these restrictions, and of course, statements like "reverse engineering" or "decompiling" can't possibly apply in the context of the source code in the first place.
It's sad, but I think it really hurt Google that they pushed tablets so hard and so long and pretty much failed at that market where amazon kicked ass. So business reasons seem to have forced them to kill Android as open and free. Reminds me a lot of this recent post about all the platforms closing up to try to squeeze more money out of mobile as web revenues dry up: http://techcrunch.com/2012/12/29/unnatural-acts-and-the-rise...
Google's bread and butter has always been web ads, and it is losing that with the mobile revolution. Now amazon came along and customized Android, and took a large share of the mobile money that Google was expecting. I do really hate the new Google Play. It is constantly showing books and movies and music in my face when I want apps and app search results directly. You can tell they are being pressured to deliver revenue at the cost of user experiences and pushed out a poor man's clone of amazon business model.
So it's not OK for Oracle to prevent Java fragmentation, but it is OK for Google to prevent Android fragmentation.
Apparently "don't be evil" is more nuanced then I thought.
Also preventing fragmentation is a goal, not an action. Oracle did legally abusive things, google hasn't.
Samsung has amassed quite a history, in a very short amount of time, of heavily customizing Android for their devices. That might at least partially explain why they seem willing to gamble on their own in-house OS rather than continue with Android.
3.3 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, 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.
3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
The part about not being allowed to reverse engineer seems to be the part of the license, which is most against free software principles. So IANAL, but actually understanding what a software does is, IMHO, the core of FOSS.
https://github.com/android/platform_frameworks_base
in the "core/java" subdirectory.
In recent releases (4.x, a/k/a ICS and later), some of the low-level GPU drivers are included as binary blobs, but the GUI libraries built on top of them remain, at the very least, source-available.
Most people misunderstand the license, being my favourite:
http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePos...
EDIT: just in case... "You are not required to accept this License in order to receive or run a copy of the Program.", point 9 of the GPLv3: http://www.gnu.org/licenses/gpl.html
3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
You end up making quite broad promises (IMHO) by just clicking through to download the SDK.
If not, then what does this wording even mean in practice?
"You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK."
Any action? Promoting? Does this mean that I can't write a blog post about developing for Kindle Fire? Hell, can I even buy a Kindle Fire and not break these terms (or install Cyanogenmod) seeing that it is just "including but not limited to" the SDK itself?
Is it conceivable that a company could offer source via GPL yet demand a separate license for the right to use it?
>This License explicitly affirms your unlimited permission to run the unmodified Program.
it also protects your freedom to modify and run modified versions of the software