Agreed. (I run a product development shop mostly working on mobile projects these days).
As a former embedded Linux developer, I really really want android to knock the socks off of the world. But its not.
Problems:
Its carrier based OS update model causes hideous OS Version fragmentation.
Eclipse is so painful to use many people just avoid it and use the command line tools.
You have to write Java.
There are a dozen deal breaking quirks between basic control behaviors on the different systems.
--
All this with the fact there are HUGE economic issues with 85% of the world being unable to charge for apps in the Android store, flooding the market with free apps, makes the Android platform a bit of a question mark.
With Windows 7 Phone going with a Centralized OS Version release as Apple is doing, I think we're going to recommend it as a secondary platform over the free Android.
I think as Android becomes more established as the standard smartphone OS, Google will be able to exert more influence on carriers and manufacturers by withholding the Google apps and Market when certain conditions are not met. I hope that Google uses this influence to encourage the production of devices that are easy to get software updates for, and lacking customizations that the user can't remove or turn off.
As for Java, it is my impression that most JVM languages can be used on Android, though dynamic languages suffer a bit on startup time. Scala seems like a good option here.
>Google will be able to exert more influence on carriers and manufacturers by withholding the Google apps and Market when certain conditions are not met.
Google already does this. Android is free for anyone to use, but if you want the Market and the Google branded Apps, you have to go through a round of certification. The process is testing for compatibility, among other things.
(This is the reason we keep seeing cheap Android tablets pop up without the Market application installed - they haven't gone through the process.)
Most carrier/OEM customization of Android is at the UI level. As a developer, it's understandable to not have all the different devices with different capabilities, but if you code as recommended and don't make assumptions about what the user has / doesn't have available, your application will work pretty much anywhere that the Market is installed.
Null Pointer Exceptions don't happen because the phone's OEM or carrier changed something - they happen because the code went ahead and assumed something worked correctly that did not.
(NPEs are the most common reason I've personally seen applications crash on my own devices, I have no data to support an assertion that that is the main cause of Force Closes, however)
But it doesn't matter. It's a bit like opening a make-your-own-pizza Pizza Parlor and thinking that point of differentiation matters against the power of say, Papa John's. Yeah, maybe Papa John's doesn't cater to a niche of pizza enthusiasts who really want direct control of the mundane elements of configuring and baking the pizza. Maybe they're leaving a bit of money on the table there.
Doesn't matter. They know the majority of the market wants pizza twenty minutes ago, they want it delivered to wherever they are, and they don't want to give it anymore thought than that. No problem -- Papa John's builds an infrastructure that can address this problem well, and screw the artisans. So they'll battle it out with Domino's and Pizza Hut and make a good chunk of money.
Apple has a funnel that is greased like a pig. They don't care that a few nerds can't sideload their dingus through an alternative whatsit. Most people are being served through their absurdly convenient ecosystem.
Consumer: Solid core of a few thousand truly excellent apps, plus decent games > Reasonable discovery experience > Convenient payment with existing account.
Developer: Write for (mostly) one device configuration > Get into a crowded store filled with a bunch of people who can buy in seconds without touching their credit card.
It's easy. Android does. not. have. this. And until it does, very few incentives will exist to create outstanding Android applications. As usual, Google has gone off half-cocked without making sure their product does what it should. They need to fix this, or we're all stuck with only one decent mass market for mobile apps, controlled by Apple.
Someone needs to step up and actually compete with Apple on the things that matter, otherwise the standard never moves forward for devs or users, and that sucks.
Just wanted to point out that while "Android" does in fact let you install apps from any source, many Android phones (for example virtually all of the ones offered by ATT) do not actually allow installing non-market apps. And as this is something that any carrier or vendor can implement, I wouldn't be surprised to see more of it in the future. (Much like how even though 2.2 supports tethering, so far handset manufacturers/carriers have been disabling that support on their 2.2 rollouts)
Offering economic incentives by making it easy to generate revenue from direct sales seems unlikely to stem the flood.
If you don't like the competition then you should be happy they're limited to ad revenue in the App store, which will only be the right solution for a subset of apps.
If you've got a moral issue with American companies being slow to enable other options for developers in certain nations then you need to think of a better way of expressing that than worrying about them "flooding the market" with their products and implying that they're substandard.
Is there any indication that Google might change the Android release model when faced with competition? Maybe in 3.0 or 4.0? If they maintain their development speed, they may release Android 4.0 in about the same time with competitors' next major release.
As a former embedded Linux developer, I really really want android to knock the socks off of the world. But its not.
Problems:
Its carrier based OS update model causes hideous OS Version fragmentation.
Eclipse is so painful to use many people just avoid it and use the command line tools.
You have to write Java.
There are a dozen deal breaking quirks between basic control behaviors on the different systems.
--
All this with the fact there are HUGE economic issues with 85% of the world being unable to charge for apps in the Android store, flooding the market with free apps, makes the Android platform a bit of a question mark.
With Windows 7 Phone going with a Centralized OS Version release as Apple is doing, I think we're going to recommend it as a secondary platform over the free Android.