Is Android really open source or not? That is the question being asked by almost everyone. A lot of people, especially those influenced by RDF or those who are in the news industry with no idea about OS and open source but were asked by their boss to get a scoop on this pronto, tend to bring up a few keywords and then twist them around in the way they see fit to make sure it says Android isn’t open. They don’t need to be correct, they only need the article to “sound correct” by picking up sentences out of context or putting quotes only from people who agree with them. This will convince their boss and 99% of their readers who have no idea about all these things either. But the boss is happy he got a story and associated clicks. Readers are happy because they got the points to float around in their next forum flame war. They don’t have to read when someone corrects them. They have made their points and rest is all someone making noises like a rat.
A lot out of the rest of the people, who are indeed informed, make the mistake of thinking that “Open Source = GPL” or “Open Source = Free Software”, which is not true. Open source is similar to free software but is one that choses to keep more options open. In short, Free Software Movement, as the one evangelized by FSF, is a subset of open source that tries to achieve freedom of software by restriction.
Please also note that many people including Steve Jobs confuse people more by interchanging between open and open source. An android phone that you get may not be open, the android market may be open, etc but this discussion is purely about open-source.
Anyways, with asbestos underwear on, I write this post to speak my mind about this matter by talking about various points thrown up by the above mentioned classes. Since this is going to be a long post, I’ll mention here the things it is going to cover: 1. Allegations against Android’s open-source nature. Are they true? 2. Does OSI Foundation (Open source Initiative) think that Android is open source? 3. Android and open source in layman terms 4. Takeaways/conclusion
Update: Updated the article as per Tony and Kasper’s comments below. Thanks Kasper and Tony for your valuable inputs.
Android and Open Source: Allegations and Answers
Allegation: Google does a lot of development in private for few months and then releases the code to public. Answer: Almost every open source project I know does this. Do you think every person who works on an open source project pushes his code to the mainline 10 times when re writes a 10 line code? No. He completes the feature, tests it and then pushes it out. Individuals might do it sooner, companies might do it later but everyone pushes out their code when they feel things are fairly ready. So, Google choses to do the “push” every few months when they think their new feature set is ready. This, of course, is more influenced by the fact that they need to be competitive in the aggressive mobile market and hence not let the competitors know about the exact features but still it is well within the limits of open source. And they are doing it before/with the binary release as well.
Also to be noted here is the fact that the “code dump” is done only for major releases. Minor fixes and even features keep trickling into the code base every now and then and these allow others to make fixes as well. e.g. Cyanogen was able to bring “802.11n” capability and was able to include various fixes including one for wi-fi sleep policies before they actually made into an OTA update for any phone.
Allegation: Only google employees can check in code to mainline. Answer: Every open source project has only a select few folks who can check in code. Most of the open source projects start with only their founders having commit access. They may or may not give commit accesses to anyone else. Check out various open source projects on sourceforge, googlecode, etc and you will find this. Most of the projects that do choose to give commit access to others, start doing it after some time when they feel the project is mature enough and they are confident enough in someone else. Android is just a hatchling, around 2 years old. It has begun making strides only now so Google may even choose to take the latter path but I can understand if Google wants to keep this as their control point because of the hustle and bustle of the mobile OS world which is much more rapid and cut throat than the desktop OS and this does not make them closed. Not only that, but seeing how everyone in the mobile world is so trigger happy with suing everyone else, it creates a legal issue for them as they would be the ones to answer if someone else brings this upon them.
Allegation: Google only accepts their own code into official android and nobody else’s. Answer: This one is hilarious. Obviously, anyone who says this hasn’t actually been to review.android.com. Just go their and check whether any merged changes have non-google, non-android email ids. Anyone can upload their patches there but the accepted ones are fairly low. This problem is present in every popular open source project, even the Linux kernel. But is more pronounced in the case of android because Google’s android team is much smaller than the number of persons working on other projects and there is red tape of a big company involved. If you want to get your patch in, just like the kernel, you need to engage with them. Talk to them in the relevant bug report, comment the code properly, give them a reason to not avoid your patch. But yes, the process is still very slow and it is eons faster to just contribute to a fork like cyanogenmod. I do hope that google does get better in this regard soon though.
Allegation: It is not possible to make a full android build from the public code tree of android. Answer: BS. Cyanogen does just fine with his full AOSP builds. People argue that Google does not release the modem/baseband code but they idiotically fail to realize that the baseband code is not part of Android at all. It is the IP of the baseband manufacturer and is specific to each hardware. Android is just the code that runs on apps hardware. Google does not indeed release the code of their built in google apps (gtalk/gmail etc) though but they are already working towards that and these apps will not be a part of the base Android system anymore. These would be standalone apps and even now you don’t need them to make a fully working android build.
Allegation: “Android” is a registered trademark and is held by Google. Answer: Linus holds the trademark for “Linux”, Mozilla foundation holds the trademark for “Firefox”, Canonical holds the trademark for “Ubuntu”. Get the drift? Basically, it is completely possible and allowed for an open source software to be trademarked.
Allegation: Google doesn’t stop the carriers/OEMs from locking down the phones, adding bloatware or custom UIs. Answer: This is an issue with carriers/OEMs and not Android. Google uses the apache software license (ASL), which is a permissive license (like MIT, BSD, etc) and hence does not stop the carriers from doing such a thing (In fact, this is the very foundation of being open, check the next passage about OSI foundation, point no. 9). Many people say they should, but if they did then they wouldn’t be open anymore, would they? Even Linus Torvalds is against making such a stipulation of not allowing locking of phones and this is the biggest reason why the Linux Kernel (and lot of other open source projects) didn’t move to FSF’s (Free Software Foundation) GPL v3. I wonder why no one calls the Linux kernel closed hmmmm… BTW, if you are so serious about unlocked/rootable phones then buy a dev phone directly from google or get one from Synapse.
Android and Open Source: OSI Foundation
The OSI foundation has a few guidelines to determine whether something is open source or not under their Open Source Definition. Android uses the OSI compatible Apache Software License (ASL) but still let’s see whether Android comes up to all of them or not. If it is in conflict with even one of the requisites, we will call Android closed. 1. Allow free redistribution - Check 2. Give out un-obfuscated source code - Check 3. Allow modifications and derived works - Check 4. Allow distribution of modifications (as patches) or modified software as a whole. Can restrict the modified versions from using original name of software - Check 5. No discrimination against any person or groups - Check 6. No restriction of using the software on any device or field - Check 7. No additional license needed - Check 8. No product-specific license - Check 9. No restriction on software distributed along with original software - Check 10. Technology neutral, i.e., no preference for an individual technology or user interface - Check So, Android is true to each and every point that being open demands to it. In fact, points 9 and 10 are fundamental in making it open but alas, people less oriented with open software tend to term this as being closed (as seen in the last allegation above)
Android and Open Source: From a layman’s view point
Apart from the above, I would also like to share a few “layman-examples” which will let you understand for yourself why Android is open: - You can see all the official android OS code without any restrictions - You can download it, fork it, modify it without asking google - You can port it to any device without asking google - You can develop and sell your phone with Android without asking google Now compare that with any other mobile OS you know.
Android and Open Source: Conclusion
So, the takeaways from the above wall of text are: - Android is open-source - Android is permissively open-source instead of being restrictive - Android can do better in terms of community driven development but is perhaps held back by pace of competition and legalities involved. But, this in no way makes it non-open-source.
Let me know if you have any corrections or allegations to make :)