Today at AJAXWorld 2008 in New York, Andrea Gazzaniga (our own Software Developer Manager at Funambol) delivered a very interesting talk about "developing Open Source Mobile Messaging and Sync Apps for iPhone vs. Android".
The topic is quite hot. Apple just released the iPhone SDK and Android has been around for enough time for developers to figure it out. Not completely (for both), but enough to have a few ideas. And to get pissed at some choices, in particular on the Apple side ;-)
The Funambol community built on both platforms, so Gazza is one of the few on the planet that can talk about both with competence. I have my opinions, that might differ from his ;-)
Let me start with Android: it is OPEN. I like it. I feel Google is trying to re-design a developer paradigm, which is a big risk. If they succeed (it depends on devices being sold, not developers...) then they might have a lock in the operating system of the next 20 years. Yep, Android spans from mobile phones to many other devices. In my view, it might go back to sub-notebooks, which are the desktop of the future (and near present). That is, everything that is not a server. Not a small piece of the market.
The iPhone SDK is a real disappointment. Sometimes, I feel we should have kept the world split between those that get it (and have a jailbroken phone) and those that don't (and are happy with a browser). The SDK - as it is today - is an half-assed effort (pardon my French). It is just too limited, too full of traps, to be really useful. And gives the false idea of an open platform.
Take our push email and PIM sync client. Apple announced ActiveSync support. Nice, that means an integration from Exchange to the native email, calendar and contacts (I assume). So you would think you can do the same with the SDK.
First, there is no calendar API. What? Nope, no calendar API. No way to interact with calendar. But they do it with ActiveSync. It is a private API. Not an open API...
Second, there is no email API. OK, I was expecting this, but it still bothers me. Same as above.
Third, there is no way to do push, since the application die when they are closed (e.g. when your phone rings). You cannot fire an application in the background... You cannot notify the phone where there is a new email. Very useful.
Fourth, you cannot talk about the SDK. You must sign an NDA to download the SDK. What?? An open SDK I cannot talk about? What is in the word open that Apple does not get?
Fifth, there are "rules" that Apple will enforce. One is that you cannot run an application that is capable of executing code, which is not Objective-C. That means, no Java Virtual Machine (despite Sun saying they wanted to do it... ooops, bad marketing attempt) and no Flash (although Adobe just said the same).
Sixth (but there is more), no developer - that I know - has been accepted in the program to "sign" applications for inclusion in the Apple Store. Everyone was rejected. How are people going to spend time to develop apps that might never get into the Apple Store, since the developer does not have the ability to sign them??
Bottom line: Android is good and open. The iPhone SDK is crap and closed. We'll build on both for now, but Apple needs to get a grip on openness or we will all move to Android. You do not screw up with developers too much. They are easy to get upset and do not like to be pushed around. Apple be warned.