Apple’s changes to the iOS Developer Program License Agreement resolve some issues but still contain confusing elements for those who might want to develop sophisticated apps such as those for mathematical computation.
As I first discovered this morning in a blog post by Hank Williams, Apple has changed their iOS Developer Program License Agreement to be less restrictive on the tools used to create apps for iOS for the iPos Touch, iPhone, and iPad.
Apple’s press release states:
We are continually trying to make the App Store even better. We have listened to our developers and taken much of their feedback to heart. Based on their input, today we are making some important changes to our iOS Developer Program license in sections 3.3.1, 3.3.2 and 3.3.9 to relax some restrictions we put in place earlier this year.
In particular, 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. This should give developers the flexibility they want, while preserving the security we need.
Those relevant sections in the license agreement are:
3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
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.
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.
In April I looked at the previous restrictions in the license and concluded that it would be very difficult to to implement a full featured mathematics application on the iPad.
Nota Bene: I am not an attorney and the following does not represent a legal opinion and certainly not an official IBM point of view.
The changes to sections 3.3.1 and 3.3.s improve things somewhat today:
- Evidently you can now have an interpreter on the device. This means that you could run Python or a Java virtual machine on an iPad.
- From 3.3.2, prepackaged scripts are allowed, so interpreted Python code is allowed if that code comes with the app.
However,
- You cannot download code to be interpreted.
- I am not sure if you are allowed to type in code on the iPad and then have it interpreted. I suspect not, because that code is not prepackaged with the app, even though it is not downloaded.
From the perspective of building a math app with Python or another interpreted language, I interpret this as strictly meaning that the app and libraries are fine now, but users cannot write new functions if the math app provides an interpreted language such as Mathematica and Maple do.
This is problematic. If, say, the library does not provide a factorial function, am I not allowed to write one?
I suspect that one of the things that Apple wants to avoid are system calls into the iOS operating system by random downloaded scripts. I hope it is not just a question of performance. Some computations take a very long time.
I really can’t see how this type of interpreted script for math computations should cause any problem for the iPad device, for Apple, or the users. This form of code interpretation is how things get done in these kinds of apps.
Indeed, if I have a word processing document it contains markup to indicate paragraphs, fonts, colors, and so forth. A work processing app interprets that information, which could be said to be a descriptive script. Or is ok to interpret such things? Do I need permission from Apple to do this?
I don’t think this is the last we will hear from Apple in this area. Their statement is now shorter, but it is not complete enough regarding the kinds of code that might be interpreted. I think another round is necessary to clarify matters.
On the other hand, perhaps all this is below Apple’s radar or level of caring. While that might be true, it might be better to ask permission first rather than asking forgiveness later when you submit your app for publication.


Is this an indication that Apple will only accept apps conforming to these guidelines for sale through the Apple-branded ‘App Store’ ?
It’s fair enough (in my opinion). For example, IBM publishes an application programming interface for IBM CICS; provided customers stick to the documented API, they can be assured that changes that IBM might make to the internals of IBM CICS in the forseeable future will not cause them to have to rewrite their applications. Of course there is an ‘internal’ interface to IBM CICS; but if you use it then it’s ‘at your own risk’ as to whether your applications will run when the next release of CICS comes out.
Are there any 3rd-party ‘application stores’ selling applications for Apple iPhone (which would of course have different terms-and-conditions from Apple’s) ? A good measure of success of the Apple iPhone brand would be the extent to which businesses independent of Apple are willing to try and make their fortune there.
It’s like e-mail. IBM Lotus Notes is a good email system. Microsoft Office is … well … if I say a ‘competitive email system’ then I expect that nobody will complain, but my salary might depend on how successful the IBM salesman is at selling IBM Lotus Notes. But customers demand that they shall be able to send email from a Lotus Notes system to a Microsoft Office system, and also from a Microsoft Office system to a Lotus Notes system. And I think that customers also demand that neither IBM nor Microsoft shall tell them what they may, or may not, say in their emails.
Is that where we get to ‘standards’ ? Any email system which conforms to IETF SMTP will interoperate with any other one which conforms ?