Posted on by

UPDATE: I discuss the Corona app architecture in more detail here

Everyone’s up in arms today about the new iPhone SDK 4.0 rules: developers, startups, bloggers, and even our neighbors! The speculation is out of control. Seemingly innocuous phone calls we had with other developers are being tweeted about. So, in this post, I’m going to keep speculation to a minimum and talk largely about facts.

Here’s the short story:

The executable binaries you build using Corona are 100% Objective-C/C++. So based on our current best understanding, if you’re a Corona developer, you don’t have much to worry about!

The full story:

It is true that when you develop your app, you’re initially developing in Lua. But when you click “Build”, you are getting a real bonafide XCode-produced executable binary. Obviously, I’m leaving some details out (that’s our secret sauce) but ultimately your binary is produced by compiling a combination of Objective-C and C++ code. We use XCode to compile and link these binaries to official iPhone Documented API’s. It’s why we have always required you to install Apple’s iPhone SDK.

One thing is certain — we’re here to make sure that you, our Corona customers, are successful. Through our Beta program, we plan on increasing the frequency of our updates to get great new features into your hands and also ensure that we continue to meet all Apple guidelines.

Finally, we’re committed to complying with any future changes Apple makes so you can continue to develop great iPhone apps, successfully submit them to the iTunes store, and distribute them to the world. Thanks to our subscription business model, it’s what you paid us to do!

Best Regards,

Walter Luh
CTO
Ansca Mobile


Posted by . Thanks for reading...

