Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

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

There are still interesting problems in not allowing to download or update any code. With the rise of jailbreaking iPhones and them running unsigned and modified applications (cracked and/or otherwise), there is no way for an anticheat system to update itself. All anticheat systems like Valve's VAC, PunkBuster and Blizzard's Warden rely on downloading updated code from the internet.

What this means for online iPhone games is that when someone releases a hack for the jailbroken iPhones, their users can completely ruin the games and legit players cannot do anything. And since Apple is a control freak, they check every update to your application slowly and ineffectely. All while the hacking is rampant and ruins everyones game.

There certainly are need for updating code and Apple needs to remove that clause too. We don't want walled gardens controlled by mega corporations, we want systems we can use the way we want.

Look at the differences between the Orange Box version of Team Fortress 2 and the PC version. Yeah, its a pretty big deal. Plus, Xbox live has a team to crack down on modded consoles that could have cheats.

But yeah, its a pretty big deal not being able to have lots of content such as Team Fortress 2.

Most of the time these worries are about anti virus instead. There the updates also contain exe updates.

But the same update mechanism used for an normal application can apply to a any application. Let it bet antivirus, anti-cheat or a simple game. If you want to update it you do it via a the app-store, and don't come up with a own update system. If that is not good enough, that should be updated, not implement it on yourself.

The fact that windows does not have a central update system and every app has to d

There are still interesting problems in not allowing to download or update any code. With the rise of jailbreaking iPhones and them running unsigned and modified applications (cracked and/or otherwise), there is no way for an anticheat system to update itself. All anticheat systems like Valve's VAC, PunkBuster and Blizzard's Warden rely on downloading updated code from the internet.

What this means for online iPhone games is that when someone releases a hack for the jailbroken iPhones, their users can completely ruin the games and legit players cannot do anything. And since Apple is a control freak, they check every update to your application slowly and ineffectely. All while the hacking is rampant and ruins everyones game.

There certainly are need for updating code and Apple needs to remove that clause too. We don't want walled gardens controlled by mega corporations, we want systems we can use the way we want.

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.

What this means for online iPhone games is that when someone releases a hack for the jailbroken iPhones, their users can completely ruin the games and legit players cannot do anything.

it also means that a developer can't "bait and switch" by getting an app approved and then adding code that allows the app to do things that would have prevented it from being approved in the first place. So there isn't a "Certainly a need" as the updates to code could go through the app updates system, and the developer can plug those holes in a normal update. Furthermore, the problem you are referring to should reasonably be secured at the server end, anyway, since, as you pointed out, the game can never

I find anti-cheating software an unnecessary evil.It is very basic software engineering: "never trust input from a user". As the client software of game is in the hands of the user this extends to the client itself. In fact this also extends to the anti-cheating software itself.

Like DRM, anti-cheating software is a mathematical impossibility.

It is far easier to just design your game so that you do not trust the client code, run the simulation/game on the server and let the client be a dumb terminal. Dumb be

I find anti-cheating software an unnecessary evil.
It is very basic software engineering: "never trust input from a user". As the client software of game is in the hands of the user this extends to the client itself. In fact this also extends to the anti-cheating software itself.
Like DRM, anti-cheating software is a mathematical impossibility.

Much as I hate to step on a good pompous rant, you're oversimplifying and missing quite a bit. For example, there's rendering information the server has to send the client. If the client is altered to make some of the rendering transparent, the ability to look through walls is gained, which is cheating. No "trusting user input" is needed here. It would not be practical to render on the server and send the frames to the client, yet the client needs info that the user can't necessarily see to render corre

You're comparing apples and oranges. Microsoft Windows is by far the most common operating system on desktop computers (I'm including laptops and such in "desktops" here) while iOS is just one of several platforms for cellphones and other mobile devices. There's also the issue that Windows is a general purpose operating system for general purpose computing devices while iOS and the hardware it runs on is intended to be a fair bit more specialized. Now, if Apple held 90% of the desktop OS market and banned 3

The App Store is perhaps the most important milestone in the history of mobile software. Working together with our developers, we will continue to surprise and delight our users with innovative mobile apps.

They didn't admit that their critics were right, the said that they "listened to their developers". As one of those developers, I assure you that what they really listened to was negative press and Android's rising numbers.

Just because Apple doesn't carry out the wishes of every individual developer doesn't mean they don't listen. The ENTIRE POINT of the app store is to allow developers to create and distribute great software.

Do you seriously think apple doesn't give a shit about developers? If that was true, there would be no app store at all.

