Tech —

Apple changes to App Store review policy worry developers

With the iPhone 3. way.

Apple sent shock waves through the iPhone developer community Thursday when it announced that it would start exclusively reviewing applications using the iPhone 3.0 firmware. This update, which has not been released to the public, was announced during a press event back in March. It is due to debut sometime this summer, although Apple has not provided a specific date. The 3.0 iPhone OS offers many new, if not especially cutting-edge features, including MMS support and copy/paste for text. Rumors suggest that Apple may also include on-board video recording and voice recognition support

Developers started receiving e-mails on the matter Thursday afternoon. The letters instructed them that Apple had changed its review policy. All new applications must now be compatible with the 3.0 OS as well as the current 2.2.1 OS that is in widest circulation. Apple also disclosed that any application currently in App Store that did not run properly under 3.0 would be removed from the store.

Breaking the API

Many developers have expressed concern over this move. Although Apple stated in the e-mail that "[e]xisting apps in the App Store should already run on iPhone OS 3.0 without modification," some developers have told Ars that they've found otherwise. Apple has always stood behind its public APIs, guaranteeing that bug-free programs that ran under earlier firmware would continue to run in later releases. Developers worry, though, that solid 2.x applications may not run properly under 3.0, causing them to lose their place in App Store.

iPhone developer Josh Snyder, who works for Mobile advertising firm AdMob, relates that the jump from 2.x to 3.0 changes parts of the ABI, or application binary interface. That is the low-level interface between a program and the underlying OS or, in this case, system-provided libraries. As a result, "if you have a static library built using the 2.x SDK," he told Ars, "and then use it in a project building against the 3.0 SDK, you're most likely in for some unpleasant surprises." The problem comes into play for anyone using third-party static libraries such as the popular AdMob package, which provides an AdSense-like revenue source for many free programs.

Developers may depend on static libraries for which they don't have source code. This prevents them from rebuilding their applications using the 3.0 SDK. According to Snyder, this "effectively denies them the ability to take advantage of the new 3.0 APIs, and possibly permanently limits the lifetime of their app." Fortunately, he points out, most static libraries in use are either distributed with source or are maintained by companies like AdMob who very much want to keep them up to date.

AdMob is already working on making 3.0-friendly versions of its library available to developers as soon as the NDA is lifted. Developers who currently use AdMob within their 2.x software may need to remove that support during the umbrella period of the NDA should they have to deliver updates or bug fixes to App Store. They can't be sure whether the static libraries will interfere with Apple's new 3.0 review process, and both they and AdMob will likely take a revenue hit.Update: AdMob has reassured developers that this will not be an issue.

No 3.0-only apps

Developers who invested heavily in 2.x development before 3.0 was announced must now retrofit their existing code rather than put efforts into a 3.0-only release.

With Apple refusing to offer a release date for iPhone 3.0, developers have been placed in an awkward situation. They must develop applications in the short run that operate on 3.0 but use no 3.0-only features. Developer Steven Troughton-Smith, author of the popular Lights-Off application, explained the situation. "You cannot submit a 3.0-only app to the store yet. It has to run on 2.x, even with these new rules."

This introduces a brand new puzzle into the iPhone development equation. Business plans that were predicated on getting applications ready for the 3.0 launch, whenever that should happen, must now start building 3.0 compatibility into their 2.x products. If a company wants to release a bug fix or offer any updated features over the next few months, they'll need to task their engineers with a whole new development effort. There's no way to keep programming for 2.x until 3.0 debuts.

Troughton-Smith has been hard at work for the past month developing Chalk, a new Twitter client. Anticipating the 3.0 release, he has been developing a 2.x firmware application that was designed from the start for 3.0 and will selectively enable 3.0 features when the firmware becomes available. Troughton-Smith was both lucky and smart. He began development after the 3.0 Beta was released and took that future path into account.

Developers who invested heavily in 2.x development before 3.0 was announced must now retrofit their existing code rather than put efforts into a 3.0-only release. This is an outgrowth that savvy developers took into account so as not to lose their 2.x client base when 3.0 debuts, but it is far from a universal approach.

3.0-only software built around new firmware features faces a different challenge. With no release date yet set by Apple, developers need to decide whether to spend time building backwards to 2.x platforms, letting them get established in the market, or whether to keep concentrating on 3.0-only development.

Contract and equipment issues

Developer Scott Lawrence has met with unexpected hurdles from the new Apple policy. Contracts signed with a client specify delivery of a 2.0 SDK-compatible source and binary package. Incompatibilities between the operating systems will add time to his development, adding costs to deliver a product that they can actually use. Lawrence is grateful that his clients are understanding and working with him to resolve this new complication. Developers will likely need to add hourly-based change allowances to any fixed-price contracts due to the demands of instant 3.0 compatibility requirements.

Equipment demands may also be an issue for many developers. Programming consultant Stefan Arentz told Ars in an e-mail that he anticipates some large purchases. "We need to start buying extra iPhones to be able to test on both 2.x and 3.x. [D]owngrading or rapid OS switching is not officially possible...[or] very practical."

Arentz points out that there's still no way for developers to buy phones at a discount rate. This forces developers to purchase extra phone plans in countries like his native Canada, where outright phone purchases are not yet available. Even in the United States, contract-free phones are sold at a huge premium. AT&T and Apple assume these phones are unlocked and re-sold rather than used for development.

Scott Lawrence has also felt the pinch. "As a small developer, there's a nontrivial amount of effort to drop my iPod touch back and forth between 2.0 and 3.0 for testing," he told Ars. "Yes, it can be done, and yes, as a professional developer, I should have devices for testing with all versions of the OS. But I can't afford to do that, especially with the prospect of new hardware coming out in a couple of months, which might be necessary to buy as well." Lawrence wishes Apple had offered a way to load more than one operating system onto a single device, offering a multiboot solution for testing software.

Weeding out the old

Will Apple use 3.0 compliance to weed junk from App Store? That's one meme currently spreading through the developer community. Some developers worry that Apple might go after developers for refunds should they not update their applications for 3.0. One developer, who prefers to remain anonymous, is concerned that "Apple might seek refunds for one of my apps, which won't work under 3.0 and can't be fixed."

Apple's policy is that once purchased, an application is basically owned in perpetuity. Should that app be pulled from the store, customers may begin to request refunds which are funded 100 percent by developers. Normally, the App Store has enforced a strict no-return policy. Recently-purchased applications that fail to make the jump from 2.x to 3.0 may provide a wedge that breaks down the integrity of that policy.

Apple has yet to discuss the details of how its new policy will be implemented. Ars has contacted Apple for a statement but has not heard back as of publication time.

Channel Ars Technica