Critics of the cellphone's third-party software creation kit point to a key clause in the company's SDK agreement that appears to restrict all code except that which relies on Apple's own programming interfaces to run, including those that run inside another third-party program's shell.
"No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apples Published APIs and builtin interpreter(s)," Apple says in the agreement. "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."
If taken at face value, the restrictions would ban seemingly innocuous apps, according to a blog entry made by Mozilla developer Rob Sayre. Besides the Firefox web browser made by his own company, programs such as Opera and Excel would be forbidden from running on the phone as-is due to their uses of scripting language inside the software. Even some games that use an interpretive language in the background, such as Quake, would also be barred from the iPhone.
Web add-ons and scripting languages such as Flash and Ruby may also face censure from the device, the developer claims. The restriction could potentially silence Sun's Java plans: the software not only interprets code but also runs other programs inside its virtual environment. Sun is aware of the potential obstacles, according to PCMag's Sascha Segan, but may find ways to offer an iPhone Java engine, including direct engagement with Apple.
"If there are clauses in the iPhone beta SDK license agreement that potentially limit third party application distribution, then these are items that we want to have a positive discussion with Apple about," says Sun's Java marketing VP, Eric Klein.
More worrisome to other observers is Apple's declaration that third-party software can't run in the background. Without this, many developers will be blocked from writing programs that depend on persistence to work, including not just instant messaging software, VoIP, or other Internet-savvy tools but also software that polls the rest of the system, such as simulated GPS tools. As TechCrunch chief Mike Arrington and others note, leaving these programs to answer a call or browse the web immediately shuts them down, rendering them ineffective.
Some reports from SDK users, including one entry at Gizmodo, note that Apple may not enforce the background application rule in code: halting the application suspend function may work. However, Apple has not yet said whether it will examine the code of programs submitted for download on the App Store, which would quickly catch these violations of the agreement.
Apple itself has so far shed little light on the situation. A company representative declined to answer a Wired editor's questions on the matter.