No significantly complex system comes out right the first time.Apple has a goal, I believe it's to give as much freedom to 3rd party developers without losing control of the platform.

That's an interesting way of looking at it, considering that it runs completely counter to the iOS 4 guidelines which forbid applications written in any programming language other than Objective C, C, or C++.

No, the truth is that Apple implicitly targeted Adobe's Flash Packager for iPhone (due out the week after the new iOS4 te

That's an interesting way of looking at it, considering that it runs completely counter to the iOS 4 guidelines which forbid applications written in any programming language other than Objective C, C, or C++.

It's refreshing to see Apple wrong so many times in a row. Watching them backpedal is amusing.

When was Apple wrong? Apple was never wrong. Apple knew this was right all along. There is no evidence of the old license. The old license never existed. It is dead now. Apple never endorsed it. It was a lie made by Apple's enemies to discredit Apple's name. Apple is good. Apple would never hurt you. Apple is your friend. Apple is magic. Apple has never backpedaled. Apple is at war with Google. Apple has never been at war with Microsoft. Why do you hate Apple? Apple only wants to help you. You are clearly disturbed. Apple wants to assure you this is not your fault. Please report to your nearest iThoughtCorrection facility. Apple is your friend. Trust in Apple. Apple is your friend.

I think the FTC is to thank for this one. They are being investigated for anti-competitive actions in relation to the app store. Their problem is that anti-competitive behavior has been one of the app store's most important function.

For them, it is much better to backpedal on their own and hope to end the investigations rather then going through the humiliation that MS and Gates went through.

There really are no "hoops" at all in application development, and honestly how can you claim there are with 250k approved apps?

Yeah, except for anyone who wanted to code one in LISP or Ruby. Or oh, I don't know, whatever keeps a huge number of apps from being approved or rejected.

It's a great platform to develop for as long as you don't step on a land-mine and for some reason be unable to sell your hard work. If you like running a business with a huge uncertainty like "Will I even be able to show this to customers, let alone sell it" hangin

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.

Developer pressure? I think it's more because the Android phone market share will soon go through the roof and more developer will just abandon the iPhone because of the stupid approval program, the restrictions and the costs to develop for it. If Apple is not allowing cross-platform development it will soon find itself in a niche.

That's why I prefer to work with iOS development, because they do listen to developers and take into account feedback or concerns, and really change fundamental policy instead of continuing said policy just because it exists as so many other companies would do

Way to drink the kool-aid.

I prefer working on platforms that have no enforcement policies on my coding style decisions at all and let me write code the way I want, when I want, and run the code I feel like running too.

Is this for real? Wouldn't it be better to prefer to work with another platform that does not have to receive negative feedback in the first place? All companies and people make mistakes, but I don't recall any development platform that has made missteps this bad and drawn this much negative press in recent memory.

Also, you say, "That's why I prefer to work with iOS development, because they do listen to developers and take into account feedback or concerns, and really change fundamental policy instead of c

Also, you say, "That's why I prefer to work with iOS development, because they do listen to developers and take into account feedback or concerns, and really change fundamental policy instead of continuing said policy just because it exists as so many other companies would do..." Has there been any fundamental policy shift before today? If not, what were you saying prior to today on why you prefer to work with iOS development?

They listened to developer demand and introduced an SDK and stopped allowing only HTML5 web apps. They allowed turn by turn navigation products. And neither of those were really influenced by the rising success of Android, at the time. I could probably think of a few more, but you asked for "ANY", of which two satisfies.

What's refreshing to see is a company that actually admits it was wrong, how often does that happen?

I'm trying in vain to find where they admitted they were wrong. All I see is "we listened to our developers," which is nothing more than a nice way of saying "we think this is beginning to hurt our bottom line" and is something MOST companies do if they get to that point.

Didn't Steve Jobs make a big hullabaloo about how "intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform"[1] when asked about the rule? So is that magically no longer true, or do they just no longer care? Or is it, perhaps, that their transparently self-serving reasoning for instituting the rule in the first place has started to cost them more than it gains?

The about-face is good, don't get me wrong. But trying to frame it as some sort of benevolence instead of ANOTHER self-serving action to mitigate problems caused by the first is misguided at best.

Apple wanted to control everything, and thought they had the clout to get it done. Apparently enough developers made them nervous about it that they changed their mind. Good, but hardly some sign of a great corporate system.

Would you rather they not, "Listen to their developers"? Every free-market libertarian on this site says that the way companies learn what to do is to, get this, piss off customers so that it affects their bottom line.

Seriously, everybody (myself included) bitched about the restriction clause. Now its lifted. And you fucks still want to bitch?

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 them2.12 Apps that are not very useful or do not provide any lasting entertainment value may be rejected2.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.

