Apple Relaxes iOS Development Tool Restrictions
An anonymous reader writes "Earlier this year Apple caused major upset among developers by updating the iPhone developer program license with clause 3.3.1. It basically stopped the use of cross-platform compilers, meaning Adobe Flash could not be used to develop an app for the App Store. The move also put into doubt which other development platforms could be used and generally caused a lot of confusion. Apple has just significantly relaxed that policy and allowed for the use of development tools, as long as 'the resulting apps do not download any code.'"
It's refreshing to see Apple wrong so many times in a row. Watching them backpedal is amusing.
Does that count as downloading?
I am looking at this in the context of scriptability.
Its good to see big companies backpedal and fix their mistakes, even more if the company is Apple/Ms/Google
Don't get me wrong, I think it made sense for *them* to ban things like Adobe CS5, but I don't think it was good for everyone involved (especially users and developers), and its great to see them do that, for whatever reason it must be.
This is the actual statement by Apple.
Also, I've read some rumors about the next iLife '11 having a new program for creating iOS apps in a similar way to the Android's AppInventor. This new statement seems a like a pointer in that direction, otherwise they would have a hard time arguing about antitrust issues on the App Store...
exp(i*pi)+1=0
It's to prevent/reduce the lawyer-like arguments. The moment a set of guidelines becomes public, people start trying to find loopholes. Arguments about terminology, implementation, and technicalities ensue. Then the rules get updated to account for what's been argued already, which brings in a new set of loopholes. Soon, a whole new industry springs up around just knowing the rules, and the whole process grinds to an inefficient halt.
It's much easier to keep guidelines internal, and only release very general suggestions.
You do not have a moral or legal right to do absolutely anything you want.
Sure, so how does Skype get through. In fact, how do most apps get around points 2.11-2.13?
2.11 Apps that duplicate apps already in the App Store may be rejected, particularly if there are many of them
2.12 Apps that are not very useful or do not provide any lasting entertainment value may be rejected
2.13 Apps that are primarily marketing materials or advertisements will be rejected
I would say the vast majority of apps in the store fall under these points.
What I would like to see apple do is to add performance to it's application review process. Say for instance you app does not boot to a stable runnable state in 10 seconds it gets disapproved. Same goes for memory usage and and processor load. That would solve the whole "user experience" goal that they claim to have. Of course it would keep most of the interpreted apps, flash, java etc off of the phone but I have no problem with that. On one hand I would like to have to option to use interpreted languages on the device on the other hand I know that for performance reasons it is not the way to go.
Got Code?
Jailbroken and/or pirated apps are easily detected. So easily detected, that Apple doesn't really bother, because apps can do it themselves.
Firstly, an app downloaded from the App Store has DRM on it, which consists mostly of encrypted portions of the binary. That binary is then signed. On running the app, the kernel loads the app, validates the signature, then in-memory decrypts the binary, and finally runs it.
A cracked app can't be re-encrypted for a specific device, so they're shipped decrypted. The kernel, however, cannot load unsigned binaries unless a special flag is set to indicate that it's a decrypted binary that's OK.
An app just needs to check for that flag which exists in its info.plist file. It can do several checks - first, is info.plist in text format (it should be binary XML)? Second, do those keys exist in the file?
The apps that do the obvious checks are quickly re-patched to disable those checks, but there's nothing to say that an app has to pop up an "I'm pirated!" notice - it can silently report its pirated status to the server, for example, but otherwise run normally. Most crackers don't check, and most pirates won't bother. Even the ones running Firewall IP (a really nice firewall alert). You need someone to actually go and sniff the WiFi transmissions to ensure it's sending the same data to the server. Use SSL and you're golden. (Sure the pirate could disable all network access, but then who cares about single-player cheating?).
Also, assets are signed as well, so replacing all the textures with transparent ones also have the exact same issue - you have to go and decrypt the binary, make your mods and set the flag. There are also tests for jailbroken phones as well.
Online multiplayer is not a huge thing on iPhones, iPads and iPod Touches - at least, the ones where you can't do server-side validation of inputs (which you should do anyways). Local multiplayer may be a bigger deal, but there are probably social pressures against that behavior as well.
"does this mean if Adobe tries to release it's tools again "
The tools are already released, they are still included with Flash CS5 (Packager for iPhone). Developers can start using them today if they want.
After the disaster that has been flash on Andoid so far, perhaps this is just Apples way of saying "see we told you". I expect a plethora of sub-par apps flooding the app store soon, in the end this will probably help HTML5's cause much more than Adobe.
Wouldn't it be better to prefer to work with another platform that does not have to receive negative feedback in the first place?
Sure it would. And I'd love to ride a Unicorn through the sky!
Too bad I can't do either. All platforms have some negative feedback from the user community. The question is, do the curators of the platform you are developing to listen to you?
I'm not even saying Google does not, I think they do as well. But Apple is very good about taking in suggestions for enhancements and eventually coming out with really good API's around them, or as in this case responding to something Developers saw as pointless and removing it (and in reality they had backed down on it months ago with a slight revision to the alternate platform clause).
It's not like Google is perfect either after all, like only allowing Skype to be used with Verizon, or allowing really crapping phone company specific UI to be added to Android.
Has there been any fundamental policy shift before today?
Yes, for example they had a no screen-scriping rule in place for camera use (because that was the only way to read the camera data realtime was a private API call) and they specifically allowed use of that private call so that basically every barcode scanner and AR app could function.
They've also backed of policy choices like not allowing free apps to change to paid apps (or something along those lines, I forget the exact details since I wasn't affected). Or they have also changed policy around in-app purchases to change some restrictions.
Basically there are a lot of examples of where Apple came out with some initial policy that had issues, and they fixed it is response to developer feedback.
If not, what were you saying prior to today on why you prefer to work with iOS development?
I'm saying it because I have found it to be a consistent pattern over the past few years. I was a Java developer for many years, I could do Android development just as easily - but I like more what Apple is doing around the iOS platform, and currently I see a ton more potential (and it's much easier to make a living at it).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Makes me wonder... WebKit is embeddable in iOS apps, right? Is it possible to embed it in such a way that it is not visible - e.g. just hide it, or overlay it with something - and use it solely as a JS scripting engine?
The only reason they are doing this now is because they've gotten too much pressure not too.
Naw, the iPhone is, literally, the textbook example from The Innovator's Solution.
Apple's best profit maximization came from keeping everything proprietary for as long as they didn't have significant competition. That they're doing this is likely an indication of a sales slump vs. competition from Android. Now they'll begin the process of competing in a commoditized market.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Not in the slightest. What's an argument to you kid? Shaking your user IDs at each other while shouting "Nuh uh"? Points are raised, answered, dissected. Claims are made, and tested. He can be the illustrious whatever he wants but if he dodges the issue he's proven nothing.
I'm not challenging him on the iOS build environment, or his UI design skills. I'm discussing issues other developers have that he, by his very admission, has never seen and has heard very little about.
I'm bringing up questions from the news: "this uncertainty, what if it happened to you?"
He on the other hand is saying quite plainly that that never happened and besides, stopped sometime last year, but that reports are largely fabricated.
I see risk. A company I worked for recently was building a PBX and one of the risks they had to disclose to investors, and they weren't even publicly traded yet, was that the whole system simply wouldn't get through regulatory testing despite otherwise working. And this is government regulatory testing at an independent lab, not Apple's totally opaque approval process.
I see that risk here. If you wrote an app, and as a programmer about half of what I write is small dev tweaks - I assume others are similar, that DID step on Apple's toes, what then? I don't see any clear guidelines on exactly what is not allowed. What I do see is Apple sitting on things for months, refusing to say anything, threatening and punishing those who speak out (though being swayed back again by intense PR), but never actually giving a firm reason that you can work with because they don't want to appear to everyone else to be hostile to development.
Instead of talking about the risk and how to avoid it he sidestepped the issue and talked about all the apps that do get approved - as if the trivial approval process for yet another pedometer, or calculator, is in any way related to what goes on when Apple plays rough. It's as if I asked a question about how many people get mugged and the city PR person says "Over a million people safely enjoy our city every day." A total non-answer.
And as for the dev sessions, I simply disagree. They charge to see the presentation in person because seats are limited because of your chance to see people but the video of the presentations are never comparatively useful. Once you get past the extra time spent on introductions and chatter you've still got to slog along at their pace. Far more useful at that point, in a strict sense, is if they've summarized the talk and given the demo code. The video is more about seeing other developers, "meeting" the personalities, and community building. Not useless, but not something the developer should be paying for - it's Apple's community - dev's already bought in with their phones. And especially since it could reach a wider audience if it were open.
But then there's the thing... Charge for something, keep some people out, and you've made it more precious to some others. They could make the dev tools free, to support kids who want to get into it, as I myself started coding on an Apple 2+ long before I could have afforded dev tools. But they don't. It costs them more to host the video with access controls rather than simply make it available, but they feel that barrier is necessary. Why?