Hi Diane!

From your response I sense that I must have touched a nerve. Please don't misunderstand my intentions in making these assertions. I'm not an Android hater, I'm a disillusioned believer. I'm not the only one though:

http://techcrunch.com/2012/01/14/ok-mg-i-take-it-back/

http://www.zdnet.com/blog/open-source/androids-biggest-worry-fragmentation/8022

On 1/12/2012 4:26 PM, Dianne Hackborn wrote:
On Wed, Jan 11, 2012 at 8:31 PM, Christopher Van Kirk <[email protected] <mailto:[email protected]>> wrote:

    Making software is a business. An investment. To reap maximum
    rewards on that investment the product has to have as much reach
    as possible, meaning the OP is absolutely on point about OS
    upgrades. Who is going to spend 10k, 100k, 1m, etc, developing an
    app whose target market is less than 1% of active installs? 4.0
    won't be an attractive target for developers until it commands at
    least 80% of the installed market, which will likely take at least
    a year to occur, perhaps longer.


How different is this from a new major version of Windows coming out? It seems like at least a year until they start to get significant traction. Windows does have an advantage in that user can buy a copy of the newer OS and install it if some app they want needs it... but as an app developer, requiring a newer version of the OS than the user has is probably not likely to get most of those potential users to buy and install an upgrade to their entire OS.
I'm not sure what your point is here. Developers have the same dilemma in the Windows space, although to be fair, the changes from version to version are far less frequent and far less dramatic than what's happening in the Android space. Even so, something like 40% of the PC market is still on XP even though it's now 11 years old and beyond its support lifetime.

But since you brought it up, you're right. Windows releases generally require some time to be adopted. I don't think that refutes the OPs point in any way. Also, Windows isn't your competition in the mobile space, iOS is, and iOS does not suffer from this problem.

As for what's different, I guess the major thing is that with Windows the end user can install the new OS whenever they want to, even on old hardware. There's always an upgrade path open for them, whereas in most of the officially sanctioned Android universe this isn't an option. Instead, people are supposed to buy new phones with the new software pre-installed on it, and generally that's subsidized with long term contracts to keep them locked into the carrier and the device. Sure, there is a sizable hacking community that will help the brave and technically savvy to bypass the sanctioned update pipeline, but depending on them to save your 4.0 exclusive app seems it would be like an exceptionally poor business decision. Finally, there's rarely a new version of Windows to contend with, whereas with Android we have something new every 6 months or so.

    Comparing handset differences with browser difference is just
    absurd. How many browser versions are there? Five maybe six? An
    average Android app has to deal with over 600 different devices
    today. That's a difference of 100x. This number is also growing at
    an exponential rate, so even if you can manage to test on all of
    those devices, in three months you'll probably have to do the same
    number again.


You are significantly exaggerating about 600 different devices... if you are going to say that, you could just as well say there are hundreds if not thousands of different PCs running windows... not to mention all those different graphics cards and drivers and what-not... crazy!

The Android market tells me that my app is accessible to 600 devices. If that's not true then I guess it has a bug.

Again the comparison to Windows. iOS is your competition, not Windows. Having said that, though, Windows does run on thousands of configurations of hardware, and yes, each of those configurations is a different 'PC'. It's also much more stable and predictable in doing so than Android seems to be. I know that comes at the expense of a larger OS, but honestly, the phones out there now are getting close in terms of capability to the low end PC market anyway.

Yes it is true that there is some more variation between devices because of the ability of manufacturers to do customizations... but for the most part this doesn't impact apps (see below), and for those situation when it does you are looking at 3 or 4 major manufacturers with their own customizations, not 600.

Few manufacturers doesn't mean few implementations of the OS, unfortunately. I personally have seen different devices from the same manufacturer have different behaviors in various places.

    What you're apparently not appreciating is that unlike the PC/Mac
    world, the Android world lacks strong compatibility standards and
    more importantly, conformance testing.


Really?

http://source.android.com/compatibility/index.html

Standards:

http://static.googleusercontent.com/external_content/untrusted_dlcp/source.android.com/en/us/compatibility/4.0/android-4.0-cdd.pdf

Conformance tests:

http://source.android.com/compatibility/cts-intro.html

    As a consequence, devices tend to have niggling and chronic
    differences that in aggregate make for an inconsistent and
    unstable feel for the platform.



Yes, really. I didn't say you lack compatibility testing. I said you lacked strong compatibility testing. Perhaps strict is a better word. I'm seeing a lot of niggling differences in behavior just in the limited set of samples I've been able to get access to. When every sample demonstrates problems, you have to assume that problems are widespread, and they add up to a general impression of shoddiness and unreliability. If you read the market comments about most apps, I think you will find at least one comment from someone who can't run the app because their device had some problem with it. That's bad for that developer (they usually get 1 star as a consequence), and it's bad for the platform because eventually the user learns that they cannot trust that an Android device they shell out $500 for will work with the apps they want to use. This is Microsoft's open door, and if you can't see that, you need to get glasses.

If there are chronic differences, please file bugs with us to have these covered in the CTS tests. Pretty much any time a compatibility issue is found that isn't caught by CTS, a test for it is added. Now that Gerrit is back, you can even go and write and contribute your own tests right to CTS to make sure none of the manufacturers can again cause whatever problem you are having.


    You really have to have a very large operation or have a very
    unambitious app to make an app with long reach in the Android world.


I think there is plenty of evidence that this is not true. Of course you can always wiggle around what "unambitious" means, but I suspect you will quickly get to the point of it meaning "not doing things that go against the way one should approach writing an Android app".

    By contrast, the Apple approach is that one size fits all. From a
    small or independent developers perspective this really is
    preferable, because you know if you test it and it works on one
    device it's going to work on all of them, and there are millions
    of them out there.


This is fine, but it only works for someone who is tightly controlling the entire hardware and software stack and the variety of types of hardware that people can buy. Personally I think ultimately that approach is a niche -- I don't see one company being able to be produce the majority of all of the phones (not to mention tablets and whatever else) that the entire world is using.
You know, I used to agree with you. That's why I started down the path with Android in the first place. The problem with your (Google, not you personally) approach is that it shifts the burden of device testing all the way down the chain to me the developer, most of them just can't afford to do it properly. Only really big players can. Now, that might be a strategic decision on your part to keep your profits high, but it will probably have consequences in terms of the perceived quality of your platform and the participation of smaller developers.


    Don't get me wrong. I'm not an Apple fan. But having spent
    considerable time fighting with device peculiarities in the
    Android ecosystem instead of adding features to my app, I find
    that I long for the simplicity that the Apple ecosystem guarantees.


So what kinds of issues specifically have you had?

Lots of things. Touchscreen problems. Accelerometer axes reversed. SoundPool causing hangups. OS induced pause/resume cycles once a minute (catastrophic when you need a GL context). Views render differently. Pretty much every device I tested my app on needed fixes in one area or another, to the extent that I have no confidence whatsoever that I can deliver a consistent experience to my users without seeing the app running on each device. This really rubs me the wrong way because I want my users to have a high quality experience, but it seems like it would cost me a small fortune to give it to them.

Hence the longing for the simpler ways of the iOS universe. I don't want the ecosystem to give me more problems to solve. I want it to solve problems for me, so I can focus on providing a nice experience for the user instead of fighting with the OS and the device all the time.

--
Dianne Hackborn
Android framework engineer
[email protected] <mailto:[email protected]>

Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them.

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to