33 Responses to “Do Apple’s new rules affect you?”

  1. Michael

    Walter,
    Thank you for your commitment. I believe what people are concerned about is the following language (emphasis mine):

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

    That word ‘originally’ would seem to preclude writing an app in Lua and having it translated to Objective-C & C++ prior to compiling. Due to this proposed revision, I’m wary of continuing the project I just started. I hope that Apple will either clarify this provision soon, or back down from it.

    Reply
  2. Andrew Morton

    Question is:

    Does that combination of C++/Objective-C include code translated from Lua or it is actually compiling the LUA VM together with the rest of gluing code and adding Lua code to the mix?

    Because the latter clashes with new ToS….

    Reply
  3. Matthew Pringle

    I think telling everyone they don’t have much to worry about is a bit of a misnomer at the moment. Until Apple clarifies their terms everybody is in the dark. Obviously this is not the fault of Ansca and I can personally say they have a great team who are both supportive and open.

    I fully support Ansca and will continue to develop in Corona for the future until the outcome of this issue in known and I wish the guys well in getting Corona approved for 4.0 distribution.

    Corona is still the best SDK for iPhone development outside of Apples own. As Apple would say, Corona is “XCode for the rest of us” and it definitely deserves a place in future iPhone development.

    Reply
  4. Matt

    That’s reassuring to hear. How about the “originality” clause? Apple claim you need to have /originally/ written your app in an Apple-approved language; clearly this will be difficult to enforce, so hopefully you guys are fine, but it’s still a vague concern.

    Reply
  5. Scott Janousek

    Don’t the new terms refer specifically to 4.0+. Also, it’s a beta. Does that mean Apple could change the language in specific clauses? I’m not a lawyer, but I think so.

    Speaking of which, they need to change it anyways, since Unity is a “frenemy” of Apple with their top selling 3-D content (i.e. games) on the app store. To me, it seems Unity is violating terms in future releases according to 3.3.1. Then again, perhaps Apple would consider just buying Unity out right?

    I have a feeling Apple will change the legal language to attack those it considers enemies, but for now will leave intact to make sure it determines all the potential cross compilers out there that violate their terms.

    I agree with Matt in my first read of the terms, but again, Apple will probably systematically target it’s enemies first and foremost (e.g. Adobe).

    I am not a lawyer, I’ll leave it to those folks to speak to me in terms of violation of agreements, rather than try to read past potentially murky waters ahead.

    Reply
  6. joe

    Does this mean no more secret compiling? Corona SDK will now need to provide a complete Xcode project with Objective C source code, including the code to the Lua to Objective C bridge.

    Reply
  7. Jens Alfke

    The contract says: “Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine”.

    Your post says: “It is true that when you develop your app, you’re initially developing in Lua. But when you click “Build”, you are getting a real bonafide XCode-produced executable binary.”

    “Originally” and “initially” are pretty synonymous. Apparently Corona uses a Lua-to-C++ translator, but that still seems to violate the language of the contract.

    I think in the long run it would be better if those affected by this awful development would fight back against it, instead of trying to argue that it doesn’t affect them.

    Reply
  8. Michael Hartlef

    @Scott: No, already and by the 20th of April you have to accept the license, or you can’t create new publishing profiles anymore. So the changed license also effects OS3.

    Reply
  9. Some call me Tim

    You don’t need to be a lawyer to interpret this agreement. It comes down to this:

    Whatever Apple decides they don’t want in their store, they kick out of their store, regardless of whether they have a reason in their developer agreement. And they’re telegraphing to developers that they only want games written originally in Objective-C/C/C++/JavaScript.

    That “original language” clause excludes Corona, as does their “compatibility layer” exclusion. The standard Corona libs (the “compatibility layer,” if you will) can be trivially detected in a binary the same way you can detect a virus or trojan: Using a signature. So Apple COULD ban all Corona apps, at any time, if they so desire. This is absolute and utter evil, but also absolutely true.

    So IMHO it comes down to whether Corona is worth their time to exclude–and this is a ticking time bomb for anyone who uses any compatibility layer, at this point. Which is sad, since I only just discovered Corona, and would love to use it or something like it to write games on iPhone and Android. But that’s exactly what Apple wants to prevent: Making it easy to write games on another platform. It’s all about control. It always has been with Apple.

    There’s a good chance that Apple will ignore Corona, at least at first, and that they’re just targeting Flash (and possibly Unity3d–already heard through the grapevine that they HATE the fact that Unity3d exists for iPhone). But I’m not going to take the chance myself.

    Reply
  10. Scott Janousek

    Tim, you don’t need to be a lawyer, but it does’t hurt to consult with one about business decisions to make sure.

    The nice thing about Corona is that the idea behind it. Unlike Adobe’s iPhone Packager, is that they (Ansca) are thinking about the bigger picture … meaning other platforms in mind. The stuff Adobe created was a stop-gap measure because Apple wouldn’t (and probably never will) allow Flash Player support (which all the Open Screen Project participants are engaged in). It was their only play, and it is a gamble which appears to be jeopardy (although Adobe is studying the agreement, and is yet to respond officially).

    I hope Ansca can establish a better rapport with Apple than Adobe has. I also hope that Apple lawyers reevaluate what they wrote in the terms based on both developer feedback, as well as the folks doing crossplatform-compilers.

    Reply
  11. Michael Hartlef

    Personally I just want to hear from Ansca that they will continue to develop Corona SDK for the Android, even if the IPhone support should be removed. Then I will buy it as I see that I have bigger chances now on the Android market than on the IPhone market (because how saturated it is).

    Reply
  12. Michael Houghton

    Jens said:

    “I think in the long run it would be better if those affected by this awful development would fight back against it, instead of trying to argue that it doesn’t affect them.”

    This is the absolutely key point. I know there’s no great love for Flash so nobody much minds Adobe getting a slap, but there’s no great security in your belief that they aren’t coming for you just now, because only Apple can support your assertion.

    There’s no security for you if Apple feel entitled to destroy established and previously compliant business models on a whim without a pushback, and there’s no joy to be found in a larger competitor being removed from the market through the market owner’s fiat.

    We shouldn’t be holding out hope that Apple will redraft 3.3.1 more narrowly to just exclude Adobe and not anyone else, because this wouldn’t be any more fair. 3.3.1′s language is deliberately and vaguely worded to stop anyone having the kind of independence from Apple’s terms that Corona, Rhomobile, PhoneGap and Titanium provide, and to pin your hopes on a narrow interpretation of those words that somehow brushes past you is not a business model.

    If you don’t at the very least fight for loud, public and explicit clarification from Apple about what their ridiculous action really means for you and for all of your like-minded competitors, why should anyone have any confidence in any similar development approach?

    It is, as The One Who Some Call Tim has said, a ticking time bomb, and it’s rolling around under the seats on the bus you’re all sharing.

    Reply
  13. fpierron

    The best thing to do : please Ansca people explain clearly how your Corona works with XCode. Then we could decide ourselves if we accept to work hard to build an app with it.

    Reply
  14. Jyaif

    Everybody, please stop saying that Corona is translating Lua to Objective-C/C++ because that’s just not possible.
    What Corona is doing is embedding a lua interpretor (written in C) into the binary.
    Somewhere in the application bundle are the lua scripts, either in textual source form, or in byte-code form.

    Reply
  15. Someone who is deeply disturbed by this

    Can’t somebody sue apple for monopoly malpractices or something like it?

    Lot’s of people people looted poor MS that way!

    Reply
  16. Scott Janousek

    At least one company did file an SEC compliant:

    http://www.knowyourcell.com/news/459889/adobe_files_sec_complaint_against_apple.html

    “To the extent new releases of operating systems or other third-party products, platforms or devices, such as the Apple iPhone or iPad, make it more difficult for our products to perform, and our customers are persuaded to use alternative technologies, our business could be harmed,” Adobe said today in the filing with the U.S. Securities and Exchange Commission under a “risk factors” heading.

    Reply
  17. Michael Houghton

    Scott,

    that’s not a complaint. That’s an amendment to the risks statement all public listed companies have to include in their filings with the SEC.

    There’s a bit in the SEC quarterly filing where you basically have to list everything bad you know could happen.

    Reply
  18. shuurai

    The ‘originally’ indicate the state of the code before compiling to binary. Therefore, since corona’s secret sauce is to convert LUA to objective C or objective C assembly anyway, it is fine.

    Legally, anybody can argue that I am coding my game in ‘pseudo code’ first and LUA is my personal pseudo code. :P

    Reply
  19. Amy

    [...] Corona, an awesome development tool for OpenGL-accelerated apps, has a specific response. Oh, and it’s coming to Android, too. [...]

    Reply
  20. Châu

    A better question is can Apple verify an application’s original source. If they can’t differentiate between applications originally built with Lua or objective C, then that part of the agreement is irrelevant.

    Reply

Leave a Reply

  • (Will Not Be Published)