Yesterday, Steve Jobs, and Apple announced, and detailed iPhone OS 4. There's some interesting stuff there, if you care, there is lots of coverage elsewhere on the web. What I'm interested in, is this clause in the new developer agreement:
Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
This is just one more element of control that Apple puts over developers. I understand that Apple wants to maintain a level of quality over their products, but I'm guessing they also want to make money, and to do that, they need apps. The mobile space has been taking off, and there are several competing Smartphone platforms. If a company wants to add a mobile element to their product, they have several platforms to develop for, and that can be expensive. Groups like the Mono team are working to allow developers to utilize existing skills and code to get apps onto mobile marketplaces, and that's a good thing. Companies can't afford to have development staff that is familiar with Objective-C and Cocoa, and Android Java, and Windows Phone 7 Silverlight. That's too expensive, so if there is any way to simplify the porting of applications, that's great for business.
Apple wants to make sure that all iPhone apps are written in XCode using Objective-C, which in my opinion is strange because they give away the tools for free! I understand that there could be quality issues with these other cross compilers that might hurt the experience for the end user if the code isn't linked right. But why does Apple get to have so much control? At what point do they have to worry about anti-trust? They already don't allow apps that duplicate functionality that Apple puts into the iPhone (i.e. no other browsers), and they deny applications for unknown reasons, and now they dictate what tools you can use to build applications.
I realize that the implications of this are stricktly thorns in a developers side, and really have no effect on the end user. But Microsoft got in a bunch of hot water for bundling a browser with an OS. Why doesn't Apple? How did they manage this public perception? At what point will people realize, Apple products crash, are susceptible to viruses, and are a little too controlling? I guess good for Apple, they are making tons of money, and people are happy with the product.
But seriously Steve, loosen up.