Joe Hewitt: Android and Open Source
joehewitt.com
joehewitt.com
Android source code is licensed under the GPL and Apache licenses and therefore the source code is open for developers.
The Android project isn't really developed in the open therefore the process is closed for most developers.
Most Android hardware is carrier locked, has proprietary firmware, or has proprietary services loaded on top and therefore is closed for users.
Does Android mandate this or can you go and create a phone that has none of the carrier restrictions you noted? I think you can.
1.) Restrictions imposed by Google, which you are free to ignore if you stick to just the released source code of Android (like the Market or their proprietary apps) 2.) Restrictions imposed by the Manufacturer (which you could ignore by making your own phone) 3.) Restrictions imposed by the Carrier (which you can presumably ignore if you make an unlocked GSM phone).
Working outside of all three of those restrictions would basically put you in the same category as OpenMoko (which while an enterprising idea was pretty much guaranteed to not go anywhere).
So I'd agree, "you" can go create a phone without any of the carrier restrictions, provided you are a handset manufacturer. I'm not a handset manufacturer, so I can't.
It's not cheap, but it's very easy. See, for example, http://www.htcphonestore.com/
Many of them don't have access to the Market, or run Google's applications, but I don't think that makes them "not officially Android".
> I've been pleasantly surprised at how much more
> configurable Android is. The fact that you can
> replace the home screen with a third-party launcher
> or even make your own app store is a clear sign
> that Google's heart is in the right place.
Or, it's a clear sign that Android isn't well designed and is no different than most of the other mobile devices that have appeared in the last 10 years. And if you purchase a locked-down Android device from your carrier then it literally is no different.The problem has really been the cellphone focus which means "open" = "what carriers want". The lack of a true iPod touch equivalent has hurt the potential of Android.
I really think if you were trying to build and open, customizable, modular platform, it would be competitive with Apple, Microsoft, and RIM. Android really doesn't have a love for an ecosystem of gadgets around it. It is a lone wolf and needs to really have a high speed connector where people could really build cool add-ons that it can plug into. Make it the "I can carry my world" device that can be plugged into other things to get more power / capability.
The funny thing is that the inside of the Mac Pro has so many niceties from a hardware expansion point of view that never really appear on PCs.
Customizable machines are a billion dollar industry, chances are, you're sitting in front of one right now. It's not a matter of making a customizable machine, we know how to do that. It's a matter of actually allowing the user to customize things, which can be done by allowing core components to be swapped out for alternatives. In this context, the customization doesn't need to be complete/absolute, it just needs to recognize that different users have different needs and work differently. A consumer/home user may find the grid of icons on the iPhone screen to be easy to use, but the business user may want a calendar or email listing on their home screen (interestingly enough, we laugh at the members of both of these groups who end up with a massive grid of icons on their desktops, which is obviously bad for usability ("The link to the website was at the tip of the penis!" -- Sales Guy vs Web Dude). And Android offers the capability for apps to provide this functionality, but Android isn't considered to have Good Design(tm) (or is at least "less" than Apple's design) despite this capability.
Abstraction is the only way technology can become more powerful and more accessible at the same time.
Every Apple product is so well designed, until the next Apple product comes out.
Secondly, different users will always have different preferences and use cases; the variety enabled by customization allows for more users to be happier. Furthermore, such openness has produced custom apps that blow away everything else away. Swype, a custom keyboard that cannot be distributed to the end-user of rival mobile OS's, is the most obvious example. At least at the OS level, this modularity is a sign that Android is well-designed.
He's arguing a point that nobody cares about. Even RMS is probably saying, "You're being a bit pedantic here about the definition, aren't you Joe?"
Chrome was initially a completely fork of Webkit, but Google eventually chose to work with Apple and merge all of their changes to the Webkit trunk. This was only possible because Webkit, unlike Android, allows outsiders to commit.
The costs of maintaining a fork of a project as large as Webkit (or Android) are so huge, even Google didn't want to bear them for long. The benefits of the merge are huge for all users. Not only does Chrome continue to get Apple's changes downstream, like CSS transforms, but Safari gets Google's changes, like web sockets. In Android today, this sort of collaboration would be impossible.
Clearly Google doesn't think the benefits of public commits outweighs the costs, otherwise it would economically make sense. Additionally I suspect given the current state of mobile OS development vs browser development they probably realize that public contributions would be fewer and of less general utility than what we've seen with browsers.
I still think the fact that one can pick up Android, even if it is just 2.2 today, and build it, and port it to any device they want, and rip out any code they like, and add any code they like is a pretty reasonable definition of open -- at least given that openness is a gradient and not absolute term.
Just because most people don't care doesn't mean it's not important.
Why was it wrong -- so wrong that they were bullied into changing their process -- for Apple to behave this way, wrong enough to get so many people worked up, so many people to care, when Google engages in the same sort of "open license, closed project" behavior and get a pass?
and what subset care about:
the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"
?
Probably the most useful part of the Android story is side-loading. After that the ability to host Android on any device I like. After that the ability to add or remove any part of Android I like. At somet point we eventually get down to something like public commits, but that's far below things like ability to audit and escrow code.
Again, I'm not saying that the things Joe wishes for are bad things. But the absence of them does not make something closed.
Right, that's why it's been in the top 5 of HN for two days.
> Even RMS is probably saying, "You're being a bit pedantic here[...]"
Have you ever read a word of RMS? :P
His position would be that Hewitt is being insufficiently pedantic, particularly with regard to the complete closed-ness of the hardware and manufacturer/carrier-specific software.
If you look at this the right way, every checkin is a new fork. There's no such thing as a mainline branch. There's absolutely no reason you can't simply fork some branch of Android and start working on it and tell everyone to work from your branch. Each developer has the choice, including Google to use your branch or checkin to a different fork.
Again, AFAIK, Google is not preventing anyone from branching and checking into a new branch. This is fundamentally no different than Google allow public commits, but then branching after each of their checkins.
To put it another way, if you were to take the 2.2 branch of Android and you forked then contributed an incredible 7" tablet UI experience that Google nor Apple could ever match, you may have forced Google to begin picking up your branch.
There's is nothing stopping any of this from happening, except the apparent attitude that Google needs to bend over backwards to accomodate people who haven't shown any inclination nor aptitude to an interesting contribution.
Goodness, I can't believe I'm defending Google.
They can fork the code and do whatever they want, but that fork doesn't have a lot of value if it doesn't have distribution. They can fix a bug, but they can only fix it for themselves, not their customers who get Android through retail stores.
You may of course say "Google has no obligation to let people contribute to their distribution". And you'd be right. But this is like saying "I am under no obligation to smile and say hello when you enter the elevator". You'd be right. But people do it anyway because it makes the world a better place.
Likewise, Joe is saying it would be nice if Google allowed people to contribute directly to the main distribution of Android. They're under no obligation to do so, but it sure would be cool.
I hope this clears things up.
Full disclosure: I work on Chrome at Google which has some of the features Joe is asking for in Android. I also wish Android had them, but I have no special insight into why they're missing.
I personally think it would be nice if nothing shipped with the GPL as it restricts my freedom, but I won't claim gcc is not open.
The issue isn't if Android can improve along a given vector. Rather it is is Android a closed platform because there exists a branch that doesn't take public contributions or have a public tree. I don't think so.
Also, try contributing to the Linux kernel.
I did, and now it includes some of my code. What's your point? Their standards for code quality are high, but let's face it, the kernel wouldn't have reached 10MLOC if it was written like Wordpress. Android won't accept your patches at all.
Speaking of the kernel, the Android project hasn't been very good about merging back their kernel patches. Getting better, but they're now pretty far from mainline.
It seems that Google doesn't allow the carries to replace the Google Location Service.