Because it doesn't duplicte existing functionality. There is no built in VOIP client, and it uses the Apple contacts. GV linked back to Google contacts...

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

At this point that might be a problem for some applications but there's always a new idea without many apps in the store.

2.12 Apps that are not very useful or do not provide any lasting entertainment value may be rejected

I think you might just be able to work around that by writing an app that is useful or entertaining.

2.13 Apps that are primarily marketing materials or advertisements will be rejected

To me that simply repeats point 2.12 since an application that is primarily marketing is also not useful (though I suppose it could be entertaining, and thus possibly accepted).

I would say the vast majority of apps in the store fall under these points.

Like what? Very few of the applications I have seen fall under these points, except possibly for point 2.11 - but that's the thing, the avoidance of replication is more a point going forward than it has been (though Apple has been starting to reject some applications in crowded categories).

Toktumi's Line2 has a dialer that can originate a VOIP call or pass off the call to the iPhone's own voice system. It also has its own address book. Honestly, I don't really see the difference between Line2 and Google Voice for these purposes.

It uses them alongside their own contact list. A given contact can be in either or both lists. If that were the distinguishing characteristic, it seems like that would be easy enough to handle in a Google Voice app.

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.

"May be rejected" != "Will be rejected" - that little semantic out means Apple can violate their own acceptance rules at a whim - meaning All apps in the store are currently in compliance.

2.12 Apps that are not very useful or do not provide any lasting entertainment value may be rejected

I would say the vast majority of apps in the store fall under these points.

The keyword there is "may". There are categories where you have to choose through 10 different free applications with not a single feature do differentiate between them. That's annoying for users, and completely pointless for everyone else.

If you can't do something better or cheaper than anyone else in the store, then you shouldn't bother in the first place. 2.12 simply enforces that.

If they didn't enforce it, no developer would make any money at all in those categories (because the revenue would be spread

More importantly, developers will no longer have to second guess the reasons why apps may or may not be accepted. From the statement:

"In addition, for the first time we are publishing the App Store Review Guidelines to help developers understand how we review submitted apps. We hope it will make us more transparent and help our developers create even more successful apps for the App Store."

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.

However, simplicity/efficiency is often the enemy of fairness. It certainly was in this case.

I mean, I can drastically simplify the American legal system if we toss the laws and move to a system of laws only I know. We'll get rid of all the lawyering and costly trials, and I'll just let the secret police know who they should quietly execute.

It's much easier to keep guidelines internal, and only release very general suggestions.

Of course it's easier to do so, since less people have a say as to what the guidelines should be. However, it's not really possible to claim that it's a transparent process as a result. The lack of transparency makes people think that Apple has something to hide, especially when it has not really been clear to this point why some apps are being rejected. Allowing input from the community on what those guidelines should be would create a public image that peoples' opinions matter, and that Apple is not arbit

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.

The WebKit JavaScript implementation is essentially the one exception to the downloadable code rule. I imagine that you could still be rejected for implementing core functionality in downloadable JavaScript, as that would open up a potential security hole.

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?

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 was all about Unity, which basically does exactly what Adobe's Flash packaging tool did for the most part. The Unity game tools have been used to develop some fairly popular iPhone games, and Apple knew it couldn't continue to authorise Unity based apps whilst denying apps created with Adobe's tools without falling foul of competition laws. Similarly, by kicking Unity off too they'd be throwing away from of the iPhone's most popular games.

So the question now is, does this mean if Adobe tries to release it's tools again that Apple is going to let it, or are they now going to try and find another excuse to deny Adobe access to the platform?

Apple stood to lose far more if it continued to stand by this policy, and if it stood by the policy whilst letting some apps through it also stood to face the DoJ, so it had to decide one way or the other.

So the question now is, does this mean if Adobe tries to release it's tools again that Apple is going to let it, or are they now going to try and find another excuse to deny Adobe access to the platform?

That's probably the reason they've released App Review Guidelines at the same time. Apple can probably deny most Flash apps based on other rules that already exist. e.g."Apps that rapidly drain the device's battery or generate excessive heat will be rejected." and"Apps must comply with all terms and conditions explained in the Apple iPhone Human Interface Guidelines and the Apple iPad Human Interface Guidelines"

Whats really odd is that it took this long to come up with any kind of review policy document!

