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.
Of course that does the trick. You aren't allowed to ship someone else's code except under their license. If they are violating the GPL, then they must stop shipping, and pay damages if they get sued. Nothing, however, forces them to open their own code.
There are no trails. There are no trees out here.
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.
Someone did ask.
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.
The primary issue is: can you actually wrap it and keep the pieces properly separated so free pieces can be free and non-free can be dealt with apart or are the links too pervasive between the two (three)? If the different components are too interwoven to be cleanly separable, it suggests your code design sucks, the code design of the GPL your using sucks, or both.
Unless it's determined that the only remedy that would correct the situation is specific performance - i.e., a court order telling CocoaTech that they have to open the source code.
While I think that this is an unlikely remedy, and that a fine would be much more likely, I think one could make a good argument in favor of SP.
fuck you.
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
Some maintainers of GPL software ask that copyright on patches be assigned to the maintainers so that situations like these can proceed in a sane manner. Credit for contribution is still given but the original author(s) maintain control of the codebase.
Bleh!
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".
VMWare grossly abuses the GPL with their ESXServer product. They use a highly modified linux kernel for their host OS, and the host OS is clearly Linux. however, there is no source for the new kernel they install, and when asked (I did so at a few presentations) they simply chuckle, and mutter something about hell freezing over. None different really from how sw-soft is behaving with their vitruozzo product.
Everywhere I look in the enterprise space there are software companies trampling all over the GPL. We need a good strong courtcase to send some of these fuckers a message.....
People who think they know everything are a great annoyance to those of us who do.
From the Cocoatech web site:
The GPL and Path Finder
It has come to our attention that there has been controversy about Path Finder's use of some open source code. Path Finder uses a heavily tweaked version of the open sourceiTerm application as the basis for Path Finder's built-in Terminal window and drawer. It always has been Cocoatech's intention to comply fully with the open source licensethat iTerm falls under. We believed that by releasing the complete framework that contains the open source code, this would fulfill the requirements of our usage of GPL'ed code. We are investigating this issue in depth and intend to fully comply with the rules of the GPL. We are also working with the authors of iTerm to make sure this issue is resolved. We wish to reiterate that we support the spirit of the GPL and the open source community, and did not / do not intend to break the rules. We will post another update to this web site to follow up on this issue. We hope to have a clarification and have this issue rectified as soon as possible.
SteveM
Are you sure about this? I asked a representative this exact question at a presentation. He stronly asserted that their ESXServer kernel was not based on Linux. I was skeptical, considering how much work would be required just to create all the drivers for the NICs it supports.
So, have you got any evidence of this? Its a serious allegation about a company whose livelihood is seriously invested in Linux.
Well, I have the ESX server CD's, and several machines running ESX server. If the kernel isn't Linux, it is a very good imitation. Tell me what info you need as proof, and I'll provide.
People who think they know everything are a great annoyance to those of us who do.
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.