Caution: because I am talking about code
libraries, this discussion will be technical - a combination of the worst of geek and lawyer-speak. Sorry.
I had a discussion with a colleague yesterday about Apple’s choice of licenses used for open-sourcing of its Grand Central Dispatch (GCD) concurrency framework, which is a piece of software Apple credits with driving great Mac OS X performance improvements. GCD comprises both a library component, called “libdispatch”, licensed under Apache 2.0, and a C language extension, called “blocks”, a runtime distributed under the LLVM license, a BSD derivative (someone has already begun porting blocks to iPhone and older versions of OS X, distributed under the MIT license).
Where I had speculated that Apple had chosen the license mix that it had to facilitate incorporation into GCC (and avoid the problems Apple experienced with developing Objective C as a series of libraries and a front-end that was a derivative of gpl-licensed GCC code), it looks like in reality Apple is trying to wean itself from GCC entirely, by its support for, and use of LLVM (a compiler runtime that is an alternative to GCC’s runtime) and a compiler front end called clang. The LLVM runtime still supports the goal of portability because of its availability on linux (some distributions use a GCC-llvm compilation method for the kernel). David Chisnall, in a thoughtful article, claims that Apple's transition to LLVM (away from GCC) presents a perfect example of the principle that "you don't necessarily get good results from forcing people to do things."
Apple’s support for LLVM may not be entirely due to the licensing issue, because LLVM is considered to have significant performance improvements, and a reason for Snow Leopard’s improved performance. The performance improvement, however, can be due to Apple’s development support for LLVM, which may be due to the licensing issue. So we may have a chicken and egg issue. I do think that Apple started supporting LLVM before it got really good (and most likely in order to be free from GCC), and then the performance improvements followed (with help from a large open-source community that arose to support the project). John Siracusa at ars technica says: “By committing to a Clang/LLVM-powered future, Apple has finally taken complete control of its development platform.”
So what do the respective licenses and distribution methods get Apple?
GCD and libdispatch – Apache 2.0. As we have discussed, one distinguishing feature of Apache 2.0 is that it provides for automatic license termination if the licensee instigates patent litigation regarding the work (in clause 3). This provides Apple with control over its own patents regarding the work, and is similar to how Apple released Mini DisplayPort, a standard that has been incorporated into VESA's DisplayPort standard. Apache 2.0 also allows for “viral” licensing, although it is not “copyleft” per se; in clause 4, redistribution allows either source and/or code redistribution and derivatives as long as the distribution is also licensed under Apache 2.0. For that reason, the FSF considers Apache 2.0 licensed code to be “one-way” compatible with GPLv3, meaning that a GPLv3 project can include Apache 2.0 code, but not the other way around.
The Apache 2.0 license is not compatible with GPL2, because of the automatic patent license termination, but that does not automatically mean that the linux kernel project cannot use the new libdispatch library. Ryan Paul at ars technica believes that the license incompatibility does prevent adoption by linux. Remember that the linux kernel today will allow linkage to fully proprietary driver libraries, let alone alternatively licensed open-sourced libraries. See http://blogs.techrepublic.com.com/opensource/?p=276&tag=rbxccnbtr1 for a discussion of the debate about allowing linkage to proprietary drivers. So Apple can get adoption or use of libdispatch by linux, if that is its goal.
Apple is promoting use of GCD as a standard by also releasing OpenCL, a standard it has been developing with nVidia, incorporating a set of libraries to take OpenGL a step further and provide parallel processing on graphics cards and core processors. OpenCL has been set up under the “stewardship” of the Khronos group that controls OpenGL, but John Siracusa says to "make no mistake, OpenCL is Apple's baby." OpenCL builds on GCD, (and LLVM, but does not incorporate blocks) and provides a higher level programming API, just as OpenGL did, as well as language extensions. Just as OpenGL has been implemented on linux, there is no reason to believe that OpenCL will not also be implemented on linux, by nVidia, if no one else.
Blocks – released under LLVM license (a BSD derivative) and as part of LLVM project. It may have just made sense to release blocks as part of the existing LLVM project and under the license already adopted for that project. This license is compatible with the GPL Because it is a BSD derivative, it can be used in GPL projects; the llvm-gcc compiler front end is released under GPLv2, (no update since GPLv3), but there is a GCC link time optimizer released under GPLv3. .
Because blocks are a c language extension, and not just a library feature, there is extra benefit to Apple by encouraging adoption (language extensions that developers do not adopt are useless). Of course, by inclusion in Apple development environments, there will be some level of adoption, but there are network effects in having more developers use this construct. Ars technica explains that “It's Apple intention to submit blocks as an official extension to one or more of the C-based languages, though it's not yet clear which standards bodies are receptive to the proposal,” (further noting that blocks are supported by all of Apple’s compilers (including Apple’s GCC distribution).
Apple has many very smart IP lawyers guiding its choice in open source licenses; the fact that neither Grand Central Dispatch nor Blocks were released under the GPL is not an accident. Ultimately, I don't agree that Apple's choice of a non-GPL license will prevent its adoption by anyone other than GPL evangelists, and I believe that Apple would not have open-sourced this work if its only alternative was to use the GPL. I think Apple's example shows how careful companies need to be in open sourcing code, especially if such code is part of a larger whole.
There seems to be a growing sense among the Free Software community that Web2.0 companies are not living up to their end of the bargain.
I'm sure you are already aware, but today is a big day! REALLY BIG! 10 years in the making, the Free Software Foundation will