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.
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.