Saturday, April 11, 2009

Android VS Iphone

This is a nice conversation still going on in Android mailing list. I have put the offensive stuff brought forward by A.I. Sutton. That is not because I hate Android but there are people who love Iphone. In my case I need both.

Now before I start on the iPhone comparison I'm going to pre-empt the normal "But Android is open source....." response by saying lets be honest and admit it as it stands Android is not an open source project because the public "open source" repository is pretty worthless in its' current state.

The last time I tried to build the master branch it failed missing some Google internal API classes. The SDKs I've produce from the cupcake branch seem to be considered by Google employees as pretty useless with comments like "This is why we want to be clear it is "unofficial," because it is not actually a working SDK" being thrown around and networking in the emulator
still being broken a week after users started reporting the showstopper problem (And Romain did hint that Google have a fix, I read as "there is a version where this is fixed"). And as we all know you can't use it to build the exact versions of the open source parts of either of the two firmware versions that have shipped on the G1.

To me it seems little more than code dump which is aimed at ensuring Google can keep saying "But it is open source and not just a Google project"

Now, in the last week I had few conversations with iPhone developers so I could compare the Android developer experience to that of what is perceived as our nearest competitor and they are laughing at us (seriously, when I mentioned the G1 most of them responded by initially chuckling). The general consensus among them was;

