The iPhone is a sweet platform to develop for, but its distribution model for third party code is like a textbook definition of the walled garden. Every line of code you are writing depends on the blessing of Apple to make it to the hands of your customers. The EULA on the SDK goes well into what could be called editorial control. The lame excuse of caring for the cellular network is false. For example the majority of Windows Mobile smartphones being sold by the same operators that now sell the iPhone are application unlocked and offer full hardware access to third parties. This includes the radio hardware and it is what makes features like the GPS-less localization in Google Maps for Windows Mobile possible.
The App Store is fine. The problem is that it is the only way to sell or distribute your application. If you are a small company and want to do iPhone development you are in the hands of Apple. They decide if you applications can be sold or not. They can control the positioning of your product inside their store (the only store). They decide if you can make it to end of the month. If you don’t like it you cannot sell your product from your site or in another store. You are screwed, your code and effort is worthless, and you need to start from scratch on another platform.
The niceness of the tools makes it worse. The programming environment, its API, even Objective-C. It’s all good, usable, thoughtful. It’s developer-friendly. You want to keep programming on it. You loathe the time to go back to the perverted flavor of C++ Symbian forces you to use, or the endless rigid verbosity of Java. And that siren call is what dooms you in the end. Java code can be ported with some effort between its main mobile platforms (J2ME, Blackberry and soon Android.) And non-UI C++ code can be made portable between Symbian and Windows Mobile. On the iPhone platform you are effectively locked by Objective-C.
It’s going to be very interesting to see how the situation evolves in the next 12 months. Apparently the App Store debuted with certain amount of usefulness challenged software, contradicting what many thought was going to be an opportunity for keeping a consistent user experience and quality level; which, along with the cell network collapse doomsday scenario, was the other favorite excuse for the wall garden apologists.