Thursday, April 15, 2010

C'mon Steve!

The battle between Apple and Adobe is heating up with some collateral damage. With Adobe about to release CS5 with a Flash-to-iPhone compiler, which would have flooded the app store with tons of crappy flashware apps (to match the tons of crappy Objective-C apps), Apple have made a change to their developer agreement. Section 3.3.1 now states programs must be 'originally written' with Objective C or C++. No Flash. So much for Adobe spending all that money on their compiler technology. Unfortunately, the same clause prevents programs being written in Monotouch, Unity3D and a number of other similar languages.

Various reasons have been suggested for the change:
-Programs won't play nice with the new multi-tasking in OS4.0. Pity one of the programs Steve Jobs specifically demonstrated at the OS 4.0 release was written in one of these now banned languages.
-Cross-platforms apps don't provide the look and feel of the native apps. Monotouch used the specific Cocoa API's provided for the iPhone to generate the UI. So its UI is exactly the same as apps generated using Objective-C. And games don't count since they have their own UI anyway.
-Relying on another layer between the Apple API's and other tools will slow down the adoption of new API's. Monotouch had a new version out supporting the new iPad API's within 24 hours of the dev-kit being released by Apple.

If Microsoft tried to pull this same crap, there would be a massive uproar. But it seems its ok for Apple to do it. It might be argued that Microsoft has a monopolistic grasp on the PC market that Apple doesn't have. But in terms of smart phone applications it could easily be argued that iPhone has the dominance and near monopoly. And it looks like they will do all they can to keep it that way.

Basically the only good reason I've heard so far has been that Uncle Steve wants to lock developers into developing for the iPhone. A cross-platform tool can make it too easy to develop an app for multiple phones. Having the same app appear on different app stores simultaneously dilutes the value of the iTunes app store.

In general, I'm quite happy to be developing just for the iPhone - the handsets seem to be everywhere. This latest move by Apple leaves a sour taste though. I would have preferred to be working on iPhones because they were simply the best not because Apple put up artificial technical obstacles to limit competition.

And it would be easier to live with, if Apple actually updated Objective-C to have many of the features modern languages have. In my opinion, Objective-C doesn't really cut it. Our first couple of apps were using Objective-C, so we have some idea what we are doing. However, using MonoTouch provided a big improvement in productivity, especially when the app links to a web back-end using C#.

For the moment, we'll be watching events unfold over the next couple of weeks before making a decision on what we do with the tools. Our apps won't be too hard to back port to Objective-C, I'll just miss memory-management, a decent XML parser, Linq, etc.

Interesting times...

No comments:

Post a Comment