Is CocoaTech Violating the GPL?
elliotj asks: "In the latest version of their Finder-replacement product, PathFinder CocoaTech has included a terminal feature based on sourcecode from the GPL'd iTerm. They have made available the classes they developed from the iTerm sources, but not all the sourcecode for their product. Since iTerm is GPL (and not LGPL), shouldn't they have to make the ENTIRE codebase available? This is being debated on their forums. If this is true, what can we do to get CocoaTech to open up the rest of the code?"
They are much more likely to remove the GPL'd code than they are to open up their product.
You can get them to open the source by asking.
It does wonders sometimes.
I live in a giant bucket.
Since iTerm is GPL (and not LGPL), shouldn't they have to make the ENTIRE codebase available? This is being debated on their forums. If this is true, what can we do to get CocoaTech to open up the rest of the code?
And you wonder why companies are afraid to consider the use of GPL software. Please, do us all a favor and READ the GPL before you continue making the rest of the community look like a bunch of fools.
Interested in open source engine management for your Subaru?
Pragmatically, it's a better plan to try to work this out with the company first before splashing it all over Slashdot. People do make honest mistakes - they ought to read licenses and understand all of their responsibilities before reusing code, but they don't always do so. Pointing these responsibilities out may result in things being worked out significantly faster. Immediately getting them bad publicity is more likely to lead to them never using GPLed code again, which is a bad thing - companies enhancing GPLed code and releasing derived works benefits everyone.
On the other hand, if a company refuses to release the source or never gets back to you, and you're satisfied that the copyright holder hasn't granted them further permissions above and beyond the GPL, then make their lives miserable. While it's desirable to have GPLed code used widely, it's not desirable to allow companies to believe that they can get away with failing to follow their obligations. But don't do that until you've tried doing it nicely. Everyone is happier then.
What amazes me is that these guys went to the trouble of doing a source release for some of the classes in order to comply with the GPL. This means that all the time spent on incorporating iTerm and doing a source release took place without anybody actually reading the GPL. They understood enough about the GPL to know that you have to release stuff if you use it, but didn't read it in any detail.
Amazing considering they were launching a product that included a signifcant component of GPL'd code.
I think the fact that they did a source release likely means it was an honest mistake. That being said, if they chose to remove iTerm from it rather than opening the rest of the source, I think they should at the very least make some form of monetary concession toward the authors of iTerm, whose stolen code may have accounted for actual sales of Path Finder.
Assume A and B are two sets of source code. B is licensed to the author of A via the GPL.
Is A a derivative work of B? Then A is in violation of copyright law if A is not GPL'ed (section 2).
Are A and B being distributed together as part of a larger work? If A and B are part of a larger work and are being distributed together then when A is distributed as part of the whole, it must be GPL'ed, otherwise the author of A is in violation of copyright law. (Section 2, the paragraph after the bullet points).
Are A and B being distributed together in aggregate, as opposed to being combined into a larger work. (This is in the gnu.org FAQ on the GPL.
Now, I'm not a Mac person, I've never used any of these applications. However, there are several things to remember. First, in this case, the author of iTerm is the only person who can demand the source be released. You cannont enforce someone elses copyrights. So the copyright holders of iTerm are the only people with a leg to stand on in actually getting the source coughed up.
Next, the commonly acknowledged meaning of a derivative work is generally that the two binaries share the same address space while running (that is, they are linked either statically or dynamically together at some point).
The second portion sounds to me, like it is tricky. The working their to my IANAL mind is hard to differentiate from a work in aggregate. When RedHat ships GPL'ed software and non-GPL'ed software together is "RedHat Linux" a larger work, and as the kernel is GPL'ed then all other software must be? No I wouldn't think so. However, I can't see how to draw a line so that it makes sense to me. To my mind, either "RedHat Linux" is the larger whole, thus it all must GPL'ed, or that paragraph doesn't mean anything, and thus shouldn't be there. I'm not sure I understand it precisely. The only thing I can think if of is something like Emacs where if I distribute GNU Emacs with some extra runtime support in lisp, then that extra runtime while it might be an independent work, it must still be GPL'ed. Meanwhile, if I distributed Emacs and pico, I don't have to GPL them both. I've never seen a clear explaintion of the difference between "parts of a whole" versus works in aggregate.
So the trick is to figure out if iTerm code is linked to the larger application, or if iTerm is merely a spawned program which communicate at arms length. In general if it is an external spawned program. If the source code bases are never linked, they are in the clear. If they are linked together, then CocoaTech has some explaining to do. Generally speaking, an strace, ldd, and a ps listing will show you precisely what is going on when they admit they are using the source code.
Kirby
If this is true, what can we do to get CocoaTech to open up the rest of the code?
Why do you want to force them to open up the rest of the code? Even the much maligned RMS doesn't have any desire to force others to release their code if they don't want to.
This isn't a case where some company took an entire open source project, added a few (potentially major) features then refuse to release the source. Common decency dictates they made an honest (hopefully) mistake, and one should give them a chance to correct it. They've released the souce to the portion they used that is open source. I'm not an expert, but this doesn't seem to be enough to satisfy the GPL to me. If that's correct, then to be in compliance they will either have to stop distributing the version with the open source code, or release all of the code. The choice should be up to them unless they press the issue (ala: SCO).
Like it or not, their source code belongs to them, and it's up to them to decide whether to release it or not. To force them to release it on a technicality, using legal means, is the exact same tactic the RIAA is using to legally steal money from people who've downloaded or facilitated the download of songs ("piracy" is, of course, bad, but thuggery is worse).
They can do one of three things:
Give them a break so that they can fix their mistake (from Eblen Moglen's writings on the subject this is the FSF prefered method) at least until it becomes clear that the breach of the GPL is egregious.
Who knows they might even release some source this way!
P.S. They could (under some circumstances) also clarify the boundary between their main product and the part that uses GPLed code so that they did meet the terms of the GPL.
In this particular case, I think it would be easy. They could probably package the GPLed functionality into its own executable. All the parameters involved could easily be passed as arguments.
Then they could release the code for that binary, but not the one for their main product.
There are no trails. There are no trees out here.
No, that's the point of the LGPL. The GPL does not allow this. See Readline, GNU for details.
That's what I like about the GPL, if someone wants a leg up on the competition or for whatever reason wants to get to market faster and easier, and wants to use somebody's GPL code, they have to pay in the coin of the realm, which is to release their own code under GPL too.
If they don't want other people to use their precious code, then they shouldn't use anybody else's precious code, they should write it all themselves.
Infuriate left and right
Every single person arguing for CocoaTech to release the entire code is posting anonymously.
Apparently no one has the balls to attach their name to their "demands".
This is why I will never use any GPL-license code in any of my products.
1. I've used PathFinder and have never used the iTerm functionality. It was not a deciding factor.
2. iTerm is a side feature at best, and it does seem like an example of why GPL (vs. another Open Source license like BSD, LGPL) will not be adopted by anyone that wants to create a business around software.
3. I would rather see the author pull out the GPL code rather than FORCE to open ALL his code up because of some side feature that he decided to add.
The arguments made here are proof that GPL is viral and a company could easily get caught in a mess.
As much as I hate Microsoft, I'm wondering if they're not right (at least about GPL). The draconian arguments made here are no better than Microsoft's.