- Yes, you pay $99 for the iPhone dev kit, but you get "free" external testing (i.e. at apple) and commercial quality support with many queries being turned around in hours or a couple of days at worst. Compare that to some of the support queries on for basic problems things like a Android failing to connect to wireless lans with hidden SSID ( which, after *five and a half months* is still marked as "New" and doesn't have a single response from a Google employee.

- The most common cause of App Store listing rejections are things that users would complain about anyway. This includes things like performance characteristics, UI anomalies, and inconsistent behaviour. This is the type of stuff that is left for users to find out on Android and only comes to light when 1* or 2* comments are posted and even then you don't know if it's
a one off on the users device or possibly something specific to their region (

- The normal amount of time from submission to app store listing is around 7 days. Some apps take months to go through the approval process, but that is because of intellectual property concerns, concerns over offensive content, or is because the app has to be re-reviewed a few times to meet the apples performance and behaviour guidelines. Yes it's not as fast as Android, but you know that once it's on the market it's of a quality where you're not going to get bombarded with user queries about problems straight off.

- Most of the developers actually feel valued by Apple and feel that Apple does what it can to make sure they get the tools they need to do their job and ensure they're apps. This has been re-enforced by allowing the developers to beta test the new firmware and develop against it.

Personally, it's made me shell out $99 for an iPhone SDK, dust off my Nokia N81, and spend $75 on eBay on a Blackberry so I can explore the alternatives.

This is a reply to that by Tom Gibara

I think my response might best have been posted to android-discuss, but I'll reply here anyway.

Pre-empting a debate about whether Android is open source with the argument "...let's be honest..." isn't adequate. I don't know whether there are established metrics for measuring a degree to which a project rates as being "open source", but here are some of mine:

(1) Can I make use of the code and do so freely?
(2) Can I distribute the code free of onerous conditions?
(3) Can I contribute?
(4) Can I be openly critical?

By all of these metrics I regard Android as open source.

(1) I regularly access the git repository to learn how various Android components work. I downloaded and successfully built an SDK based on cupcake for a preview of forthcoming IMF. On a few private scratch projects, I've copied widget code out of the android framework and tweaked it to make my own UI components. I neither sought nor needed permission from Google to do any of these things because the code was licensed so as to give me these freedoms.

(2) Since almost all of the source code is licensed under the Apache License I feel very comfortable distributing any software I derive from it since it's an extremely permissive and well understood license. I've seen a number of people post in this, and other groups, that the absence of some code from the repository disqualifies Android from being open source; even that the inability to create an installable phone image betrays a malign intent. I don't hold with these arguments - they would carry weight if Android was only operable on one model/brand of hardware but since that's demonstrably not the case I'm contemptuous of them.

(3) I have to-date made one very modest contribution to the Android code base, but intend to make more when time permits. My limited experience so far is that the Android engineers are extremely receptive to contributions pitched at a technical level and supportive of anyone trying to commit code. Perhaps others have had a different experience. I do anticipate that programmers who think they are going to sweep in and carve out whole new areas of functionality inside the core frameworks will probably be disappointed, but due to an inadequate understanding of how large projects need to operate rather than by intransigent Google staff.

(4) This is an important freedom that is not necessarily guaranteed by the preceding ones. I include a public bug reporting system as an element of this. Android has one and there is little evidence that Google engineers ignore the bugs filed there. It's clear that there is insufficient public visibility of the statuses of issues, but that's not the same thing. Reading the android related groups demonstrates that criticisms of Android, irrespective of how well founded they may be, are freely accommodated even though the groups are moderated by Google employees.

Given the personal observations above, I find the argument that Android is not an open source project simply misguided. Perhaps it arises in many instances from a lack of experience with open-source or alternatively large scale software development. I'm not denying that there are some key problems, especially concerning the state of the master branch. Nevertheless, having closely observed the progress of the android project since its first public announcement I believe that things have improved considerably and that they will continue to improve; both the core Android team and the community (as with your interim builds) will have a role to play

I'm not qualified to comment on the experience of releasing iPhone applications, and I'm inclined to believe what you report - that the experience of most iPhone developers is not as negative as many websites like to report. For companies and individuals who are looking to generate more revenue more quickly that they might with an Android application, I would do nothing to dissuade them from investigating other opportunities; the iPhone foremost.

Nevertheless, I regard it as almost inevitable that those with power will ultimately abuse it. As a consequence I believe that Apple will ultimately abuse their monopoly of the App Store. In contrast, I expect the open source nature of Android to protect its community of users from egregious abuses that could be countenanced by present or future management of Google or the OHA.

I regard the ceding of software to its related community via the process of "open sourcing" it as analogous to the establishment of a democracy which forces the government to be reasonable with those governed and thus protects against the worst excesses of its corruption. Companies that open source the software they produce are serving their users by protecting them against the potential actions of future management. Given the significant commitment that I must make to any new platform I adopt, I regard this as any extremely beneficial provision.

Here is again Sutton

My metric is simple; Can I build a working system from the public repository which represents what most users are using?, and the answer to that is currently no.

To me there are many products being labelled Android; There are the ones that are used on devices, there are the ports that people have made to new platforms, and there is the public repository, and although all these are different in their own way people seem to pick attributes from each and say that's what Android is.

As I see things, the answers to your metrics are;

(1) You can for the Android open source project, but not for the version of Android that's shipped on the G1, Magic, or ADP1. I will happily admit I am wrong if someone can give me the git revision numbers from the open source project which will build all the open source components of the "official" updates for these platforms.

(2) Again, yes for the open source repo, but again builds from the open
source repo are not what's in use by a majority of Android users.

(3) I've contributed code to "closed source" products before after the source code was made available to me under an NDA. I did not work for the company at the time and I did not get paid for the contribution, so I'm not sure it's a metric of an open source project. I've also had contributions to projects considered as open source sit in a review tree for 6 months and
then one another developer submit the same code and it gets integrated (this was a 1 line fix, and so the fix was *exactly* the same). Therefore I'd say this metric possibly isn't a charactistic that identifies an open source product

(4) I would again disagree that bugs are ignored, as I stated in my original email there are bugs that are still marked as new after five and a half months. This means they haven't even reached the "reviewed" stage even though many later bugs have. I would also disagree it's a metric of an open source product as there are numerous public criticisms of Windows, and the
developers complaining over problems submitting iPhone apps are well publicised, and both of these are closed source projects.

I think the main point of our differences is that you see Android as one thing, whereas I see Android as the basis for many things which are trading off a brand, and to me that's like saying IBMs HTTPD is open source because it has a codebase built on Apache (Thanks to Disconnect in
href=" for bringing the
IBM/Apache link up).

No comments: