Google open source guru Chris DiBona has acknowledged that the company's freewheeling approach to building a mobile operating system can cause a few headaches for developers, with unfamiliar versions of its Android OS appearing on new phones with little warning. But, he says, that's not developers' main concern - nor Google's …

Poneytail!

they do need to be a bit more open, or manage the market better...

Some really decent apps that had 5 stars and no complaints suddenly end up at overall 3 stars with tons of 1 star reviews like "crap, doesn't work - avoid".... this is normally after a big phone release, like the Droid... the market place should really have the market application query the android/phone version, and then let the developer tick off android version and phones it's known to work on, then offer a disclaimer for untested phones...

Then again, the whole market place needs a reboot, a frustrating problem with the market I have on my hero is not having an "update all" button in the My Downloads section, when you can install updates... you have to do them one by one. It also doesn't notify you of updates - even if it's running in the background, you have to go in and actively look - and thats if you know that updates get displayed in My Downloads (which a couple of friends and my wife did not).

@Law

"…the market place should really have the market application query the android/phone version, and then let the developer tick off android version and phones it's known to work on, then offer a disclaimer for untested phones..."

The first thing I thought of when I read that is "Windows update does this perfectly." I mean, okay, it's not a market place for downloading/buying apps, (I really could be though,) but when you think about how Windows Update integrates with the pile of updates/packages that are held at Microsoft, it's about the same. (Anyone who has maintained a WSUS server will know what I am talking about.)

The Windows Update client detects the OS, all the installed apps, lists only those updates that are compatible, have not been superseded, and even has the ability to not list updates for X if Microsoft had told the updates system it conflicts with Y.

So two thoughts occur: a) this has been around for ages, why can't Google just dupe it, but for selling apps instead of updates? b) Maybe Microsoft patented all the good bits, and Google is not allowed to dupe it.

@Trevor

"So two thoughts occur: a) this has been around for ages, why can't Google just dupe it, but for selling apps instead of updates? b) Maybe Microsoft patented all the good bits, and Google is not allowed to dupe it."

There can't be patent problems, because Linux distros have "apt" which performs a similar task to Microsoft Update and which is "open" in the sense that third parties can hook into the same system merely by persuading their customers to add the third party's repository to their list of trusted sources. Presumably Google are just lame. They pretty much admit in the article that they are ("we could do better") and don't really care ("I don't wish to appear cynical, but...").

The message to both developers and end-users is loud and clear -- This platform *will* bug the hell out of you and Google don't care. Coming so soon after the "privacy is bunk" remarks, one has to wonder if the oompah-loompahs have ever googled for "PR". (To save you all the trouble, the first hit is the wikipedia article.)

Hmm...

To be honest, despite being an avid Linux user, I had not even thought about Linux package managers. (As my post said, Windows Update was the first thing that crossed my mind.)

Good point though. I imagine MS would have eaten the various Linuxes if they held patents on Windows Update style package management.(Well, actually, maybe they do, but aren’t proceeding with litigation due to the PR nightmare…I’m way to lazy to check the patent office.)

Still, it does validate your idea that Google is just being lame. If Linux c it then Googlan do it, so can Google.

@ trevor

I'd be surprised if they weren't already sending the information to be honest, they are probably just ignoring it right now - I think it's prioritisation (or laziness) on their side - ignoring the application compatibility hell for the developers, concentrating instead on trying to get in some bells and whistles into the actual phone functionality to compete with other phones.

I've got a feeling that once they've settled on a version of android they are mostly happy with, they will begin working on the "fringe" stuff like market place, and better multimedia api's, keeping developers happy - I guess by this point the ever changing sdk will be a bit more stable too, so should be easier for developers to test with too.... but this is google though, so who knows.

I don't think they can pull it off.

At the end of the day, they protect that, because their marketing teams spent a lot of time and money cultivating it. They care only for their bottom line. Little to do with cheap cloned knock-offs sold dirt cheap, aside from the quality differences, their products are not THAT much better than the cheap knockoffs going on price alone.

What's the difference with tech? Little in this context. Apple has been doing for a while. Their users want whatever Apple gives them. I think the iPhone speaks for itself when compared with other phones on the market. (just in case you're slow, or a Apple lover, no, that's not a compliment).

But Apple can get away with it. They've been cultivating their market for some time.

Can Google compete without a background in screwing their users? Or should I say, screwing their users overtly, as opposed to covertly as they have been?

How are they going to create and cultivate a market that doesn't know about, or better still, care of the pitfalls of the "cloud"?

