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