Apple lets in Java and Flash; should Android be worried?

Apple just relaxed all restrictions on the development tools used to create iOS apps. Get all the juicy details here including a complete before and after comparison of the developer agreement.
Written by Ed Burnette, Contributor

Temperatures dropped about 30 degrees in Hades this morning when Apple announced they were relaxing all restrictions on the development tools used to create iOS apps. They will also be allowing 3rd party advertisers such as AdMob, but not analytics software such as Flurry.

The changes bring iPhone, iPad, and iPod Touch development a bit closer to the laissez-faire policies of Google's Android Market. Though the latter still does not require any kind of review or approval process before developers can upload new programs, Google can and does sometimes remove apps after the fact if its policies are violated.

The new policy removes another self-imposed roadblock that Apple had built in the way of developers hoping to support the popular iOS platform. In the final analysis, though, it's unlikely to have much effect on the competition between Android and iOS. Why? Because developers, while vocal and opinionated, are very pragmatic. They go where the audience is. The main thing that will determine which platform gets the most attention from developers is which platform gets the most attention from the consumers that buy the phones and tablets that host it. And consumers don't care whether or not apps are written in Objective-C, Java, or Moo. They care about price, selection, and network quality.

You and I, though, we care about the technical bits and the nitty gritty details, right? So without further ado, let's dive right in.

Next: Before and after changes >

Four sections (not three as stated in the press release) of the iOS Developer Program License Agreement (available here, PDF) were changed compared to the previous version released on April 8th:

Section 3.3.1 old version:

3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Section 3.3.1 new version:

3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

All the stuff about which languages you can and can't use is gone. Huzzah!

Section 3.3.2 old version:

3.3.2 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. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple's Documented APIs and built-in interpreter(s).

Section 3.3.2 new version:

3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple's built-in WebKit framework.

Even interpreters and script languages are allowed, as long as everything is pre-packaged. This section and the one above it lets developers use Flash, Java, or any other package as long as it's all self-contained. It seems to disallow non-WebKit browsers (like Fennec) but I doubt Apple will enforce that.

What it does not address is whether or not Flash will be allowed inside web pages. I think we all know the answer to that is still no. But at least stand-alone games and apps written in Flash, Unity, or other systems will be welcome again.

Next: Policy changes on data collection >

Section 3.3.9 old version (first half):

3.3.9 The following requirements apply to You and Your Application's use, collection, processing, maintenance, uploading, syncing, storage, transmission, sharing and disclosure of User Data:

- All use of User Data collected or obtained through an Application must be limited to the same purpose as necessary to provide services or functionality for such Application. For example, the use of User Data collected on and used in a social networking Application could be used for the same purpose on the website version of that Application; however, the use of location-based User Data for enabling targeted advertising in an Application is prohibited unless targeted advertising is the purpose of such Application (e.g., a geo-location coupon application).

- You may only provide or disclose User Data to third parties as necessary for providing services or functionality for the Application that collected the User Data, and then only if You receive express user consent. For example, if Your Application would like to post a message from a user to a third party social networking site, then You may only share the message if the user has explicitly indicated an intention to share it by clicking or selecting a button or checking a box that clearly explains how the message will be shared.

- Notwithstanding anything else in this Agreement, Device Data may not be provided or disclosed to a third party without Apple's prior written consent. Accordingly, the use of third party software in Your Application to collect and send Device Data to a third party for processing or analysis is expressly prohibited.

Section 3.3.9 new version:

3.3.9 You and Your Applications may not collect user or device data without prior user consent, and then only to provide a service or function that is directly relevant to the use of the Application, or to serve advertising. You may not use analytics software in Your Application to collect and send device data to a third party.

Apple is apparently still miffed about Flurry discovering unannounced models in use on the Apple campus. So Flurry Analytics is still out. However, it's ok to collect info in order to better target advertisements, so Flurry AppCircle still has a chance, as do competing ad platforms such as Google AdMob.

Next: Privacy clarifications >

Section 3.3.9 old version (second half):

- You must provide information to users regarding Your use and/or Transmission of User Data and explain how Your Application will use User Data, e.g., by providing information in the App Store marketing text that accompanies Your Application on the App Store, by adding an About box within Your Application, or by adding a link to Your privacy policy on Your website.

- You and the Application must take appropriate steps to protect any User Data from unauthorized disclosure or access. If a user ceases to consent to Your use and/or Transmission of User Data, You must promptly cease all such use and/or Transmission and destroy any such information from Your records (except to the limited extent necessary for Your Application back-ups and record-keeping or as otherwise prohibited by law).

Section 3.3.10 new version (new section):

3.3.10 You must provide clear and complete information to users regarding Your collection, use and disclosure of user or device data. Furthermore, You must take appropriate steps to protect such data from unauthorized use, disclosure or access by third parties. If a user ceases to consent or affirmatively revokes consent for Your collection, use or disclosure of his or her user or device data, You must promptly cease all such use.

This removes some of the technical restrictions saying how developers are supposed to implement their privacy policy, but doesn't remove the need for such a policies.

The sections after 3.3.10 were renumbered but were otherwise not changed.

Editorial standards