155

A recent post by John Gruber notes that the following legalese:

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

Has been revised as follows:

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

And makes the following observation:

My reading of this new language is that cross-compilers, such as the Flash-to-iPhone compiler in Adobe’s upcoming Flash Professional CS5 release, are prohibited. This also bans apps compiled using MonoTouch — a tool that compiles C# and .NET apps to the iPhone.

Does this in fact ban the use of Monotouch for the IPhone?

casperOne
  • 73,706
  • 19
  • 184
  • 253
tom greene
  • 5,361
  • 9
  • 39
  • 52
  • 4
    I wonder where this leaves apple and existing monotouch developers legally. What happens to existing monotouch apps? – PeteT Apr 08 '10 at 23:41
  • 2
    @petebob796: You need to accept this new license if you want to put anything new into iTunes Connect, but I doubt they will pull things from the store that were submitted previously. However, they /may/ enforce this with new apps that are not 4.0 based but haven't previously been submitted. But like anything in the App Store, we'll just have to wait and see! – Jason Coco Apr 08 '10 at 23:52
  • 1
    Apparently that agreement is under NDA – Chris S Apr 09 '10 at 12:40
  • 2
    As of 9/9/2010 this is moot. Apple is relaxing Rule 3.3.2 http://www.foxbusiness.com/markets/2010/09/09/apple-relaxes-app-store-developer-rules/ – Steve Mitcham Sep 09 '10 at 17:23
  • http://www.apple.com/pr/library/2010/09/09statement.html aaaaaaaaaathankyooooooooooo let the craziness begin!! –  Sep 09 '10 at 14:08
  • It WAS banned, until today: [http://www.apple.com/pr/library/2010/09/09statement.html](http://www.apple.com/pr/library/2010/09/09statement.html) – Adrian Grigore Sep 09 '10 at 14:25

18 Answers18

88

Update -

This changed recently. MonoTouch should no longer conflict with the agreement. Any statements below are purely historical!

Yes, it seems pretty clear from their license agreement now that if the original application is written in C# then it would be violating the license:

...Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine...

They even hammer it in a little further:

Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited

Kind of a bummer, MonoTouch and the Flash CS5 -> iPhone converter are very cool.

Community
  • 1
  • 1
Lance McNearney
  • 9,410
  • 4
  • 49
  • 55
  • 1
    @petebob796 - Funny, a die-hard iPhone fanboy I work with said the same thing a few hours ago when this topic came up. He really likes the HP Slate over the iPad too. – Lance McNearney Apr 08 '10 at 23:44
  • 7
    however, see http://twitter.com/migueldeicaza/status/11844609073 using that, how would they tell a MonoTouch app from a native one? – Mauricio Scheffer Apr 09 '10 at 00:57
  • @Mauricio good to know, hopefully it leaves no tell tale signs in the code. To be honest I think this change in licence was designed to piss off Adobe in the on going flash argument. Unfortunately monotouch has got caught up in it too, probably because the licence couldn't be worded to just exclude flash without apple getting sued easily. – PeteT Apr 09 '10 at 01:08
  • 1
    I wonder what it would take for these guys to generate Objective C instead of executable binaries. – Jack Leow Apr 09 '10 at 01:37
  • 1
    @Jack: see my comment above. MonoTouch can already generate C code. – Mauricio Scheffer Apr 09 '10 at 01:55
  • 9
    Apple again huh. Sucking us in with a wonderful device, clean graphical interface, nice touch interface ... but ... stopping us developing anything for it unless we have a mac, stopping us developing anything for it unless it is object C / C / C++. I mean what would we all think if microsoft came along and said 'nope - can't develop anything in windows unless it is in C - no you can't use the .NET framework anymore'. – peter Apr 09 '10 at 04:39
  • 1
    On one hand I really like what Apple is doing with the ipod, and ipad. But on the other hand it really sucks. I am a developer and I cannot be bothered going there to develop stuff for the ipod. I feel like I have been 'forced' to go down that path of ignoring. I also work with mobile device software (windows CE) and I think Apple have closed off people like me from using the ipod / ipad for comercial applications. Companies cannot afford to kit out their developers with Apple machines. They could be doing so much better if they thought about it. I will remain using Windows and Linux. – peter Apr 09 '10 at 04:44
  • it seems that Apple is going deeper down this path: http://www.paulgraham.com/apple.html – Mauricio Scheffer Apr 09 '10 at 04:54
  • The only option is not to tell apple that you are using something else :) ... I mean, hide any possible dev signature from mono or flash and make it look like xcode ... as someone said before ... once compiled, it's just a binary file ... – Ondrej Rafaj Apr 09 '10 at 09:45
  • and they are not going to ban anything that is paid for as they don't want to decrease their profits ... that's especially true in the games category – Ondrej Rafaj Apr 09 '10 at 09:46
  • @peter: if that ever happened, i would totally switch to Python and Qt. – Jason Miesionczek Apr 09 '10 at 13:36
  • 33
    This makes no sense to me. Under this agreement, if you wrote an app in Flash and then *hand-translated* it to Objective-C, it sounds like it would violate the agreement (because it wasn't "originally written" in Objective-C). – Michael Myers Apr 09 '10 at 14:42
  • 1
    @Peter... you mean like how MS are banning native code apps in Windows Phone 7, only allowing Silverlight? They're as bad as each other, apparently we're reversing the trend of openness as mobile devices give a new opportunity to do so. – Mr. Boy Apr 09 '10 at 15:32
  • 3
    @John: I think it's less that they're 'banning' native apps--it's more that their new OS's API revolves around Silverlight/XNA and that is the supported way to do things. I haven't seen anything to enforce that you can't write a Java (or any other language) to Silverlight compiler in Microsoft's license agreements (yet). – Ron Warholic Apr 09 '10 at 16:40
  • 1
    and all the free software people are worried about microsoft, I think with this and the recent attack on android and by extension the Linux kernel I think they should be worried about apple instead. – trampster Apr 10 '10 at 10:07
  • 3
    Until all this happened, our product in development was to be iPhone/iPad only (who cares about Android etc) and in MonoTouch. We have now reconsidered, and we will now be Obj-C as required, but we will also be sure to have Android and WinPhone support available day 1 too. A business cannot afford the uncertainty of behaviour, and therefore Apple have done the opposite of what they wanted - made developers look for cross-platform solutions instead of Apple only. Well done. – mj2008 Apr 13 '10 at 12:25
  • @John & @Ron Warholic, yep, don't know regarding windows phone 7 and silverlight. But I reckon we should all keep an eye out for stuff like this, http://finance.yahoo.com/news/German-tablet-PC-sets-out-to-apf-890973130.html?x=0&.v=7 the WePad – peter Apr 14 '10 at 04:17
  • Maybe. But it's going to be a minority thing almost certainly. If we suddenly have lots of proprietary pads - Apple, Android, ChromeOS, we're back to the bad old days. – Mr. Boy Apr 14 '10 at 08:25
  • @mmyers: I agree, but the clause as written seems to go as far as anyone feels like taking it. You could say that even a C application that started out as pseudocode wasn't "originally written" in C. And woe betide anyone who starts out with a plain English specification document... – fenomas Apr 14 '10 at 14:37
  • 1
    I just don't understand why Apple don't start to work *with* their ISVs and use a certification model; push 3rd parties into an SLA and getting an 'Approved for iPhone' badge. – Luke Puplett May 04 '10 at 11:08
  • I have to wonder if Apple is setting itself up for an antitrust lawsuit here. Agreement in restraint of trade? – William Jockusch May 17 '10 at 14:03
  • 1
    Just wanted to update everybody in this thread.. iOS4 has been out for a month now, and apple is accepting MonoTouch applications just fine for the appstore. The Novell guys continue to update MonoTouch with every release as well. – Eduardo Scoz Jul 15 '10 at 20:30
  • @Eduardo How do Apple knows the app was originally developed using MonoTouch ? – Jla Aug 24 '10 at 09:23
  • @DrDro - although technically there's no difference between an XCode app and a MonoTouch one, its fairly easy right now to see that an app was created in MonoTouch, because of the names of libraries that are part of the final app file, etc. Novell said that they would correct that if there was a need to, and just compile everything into one big assembly, but they never needed to do that. So while I doubt Apple testers actually look to see how an app was made, they could figure it out. – Eduardo Scoz Aug 24 '10 at 13:30
  • ban on yesterday, ban off today, in short, there is no guarantee that they wont ban it tomorrow. They cant stick to their statements. – hrishikeshp19 Aug 30 '12 at 01:00
49

Update:

Apple has dropped (almost) all technical requirements for languages and libraries for iOS, so MonoTouch is without a doubt a viable solution. See Apple's announcement.


Most people here simply want to take Apple's document by the word and say "yes, its banned". Well, here's my point of view: at this point, nobody really has any idea if MonoTouch is going to be banned or not, and I'll explain why:

The Apple agreement version 3 (not the latest, the one before) clearly states that its illegal to use any other frameworks to develop applications other than the ones provided by Apple:

3.3.2 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple's Documented APIs and built-in interpreter(s). http://adcdownload.apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf

Even though that's the case (and was actually the case since 2.x, apple doesn't have any problem accepting applications that do exactly that. For example, ALL EA games use Lua scripts, and lots and lots of people use external libraries that are not native to the iPhone. Even when the iPhone has those native APIs, Apple never had a problem accepting applications with different versions of it, like SQLite.

My point is that saying "YES, they'll be banned" right now is simply WAAY too early. The only clear thing at this point is that Apple could in fact use that to ban apps. Just like they accept Apps today that are against some of their rules, they'll probably continuing doing so.

There's also the fact that are hundreds (or probably a few thousands?) of apps in the store currently running Mono, and Apple will need to accept updates for those apps. Major apps with millions of sales were created using Mono (and Lua), and I doubt they would refund every single user.

Lastly, Enterprise applications are deployed to iPhones without Apple's approval, and that's a big market that MonoTouch is on (I myself develop enterprise apps). There's no way at this point that Apple could ban MonoTouch for those applications, and that will probably be enough to keep MonoTouch alive for a long time.

Eduardo Scoz
  • 24,653
  • 6
  • 47
  • 62
  • I generally agree with you, except for the last part - Apple could easily say that future updates of existing apps must be ported to native Objective-C. – Kendall Helmstetter Gelner Apr 09 '10 at 17:33
  • Well, even if apps are ported to Obj-C, they were originally written in a different language, so technically they would still be illegal, I guess.. That's why these rules don't really make any sense. They'll probably clear it up in a following revision, just before final release of 4.0. – Eduardo Scoz Apr 11 '10 at 16:45
  • 3
    The previous language did not ban frameworks at all. It clearly said that what it banned was launching executable code, and lists frameworks as one example of a way that might be done. The language you posted does not affect monotype apps or Flash apps or any other precompiled binary that doesn't attempt to interpret at runtime. – fenomas Apr 14 '10 at 14:29
27

Update:

New changes to sections 3.3.1, 3.3.2 and 3.3.9 have made MonoTouch (and all other cross compilers/languages/etc) perfectly acceptable on the iPhone. See Apple's announcement


Miguel doesn't seem to think so. See the tweet and Miguel's response. Lets not overreact here and say that Monotouch is dead, or stop developing with Monotouch until some clarifications have been made by all parties involved.

That said I would definitely start putting the heat on Apple for such draconian development policies. Things like this, and the nebulous process that is the approval policy of iphone/ipad/touch apps should strike fear into the hearts of developers. What's next, their license stating that the only Ad platform you are allowed to use is iAd? Not allowing the distribution of free apps without iAd? Slowly raising Apple's share of the revenue of app sales? As developers in a locked down eco-system, we are kind of frogs in a pot of hot water, and Apple is slowly turning up the heat. Now is the time to explore other mobile platforms, because as they get better, the main thing holding people to the Apple platform is lack of applications on other platforms.

Community
  • 1
  • 1
Kris Erickson
  • 33,454
  • 26
  • 120
  • 175
  • 4
    +1 (especially for "exploring other platforms") – Tim Apr 09 '10 at 18:20
  • 2
    +1 though I expected more from those links. "Nope" isn't very telling, is it? Micro-blogging is a scourge. – Dan Rosenstark Apr 20 '10 at 23:05
  • Go explore, I'm sticking with Apple. I've got 2 macs and a developer's license which I will gladly renew this year so I can keep on developing. Love it or leave it, but quit crying about it. And just go buy a mac already... – kirk.burleson Jul 13 '10 at 01:56
10

I spent months of evenings working on ideas for a killer iPhone app in Objective C. My day job is C#. I downloaded MonoTouch C# when it became a viable alternative and have just spent 3 months converting my code to iPhone specific MonoTouch C#. Which stopped me going mad through switching from C#/Objective C.

What do I do now throw it all away and start again or give up!?!

I feel really sorry for the Mono guys. This is plain wrong. It is one thing to stop Adobe who haven't launched their product and have no customers and to stop MonoTouch who do and also have approved product in the AppStore.

Why would anyone want to build a business and invest in Apple when they will take it all away at a moments notice without being answerable or questionable?

Clearly developers and customers of Apple caring for them and their products is a one way street.

AnthonyLambert
  • 8,768
  • 4
  • 37
  • 72
  • Monotouch does not have an approved product in the app store - there are a lot of applications in the app store that were written using Mono. There is a big difference, in that there are a lot of applications around to consider instead of just one. – Kendall Helmstetter Gelner Apr 09 '10 at 17:37
  • @ Kendall Helmstetter Gelner: You're wrong. There are MonoTouch apps in the app store. – Tim Scott Apr 18 '10 at 03:45
  • 4
    @Tim Scott, he's saying... oh forget it. – Dan Rosenstark Apr 20 '10 at 23:06
  • 1
    You have to consider the amount of development time adobe would have put into their iPhone compiler though. Apple let them continue down that road knowing it was coming for more than a year and at the last minute took it away. Costing them millions in development time and lost sales. – PeteT Apr 27 '10 at 12:01
  • @Tim: And how many of those apps were developed BY the Monotouch people? Read what I said again. @yar: Thanks for trying to explain. – Kendall Helmstetter Gelner Apr 28 '10 at 05:15
  • @Kendall, yes but I was obviously referring to AppStore product that contained their product (MonoTouch) in the AppStore which has been approved. – AnthonyLambert Apr 28 '10 at 13:37
  • Apple has always been a one way street. You play by their rules or you don't play. – kirk.burleson Jul 13 '10 at 02:03
  • Thank you Apple, I shall restart my development again now! See you in the App Store soon, I hope. – AnthonyLambert Sep 09 '10 at 15:28
9

I hope Apple gets trounced for this ridiculous policy. Arrogance is not attractive and generally bad for business. This is one of the reasons I haven't started iPhone development.

Most hardware and OS providers are happy to have additional tools and audience to write to their platform. Apple is taking the stance that its (braindead) tools are the only game in town.

The "Big Brother" ad from 1984 is more and more relevant...

EDIT

The way it is written also seems to imply that if I wrote a .net to objective C/apple translator that the code isn't acceptable because the original code was not objective c. That is ludicrous (and unenforceable.)

Tim
  • 20,184
  • 24
  • 117
  • 214
  • 2
    What's the arrogant part? Do you think they're doing this because they think their code is cleaner, or something? – bpapa Apr 09 '10 at 14:36
  • 3
    Are you saying it is not arrogant? – Tim Apr 09 '10 at 14:37
  • 2
    Nope, I don't think it's arrogance, they aren't sitting there like Thurston Howard III laughing at the idea of the audacity of those peasant .NET and Flash devs thinking that they have the chops to develop for their platform. I think it's a business strategy, and agree with the theories laid out in Gruber's follow up post http://daringfireball.net/2010/04/why_apple_changed_section_331 – bpapa Apr 09 '10 at 15:01
  • 4
    @bpapa Arrogance is not limited to technical issues - it also covers business views as well. They are arrogant in that they think they can get away with it and that it is acceptable behavior. Just because it may be a "business strategy" does not mean you are exempt from being called stupid and arrogant. – Tim Apr 09 '10 at 16:31
  • 3
    Actually they will "get away with it" because the iPhone OS devices will continue to be huge successes and developers will continue to develop for it, and new developers will join the fold. I made a choice a couple of years ago, I could sit and whine about how I couldn't do Java development on the iPhone, or I could learn Cocoa Touch and make iPhone apps. Don't regret my decision. – bpapa Apr 09 '10 at 17:46
  • The 1984 ad was about Apple freeing us from big brother, so it is becoming less relevant, not more. – Ben Apr 09 '10 at 17:51
  • 5
    @Ben Um, no - it is relevant because Apple IS big brother... It's called irony. – Tim Apr 09 '10 at 18:16
  • 2
    @bpapa - in some senses they have already lost. The shininess of apple is wearing away and many of the best developers choose NOT to work on their platform specifically because of their policies and poor tools. Can you imagine how many better apps would be out there if Apple's policies were reasonable? It is not that hard. Blind alliance is not useful... – Tim Apr 09 '10 at 18:18
  • 2
    The recent iPhone OS announcement is a pretty clear display of Apple scrambling to catch up to the features available in Android, including the very basic of user needs, like multi-tasking. At the rate things are going, if you think the iPhone is going to continue as successfully as ever, you're terribly misguided. – JMTyler Apr 09 '10 at 18:37
  • oops - substitute "allegiance" for "alliance" above – Tim Apr 09 '10 at 20:21
  • Remind me not to bet on Apple in any races. When they "scrambled to catch up" with multitasking, they took an entirely different approach to accommodate for battery life and user experience. Tortoise and the Hare, I guess. – bpapa Apr 09 '10 at 21:31
  • Funny thing is my last comment was entirely wrong - from what I've read now, I've learned that iPhone 4 multitasking is nearly identical to Android's. It's interesting that even non-programmers are intimately aware of low-level iPhone OS features but nobody seemed to know about how Android did multitasking. Mindshare is staggering. – bpapa Apr 10 '10 at 16:55
  • This is not an answer to the question, it is a rant about Apple's policies. – Brad Larson Apr 11 '10 at 14:13
  • 2
    @Brad Yes - you are right. But it is appropriate, don't you think? – Tim Apr 11 '10 at 15:50
7

The new license agreement is explicitly clear about that. So YES, it will be banned.

Advice, if you want to really develop for iPhone, try XCode. If you are already familiar with Java or C# or yet better C++, then learning Objective-C wont be that hard.

iPhone/iPad is Apples new successful business, and they will do anything to keep this business growing, maybe they will not ban Monotouch apps now, but who knows there next move? So if you are really really interested in iPhone dev, instead of having nightmares that your work might be just rejected. Just switch to XCode, at least that will lower your app reject percentage. Hence, my advice.

user229044
  • 232,980
  • 40
  • 330
  • 338
mohdajami
  • 9,604
  • 3
  • 32
  • 53
  • 18
    It's not that it's hard. Anyone using monotouch already knows Objective C. It's that Objective C is terrible to develop in compared to modern languages. – James Moore Apr 09 '10 at 02:46
  • 3
    @jamesmoorecode: +1 that's terrible – abatishchev Apr 09 '10 at 08:37
  • 1
    Yeh, I spent the time to learn Obj-c and all the Cocoa Touch APIs so it's not a problem for me to write a native app the way Apple wants. It's just that why would I want to do that when I could use MonoTouch to do it much quicker and share the 'business logic' (but not the user interface) with WP7 and Silverlight for the browser and desktop apps? – U62 Apr 09 '10 at 10:48
  • 4
    There's a reason so many apps on the appstore crash regularly: objective-C. Even high profile ones like digg.com – Chris S Apr 09 '10 at 12:44
  • I first programmed Objective C in 95.... It was by far the best thing out there at the time. It is a long way behind now. I hate to say it but having used both it and C# MonoTouch It really is a poor relation. – AnthonyLambert Apr 09 '10 at 13:47
  • Voting down, simply because there's nothing really clear about the current agreement, and medopal simply doesn't know if they'll be banned or not (at this point, nobody knows that). By apple rules, apple applications could just as easily be banned (xml, xib files?). Advice is also unnecessary, and has no relation to the question. – Eduardo Scoz Apr 09 '10 at 13:49
  • 2
    I learned obj c on the train into work this morning - it's not hard - but it stinks - it's a verbose, archaic language - i'd rather write iPhone apps in T-SQL ASCII art. –  Apr 09 '10 at 16:02
  • @Eduardo Scoz, thank you, i just updated the answer. i wasn't expecting downvotes for my advice, not even upvotes! – mohdajami Apr 10 '10 at 01:25
  • @Chris S, i partially agree, Obj-C maybe the reason, but also amateur Obj-C developers could be the reason as well, thousands of iPhone devs are totally new to the platform and so could make huge mistakes. Even LinkedIn said there first version of iPhone app was made by an amateur programmer. But now (3rd version) is made by experts, so it could be the language, but could also be the devs! – mohdajami Apr 10 '10 at 01:27
  • 1
    @jamesmoorecode, @Chris S, @cista: These are fairly ignorant responses. Many Mac developers (like myself) intentionally chose to develop for a platform with limited uptake only for the Cocoa development environment. The verbose nature of the language is appealing to us, as it makes following the code that much easier. When it comes to crashing, aside from the lack of garbage collection, in no way is that the fault of the language. Are you saying that Monotouch makes you immune to race conditions or memory exhaustion (the two leading sources of crashes)? – Brad Larson Apr 11 '10 at 14:23
  • @jamesmoorecode, @Chris S, @cista: I also direct you to this question for more on the topic: http://stackoverflow.com/questions/435990/why-do-programmers-love-hate-objective-c – Brad Larson Apr 11 '10 at 14:24
  • 1
    Obviously is the fault OF THE LANGUAGE! Obj-c let assign wrong data types to previously declared vars, memory management, error-prone, and based in ideas of 10+ years ago, that are replaced or improved in new, most modern, languages. If YOUR application (a image editor) let open text files, and crash, suddenly disappear with obscure errors, require minuscule, obsessive, steps to operate (because any error, crash!), then the software IS defective. Obj-c could be a good idea 10 years ago, and truly, a improvement over C++/C. But be a improvement over C/C++ is not a achievement. – mamcx Apr 13 '10 at 01:57
  • 1
    @mamcx - I have no idea what you are saying here, because if you define an instance variable as an NSString, you will get compiler errors if you try to assign an NSData value to it. Similarly, you are warned by the compiler about messages that may cause runtime errors. Ignoring compiler warnings is a recipe for failure in any language. Again, this has nothing to do with an application running out of memory due to poor design or poor coding, or hitting a race condition because of sloppy code. Using C# over Objective-C gains you nothing in those cases. – Brad Larson Apr 15 '10 at 14:26
  • It isn't the question of what is better or worse. It is about the legislation that stifles the development in many ways. Though your answer covers some part, your considerations are non constructive. Just because the Obj C is better (or worse) projects that were started and gone a long way of development should not stop. This is a waste of time, money, human resources and break of contracts. – Oybek Jun 07 '12 at 09:43
7

Unity is also based on Mono and with that being a sizable commercial product I imagine that this is an issue which we've not heard the end of yet.

Banning all apps that are not written in Obj-C/C++ would, in theory ban all Unity games also, of which there are a large number already in the app store.

This question has also been asked over on the Unity Answers site, and their official answer is:

"We just heard about the iPhone OS4.0 and the new Terms-Of-Service. While we believe we are fully compliant with these we are right now doing all we can to get this verified by Apple. As soon as we know precisely, we will of course share that info with everybody. Please hang tight while we get this sussed out."

Be interesting to see what they get told by Apple.

The thing is, surely saying that an app has to be written in a certain language is a bit of a misnomer, as once the app is compiled down, it's always a native binary regardless how it's been built. My guess is that all they can look for is some kind of signature in the binary to detect what tool it was built with. A flawed approach.

EDIT: There is an interesting overview of the situation on this blog: monotouch now dead in the water what does apples new iphone developer agreement mean

NANNAV
  • 4,875
  • 4
  • 32
  • 50
Ira Rainey
  • 5,173
  • 2
  • 34
  • 42
6

I think something to strongly consider is Apple's motivation.

I agree with other sentiments posted online that Apple is trying to prevent commoditization of applications - that is to say, having more and more applications written using frameworks that generate applications that can run across multiple devices.

But that's not what Monotouch is. Monotouch is all about using the Apple frameworks to write applications - but through Mono, not Objective-C. So from that standpoint what Monotouch is doing is not something that should really bother Apple.

I still hold that developers are better off writing in the native language of the platform they are using, as things are just generally smoother when you don't introduce system that can have abstraction impedance mismatch - the Cocoa frameworks were all built to be used from Objective-C, and they make the most sense when you are used to the philosophy of Objective-C. But I do hope that Apple comes down on the side of allowing MonoTouch to be used.

Kendall Helmstetter Gelner
  • 74,769
  • 26
  • 128
  • 150
  • 1
    Whoever downvoted my rational analysis is going to developer hell, just to let you know (the definition of which is writing mobile apps targeting only Windows Mobile 6.5 for all eternity). I mean, argue with me but why the downvote for a reason why it might well not be banned? Why not try to understand what Apple is doing instead of just joining the pitchfork and torch brigade when the first torch is lit? – Kendall Helmstetter Gelner Apr 11 '10 at 02:11
  • Agreed Kendal, +1 for balance. – si618 Apr 28 '10 at 00:43
  • +1 A reasonable argument – Bill May 06 '10 at 14:08
  • 1
    +1 for the underdog and his differing view. Everytime I go against the masses of group think I get down voted until I'm forced to delete the post. – kirk.burleson Jul 13 '10 at 01:33
5

All Apple is saying is that you must all now use 1980's languages to develop your competition beating state of the art Mobile Applications....

Makes perfect sense. Sounds like a winning strategy to me.

It also stops you from using any 3rd party libraries that you can't guarantee that have been developed in straight C, C++ or Objective C.

So basically it means that you can't buy in Games API's such as Unity.

AnthonyLambert
  • 8,768
  • 4
  • 37
  • 72
4

Just adding my 2 cents. It seems that after reading this part: (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited) there is nothing to discuss. They have expressed them unambiguously. Not only they are banning MonoTouch and Unity3d, it seems they are also banning Titanium Framework. However, after reading this article, i found myself really confused. I am not familiar with US laws, but is it legal? I mean, aren't they breaking some anti-monopoly laws?

Besides all of this, i can't understand their motivation. Not only will they partly lose a developers interest, they will also lose a developers respect, i think.

n535
  • 4,983
  • 4
  • 23
  • 28
4

As of today, Section 3.3.1 of the Apple iOS Developer Program License has now been reverted to the old text:

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

Apple has released an official statement on the license changes.

This would indicate that it is now permissible to use MonoTouch.

Jeff
  • 21,744
  • 6
  • 51
  • 55
3

One goal of the Mono team is porting Silverlight to the iPhone by mean of MonoTouch/Moonlight for cross platform development. That's a bit like porting Flash to the iPhone. There is also Monodroid on the way to help us porting applications and, you know, Apple runs amonk every time someone says "Android" :-) IMHO, if Apple is targeting Adobe with the new agreement, they are targeting Novel too. We are probably speculating and there's a NDA but many of us invested a lot of time on this platform so we need to make the situation clear. We cannot wait next summer to discuss this matter. For example, I've been asked by a friend to help his company to prototype a MonoTouch application for a customer. Does the new agreement only affect the App Store distribution? What about in-house distribution?

Tajomaru
  • 115
  • 1
  • 10
2

This google docs spreadsheet has a long list of apps that will be affected by the new agreement. Some noteable ones that have been #1 in the appstore for their category:

  • Monopoly
  • Lemonade Tycoon
  • Skee ball
  • The settlers
  • Zombieville

One of the funny inclusions is Toy Story.

Chris S
  • 64,770
  • 52
  • 221
  • 239
2

oMany apps have been accepted within the last few days written with the help of monotouch and unity, whereas I also am using it as well as obj-c, since the announcement and change in the agreement, so GO FIGURE,...the good ol'WTF comes to mind. It is a bipolar piggybank it seems.

ALSO, the last Unity Game GiantMOTO, which is under HOT NEW GAMES - YESTERDAY, has on its splash screen onLoad in big letters, POWERED BY UNITY. So, all the conjecture, assumptions, etc. is really out the door. It might say all that in the new version, it is certainly NOT enforced. And montouch is the only development platf that FULLY exposes iPhone API and builds COMPLETELY into obj-c using XCode.

Sebas
  • 21
  • 2
1

Mono applications would normally compile to bytecode which is and would require JIT (just in time) compilation to run them thus a .Net framework or Mono framework is required. However, in the case of iOS and Android, Mono application compile to native code. Therefore, in the eyes of Apple, there is no third layer, Apple will never ban Mono. So you can feel free to develop with MonoTouch and distribute your apps. To ensure you further, there are various of Mono applications (including games and applications) on the AppStore that have been around for a long time.

Peyman
  • 3,059
  • 1
  • 33
  • 68
1

From what the license agreement says MonoTouch apps will clearly not be allowed in the AppStore.

The more interesting question is though, against which framework / apps will they enforce it? They will also have to write automated tests to check if the apps were written natively or not, because the people who approve the apps won't have the time / skills to do it for every single app. These apps won't put a sticker there 'Using MonoTouch / Flash'.

mgw
  • 250
  • 1
  • 6
  • 1
    I would guess it will be an automated process. I would guess monotouch and the flash compiler will leave common code patterns from the conversion which can be statistically picked out from compiled code. – PeteT Apr 08 '10 at 23:46
  • 3
    yup if apple use some automated process they will certainly find the conversion pattern. But this policy from apply is absurd. I mean Obj-C sucks its really kinda obscure language. I really like what MonoTouch is offering. – Shoaib Shaikh Apr 09 '10 at 13:42
  • @Shoaib Certainly agree it is absurd and will move a lot of developers to android and windows phone which in some ways is good for competition. – PeteT Apr 27 '10 at 09:40
1

Short answer to all that blob in the agreement is YES.

Apple is basically shooting itself in the foot by limiting programs to a few languages:

  • C - which is not really suited for application development these days, due to it's low-level nature. It's mostly a systems programming language today.
  • C++ - which makes it harder to shoot your phone, but when it happens, it's with a bazooka. Apart from Qt, there aren't any complete application frameworks to use in C++ (and Qt doesn't support iPhone - yet).
  • Objective-C - which was invented by Apple and of course will be supported.
  • JavaScript running in WebKit - basically a web application.

They are deliberately limiting what tools you can use to develop for iPhone, which will almost certainly get them in serious trouble. I'm sure a good sized chunk of the community will just quit iPhone development and migrate to a different platform like Windows Mobile, Symbian, Android or Maemo, which are totally open - you are free to write your application in LOLCODE.

Apart from possibly making iPhone junk for developers, it also gives Adobe a nice kiss: Apple deliberately blocks Flash from iPad, and now they are also blocking it from iPhone. The nummer is Adobe Flash's CS5 biggest feature is deploying Flash applications to iPhone.

tl;dr: Apple is basically shooting itself in the foot with this move.

CMircea
  • 3,543
  • 2
  • 36
  • 58
  • Apple shot itself in the foot in the first place and everyone said, "Apple is doomed due to closed architecture." Turns out that shooting yourself in the foot -- as any employee-becomes-consultant will tell you -- is often a good strategy. – Dan Rosenstark Apr 20 '10 at 23:11
  • Yeah, keep holding your breath for that good sized chunk of the community to quit iPhone development! – kirk.burleson Jul 13 '10 at 02:01
  • Objective-C is not really invented by Apple, it's just adopted like LLVM and same parts of BSD :) – Emil Marashliev Aug 20 '13 at 15:05
1

It's now months after the flash debacle and it's pretty obvious Monotouch and Unity are doing just fine.

As per "Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited"

Monotouch compiles code down to a native binary, there is no "layer". They're referring to somethign like a .NET runtime, Java JVM or Flash runtime.

Doobi
  • 4,844
  • 1
  • 22
  • 17
  • It says about Documented APIs. So, I think that it doesn't matter if you compile to native library or not – vodkhang Aug 12 '10 at 02:05
  • The point is, the want that you need to buy a Mac to develop for the iPhone. This applies not only for Java and Flash, but also for mono, because mono enables you to develop on a windows/Linux computer. But unlike Java or Flash, mono is probably not much used, so they don't yet care. – Stefan Steiger Aug 12 '10 at 10:38