Android, Openness: Must and Should

Is Android still open now that Google has postponed the source code release of Honeycomb, version 3.0 of the mobile operating system? I’ve been reading a whole boatload of articles and blog posts on the web claiming Android is no longer open, but it seems like very few people seem to actually understand what ‘open’ really means when it comes to the GPL and the Apache license. Here’s a short primer.

This primer is a general overview, and doesn’t go into the specifics of every part of the Android ecosystem. I’m focussing on the two main licenses covering the Android operating system: the GPLv2 (the Linux kernel) and Apache v2.0. I’m sure specific parts of Android will be covered by different licenses, but most of them will probably fit into either of the two categories that the GPL and the Apache license each belong to.

The most important thing to realise when you’re talking about whether or not Android is “open” is the distinction between what you, as a distributor of open source software, must do, and what you should do. While the former is relatively clear and easy to understand, the latter is much more problematic because each individual – you, me, Andy Rubin, John Gruber, whatever – has his or her own ideas about what an open source project or company should do.

What you MUST do

When it comes to what Google must do, there is absolutely zero indication that Android is any less open today than it was a few months ago. A crucial detail that many people fail to mention – or are simply unaware of – is that open source licenses, even stricter licenses such as the GPL, do not require, in any way whatsoever, that you must make your code publicly available. What these open source licenses demand is that you make the code available to anyone who has the binary – at least, for GPL-like licenses. Code covered by the Apache license does not even have to be distributed at all – whether you own the binary or not – since it’s a BSD-like license.

This is a very crucial detail that many seem to forget when talking about Android’s openness now that Honeycomb’s source code is being held back indefinitely. The only way to get Honeycomb (the binary) is to buy a Xoom. This means that the only people who have the right to access the Honeycomb source code (the part covered under the GPL) are those who have bought a Xoom. If you do not own a Xoom, you have zero and nada right to claim access to Honeycomb’s source code. And even if you do own a Xoom, you are only entitled to the code covered under the GPL; Google is allowed to withhold the code under the Apache license indefinitely.

In other words, as long as Google/Motorola provide source code access to the Linux kernel modifications to individuals who own a Xoom upon request, Google/Motorola are fully complying with the open source software licenses that govern Android. Google/Motorola do not have to provide access at all to the code covered under the Apache license. These are the bare facts. It would be awesome if a Xoom owner (anyone…?) could contact Google/Motorola and request access to the Linux kernel source code used by Honeycomb.

Another common misconception regarding open source is that development on open source projects must always take place fully in the open. This is not the case. You are allowed to take any code – GPL, Apache, BSD – and modify it within your own organisation to your heart’s content. Google is allowed to develop new versions of Android entirely behind closed doors, and then release the source code when the products hit the shelves. Only when you distribute your software with GPL code in it do you need to make the code available upon request. As such, ‘closed’ development is perfectly fine and entirely allowed.

All this means that when you look at what you must do as a distributor of open source software, Android is still every bit as open today as it was a few months ago. Nothing has changed. As far as we know, there have been no license violations whatsoever by the Android development team.

What you SHOULD do

What you should do is an entirely different matter. Since I can’t guess everyone else’s ideas of how open source development should take place, I’ll relay my own beliefs. I believe that if you deem it necessary for your project to be developed behind closed doors, you should be able to do without somehow being labelled as ‘closed’. Development behind closed doors can make a project easier to manage and can speed up development, which in turn can be beneficial to users.

However, I do believe that once your project is released, you should provide public access to the source code. In other words, I am not happy with what Google is doing with the Honeycomb source code, as in my view, it makes the project less open. While I can understand their reasoning for doing so, I’m still not happy about it. It feels like a step back, a cop-out, an blatant admission that Google has failed in keeping Android consistent – a mistake it is now trying to weasel its way out of.