Or better still, when everyone WILL eventually know, cultivate a market that *likes* advertising? And you'd better start liking it, because you're going to get it whether you like it or not.

@John Tserkezis

Regarding: " I think the iPhone speaks for itself when compared with other phones on the market." in terms of usability, you are absolutely right. (just in case you're slow, or an Apple hater, yes, that's a compliment).

While Apple's success is undoubtedly partly due to its ability to foster an image of trendy usability, it should also be ascribed to the actual usability of its products. Power in a device is good, ease of use is needed to leverage that power. The fact that a product is actually *nice* to use acts as a further multiplier.

Your analogy with the fashion industry isn't totally apt then, because as far as I know, most dress designers don't compete on how easy the dresses are to button up (or un-button, as the case may be).

@Law

'It also doesn't notify you of updates - even if it's running in the background, you have to go in and actively look'

It does. It's in the notification bar, it pops up with the market logo and says '3 updates available' or words to that effect. Granted, sometimes there are updates for apps that it doesn't tell you about immediately, but it does always tell you. I guess they thought that people would get pissed off with constant notifications everytime an app is updated, so they give you a notification every X hours.

Package Manager

Given that Android is basically linux (as is ChromeOS and also remember Google are working with Canonical of Ubuntu fame) why don't they follow the lead of most decent package managers? On my ubuntu box we have our 'marketplace' (otherwise known as Synaptic) and can download thousands of apps from it. Then, when updates are pushed to the marketplace they all come in one big pile, with dependencies checked etc. So once in a while your OS will check the 'marketplace' (repository) and see if updates are available and deliver a list, you press ok, job done. It's simple, elegant and rarely fucks up. So what do you say Google?

No dependencies

There is currently no formal way to delcare dependencies between apps. I'm working on that, as I find the time for it, and Google is aware that some improvement would be useful here.

As someone who develops for both iPhone and Android, I think the whole fragmentation issue is way overblown. If a new Android OS comes out, things may break. Then I'm stuck as long as Google does not update the SDK to include the new version. Then I test the app, tweak one or two lines, and things work again (usually). Pushing the fixed version to the market is a matter of a few minutes. It would be great if the SDK was updated the day a new Android version hits the streets, better yet if that happend a week or so in advance. But that's really all the improvement that's required, IMO.

Contrast that to Apple: yes, they let developers preview new versions of the iPhone OS. But most people just leave it at that, and don't consider what it involves: first, I've seen behaviour change between the preview and the release version, meaning that when the new version hit the streets, I had to go back and fix things YET AGAIN. I'd rather do that only once. Second, pushing a new version of an app to the Store can take weeks, with Apple's review process. So there's almost guaranteed to be a period of several weeks in which my app won't work (assuming anything breaks at all, but that's also the assumption with Android's updates, right?).

Last, Apple immediately proceeds to deprecate any previous OS versions, which anally violates any iPod touch users you might have, because they won't be able to use your newly fixed version (your app depends on an OS version, not on APIs being present). You may think that's not a problem, after all it's only a few bugfixes, but the likelihood is that you'll develop new features on top of that. For Apple, it's a great situation, because iPod touch users who really want to use an app will be forced to upgrade their OS, which costs them money. For developers who may lose customers over this, and consumers who may lose apps over this, it's a stinking pile of excrement.

You have a similar problem with all OSes when they ship new features that you want to use, of course, but then it's a feature-driven thing. You can support older versions as long as you don't want to use the new features on Android. At least when you drop support for users of an older OS version, you can give them a reason why.

Frags

I think now Android's major competitor is Windows Mobile. If the strategy Google uses is fragmenting the market, why shouldn't $phone_mfg use Windows Mobile instead, which has a bigger application platform? Soon WinMo's UI will be better and possibly lose the "bussiness phone" moniker. And I don't know outside of the IT world people wanting to buy an Android phone. They want a jPhone instead.

Yes, and then no

Three reasons that manufacturers will continue to favour Android over Windows Mobile: 1. No licencing fees for the base OS; 2. completely open sourced base OS; 3. Capable of matching Apple in terms of providing a polished and consistent look and feel across all aspects of the UI. WRT Windws, fail on all three points.

With Android it is clear that the main danger to the user experience is fragmentation. If you have multiple versions of Android kicking around then you _are_ going to have application compatibility issues and you _are_ going to get a reputation for a bad user experience. Not something that Apple has a problem with, although I'm starting to see apps that seem to assume I have the power of a 3GS, and therefore run slightly sluggishly on a 3G.

