How Google can delay Android source code releases
Honeycomb source to be released after Ice Cream Sandwich
Apparently it's source-code delay week here on Open for Discussion, as Google joins Apple in delaying the release of source code for open source licensed software.
Except, unlike Apple, which promptly released the source code in question Monday afternoon, Google stated yesterday that it will not release the source code for Android 3.0 ("Honeycomb") until after the release of the next version of Android ("Ice Cream Sandwich").
This is not necessarily news, since Android chief stated last month after much lambasting by the media (including me) that Honeycomb's source code would be held for an indeterminate time and released when it was ready. It's just that now "indeterminate" has an actual date: post-launch of Ice Cream Sandwich.
Prefacing pretty much this entire column with the disclaimer that I am not a lawyer, the initial question is: how the heck can they do this, given that Honeycomb is licensed under the Apache Software License v2?
Looking at the license itself, there's nothing in the license that specifies when the source code has to be released. In fact, even the GPL, a more restrictive license than the ASL in the copyright sense of the word, doesn't specify exactly when source code has to be released. It's just been customary to release source code with the binary software release.
In fact, really looking at the ASL, I can't see any language that specifically says that the source code has to be released at all. Here's where I really show my legal ignorance, by the way, because surely that can't be right, since the Open Source Initiative says the ASL is an open source license.
Here's what is bothering me. The beginning of clause 4 of the ASL, for example, states:
"You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions...
...And then goes on to list the qualifications, none of which say "give away the source code." The only time the source code is mentioned in clause 4 is to state that any existing copyright, patent, trademark, and attribution notices in the source have to remain in place.
It's the Source or Object phrase that bugs me. "Or" strikes me as making the choice of giving away the source code ultimately optional. It's even in the definition of "Work," which is legalese for the software itself:
"'Work' shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work..."
In my admittedly layman's interpretation, it seems as if the ASL is designed to protect the rights of software authors whether they give away the source, binary, or both forms of their software. But it doesn't require source code to be given away. The fact that ASL software source is, typically, distributed freely seems to be a matter of social convention, not legal.
Now, if my little aha! moment here is correct, and this is something so blatantly obvious to everyone else for all these years, please don't be harsh in your judgment of me. Like a lot of people, I just assumed that the requirement to give away the source code was part of any open source license. You know, since the Open Source Definition says so.
Even if I am wrong, and I am completely missing the source code distribution requirement in the ASL, the issue of timing is still valid: Google is not required to give out the source code at any certain time under the ASL.
This is an important point, one which has completely flown by even lawyers like Edward Naughton, who is still under the impression that the entire Android platform is under the GPL. (To be fair, I once made the same mistake, though I corrected it in pretty short order.)
Naughton's analysis is flawed because only the Android kernel is under the GPL, and as far as I can tell, any of the work Google is doing in Android 3.0 by not releasing the Honeycomb source code is not happening in kernel space. Changes to the Android kernel are being ported upstream to the Linux kernel (at least, so far as the technical differences allow). In fact, Naughton went on a source code quest and was able to get some of the kernel code.
"I've also looked into this, and as far as I can determine, Asus is the only manufacturer that has released any Honeycomb source code, and it is only the kernel code for its EEE Pad Transformer product, which is an incomplete source release and of little use to developers," Naughton writes.
Er, that's actually correct: only the Android kernel is GPLed. Under the ASL, Asus wasn't required to give out the entire Honeycomb source code on request.
Naughton claims his colleagues have tried to get Honeycomb code from Motorola, which makes the Xoom tablet, and has gotten nowhere. Again, he's assuming (wrongly) that all of Android is under the GPL. No, it's just the kernel. Anyone can go get the latest Android kernel source code now, which is entirely proper under the kernel's GPL.
Naughton, by the way, is the same guy who tried to raise a ruckus about the Android kernel being in violation of the GPL by using Linux kernel header files to create a new BSD-licensed library that userspace applications can interface with the Android kernel. The general convention has been that such header files, since they are factual in nature, are not copyrightable. And, on the bizarre chance they were, there would have to be a party on the Linux kernel team interested in suing Android over it. Linus Torvalds was clearly not interested at the time, and suggested that people worried about this kind of thing should get a hobby.
Misinformation aside, even though the ASL does enable Google to do this kind of thing with the Android platform code, I have to wonder how many vendors are getting locked out from using Honeycomb-based platforms on their devices, just because Google thinks the code is not ready for phones? To me, this seems counter to the whole idea of making Android open in the first place: get Android on as many devices as possible to grow Google's main revenue stream, advertising.
When all is said and done, Google is an advertising company that sells ads around tools and content that people want to use and read. One would think that getting as many eyeballs on those ads would be a good thing. But perhaps I have answered my own question here: advertising is also about packaging, and if Honeycomb is indeed not up to Google's image standards except with a few select vendor partners, maybe that's why Google is willing to stretch the spirit of open source to the breaking point.
Legal? Yes. But we don't have to like it.