However, that is just my personal view. I know many OSAlert readers who believe development should also take place in the open, and I even know some die-hards who believe that simply by adding closed-source applications to Android, they can’t consider it truly open source. Heck, there are also those who believe that Android isn’t really open because of its wildly divergent Linux stack which isn’t part of mainline.

These are all very valid opinions to hold, but like my own opinion, they have no bearing on the ‘what you must do’ aspect of this story.

Malice or naivete

Whether Google’s recent moves regarding Android come from malice, naivete, or both, they seem to be about improving the Android experience for customers and developers, and that’s actually a good thing. However, I’d rather they do so without cop-outs like withholding source code, but at the same time, Google is not actually violating any licenses here. It would be very welcome in these already tense debates about openness if the larger players in these debates properly distinguished the ‘must’ from the ‘should’ instead of resorting to curiously* incredibly emotional language.

In the end, all this means Android today is technically still as open as it was a few months ago – but at least for me, that doesn’t really say all that much. Google should be a good open source citizen, and release the source code. If they don’t want cheap Android tablets to tarnish the Android brand, they should just do what Haiku and Red Hat do: protect the Android trademarks through a licensing and quality control program, and restrict access to Google services such as the Android Market to devices that are properly licensed.

* I mean, really, Gruber, Apple has withheld source code releases in the past quite often, and in fact, the code to the open source components underlying iOS are not made available at all, yet not a peep from you about that – despite the fact Apple regularly touts the open source underpinnings of its operating system. If there is one “hypocrite” here, it’s you.

59 Comments

  1. 2011-04-05 11:17 pm
    • 2011-04-05 11:24 pm
    • 2011-04-05 11:51 pm
  2. 2011-04-05 11:29 pm
    • 2011-04-06 3:30 am
  3. 2011-04-05 11:29 pm
    • 2011-04-06 7:58 am
      • 2011-04-06 2:25 pm
        • 2011-04-06 4:50 pm
  4. 2011-04-05 11:48 pm
    • 2011-04-06 2:22 am
      • 2011-04-06 1:19 pm
  5. 2011-04-05 11:48 pm
    • 2011-04-05 11:55 pm
      • 2011-04-06 3:35 am
        • 2011-04-06 9:00 am
    • 2011-04-06 12:00 am
      • 2011-04-06 12:34 am
        • 2011-04-06 1:03 am
          • 2011-04-06 3:37 am
      • 2011-04-06 4:48 am
    • 2011-04-06 5:29 am
  6. 2011-04-06 12:02 am
  7. 2011-04-06 2:00 am
    • 2011-04-06 3:53 am
      • 2011-04-06 2:34 pm
        • 2011-04-07 4:43 pm
    • 2011-04-06 3:56 am
  8. 2011-04-06 2:53 am
    • 2011-04-06 5:39 am
      • 2011-04-06 2:38 pm
  9. 2011-04-06 3:38 am
    • 2011-04-06 3:53 am
    • 2011-04-06 6:48 am
      • 2011-04-06 1:02 pm
      • 2011-04-06 11:53 pm
  10. 2011-04-06 4:58 am
    • 2011-04-06 5:53 am
      • 2011-04-06 6:04 am
  11. 2011-04-06 7:39 am
    • 2011-04-06 7:54 am
      • 2011-04-06 8:45 am
        • 2011-04-06 3:29 pm
  12. 2011-04-06 7:58 am
    • 2011-04-06 9:11 am
  13. 2011-04-06 9:05 am
  14. 2011-04-06 11:08 am
  15. 2011-04-06 2:51 pm
  16. 2011-04-06 2:52 pm
  17. 2011-04-06 3:02 pm
  18. 2011-04-06 5:21 pm
  19. 2011-04-06 5:36 pm
    • 2011-04-06 6:35 pm
    • 2011-04-06 6:53 pm
    • 2011-04-06 7:33 pm
  20. 2011-04-07 3:14 am
  21. 2011-04-07 3:26 am