Apple iOS license term changes lift interpreted code and dynamic linking ban?
(The overlooked implications)

In a PR statement release by Apple today, the iOS license terms to 3.3.1, 3.3.2 and 3.3.9 have been changed. Among these clauses used to be the clause that banned interpreted languages. That appears to be lifted and there is already buzz about Flash as a possibility on iOS.

As a developer, this clause is important to me because I like to use Lua which is usually used as an interpreted language.

But I'm posting this because I think the clause may open the door to other important things which people so far have not talked about or overlooked. (Flash is sucking up all the oxygen in the room.) 

First and most importantly, I believe the dynamic linking ban may also be lifted. This has profound implications because suddenly all libraries released under the LGPL license are now accessible to commercial/closed-source projects. This is of particular interest to me because I have used and contributed to many LGPL projects and this suddenly makes my non-free development life much easier.

I can't remember exactly where the dynamic linking clauses fell, but I think it was 3.3.2.

This is the new clause:

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.
This is the previous 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. Unless otherwise approved by Apple in writing, 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). Notwithstanding the foregoing, with Apple’s prior written consent, an Application may use embedded interpreted code in a limited way if such use is solely for providing minor features or functionality that are consistent with the intended and advertised purpose of the Application.
So I think this may open the door to both dynamically linked libraries and also plug-ins that are installed with the app. If plug-ins are allowed, this might even allow for GPL based code to be used in a closed-source app depending on how you interpret the GPL in this area.

But also of interest is the removal of "launch other executable code" might suggest that we can now launch helper executables (via NSTask) to help write our main app. This would also open the door to GPL code for closed-source apps. 

Helper executables might also raise the question about background tasks, though I think those might be covered elsewhere in the license and I presume still forbidden.

So I would like to hear from others about their interpretation of these new clauses.

Update: 2010/09/24

Filed bug reports:
Bug ID# 8473551 Add 3rd party dynamic library/framework support to iOS
Bug ID# 8473558 Bring NSTask/fork APIs to iOS
Bug ID# 8473578 Add (runtime) loadable library/bundle/module support to iOS

I mirrored them on Open Radar.



Update: 2010/10/23

A little birdie told me not to hold my breath for this on iOS. The people in charge don't understand open source software.



Copyright © PlayControl Software, LLC / Eric Wing