InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Apple Relaxes iPhone Development Tool and Data Sharing Restrictions

Posted by Ron Bodkin on Sep 09, 2010

Sections
Enterprise Architecture,
Operations & Infrastructure,
Architecture & Design,
Development
Topics
Licensing ,
Architecture ,
Mobile ,
Business ,
iPad ,
Apple ,
iPhone
Apple announced today that they "listened to our developers" and "we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code." They also announced that "for the first time we are publishing the App Store Review Guidelines to help developers understand how we review submitted apps."

Developer Tools

Back in April, Apple restricted iPhone development to only allow use of their developer tools (as Infoq reported at the time). The restriction (from section 3.3.1 of the agreement) has been completely reversed, in particular all of this added language was removed:
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.2 of the agreement was also changed: it had banned applications that "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. This now is softened, reverting to the older rules:
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.
These rules would again allow developing applications using tools such as Adobe Flash. However as Stephen Shankland blogged:
Apple and Adobe didn't immediately respond to requests for comment. But one thing is clear: Adobe didn't come to its decision to scrap its Flash-to-iOS project lightly, and resurrecting it wouldn't be simple.
Given recent trends whereby Google's competing Android mobile OS is rapidly gaining market share on Apple's iOS, this change may be a forward looking move, to ensure that developers continue to develop applications for iPhone as well as Android. Certainly developer interest in cross-platform mobile development is strong as evidenced by the growth in adoption in Appcelerator, which enables development for iPhone, Android, and iPad. Mashable notes:
As of today, more than 65,000 developers have signed up to use Titanium and more than 4,000 Titanium-built applications are in the iPhone App Store or Android Market.

Data Sharing Restrictions Relaxed

In June, Apple blocked applications from sharing data with many companies, blocking applications that "collect, use, or disclose to any third party, user or device data" unless needed for the application or to serve advertising through "an independent advertising service provider whose primary business is serving mobile ads ." In particular it excluded Google (and its AdMob division, by extension): "... (for example, an advertising service provider owned by or affiliated with a developer or distributor of mobile devices, mobile operating systems or development environments other than Apple would not qualify as independent)." 

This change was triggered by Flurry Analytics reporting on unreleased devices as indicated a response by Steve Jobs at the D8 conference, in which he also said they'd allow use of analytics "solely for advertising." The language in the new agreement has been softened, considerably, now focusing only on requiring user consent and banning analytics software from receiving device data:

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.
Notably the restrictions on Google are lifted. Google responded favorably, saying:
Unlike the previous version, these new terms ensure that Apple’s developers have the choice of a variety of advertising solutions (including Google’s and AdMob’s) to earn money and fund their apps. Apple’s new terms will keep in-app advertising on the iPhone open to many different mobile ad competitors and enable advertising solutions that operate across a wide range of platforms.

Review Guidelines Published

Finally, the updated license agreement was accompanied by the release of the Apple App Store Review Guidelines

The Wall Street Journal's Jennifer Valentino-DeVries blogged about this, noting "Apple seems to be saying that it views apps as a core part of its brand, rather than simply things that are delivered over its systems." And noting:

“We have over 250,000 apps in the App Store. We don’t need any more Fart apps. If your app doesn’t do something useful or provide some form of lasting entertainment, it may not be accepted.” “If your App looks like it was cobbled together in a few days, or you’re trying to get your first practice App into the store to impress your friends, please brace yourself for rejection. We have lots of serious developers who don’t want their quality Apps to be surrounded by amateur hour.” These sounds like things that Steve Jobs has said repeatedly. Just this month, he made the same reference — to “amateur hour” — when talking about what consumers don’t want to see on Internet television. ... But the comment also makes clear that Apple believes the app market is growing up. The original fart apps might have made it in, but that’s not what people want anymore.

Rob Pegoraro of the Washington Post noted "Much of these rules are common-sense guidelines" but he identified a number of more controversial rules, such as:

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. 3.1 Apps with metadata that mentions the name of any other mobile platform will be rejected. ... 9.3 Audio streaming content over a cellular network may not use more than 5MB over 5 minutes. ... 15.3 "Enemies" within the context of a game cannot solely target a specific race, culture, a real government or corporation, or any other real entity.

Overall, Apple's changes to their developer programs were well received, although there were still concerns about the restrictions.

Ron Bodkin is the Founder of Think Big Analytics, which builds big data solutions using Hadoop and NoSQL.

It's good to see some sanity by Mike Gale Posted
Hopefully soon a Scratch for iOS by Michael Hunger Posted
language support needed by steve fox Posted
Re: language support needed by James Watson Posted
Re: language support needed by Kevin McFarlane Posted
  1. Back to top

    It's good to see some sanity

    by Mike Gale

    I have no plans to develop for this platform, but when I saw these restrictions I decided that I would never even consider it. In my view anybody who even thinks that this was a reasonable approach has major problems.

    It's refreshing to see this change. There will be permanent suspicion about what might happen in future. Restrictions are still there. Your work still funds the company. But a great move.

    Well done Apple.

  2. Back to top

    Hopefully soon a Scratch for iOS

    by Michael Hunger

    That would be great for teaching kids how to program.

  3. Back to top

    language support needed

    by steve fox

    I would like to port my site, scrabblecheat.com but all I know is C++ and c#. Java I can do as it is like c# but objective c was weird.

    I hope they allow these other languages so I can my site to the iphone.
    Would be very fun.

  4. Back to top

    Re: language support needed

    by James Watson

    Search for "java to iphone cross compiler" and "c# to iphone cross compiler". I don't know how good these tools are but there seem to be some out there.

  5. Back to top

    Re: language support needed

    by Kevin McFarlane

    C++ was allowed previously. Unofficially MonoTouch (C#) was allowed but now officially. It will cost you though.

Educational Content

Eventually Consistent HTTP with Statebox and Riak

Bob Ippolito explains how to solve concurrent update conflicts with Statebox, an open source library for automatic conflict resolution, running on top of Riak.

Java.next

Erik Onnen attempts to demonstrate that Java is still the best programming language for the JVM if simplified idioms are used along with proper tooling.

Evolution in Data Integration From EII to Big Data

Approaches to integrating data are changing with emergence of cloud computing.

Winning Hearts and Minds: How to Embed UX from Scratch in a Large Organization

Michele Ide-Smith presents the lessons learned in the process of introducing UX principles and techniques into a large organization through a series of small steps.

LMAX Disruptor: 100K TPS at Less than 1ms Latency

Dave Farley and Martin Thompson discuss solutions for doing low-latency high throughput transactions based on the Disruptor concurrency pattern.

Thoughts on Test Automation in Agile

Rajneesh Namta shares his thoughts, experiences, and some of the critical lessons learned while implementing software test automation on a recent Agile project.

Actor Interaction Patterns

Dale Schumacher presents several patterns of actor interaction that can be used in collaborative programs written in any language.

Scalaz: Functional Programming in Scala

Rúnar Bjarnason discusses Scalaz, a Scala library of pure data structures, type classes, highly generalized functions, and concurrency abstractions to perform functional programming in Scala.