After last Thursday’s announcement of iPhone OS4 an update to the iPhone Developer Program License Agreement was found on the Apple developer website that prohibited the use of any third party cross compilers and/or language wrappers/converters for the use of making iPhone applications. This is described in the update to section 3.3.1:
There’s a middleware community of folks that have invested tons of time and effort (and money) into writing a layer of tools that allow other developer folks that aren’t savvy with the native iPhone development platform (which consists of Cocoa Touch and Obj-C) to still be effective at creating Apps using their language/platform of choice. Apple is now stating that these solutions are no longer acceptable and will not be approved for distribution in the App Store. Apple has always recommended that people use the native tools, and has never supported the middleware community.
So now there’s a huge uproar of folks saying that Apple has made a terrible move and that Apple doesn’t realize what they’ve done. They’ve ruined the community and are going to lose revenue in the App Store, etc…
Really? It’s Apple. They know exactly what they’ve done, and they did it for a reason.
Yes, it sucks for all those people that invested time to create these middleware solutions that empower developers of other “faiths” to create iPhone apps. I feel bad for all these “wasted” hours (hopefully we can figure out a way to repurpose all of this spent energy). However, I think this is a great move on Apple’s part from a business perspective. They’re ensuring the success of their platform by ensuring that people learn how to use it, and not some other middleware solution that could one day not exist or be 100% compatible with the Cocoa Touch tools. They’re removing any dependency on third party solutions that could stifle their success.
There have been a lot of angry remarks out there about Apple’s decision (*cough cough Lee Brimelow cough*). These remarks are coming mainly from the people who are currently using middleware solutions or who were going to use CS5 to create iPhone apps.
But y’know what? Cocoa Touch isn’t THAT difficult for a developer to learn (specifically a .NET developer), and neither is Obj-C. Yea, it’s not C#, but it’s not assembly for Christ’s sake. If Apple had this TERRIBLE platform that was hardly usable and difficult to learn then it wouldn’t be in their best interest to force people to use their platform – the quality of the apps would suffer and the iPhone App Model would fail – but that’s not the case. They have a very decent developer experience. I made the switch from .NET (WPF and Silverlight) to Cocoa and it wasn’t the end of the world, nor was it a huge time suck. I’m thoroughly enjoying the entire Cocoa Touch experience now, and the more people that use it, the better the experience will become. Platform adoption is the reason .NET and it’s tools have become so successful. What’s wrong with Apple forcing the same approach with their own platform? Absolutely nothing.