Someone wrote in [personal profile] mjg59 2012-01-31 01:03 pm (UTC)

All of the questions you've asked have come up numerous times before, and they all have well-known answers (though apparently not well-known enough).

First of all, thinking of licenses (copyleft or otherwise) in terms of threats of lawsuits gets it entirely backward. Copyright itself puts you in that position. Copyright gives you a pile of exclusive rights over your code; licenses then grant those rights to others. FOSS licenses provide exceptions to copyright law, providing broad grants of permissions with some conditions attached. You start with a copyrighted work, which normally would not permit copying, modification, or redistribution, and apply the GPL to it, which allows all of those things on the condition that any derived work must also allow all of those things. That seems like a pretty generous offer to me; perhaps not quite as generous as an all-permissive license, but I personally agree with the goals of copyleft, and I see nothing wrong with saying "share and enjoy but don't make it proprietary".

You don't have to use the GPL on your software just because you derive from GPLed code; you can use any GPL-compatible license, which includes all-permissive licenses. The GPL still applies to the overall derived work, but anyone can take your permissively licensed code out of that work and use it under that permissive license, if you want that. A GPLed project can require that you use a GPL-compatible license on your work when it derives from theirs, but they cannot require that you use the GPL itself for that work.

The GPL says absolutely nothing about linking. The GPLv2 talks about derived works, a term defined in copyright law. The GPLv3 uses its own terminology ("propagate"), carefully defined in the license, but it effectively amounts to "anything which would have been covered by copyright law": 'To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.'

While linking often creates a derived work, it doesn't necessarily do so in all cases, and conversely a derived work may exist even in the absence of linking.

A Python program that imports pyskein probably represents a derived work of pyskein. Since pyskein appears to use the GPL, that would then require that the Python program derived from pyskein use a GPL-compatible FOSS license. On the other hand, a program configurable to use umpteen different hashes through a standardized interface does not become a derived work of pyskein simply because pyskein provides that standardized interface.

Similarly, Python's use of readline does not require you to use a GPL-compatible license on your Python programs, unless your Python programs actually use readline.

The "system library" exemption in the GPL (both v2 and v3) has a very narrow definition, which seems fairly self-evident just by reading the license. If a proprietary (non-GPL-compatible) library normally ships with the platform your program builds for, and you don't ship that library with your program, you can link to it even from GPLed code. This allows people to ship GPLed software for Windows and OS X, even though the standard libraries for those platforms do not use GPL-compatible licenses (and don't ship with source code).

"Preferred form for modification" has a similarly straightforward definition; apply your common sense as a programmer. Compressing the source code (reversibly) rather obviously doesn't affect this; source code in an archive does not magically become object code. (Of course, using an archive format nobody else has an un-archiver for does not work, but common sense should tell you that.)

If you as the programmer write a work entirely in machine code, you could certainly make a convincing argument that the machine code represents the preferred form for modification. (That would make your work hard to maintain, but not proprietary.) However, that argument won't fly when you started out with a pile of someone else's GPLed source code, modified it, compiled it, and then threw away the source.

If you give me a binary built from someone else's GPLed code, and don't give me access to the source code as required by the GPL, you've violated the license; the copyright holders can't compel you to distribute source, but they can compel you to stop violating their copyright, and since nothing other than the GPL gives you a license to distribute, you'd need to stop distributing and possibly provide other remedies. (Distributing source code generally represents the least painful option, hence why most GPL enforcement leads to that result.) On the other hand, if you have sole authorship of the code, then you can do whatever you like (since you have all the necessary rights already without needing the license), but in doing so you've created something unredistributable.

Either way, once I have a binary without corresponding source, I can't distribute it to anyone else because in doing so *I* would violate the GPL. I can't compel you to give me the source code, but that doesn't excuse me from my own obligations. To quote the GPLv3 (v2 has an equivalent provision): 'If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all.'

(Also, whether the GPL works as a license or a contract depends on jurisdiction, but the difference doesn't really matter.)

So, again, all of the questions you've asked have come up many times before, and they have well-known answers. The GPL does not represent some wild west of licensing uncertainty and open questions; using it puts you on well-trodden ground. And most importantly, the GPL and other FOSS licenses don't represent threats of lawsuits, but grants of permission that you wouldn't otherwise have.

Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org