Google said it withheld the 3.0 source code because it was buggy…
This is not true.
Google told Engadget:
Android 3.0, Honeycomb, was designed from the ground up for devices with larger screen sizes and improves on Android favorites such as widgets, multi-tasking, browsing, notifications and customization. While we're excited to offer these new features to Android tablets, we have more work to do before we can deliver them to other device types including phones. Until then, we've decided not to release Honeycomb to open source. We're committed to providing Android as an open platform across many device types and will publish the source as soon as it's ready.-http://www.engadget.com/2011/03/24/google-keeping-honeycomb-source-code-on-ice-says-its-not-ready/
And in a separate blog post explaining Google's role in Android development Andy Rubin said:
Finally, we continue to be an open source platform and will continue releasing source code when it is ready. As I write this the Android team is still hard at work to bring all the new Honeycomb features to phones. As soon as this work is completed, we’ll publish the code. This temporary delay does not represent a change in strategy. We remain firmly committed to providing Android as an open source platform across many device types.-http://android-developers.blogspot.com/2011/04/i-think-im-having-gene-amdahl-moment.html
(All emphasis is my own.)
I understand the tech blogs not being able to read between the lines here (lord knows how easy they think it is to develop software), but I'm disappointed that after all this time the view from software developers hasn't gotten out or at least that Google hasn't explained it better.
The
official repository, at least before Kernel.org was hacked, always contained the released source for Android and
could be built for phones. Picking up on the emphasis yet? - Android must run on phones.
Froyo (2.2) was intended only for phones and after its release Google created two internal branches:
Gingerbread (2.3) continued to be improvements for phones, and as such was released per usual.
Honeycomb (3.*) contained the changes to officially extend Android to tablets.
Google probably broke the build or compatibility/regression tests for phones in Honeycomb and if they were to commit these changes the official repository would no longer work for phones.
I get the feeling that they intended to merge Gingerbread into Honeycomb and release it, but due to whatever delays, Honeycomb won't be officially released now. Instead Ice Cream Sandwich (?.?) will merge Honeycomb, Gingerbread, and likely the Google TV branch into a single base.
Now we can focus on the real frustration with Google's "open" model for Android: they are essentially the only developers and they do their work in private. This would be a non-issue if all their branches were public, however, I feel there are valid reasons they aren't:
1. Google keeps a competitive edge without revealing their current & future plans.
2. Google can develop quicker without the many pull requests from the community (take it or leave it but at some point coordinating community efforts becomes more difficult than doing it yourself).
3. It removes a lot of speculation that they'd otherwise need to respond to.
4. It prevents companies from releasing products utilizing pre-production code, which is extremely important when many of these companies have shown an inability to release timely/any updates.
Which leaves the problem of making deals with companies allowing them to release products using code that won't be committed to public for months. Not sure how I feel about this since I'm not familiar with how difficult it would be to get similar access by a smaller company.
TL;DR: My opinion is that Google decided to withhold Honeycomb rather than commit code to the repository which wouldn't work on phones.
The real frustration with their "open" model is their use of private branches but their possible reasoning seems valid.
Sorry for the long post, just getting tired of what I see as a logical decision continually being described as malice.