Apple Becoming the New Microsoft?

Apple’s announcement of the iPhone OS 4.0 and the release of the iPhone OS 4.0 SDK  gives a lot of new things developers should be excited about but falls short in the big picture.  One such nugget of information pointed out by John Gruber in the iPhone Developer Agreement:

In the new version of the iPhone Developer Program License Agreement released by Apple today (and which developers must agree to before downloading the 4.0 SDK beta), section 3.3.1 now reads:

3.3.1 — 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 wording clearly states that unless you are using Objective-C, C, C++ or JavaScript than your applications are not welcome on the iPhone and iPad.  Although many will read into this as a shot at Adobe and their upcoming CS5 product which offers a Flash to iPhone conversion tool, it does effect others as well.

In the case of .NET developers who mainly use C# to create applications, they cannot use MonoTouch to target the iPhone.

Anti-Competitive Behavior

Apple is leaving a lot on the table here, in my opinion.  This includes the entire pool of .NET developers who are proficient in C# and may not want to learn Objective-C but leverage the language they know using tools such as MonoTouch.   This does not include all of the developers deep into Adobe Flash or other technologies which will not be able to port their applications to the iPhone.

This is clearly anti-competitive behavior by Apple.  If developers don’t take a stand here then there are many applications that will not make it to the iPhone that should.  I remember when Microsoft was in the spotlight for this type of action and they have been called out on it over the years and are always suspected even today.

I have been on and off of the iPhone development bandwagon and with the iPad coming along I see much opportunity for business applications but being forced to use a language such as Objective-C, no thanks.

Miguel de Icaza, creator of Mono and the lead on Monotouch is clearly anticipating Apple will let developers use Monotouch and therefore C# to create iPhone and iPad apps as seen in a recent tweet on Twitter.

monotouch 

We should be critical of Apple here and nip this now, before iPhone OS 4.0 comes out and we are forced to change programming languages to what Apple requires or be out of the game.

Technorati Tags: ,,,
  • Eric Smith

    The "only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs" is interesting, as it suggests that your application could contain code in another language, and as long as that code doesn’t call the APIs, it is fine. If I use some code in COBOL, and that code calls some of my other code in Objective C, which then calls the API, that should be OK.
    The following "(e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited)" makes no sense, as "e.g." means that the following should be an example of the former, while in this case it directly contradicts the former.

  • Eric Smith

    The "only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs" is interesting, as it suggests that your application could contain code in another language, and as long as that code doesn’t call the APIs, it is fine. If I use some code in COBOL, and that code calls some of my other code in Objective C, which then calls the API, that should be OK.

    The following "(e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited)" makes no sense, as "e.g." means that the following should be an example of the former, while in this case it directly contradicts the former.

  • http://www.sandycovesw.com/ Shawn Craver

    OK, I really don’t get this backlash against learning a new language to write software for a new platform. Use the best tools for the job, even if it means, gasp, LEARNING SOMETHING NEW! My day job (iPhone/Mac software company) is working on a project that will also have a web and a Windows component. Did we try to find ways to write those pieces in Objective-C? Nope. We’re using PHP and C#/.NET. Why? Because they’re the right tools for the job.
    Should Apple be enforcing it like this, probably not, but I can understand where they’re coming from. Apple, as a company, is all about the user experience. And let me tell you, there are very few applications I’ve ever used that were written using some type of cross platform or otherwise non-native toolkit that felt like they had the same quality as those written using a native toolkit.

  • http://www.sandycovesw.com Shawn Craver

    OK, I really don’t get this backlash against learning a new language to write software for a new platform. Use the best tools for the job, even if it means, gasp, LEARNING SOMETHING NEW! My day job (iPhone/Mac software company) is working on a project that will also have a web and a Windows component. Did we try to find ways to write those pieces in Objective-C? Nope. We’re using PHP and C#/.NET. Why? Because they’re the right tools for the job.

    Should Apple be enforcing it like this, probably not, but I can understand where they’re coming from. Apple, as a company, is all about the user experience. And let me tell you, there are very few applications I’ve ever used that were written using some type of cross platform or otherwise non-native toolkit that felt like they had the same quality as those written using a native toolkit.