Well I guess the reason for that is primarily twofold. Firstly, it benefit Apple to grow the App store massively in a short space of time - if they'd rejected all those fart apps and similar early on, there'd likely be nowhere near the 250,000+ apps there are in there now. Secondly, I guess there's also the question of what the guidelines actually are. As has been said elsewhere, they've probably been largely making these up as they went along. Oh sure they would have had some foundation stones to build on,

Well I guess the reason for that is primarily twofold. Firstly, it benefit Apple to grow the App store massively in a short space of time - if they'd rejected all those fart apps and similar early on, there'd likely be nowhere near the 250,000+ apps there are in there now.

Right, but that aspect did not have to be in an initial version of the document.

Secondly, I guess there's also the question of what the guidelines actually are. As has been said elsewhere, they've probably been largely making these up as t

I'm also interested in what other languages this opens up. The new rules explicitly ALLOW interpreters as long as the interpreter and all interpreted code are included in the original app bundle.

This could open the way for:* erlang : A few people have ported erlang to the iPhone before but since Apple disallowed interpreters no serious work was done on this front. I think this could change. Especially with the iPad becoming more of an enterprise system, I could imagine embedded erlang services being avai

But most people wouldn't have blamed Flash - especially if there wasn't an easy example of a non-flash version to point to. They'd have blamed the iPhone. Most people, even most iPhone users, don't read/. or related sites - that's one of the reasons that the iPhone has been a smashing commercial success, you don't need to be a geek to use it (N70, I'm looking at you here). Keeping Flash off the platform was exactly the right business decision to make.

Even if Adobe would release a version that wasn't a battery killing unstable one - which would be a great start - the usability experience isn't close to being there for multitouch devices. And the iPhone is all about user experience.

I agree with you 100% as far as Safari is concerned and I'm glad that I don't need to hack my iPhone just to block flash.

However, as far as apps with a flash runtime are concerned, people will just see them as slow and broken and blame the apps. I don't think people would even use them long enough for it to interfere with the overall perception of battery life.

The problem is that Apple can't trust a third party development environment to take over too much of the app share. In the past stuff like that has wrecked OSes as a vital update breaks the third party APIs that are used in bestseller apps. Apple wants to be able to release iOS 5 and 6 without worrying if they break Flash's internal APIs

I have seen several people make this mistake - this has nothing at all to do with Flash-the-web-content-platform discussion, as in this case we are not seeing Flash hosted by the web browser at all. No, this is about Flash as a generalised development language for the iOS platform, running code natively and replacing ObjC in the development process - it allows current Flash developers to target their skills at more than just the web.

Flash-the-web-content-platform can wither and die while this use of Fla

Also, I've read some rumors [gizmodo.com] about the next iLife '11 having a new program for creating iOS apps in a similar way to the Android's AppInventor [googlelabs.com]. 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...

I doubt it. iLife is a consumer app bundle. The last thing Apple is going to do is encourage non-developers to create half-assed apps and submit them to the app store. They have more than enough real developers developing with Cocoa-Touch.

All this is highly speculative, but I'd expect it to be like Automator on OS X, and the "apps" not being submitted to the store, but used but executed inside an apple made app. Easy way for power users to scratch their own itches, and a nice mousehole in the walled garden... Pure speculation though.

Does this mean that I can use C# to generate a Silverlight app that will run on Windows, Windows Mobile, Linux, Android and iPhone?

Can I write in Java an app that will run on every desktop and mobile?

Well, considering that a good app experience on a desktop (with a mouse and keyboard) is by definition very different than a good app experience on a multi-touch device, probably not, no. You might be able to share some code internals, but you could do that anyway.

only if you distribute it with your own developer-locked-in version of java. (I have fond memories of java version 2.something.{our lead developer's name} for the software written for one version of solaris on specific hardware with specific os patches.)

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.

Apple seem terribly random and unpredictable. It would be senseless for any developer to begin work on a project that has become permitted by this clause, because tomorrow the terms could change again.

I'm an Android developer, releasing my first game in the next 4-6 weeks. Then I need to consider whether or not to produce an iPhone version. The decision will only slightly be based on forecasted sales, market share of competing products, and demand for my product. For the most part I will need to decide if I can afford to invest the time developing for a platform that may, at any point, "ban" my product for some obscure reason. (For example, all of my graphics are produced in 3D Studio and rendered as 2D sprites. Suppose Apple takes a dislike to Autodesk...?)

(For example, all of my graphics are produced in 3D Studio and rendered as 2D sprites. Suppose Apple takes a dislike to Autodesk...?)

It's always wise to do a risk analysis before embarking on a new project. Don't forget to factor in the possibility that you'll spend so much time posting ridiculous scenarios to slashdot that you never get round to doing the work.

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.