Why free software and Apple's iPhone don't mix
If it looks like a duck, swims like a duck, and quacks like a duck
The iPhone is not a "phone" any more than my laptop computer is a phone. The iPhone can make phone calls, but so can my laptop. I could call your phone using my voice-over-IP system, and you wouldn't know the difference. I can even put a card in my laptop that enables communication over a cellular network.
The iPhone has a 412MHz processor, 128MB of RAM, wi-fi, bluetooth, and several gigabytes of storage. It has an operating system, and runs applications written in the same programming language that one can use to write programs for any OS X desktop system. The current list of applications available for the iPhone includes wiki software, an office suite, financial management programs, and of course an e-mail client and web browser.
Just because it fits in your pocket does not mean that it isn't a computer. As the specifications of the hardware and the diversity of available proprietary applications indicate, it's a general-purpose device. This is a simple case of applying the "duck test" — If it looks like a duck, swims like a duck, and quacks like a duck, it's probably a duck.
Any resemblance to an "appliance" or "just a phone" is the result of artificial restrictions imposed by Apple via software. It is backwards to allow the severity of these restrictions, which limit what users can do with the device, to be used as justification for whitewashing ethical concerns that are intrinsic to general-purpose computers. These restrictions give Apple unprecedented and unjust control over iPhone users.
More than one bad apple in the bunch
For many years, we have been suffering from Microsoft's PC monopoly; a platform that has allowed Microsoft to inflict untold harm on computer users and the computing industry. The free software community has been working for many years to give people an opportunity to escape to GNU/Linux from Windows, but the iPhone would allow no such escape route. The Free Software Foundation will be treating this new proprietary platform as another threat to user and developer freedom, in the same way that we have worked to counter the threats posed by every other proprietary operating system, from Microsoft Windows in all its forms, to Apple's OS X and other proprietary Unix variants.
Of course, other "smartphones" are also general-purpose computers, and they also run proprietary operating systems. The FSF is directing attention to the iPhone at this moment in time for two main reasons. First, the recent release of iPhone 3G means that many people are contemplating a purchase, and won't get information about its restrictions from Apple's marketing machine. Second, there has been a great deal of confusion in both the free software and open source communities about whether it is possible to develop and distribute free software for the iPhone.
Free as in freedom, not beer
There are many "free as in beer" applications available for the iPhone portable computer. When we talk about whether "free software" can be written for it, we are not talking about this "gratis" kind of free. We mean free as in freedom, like free speech. Even when it doesn't cost money, software that is licensed under typical restrictive terms takes important freedoms away from users.
Some people lump this in with "open source", but distinguishing free software is important. The term "open source" puts the emphasis on access to a program's human-readable source code, but that is only one prerequisite for users to have freedom. Talking about free software means also talking about the freedoms to change, modify, and share the software. Having source code is useful, but if a user can't do anything with it, she is still squarely under Apple's thumb.
"I'm sorry Dave, I'm afraid I can't do that..."
In order for any program to be installed on the iPhone, the program must be cryptographically signed. When a user attempts to install software on her iPhone, the iPhone's Digital Restrictions Management (DRM) system checks to see if Apple considers the signature on the software to be valid. If there is no signature or if the signature is invalid, the iPhone will refuse to install the software. If the software has been modified in any way, the signature check will fail. The signature check is also tied to the user's specific device, which means that she is not permitted to transfer or copy downloaded programs directly between iPhones, and any other copying is permitted or not permitted at Apple's whim. This system of rejecting software that doesn't pass a signature check — even when modifications to the software are legally permitted — was made famous by TiVo, and so is called "tivoization".
Apple forces all programs distributed through the iTunes App Store to be signed in this way. It doesn't matter if the program doesn't cost any money or if its author actually wants its users to be able to copy and share it. Even worse, Apple says that the iTunes App Store is the only legitimate way for regular users to obtain and install iPhone software (there has been some confusion about this with regard to Apple's developer and ad hoc certificate systems which will be addressed by the next article in this series).
They claim that tivoization is necessary for "security". These specific claims will also be addressed in depth later in this series, but in the end their DRM system is simply a way of kicking away the ladder now that they have achieved a position of power. It's well-known that the kernel and many applications that ship with Apple's operating system are based on free software. They are happy to avail themselves of the freedom that free software provides when it suits them, but they don't want you to do the same. In fact, they argue that for you to do the same would be a threat.
Getting at the core of the issue
Authors who write free software intend for other users and developers to be able to make modifications to their work and to be able to share their work with others. Contrary to the dominant myth, there are many creators out there who actually want this. Like mathematicians building on the publicly available proofs and theorems of their predecessors, many of these programmers see freedom, openness and sharing as critical to the whole enterprise of software. The existence of the GNU/Linux operating system and such widely used programs as Firefox and OpenOffice.org proves both the reality and the merits of their approach — these are programs whose authors want you to make and share as many copies as you like, either modified or unmodified.
The GNU General Public License (GPL) is a legal document that many such authors use to describe the terms under which they share their work with others. Whereas most software licenses — the texts you usually have to agree to in order to install a new piece of software — spell out a laundry list of restrictions, the GPL spells out permissions, under the basic "copyleft" umbrella principle of share and share alike. Any programmer can include a copy of the GPL along with her program to give a clear indication that she wants all of its users to have these permissions.
Programmers can often distribute software under the terms of the GPL even when that software is designed for use on proprietary operating systems like Microsoft Windows or Apple's OS X. So even if users are stuck with Windows, they can still use individual free software applications, and can obtain them from whatever store or web site they want. This has to date been as true on smartphones as it has been on other computers — Windows Mobile, Palm, Symbian, and Blackberry phones, though still proprietary at their core, have permitted authors to write and distribute free software, and users to install it.
Apple, though, is pushing a tivoized model of software development and distribution — a model enforced by a laundry list of restrictions that puts them in control as gatekeepers, threatening anyone who would challenge this control with jail time under the Digital Millennium Copyright Act (DMCA). The DMCA says that if a person attempts to bypass "technological protection measures" (a horrible misnomer) like Apple's DRM, maybe by installing on a friend's phone an unsigned piece of software that she wrote, she has committed a crime.
Apple's approach runs headlong into an important part of the GPL's copyleft approach — the principle that anytime someone shares a copy of a GPL-covered program with another person, she also needs to provide that person with the installable, human-readable source code for that program. This ensures that everyone who gets a copy of a program also gets the raw material needed for any study and modification. This freedom is not meaningful if the computer on which the software is meant to run arbitrarily rejects any potentially changed version installed by the user simply because it has not been signed or approved by a "higher" authority.
The latest version of the GPL (GPLv3) includes a provision to address the threat posed by this tivoization and put a stop to this method of depriving users of freedom. In Section 6, it says:
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information.
In other words, users must be able to exercise their freedom to install and run modified versions of any GPLv3-covered program distributed on the iPhone. Systems that use cryptographic keys could be fine — but the user needs to have access to any such keys along with the code.
However, in order to write software for the iPhone and have that software distributed, a developer has to agree to the Apple's iPhone Developer Program License Agreement (in addition to several other licenses). Section 5 of this agreement says:
You further represent and warrant to Apple that the licensing terms governing Your Application, or governing any third party code or FOSS included in Your Application, will be consistent with and not conflict with the digital signing or content protection aspects of the Program or any of the terms, conditions or requirements of the Program or this Agreement. In particular, such licensing terms will not purport to require Apple (or its agents) to disclose or make available any of the keys, authorization codes, methods, procedures, data or other information related to the Security Solution, digital signing or digital rights management mechanisms utilized as part of the Program.
These two licenses are incompatible. Apple's license says that to write and distribute software for the iPhone, developers have to agree that any freedom users should have to modify and share their software is secondary to the paramount requirement of observing and protecting Apple's DRM system.
This isn't a case of being picky about some legalese. There is a reason Apple doesn't want users to be able to install modified software on their portable computer, even if the software's creators want to encourage that — they want to control what users do with their computers. For one example among countless potential "antifeatures", they do not want users or developers to be able to write or modify voice-over-IP applications to use the 3G cellular data network, because this use goes against their profit motive and the profit motives of their business partners.
Upsetting the apple cart
Apple's DRM software and the accompanying legal threats are in place to further their own interests by restricting the freedoms of computer users, while GPLv3 exists to protect those freedoms. If you are a software developer, please support free software by sharing your code under the terms of GPLv3. Even if you are not writing code specifically for the iPhone, use GPLv3 to ensure that no one else can subject it to the shackles of Apple's DRM.
In the world of mobile software development, we can and should focus our efforts on developing applications for the FreeRunner and other rapidly advancing smartphones that support and encourage user freedom. Even if we could find some legal loophole that would make free software possible on the iPhone, it would be better to contribute our efforts to platforms for which respecting user freedom and creativity is a founding principle.
If you are not a software developer, you can join us in writing to Tim Cook at Apple (email@example.com) to let him know that we will not purchase or support the iPhone because it is incompatible with free software. CC us at firstname.lastname@example.org, and if you hear back from him, forward his reply to us.
Please help us cut through the haze of confusion and Apple marketing propaganda by sharing this and other articles in the series with your friends, family, collaborators and colleagues.