As for Windows Mobile? Well Microsoft just don't have sufficient skill in building appealing consumer devices. XBox comes from one division, and is successful, but is not mobile. They've had hits with mice and keyboards, and Flight Simulator. Not mobile. But Windows Mobile is fundamentally Windows first and mobile feels an afterthought. Start menu? WTF? Get over it, guys, that's a desktop metaphor.

When MS understand that they need to approach device OS design from the other direction* then they might be in with a shout. And if they start from that position today, they're only three years behind the curve. What is available today is still at least 2 years behind the curve. MS have sat back on their laurels for too long, the battle is in my view already over.

* That is, start by building a slick UI that provides an easy user experience with full touch support. Shape the SDK APIs so that software can easily and cheaply ride on the back of that experience. Provide an extensive guide on how to develop apps with that consistent look and feel, with lots of Apache 2.0 sample code - oh, and use it themselves.

Oh, and if as you say everybody wants an iPhone, not an Android phone, what the hell makes you think they'd choose something with a Microsoft label on it ahead of another non-Apple phone? Mud sticks...

Nice photo.

Confusion

As already mentioned on here Users (real ones, the ones outside of our world) just dont understand what andriod is all about. there are problems reported from Ops ranging from market place to the Andriod's UI archetecture. Its too wildly different and, suprisingly from Google, Difficult to use, for a user who is used to a 12 key feature phone. The paradigm is more of a computer than a phone with little stepping stone inbetween.

Custom UI or differentiator apps help, and also give Manufacturers a unique selling point, but fragmentation, new releases and no roadmap affect and cause lots of effort in regard to customisation and maintenance for the phone maker.

It also seems that Certain Device makers are on Googles bumming list where as others are not. HTC, Moto had 2.0 sets out when the platform was released, yet other Makers releasing or still have phones yet to release running 1.6 who seemed not to have access to, or be aware of exact release dates for Eclair.

Given the take up of Andriod I would quickly say that they have succeeded in following a microsoft style model of SW liciencing to Device makers & Operators (Even though its been thrown at them as 'free and open source') and have or will have many players in the industry reliant on thier SW. Now they are releasing thier own Branded device (Admittedly a HTC set) for general consumption it raises many questions about what thier future plans are and commitment to playing a fiar game without any conflict of interests.

I admire Nokia for Doing thier own thing with Meamo and hope such a platform proves a solid challenger along with iPhone OS (EVen if it is a closed system) and SYmbian, if teh foundation sticks together and manages a redesign of the UX elements.

is / was this Chu chap a developer?

Anything that increases entropy (the number of potentially chaotic states in a given system) is BAD BAD BAD. Because my brain is small and I cannot consider all of the possibilities. Fragmentation increases those possibilities and therefore increases the number of scenarios I don't consider.

Some of these will be bugs.

Therefore my code will have more perceived bugs due to fragmentation. Do I care about bugs? HELL YES, I want them squished.

Annoying the developers

I hope I'm not embarrassing anyone, but I understand that a succession of different, incompatible editions of Palm and PalmPilot devices with limited support for developers persuaded Textware finally to give up developing their Fitaly touch keyboard for new Palm models, having started there. Windows CE / Pocket PC / Windows Mobile - actually the same thing - were a friendlier environment, even with multiple hardware manufacturers instead of one, and MICROSOFT. Admittedly, Fitaly probably hooks into places on a Palm device where it wasn't meant to.

And as far as I recall, Windows Vista was going to be the ####-the-developers-AND-users edition of Windows. Will the software you already use work in the new edition of Windows? The official default answer from Microsoft was no. You would need to buy new compatible software. Then I don't want to upgrade, do I? I like what I'm using now. And so Vista died, even if actually older Windows apps are supported just fine. And Windows 7 comes with XP compatibility... as an optional add-on. Hey, now MS know what customers want, they can make you pay extra for it.

Google had better not make the mistake of Palm and Microsoft, changing the platform to disable or discourage developers and users from building a long-term relationship over more than one device lifetime - which isn't long. They need to make a commitment to long term compatibility.

Hard to concentrate on the article..

@Package Manager

I'm very surprised there is no package manager in use too, apt (advanced packaging tool) seems to be the thing that impresses users new to ubuntu most, although the cut down version of dpkg (what apt is based on), ipkg, never worked well for me.

Could be google are trying to leave every aspect of the OS as open as possible to see what the users decide is best for them, it should be fairly simple to port dpkg, rpm or even portage (the more popular package managers on linux) to android or use a (heavens forbid) install shield type system. Depends on whether users want a central software repository for everything or are happier finding apps all over the net and installing them. Heaven help us if they choose the second as android will probably go down in history as the most insecure OS ever.

