What fragmentation? 77% of devices run Android 2.1 or 2.2
bgr.com
bgr.com
There are about 80 different Android smartphones that have been released according to Wikipedia. That is more than what RIM have released in the last 15 years, including their pagers and carrier-specific versions, and a lot more than the 4 iPhones and 5 webOS smartphones.
I can't speak much about consumer-side of things, but as a developer, I can tell you that developing for iOS and webOS is easier and cheaper because there are less devices. I test on every iOS and webOS device, but on less than 10% of the available Android devices, because of the cost caused by so many devices.
One thing to worry about though, is that it is possible that different hardware uses different drivers. I've read about one game that did run very poor on a particular Samsung device, because the OpenGL driver had a bug or missing feature.
The framework does a pretty good job for abstracting the different capabilities and supporting different hardware (on a phone). When manufacturers produce buggy hardware drivers, that's where you need to dig deep.
I'm reminded of that saying:
"In theory, there is no difference between theory and practice. In practice, there always is."
I was doing iPhone development back when there was only 2 generations of iPod Touch and 1 generation of iPhone. In theory, they ran the same platform. In practice, there were several subtle differences between the hardware capabilities and resources on each permutation -- and that was assuming you were running the exact same OS version, which, in the wild, is not always true. A game that looked and worked perfectly on say my iPhone would have a weird glitch on a Touch. And so it had to be tested and tweaked to run well on each. Since then, they've added several more hardware generations of Touch and iPhone, and now also the iPad, and now there are more OS versions in the wild too. Yes, thankfully, Apple allows you to build your app so it officially only supports a narrow subset of these platform permutations. But in practice, your clients/employers often want you to support a wider set. Re-enter fragmentation pain. And this is in the iOS ecosystem, which should be less fragmented than Android.
As you are talking about games, i can imagine that this is much harder on Android as you can't rely on the built-in UI-Framework and have to handle different resolutions yourself.
Alsa support on Samsung devices is also buggy, resulting in problems with various apps, especially sip clients.
1) Of course the data is skewed! Please don't use a headline only to correctly question its content in the last sentence.
2) Fragmentation hits at two, largely orthogonal levels - there are different versions of the base OS (1.6, 2.1, 2.2) as well as different top-level UIs/distributions (HTC Sense, Samsung stuff, stock Android). The fragmentation problem would persist even if 100% of all accesses came from 2.2 devices. This is equivalent to claiming that Linux is a unified platform because 77% of all google.com visitors use the same kernel.
3) Don't forget the hardware problem. iOS and webOS aren't perfect in that respect, but comparatively harmless.
The less spin-laden headline would be: "What fragmentation? 36% of devices run Android 2.2."
"Google’s data could be skewed. It is entirely possible that users with older devices simply don’t access the Market as often because the apps they want aren’t compatible with older versions of Android."
This may be true but as a developer you're really only interested in your actual, addressable market and that includes only the people who in fact visit the app store.
So while it may be wrong to say that "77% of all Android devices run 2.1 or 2.2" it's true to say that 77% of your market as a developer runs 2.1 or 2.2.
And from a fragmentation point of view, that's what counts.
77% of devices accessing the App Market are 2.1 or 2.2. But what percentage of all devices sold are actually 2.1 or 2.2? Depending on that number, the size of the actual reachable market could be much lower than the installed base of all Android devices.
... In other words, fragmentation is probably the silliest arguments that fanboys can come up with at this point. God forbid developers have to test against multiple configurations like damn near every other software market in existence. There is no free lunch, and added testing time is just the small price you have to pay for a non-walled garden approach.
And please don't make blanket statements like this unless you have data to back it up:
>Users looking for an "open" experience are expecting free/cheap apps, and are willing to use less perfect free/cheap apps over your perfected "expensive" one
Anybody would rather use a free/cheap app rather than an expensive one. I don't know that FOSS users are any different in this regard.
Edit: Remember Marco Arment's "Two App Stores"? The same is true of Android, and any other market.
It's not in the OEM's interest - they'd rather have you buy a new phone and put more money in their pockets rather than support what's already out there.
Witness the gnashing of teeth every time a new version of Android comes out, and devices X/Y/Z don't get a manufacturer update.
Thankfully there are 3rd parties doing custom ROM's for these, but that's not a solution for the layperson...
Any other questions?
The difference with keyboards - the original point was "all the keyboards" (i.e. HTC IME, Swype, etc), not just hardware vs software. When you prepare your application for software keyboard, whether pan-and-scan or resize, it will just work with hardware keyboard (opposite is slightly more complicated: when you assume only hardware keyboard, then the software keyboard has surprises in layouts for you).
Getting OT: sometimes I wonder, how people could handle PCs 20 years ago. You had CPUs with different speeds (286 to 486), different graphics cards with different resolutions (EGA, VGA, SVGA), operating system that didn't abstract the differences and yet the PC was considered single platform, much more successful than competing unified platforms. There wasn't rampart rationalization against "fragmentation", like today.
They didn't. That's why the Mac was a runaway success and the fragmented PC marketplace floundered.
We had the turbo button back then. Maybe we need a turbo button on the Android. You could call it the "Anti-Frag" button.
</facetiousness>
I think, this is not completely true: http://news.ycombinator.com/item?id=1860578
Different keyboards lead to different users experience with application.
I work, lets say on the handset production side of things, and my impression is that the major driver for Froyo take up from handset vendors was the promise of Flash support.
Gingerbread and/or Honeycomb might offer better support for large screen devices (pads), but apart from slightly less bed Flash video support (via Stagevideo) it's not clear that these releases will have the same pull as Froyo.
On the fragmentation side of things, I find the debate rather strange and strained. Ignoring that the debate is probably between fanboys rather than developers, those developers have some obvious strategies they can take.
They can become or remain Apple specialists and sit in a comfortable, superior but cloistered ecosystem. Alternatively, embrace other platforms in a manner which specifically suits your application, its audience and implementation.
The pros and cons are equally obvious for either strategy. I'd say at least if you choose to stay solely on Apple, I think this will definitely remain a strong platform for the near future. However, there's no point resenting that it is likely that the iOS platform (in the handset space) is unlikely to grow much relative to other platforms. But.. of course it may not matter to you.
IMHO a bigger handycap for Android is the fragmentation of the end user experience. With iOS, you can by an iPhone, and iPod touch, and an iPad and they'll all have an identical UI. And when you upgrade to the next model of any of the three, you can count on still have a consistent UI and an easy, simple upgrade.
Unfortunately with Android, moving from one Android device to another might involve significant UI changes. Compounding that is that none of the non-phone Android devices currently have access to the Android market, so you don't readily have access to all of your apps across all of your Android devices.
Sure you may say "77% of devices run the latest versions" but you may be in the situation where "0% of the devices in your country run the latest version" because your carrier isn't updating the OS.
That's the fragmentation I'm afraid of.