My non-lawyerly reading of the GPL says no, or at least, not without some significant buy-in from Apple.
This is the relevant portion of GPLv2 section 3:
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code …
Since all iPhone apps must be distributed through a third-party (Apple’s “App Store”), that would make Apple the “distributor.” Which would mean that Apple — acting as the distributor of GPL-licensed object code — must provide source code or a written offer to provide source code. It’s analogous to a Linux distribution — they distribute binaries of upstream GPL programs, so they need to host the source code as well.
Is this correct, and if so, will Apple be set up to do this?
(My non-lawyerly reading of GPLv3 just makes my head spin, so I won’t even venture an opinion about that.)


If the application is useful and doesn’t violate the App Store’s terms of service -and in Apple’s defence, only the multi-tasking one strikes me as being less than reasonable- then I don’t see why Apple shouldn’t; it’d make a good loss leader.
I doubt, however, that anyone will go to the trouble of getting an SDK for a device which is being marketed at very rich idiots who want to impress other very rich idiots unless they intend to charge top dollar for the fruits of their labour.
Comment by Jake — Friday, March 7, 2008 @ 10:15 pm
I dunno, I find the portion of GPLv3 section 6 regarding providing
source code pretty straightforward as far as legalese is concerned.
What surprised me, however, was the fact that the anti-tivoisation
clause does not seem to apply here because the software is not shipped
with as part of the sale of the IPhone.
Comment by Anonymous — Friday, March 7, 2008 @ 10:57 pm
I’m not so sure about this. If you were to buy a copy of Ubuntu or Mac OS X or a Linksys WRT54G on Amazon.com, would Amazon be responsible for providing the source for the GPL software contained in each? No: Ubuntu, Apple, and Cisco make that source available for download. In the case of AppStore Apple is still essentially a retailer.
Comment by Stor — Friday, March 7, 2008 @ 11:05 pm
@Jake: the question was whether it was possible, not whether it was likely. (Though it *is* somewhere between likely and inevitable. Some of the world’s most kick-ass end-user Mac software is GPL. Adium, Colloquy, etc. It’s gonna come up.) And there are other ways to make money from software than charging the end user a flat fee up front. And not everyone programs to make money anyway.
Comment by Mark — Friday, March 7, 2008 @ 11:17 pm
The developer sends the binary to Apple to distribute (or the source, which they compile), but that doesn’t prevent the original author from putting up the source code on their own site. Presumably in the blurb on the AppStore you can put your own web site (for things like getting support and such for the app), and on the site you can provide the GPLed code (either in pure code form, or as an Xcode project).
Just because Apple distributes the binaries doesn’t /necessarily/ mean they have to provide the code. As long as the code is available to the users of the software then the GPL is satisfied.
Comment by David Magda — Friday, March 7, 2008 @ 11:33 pm
I raised this question with a friend with a slightly different scenario. If developers need to sign the binaries they send to Apple does their private key effectively constitute part of the source code, and so would it need to be redistributed to users too? There’s been some debate for a while over whether the GPL is fundamentally incompatible with DRMed software.
Actually, I wonder if Apple will make a iPhone Apps Plus and charge an extra 20% for the versions of the apps that don’t have DRM :)
Ian
Comment by Ian McKellar — Friday, March 7, 2008 @ 11:47 pm
Who would be the plaintiff in a GPL case, and has one ever been litigated? What would the remedy be–just an injunction against further distribution? In other words, does any of this even matter? Can’t we all just ignore it?
Comment by Marke — Saturday, March 8, 2008 @ 12:01 am
@Marke: http://gpl-violations.org/
Comment by Mark — Saturday, March 8, 2008 @ 12:09 am
Mark: You could include the source in the signed application, something I’ve seen in windows installers of GPLed software, assuming there’s a way to get it off the iPhone.
Anonymous: Hmm, you’re right about the tivo-isation clauses in v3 not applying since it’s not shipped with the iPhone itself.
Comment by James — Saturday, March 8, 2008 @ 2:34 am
@David Magda: That’s not true. The FSF’s position is that every distributor must provide source code for GPL binaries they distribute. See here: http://www.linux.com/feature/55285.
Comment by Alex — Saturday, March 8, 2008 @ 7:51 am
You don’t need Apple to ship the source for you, you just embed it in your application, and tell the user how to extract it in the documentation. For example, the source code tarball could be part of the application’s resources.
Comment by Dalibor Topic — Saturday, March 8, 2008 @ 8:27 am
I think a key question to answer here is how software gets loaded onto the unit. If it were the case that the only way to get software into the unit was by passing it through the App Store, that would be one thing. But we know that developers can access the unit locally to run their software on it. So, the hardware should be capable, without too much effort by free software advocates I would hope, for regular users to load software on locally as well. Perhaps there shouldn’t be a distinction here between regular users, and developers, I’m not sure.
Comment by SG — Saturday, March 8, 2008 @ 9:36 am
Even if GPL software for the iPhone might be legal, wouldn’t people who care about freedom stay away as far as possible? As far as my grokking goes, Apple have full control of which apps goes into iTunes and the AppStore, and the only way to distribute apps is through Apple. This, to me, is too much control. I don’t mind them providing a distribution channel (and a far as distribution channels goes, it seems to be a very good one), but that it’s the only one possible is just too much.
And Apple seems to go so far that they will “censor” certain kinds of applications, VoIP, porn and interpreters/compilers are the ones I’ve heard of so far. I find it disturbing that developers don’t consider this a big issue. Most “open” (for some values of open) mobile OSs and RIA frameworks have some kind of signing process to avoid repeating the virus infection that is Windows. But as broken as they might be, they still appear to be primarily designed to protect the user. Apple’s system seems to be designed to protect Apple and the operator. As soon as you start censor based on content it’s a slippery slope. What will happen when they start distributing iPhone apps in Iran?
I guess the reason why developers in general don’t consider this a problem is that mobile phones are toys for most people. I consider mobile phones becoming the new personal computer in a few years, and I was kind of hoping that the mobile industry was maturing and moving towards more openness. But it seems like with the iPhone we’re just switching the operator overlord, with a manufacturer one (with much more control than operators have currently). If the iPhone would have been a crappy product I wouldn’t mind, but since it’s so popular I find the whole ordeal disturbing.
Comment by Jonas — Saturday, March 8, 2008 @ 9:37 am
As long as the user has access to the source, I see no problem anywhere.
Does someone insinuate that apple does not provide the source code to GPL apps they distribute?
Comment by she — Saturday, March 8, 2008 @ 10:20 am
@Alex, David Magda is right, see section 6d of GPLv3 you can distribute the source from a different server as long as you specify it and it stays available.
@SG, You are completely right, if the developer provisioning of the iPhone allows you to install your modify gpl software without crippling your iphone then there’s no problem even if it cost money to do so. However, in the iPhone documentation about developer provisioning an iphone, “iPhone OS Programming Guide > Development Environment > Working With A Device > Running Your Application on a Device. ” There’s a sentence that suggests (doesn’t say for sure) that provisioning your iPhone may disable hardware features of your iphone such as the telephony features. If that is the case, its still hard to say as it’s been mention in the comments above the anti-tivo clause only applies to devices that ship with the software.
@she, The issue is not whether Apple has violated the GPL, the issues is trying to figure out whether it is possible that someone could write or port a GPL app to iPhone because it may be the case that apple’s the tight controls on binary distribution are incompatible with the GPL license.
Comment by Jay — Saturday, March 8, 2008 @ 11:30 am
I’m not a lawyer, but I have spent quite a bit of time fussing over free software licenses. My understanding of the situation is this:
If you link GPL code against one or more Apple Cocoa frameworks, neither you nor anyone else can distribute that code because you can’t distribute the source for the Apple framework.
Since it’s not possible to write an iPhone app using the iPhone SDK without using Apple Cocoa frameworks (as far as I know, anyway), iPhone apps cannot be GPL. I also suspect that there are numerous free software MacOS X apps that are technically illegal for the same reason.
Maybe I’m wrong and someone will correct me, but I think the GPL (regardless of version) is pretty clear on this issue.
Comment by Drew Hess — Saturday, March 8, 2008 @ 5:07 pm
Small correction to my previous post: I should have said that, “iPhone apps that are GPL cannot be distributed.” You could, of course, write a GPL app for your iPhone that you never give to anyone outside your organization, which means that you haven’t invoked the distribution clause of the GPL… not that it’s a very useful distinction in the context of Mark’s original question, of course, but I think it’s important to be precise.
Comment by Drew Hess — Saturday, March 8, 2008 @ 5:13 pm
Eh… nevermind me. According to the GPLv3, anyway, System Libraries are exempt from the distribution clause and those include “major essential component[s]” of the operating system. That probably means the Apple-supplied Cocoa libs are considered System Libraries and that there’s no fundamental GPL issue with Cocoa apps.
Sorry for the distraction :)
Comment by Drew Hess — Saturday, March 8, 2008 @ 6:04 pm
@Jay: I don’t think 6d is a get-out for Apple. If you’re a distributing licensee, you have a responsibility to provide a source for the source. The last sentence says it all: “Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.” Apple can’t make that guarantee if the source code is hosted on the original developer’s server, they have to host it themselves. Of course, if there’s a dual-license possibility here so that Apple’s right to distribute comes from something that’s not the GPL, then all this is moot, and it’s only subsequent downstream distributors who’d have to worry. I believe that this would only be feasible for single-author packages.
Comment by Alex — Saturday, March 8, 2008 @ 7:19 pm
You left out this one, which works if Apple’s distribution of free applications is considered “noncommercial”:
“c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)”
This allows the developer to provide a written offer to Apple, and Apple to pass that written offer on to end users.
Comment by Matt Brubeck — Saturday, March 8, 2008 @ 9:14 pm
On a meta note, this discussion has turned out much better than I would have expected from the intersection of Apple, iPhones, and the GPL.
Comment by Mark — Saturday, March 8, 2008 @ 10:35 pm
http://www.amazon.com/Canonical-Ubuntu-7-10-PC-Edition/dp/B000XJLSKY/
Is Amazon the distributor for this distro?
I would imagine that a similar rationale could be applied to Software on the iTunes store.
I’m not a GPL fan in any case though. Too complicated for my simple mind.
Comment by Danno — Saturday, March 8, 2008 @ 10:48 pm
Stepping back from the letter of the licence for a second, to think about its spirit, I wonder how it is ever possible to grant the four freedoms on a platform where the only way to install software is via a controlled distribution channel.
Sure, maybe you can find a way to provide source code, in a way such that the user could actually read and edit it.
But then what?
They can’t install their modified copy.
Maybe they actually can if they buy a developer’s key; maybe Apple will hand those out without vetting recipients. That still makes the user dependent on the vendor, so it’s not actually in the spirit of the GPL, but I suppose one could swallow that and accepting having to fork the cash over to Apple. But that’s in the best-case scenario: that you only need to pay for the developer key once, that it cannot be revoked, and that its use does not somehow put the device in some sort of restricted capability mode.
Except, I don’t see that case happening, because otherwise, what else is the developer key than an Apple-blessed jailbreaking pass?
Maybe there can be GPL-licensed software for the iPhone. But I don’t see how there can be Free Software for the iPhone.
Comment by Aristotle Pagaltzis — Sunday, March 9, 2008 @ 11:04 am
“3. You may copy and distribute the Program” - the question is, who exactly is “You”. I don’t think that GPL’s purpose is to cover every detail of the everyday distribution chain. So I assume that this “You” is the main beneficiary, the author. So no obligations falls to Apple.
Comment by Peter — Sunday, March 9, 2008 @ 1:58 pm
Aristotle: See also the discussions about GFDL documents and DRM in Debian.
Comment by James — Sunday, March 9, 2008 @ 7:00 pm
@Mark #4: “Some of the world’s most kick-ass end-user Mac software is GPL. Adium, Colloquy, etc.”
While Colloquy itself is GPL, the IRC core Colloquy uses (chat core) is BSD licensed and I assume in use in the two colloquy-ish-based IRC clients available now on the (jailbroken) iPhone: mcolloquy and colloq. Not as much of a problem as the GPL may be.
Comment by Jane — Sunday, March 9, 2008 @ 7:01 pm
@Aristotle - the “key” or “token” to have the free pass “jailbreak” is the key here. My take in answer to Mark’s question is a simple “no” until Apple changes the approach.
Comment by Ken Hanscom — Sunday, March 9, 2008 @ 10:07 pm
If the source code were contained inside the application package, then when the app is purchased it will either download to the user’s computer via iTunes (and thereby satisfy the GPL since the source code is now on the machine and accessible) or download to the iPhone, *and* then copy to iTunes as soon as the iPhone is synced, wherein the source-code will be on the machine and readable. Problem solved.
JP
Comment by John — Sunday, March 9, 2008 @ 11:21 pm
Actually the problem lies more in the allowance of the user to recompile to use the modified software.
It appears that Apple require the binaries to be signed to be installed, therefore forbidding the use to install the modified application. One might think that they need to register and pay $99 to be able to do so? But given the restrictions put on the service, it clearly conflict with GPL.
IANAL, but I see that Apple TOS / EULA for iPhone developement is a bit incompatible with GPL Freedom 0.
Comment by HUb — Monday, March 10, 2008 @ 12:24 am
To quote Linus on the issue of having the source but not being run binaries without them being signed:
“Sure, DRM may mean that you can not _install_ or _run_ your changes on somebody else’s hardware. But it in no way changes the fact that you got all the source code, and you can make changes (and use their changes) to it. That requirement has always been there, even with plain GPLv2. You have the source.
The difference? The hardware may only run signed kernels. The fact that the hardware is closed is a _hardware_ license issue. Not a software license issue. I’d suggest you take it up with your hardware vendor, and quite possibly just decide to not buy the hardware. Vote with your feet. Join the OpenCores groups. Make your own FPGA’s.”
and
“> So taking open software and closed hardware and combining it into something
> that I cannot modify is ok by you?
But you CAN modify the software part of it. You can run it on other hardware.
It boils down to this: we wrote the software. That’s the only part _I_ care about, and perhaps (at least to me) more importantly, because it’s the only part we created, it’s the only part that I feel we have a moral right to control.
I _literally_ feel that we do not - as software developers - have the moral right to enforce our rules on hardware manufacturers. We are not crusaders, trying to force people to bow to our superior God. We are trying to show others that co-operation and openness works better.”
Comment by mc — Tuesday, March 11, 2008 @ 6:36 am
> To quote Linus
I realize that this entire discussion of legal issues has been populated by non-lawyers, but I would trust Linus’ “interpretation” of GPL licensing issues even less than most people. He has a history of willful ignorance and misunderstanding of the GPL. He flipped my bozo bit a long time ago.
Comment by Mark — Tuesday, March 11, 2008 @ 9:07 am
Without rehashing that whole debate again the point was that Tivoisation is a further restriction which denies recepients received by the distributor. Like patents for instance. The GPL does not restrict creating or enforcing patents it only says under what terms you can distribute GPL software, some of which involve agreeing not to use patent threats on recipients of that software.
What I don’t understand is why in GPLv3 — where they endeavoured to make this explicit — did they make an exception for when the software is distributed separately from the hardware.
Comment by Anonymous — Tuesday, March 11, 2008 @ 7:42 pm
Reading GPLv3, it looks to this anonymous non-lawyer like even Tivo is actually allowed to ship GPLv3 software *in upgrades* so long as they don’t include it at the time of the sale of their hardware product…
What is the reason (if any) why they couldn’t ship a (signed) software update containing GPLv3 code?
Comment by Anonymous — Wednesday, March 12, 2008 @ 5:50 am
That should read:
Comment by Anonymous-7:42 — Wednesday, March 12, 2008 @ 8:11 pm
To my reading of the GPL (v2 or v3) nothing restricts one from application of either license to a piece of software or other entity which is required to be processed by a component / program that must be purchased. So if I write a piece of code that only compiles if you use a $2000 compiler suite (say code aimed to be compiled from C or C++ into FPGA fuse maps) then it is the code itself not the tools I am obligated to supply. If anyone can buy a $99 developer license that is just part of the tool chain cost. So iPhone applications can be GPL’d since there is a means (by paying for a separate tool) to recreate the application for use on an iPhone. And in general the code itself is under GPL for the intent to allow reuse of the code and modifications so I am actually pretty confident that just having the source code itself is adequate since one may then modify and use that code. I am not sure it requires that the code be able to be modified and used on the target device it is commercially used on. Some hardware just is not upgradeable. No way to change the software originally programmed into the device. Like OTP SoC devices. You don’t get the masks to the SoC or even have rights to all the code burnt into the SoC (some of which might be required to have the environment the program runs in) just to the original GPL’d code in the form used. Say, I use GPL’d code say in VHDL or something similar and program a 800 dollar FPGA on my device, then blow the programming enable fuse. (because no bugs every occur in my code!) I now have a piece of GPL code I am obligated to deploy/distribute but the user of my device can not modify my device with their code. Further I can make it a condition of hardware support etc. that they never open the case. So if my device is costly enough there is a disincentive pressure to not play with it.
Comment by Tjp — Friday, March 14, 2008 @ 10:19 pm
Maybe you should have read v3 more carefully.
Comment by Anonymous — Saturday, March 15, 2008 @ 9:55 am