As for apps getting broken between v1 and v2, tough shit, it's in development and such an early release (even if its version 1) should be regarded as a beta and should remain a beta until users have been at it long enough to break practically everything. I have been advising everyone I know to wait another 6 months if they want to do more than just try it.

Nearly forgot about the fragmentation comment. An upgrade from version 2 to version 2.1 is fragmentation? WTF? Should the lusers go back to windows version 1 as everything else is fragmentation?

iPod Touches

But you've forgotten to include iPod Touches! I had thought the sales were 20 million phones and 30 million iPod Touches so looks like I underestimated the total figure when I quoted 50 million in total.

Anyway, I don't care (as a developer) how many different devices there are as long as they're all compatible. I compile one set of code, test it on one device and send it off to the AppStore and I've got potentially 50 million+ customer.

Thanks for your advice that the iPhone is a bad commercial choice for developers but I'm very happy with my sales so far and I'm sure a lot of other developers are too. It's a real contrast to Pocket PC development for me where you used to have 3 different processors to target, the screen sizes changed from the initial 240x320 only, menus migrated to the bottom of the screen, should you ship as .CAB or .EXE?, no way of stopping people copying your app when they'd bought it and no easy to use AppStore so you'd have to handle all the marketing and sales yourself.

Ever try coding portable J2ME apps? Just wondering.

Maybe you don't know it, but J2ME at the time (06) I was taking a class on it was pretty much limited to (very klutzily) managing screen contents, file system, sockets and interacting with the device's buttons. We couldn't even have the joys of Swing, we had to use the Awkward Window Toolkit.

So...

Want to do something with the user's address book? No problem, code to the manufacturer's/device Java API to do so. How much you wanna bet that a Motorola API will be, not subtly, different from a Nokia?

Result? Many games, mostly because those didn't need to interface with anything much. For the rest, SOL. But you know, if you don't believe me, you shoulda gone and looked at the Nokia web store - much of the stuff that was sold was SKU specific. I.e. "TetrizKlone for 7360". I have no idea how that's evolved, this limited exposure to J2ME totally turned me off, but looking up Nokia's stock value might give you a clue. Or not.

iPhone OS, dickwad

Almost all those 50 million plus devices are using the same OS, with the same screen resolution and similar specs for the core hardware components. By coding for the lowest common denominator as a baseline your market is 50 million plus devices regardless of what model is most prevalent at any one time. This is the difference when it comes to the iPhone OS relative to Android and WinMo. As a developer, your market is unified, both in baseline specs AND in OS. Everybody gets the latest OS at the same time and you know when it's coming.

What is really going to annoy Android developers....

...is the problems that a hell of a lot of Android phone users are suffering when trying to download apps, the phone will just sit there with the Market application saying "Starting download" or "Autheticating credit card" for hours or even days. If it's a paid app then you get 24 hours to evaluate it and uninstall, you may only do this once. A lot of people find they need to cancel the download and then run it again, this counts as a refund, and then if they can download and install it again they are stuffed if they don't like it. OK, many of these apps are cheap, in the sub $5 category, but it isn't meant to be like this.

Google have been sitting on their hands about this, their support forums have threads with hundreds of posts in them about it, dating from May 2009 or even earlier. Fixes are uncertain, sometimes turning WiFi or network access off and on will unstick things, sometimes it just works, and sometimes it hangs for hours or even days! Early on there were posts asking for reports of which apps, which phones etc from people with Google Employee in their ID, but if you look at the threads, not one of them ever comes back to explain or help any more, perhaps they last a few posts, but never more than that,

I think some fairly major journalistic bods like El Reg should poke Google hard about this, after all they want a developer ecosystem that works and in a way this is worse than Apple rejecting apps, in fact the devs are complaining about how the comments from users moaning about the download problems are directed at them and not Google.

I've had an HTC Hero for a bit over a week, less than 20% of my apps installed easily, the others all took an indeterminate amount of time to download and install. On an iPod touch or iPhone it's very rapid to initiate, even if the download is limited by the network. On an Android phone it can be like waiting for paint to dry.

Developing on Android

Is a pain, nothing works right, you have to use workarounds for everything, the api sucks, it's bulky and unclean, they more or less completely given up having a elegant code for the sake of designing the UI with XMLs. on the other hand, J2ME is perfect, it's clean and neat, it works smoothly, it's portable and has the best 3D api that you can wish for. I don't know why google and mac decided to abolish it, it's a shame. one of the best APIs I've ever had the pleasure of using!