MonoTouch and the new iPhone license

Apple announced their new iPhone SDK and license agreement today. Part of the change in the license agreement to use the SDK and publish apps to the app store includes

Changing Section 3.3.1 from:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

To now read:

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 is most likely the latest volley in Apples war against Adobe Flash, since Adobe announced that their new Flash Studio would include the ability to translate Flash applications into iPhone applications.  A lot of people are also saying that this will kill MonoTouch (which allows C# and Delphi Prism iPhone development).

I checked Miguel de Icaza’s twitter stream to see his take on this.

Someone suggested that maybe MonoTouch add an option to generate Objective C for X Code to compile, to which Miguel responded:

MonoTouch already has an option to compile to C + XCode, just call mtouch –xcode program.exe

Then TheZDuck asked:

@migueldeicaza I just saw this. Does this mean the end of MonoTouch!?

Which seems to be a pretty direct question, and Miguel responded:


Sure, it would have been nice if he elaborated more, but it is a direct answer.

Earlier in the day Miguel tweeted:

Started work on iPhoneOS 4.0 support in MonoTouch.

Why would he work in it if it violates the license agreement?

Miguel is on the beta and has Novell’s legal department to pour over the license agreement, so he has more information then those who are speculating wildly about the end of MonoTouch.  So go back to learning and using Delphi Prism and MonoTouch.  You iPhone and iPad apps are safe for now.  It would appear Apple doesn’t hate MonoTouch as much as it hates Flash.

22 replies on “MonoTouch and the new iPhone license”

I’m sure this will be (over)analysed by the community at large in due course but I can’t possibly see what legitimate reason Apple would have for even having this clause if the App is signed, performs reasonably and is accepted by the App store review process.

This seems to be a purely malicious move to maintain absolute control over the end to end process. I can’t say that I’m surprised but I am very disappointed, Apple has clearly documented feelings around choice from a consumer PoV (their way or not at all) and I can accept that they have their reasons for that. However this demonstrates that their feelings around choice extend to developers and the tools they use and I fail to see any real legitimate reasons that mean they have to dictate this.

“Why would he work in it if it violates the license agreement?”

Working on something does in no way mean that the work does not violate certain licenses. Past patent issues have shown that in a drastic way.

If Apple keeps their license statement “… must be originally written in Objective-C,…”, then there is no way for MonoTouch as you program it in C# (or in “our” case in Pascal). This is regardless if you “convert” it to C in a secondary step…

The important question is thus: how will Apple respond to this. And, even more important imho, **currently** for a serious development team MonoTouch is not really an option, as you do not know if you will be safe or not. Sad but true I guess …

As Olaf says, the license legally precludes writing in some other language, or even using a “preprocessor” that did not ship in XCode, since what you originally wrote is not “written in” a valid compilable Objective-C system. Now, pedantry is the particular specialty of legal eagles, and so you can bet that the exact reason for the word “originally” is to avoid and close the loophole that Miguel is counting on; that of his “mtouch -xcode foo.exe” option. While an app written using Miguel’s tools will most likely survive the initial AppStore application approval, it will not withstand scrutiny, if the author publically makes it known that he or she used MonoTouch. If Apple decides to pull the plug, you’re done. And since Apple can pull the plug for any reason (even those reasons not specified in the agreement, which is as clear and unambiguous on this point as the English language will allow) I would not be surprised to see them get far more aggressive, as time goes on.

Apple’s long term business plan probably includes the following:

1. Use the iPhone’s ‘with-it product’ market position to encourage people to buy a mac, so they can write for iPhone, and build up the Mac developer community. After all you know ObjectiveC and XCode now, you can port that Windows app you have over to mac.

2. PC owners are consumers. (The iTunes store lets you buy apps and music from windows, but to write an iphone/ipod-touch app you need a Mac.). People who own macs can legally run all operating systems on their mac (including Linux and Windows), whereas those who refuse to buy a Mac have to resort to black-hat tricks to write iPhone apps, or run OS X.

There’s a 100% chance that this is intentional.


I am really tired of so much emphasis being put on developing for Apple products. They want a closed system, so give them a closed system. I myself would rather put the effort into the major players, “Microsoft, Linux, Google Android”. If developers stop supporting a product line, then that company will stop their stupidity or die. Today’s trends are for more open development, not just a platform owners profits.

Windows Mobile is/was more or less open for like 10 years. So why didn’t it get at least half the recognition and in the end the success, that Apple got with it’s closed system during the last 3 years?

Because it was/is a lousy operating system. The public votes with its purchases and it didn’t vote for Windows Mobile.

Apple has pushed the last 3 years Mobile AND Internet, all other together the last 10 year did not. yes everybody can think about the rules, development systems, interface rules,… from apple. but i work now over 1 year with xcode and objective c. for me it’s not important what kind of language i use. for me is important that i can use the source code i have written over many years. so i decided to do this in objective c. mono touch is a very nice dev system (i have a license) but the novell needs to convert the new api’s and what ever in there system. who nows what’s with monotouch in 5 years? apple can not kill obj-c, the whole OS is written in obj-c.

btw obj-c is not hard to learn. after 3-4 weeks i was coding in the speed like delphi. thinking in classes, methods, oop,… is language independent. it’s only a problem how to tell the dev-system in the correct syntax and where are the classes.

if apple is iArrogant or not, this is a question for everybody self. for me it’s important the iPhone and now also the iPad change a lot of in my life. there is no easier way to control in my mobile world so easy all my business stuff. if i look around to other people in my family (non developers) it’s the same. it’s so easy for example to control my contacts, mails, calendar over no sync with cables, adapters, computer or what ever. why should apple have not to control the way of apps?

if you look for example in android market, there are also apps for download from servers with terrible content. kids have apps/pictures on the phone with adult content. i like the way apple is controlling what kind of apps are coming in the store. sometimes the checking process is not to understand but the success of number of apps say all:

– 4 Billion Apps downloaded
-185.000 Apps in the Appstore
– 50 Million iPhones sold
– 85 Million iPhone and iPod touch
– in one week 450.000 iPads sold

this success show me the future of mobile market.

i know other systems are also great, easy to use…, but the master of integrate all together in one system is apple.
my house is now driven by apple. i buy my music, movies in itunes. after click,buy and download it’s automatic available in my appleTv box. no manual sync needed. is my iPhone/iPad/iPhone from my wife, iPod in contact with my network wow there is the music also. i change a appointment on my computer, wow it’s automatic changed in iP….

coming back …
sometimes some decisions, like the development tools are not in everybody style. but under the line the success show the result.
look at the stock fro APPL

bad example was Borland. Hello where is the name, where is my old company name? the name is burned. The only good on this bad situation was, Codegear (the true old Borland Developer Guys) are in a other harbor. And all the other (new) Borland Guys run the ship on the wall (what’s worth doing, it’s worth doing well LOL)

there are no decisions in the world with agreement from everybody. but you have to decide what kind of platform you like to use and make your life easier.


daniel magins

“Business is a combination of war and sport.” – Andre Maurois

This is very disturbing. It’s both a symptom of a larger problem, and a worrisome vision of the future. If Apple is allowed to get away with this, we can see platforms becoming more and more closed as time goes by…

@daniel: Amongst all that, I think you neglected to take into account OUR business strategy which, as developers, should be to spread our risk and encourage language portability whereever we can to ensure we never get boxed in with just one supplier? We don’t always get it but striving to get it is how we should be our “play” in the war?

I see this “uproar” as a strategy move for MY business interests – more code that I’ve written on more platforms = more potential for me. Isn’t that just good business sense?

@Olaf: No, as I said, we as developers have a responsibilty to ensure that we do have a wide skillset and truth be told I would learn Obj-C if I wanted to write an iPhone app but for me personally this is a principalled objection. Let me phrase it another way unrelated to Apple or any emotive topics:

Wouldn’t life be much easier if we could run any code on any platform? Practicalities aside, isn’t that a goal worth pushing towards and not away from?

@Jamie: Honestly, I do not think so. It leads to a “least common denominator” approach, which means you can do a little of everything, but nothing in depth.

It’s a bit of a trend. Windows mobile 7 is going to be just as closed.

You can only develop with C# and silverlight. You can’t run natively compiled applications (byebye c, c++, fpc!), it doesn’t support the compact framework, no winforms, and you can only load applications from Visual Studio, or via MarketPlace. Besides that it won’t have multitasking.

At my work we’ve been a windows mobile shop for years. We deliver applications including the phone. We’ve got plenty of C++ and C# applications for Windows Mobile 5/6 in the field at the moment, but we now consider Windows Mobile to be a dead end road.
We never took the iPhone serious as a longterm development platform because of all the silly restrictions.

That basically leaves Android as the only option. We’ve recently did some successful tests with it. It now looks like that’s going to be our future platform. No matter what, we’re going to have to rewrite a lot of stuff.

Hey, if it’s any food for thought, I’m a non-technical person, and an ‘average’ early to mid term adopter.
I just ditched my Iphone for an HTC handset running Android – and haven’t looked back. I was bored of the closed little iworld the thing offered me, and am looking forward to a world full of new innovation.

@tom: Yes Android is expanding, but if i look on the marketplace ( its really disappointing. if you look the very good organized iTunes Store Google has to learn much more to promote applications.
Do you really think the iPhone with 180.000 apps is the “small” world and the android with 10.000 is the big?

But that’s a free world and everybody can decide what ever like 🙂

daniel magin

Hey, Apple is a hardware vendor. Microsoft and Google aren’t. Therefore, Apple has a vested interest in seeing that people buy their hardware. As long as you use Android, Google couldn’t care less which phone, pc, etc you buy. If Microsoft could have their OS run everywhere, they would. People advocate a free market and capitalism, but when a company like Apple is the epitomy of Capitalism, people cry foul and want Communism (where everyone is equal and everyone shares, and every program runs on every hardware).

As a lot of people has said, if you don’t want to develop for or buy Apple’s products, so be it: there are a lot of people who will. I used to be one of those that would have nothing to do with Apple, until I bought one of their products. First it started with an iMac, then an iPhone, then a Mac Mini. Now I’ve ordered an iPad. I’ve started learning XCode , after being a Delphi guy for 15 years or so, C# guy for around 4 years, and Java before that. Don’t close your mind to opportunities. After all, it’s about making money, and by discounting one platform, you never know if you could be successful there.

Comments are closed.