Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
Am 27.01.2009 um 14:29 schrieb Yavor Doganov: [I submitted this as a Trac ticket, but got Submission rejected due to potential spam or similar.] I believe Gajim is currently not distributable, as even an optional dependency on python-openssl requires the license of Gajim to have the (in)famous OpenSSL exception. Although PyOpenSSL is under LGPL, it is merely a wrapper and the interpreted program (Gajim) is effectively linked with the library (libssl) through the python extension (PyOpenSSL). http://www.gnu.org/licenses/license-list.html#OpenSSL http://www.gnome.org/~markmc/openssl-and-the-gpl.html http://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL http://www.gnu.org/licenses/gpl-faq.html#InterpreterIncompat (The questions from the GPL FAQ are not about this specific problem, but the explanations give answers to that as well.) Probably an easier alternative to relicensing would be to use python-gnutls, the GnuTLS bindings. We do not ship with py-OpenSSL. We do not include any of the code from py-OpenSSL. We do not ship with OpenSSL. We do not include any code from OpenSSL. I don't see where we are violating any license. OpenSSL is loaded at runtime, but GPL doesn't cover which code is allowed to be run in memory, it only covers distribution rights. So GPL doesn't forbid to mix GPL and non-GPL code in RAM, as long as you don't distribute the result (e.g. a core dump). Therefore I fail to see the problem. d8289 Additionally, GPL explicitely allows mere aggregation, so even our Windows binaries are no See also: http://groups.google.com/group/comp.lang.python/msg/ 29c7588fbecproblem, as OpenSSL is a separate DLL which is loaded at runtime. -- Jonathan PGP.sig Description: Signierter Teil der Nachricht ___ Gajim-devel mailing list Gajim-devel@gajim.org http://lists.gajim.org/cgi-bin/listinfo/gajim-devel
Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
Am 27.01.2009 um 14:48 schrieb Jonathan Schleifer: d8289 Additionally, GPL explicitely allows mere aggregation, so even our Windows binaries are no See also: http://groups.google.com/group/comp.lang.python/msg/ 29c7588fbecproblem, as OpenSSL is a separate DLL which is loaded at runtime. Sorry, I broke the link. Here's the fixed one: http://groups.google.com/group/comp.lang.python/msg/29c7588fbecd8289. The See also: and the link are in the middle of the sentence, sorry for pasting it wrong :/. -- Jonathan PGP.sig Description: Signierter Teil der Nachricht ___ Gajim-devel mailing list Gajim-devel@gajim.org http://lists.gajim.org/cgi-bin/listinfo/gajim-devel
Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
On Tue, Jan 27, 2009 at 02:48:45PM +0100, Jonathan Schleifer wrote: We do not ship with py-OpenSSL. We do not include any of the code from py-OpenSSL. I never said you did. I don't see where we are violating any license. You are violating your own license, the GPL. OpenSSL is loaded at runtime, but GPL doesn't cover which code is allowed to be run in memory, Please. All libraries you link against should be under a GPL-compatible license. The fact that you link with libssl via a python wrapper does not alleviate that. Additionally, GPL explicitely allows mere aggregation, so even our Windows binaries are no This is not about mere aggregation at all. http://groups.google.com/group/comp.lang.python/msg/29c7588fbecproblem, as OpenSSL is a separate DLL which is loaded at runtime. The link doesn't work for me, but the situation on POSIX systems is the same -- when you do import OpenSSL.SSL and then use OpenSSL facilities, they don't come from PyOpenSSL's independent SSL implementation (as there isn't any), they come from libssl. So the .so is loaded at runtime as well. ___ Gajim-devel mailing list Gajim-devel@gajim.org http://lists.gajim.org/cgi-bin/listinfo/gajim-devel
Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
Am 27.01.2009 um 14:56 schrieb Yavor Doganov: On Tue, Jan 27, 2009 at 02:48:45PM +0100, Jonathan Schleifer wrote: We do not ship with py-OpenSSL. We do not include any of the code from py-OpenSSL. I never said you did. Then I fail to see the problem. I don't see where we are violating any license. You are violating your own license, the GPL. I am where? Where do we distribute something that includes non-GPL code? Neither our source, nor our binaries include non-GPL code. OpenSSL is loaded at runtime, but GPL doesn't cover which code is allowed to be run in memory, Please. All libraries you link against should be under a GPL- compatible license. The fact that you link with libssl via a python wrapper does not alleviate that. We only combine our code with OpenSSL's code in memory. This is perfectly legal, as the GPL only covers _DISTRIBUTION_. It's a license about _DISTRIBUTION_, _NOT_ about usage. That's why it's a _DISTRIBUTION_ license and not an EULA. Additionally, GPL explicitely allows mere aggregation, so even our Windows binaries are no This is not about mere aggregation at all. It is, because all we do with the Windows binaries is have the OpenSSL DLLs included, which are loaded at runtime. So we do _NOT_ distribute any combined work. It is combined in memory. This is not covered by the GPL at all. Because GPL allows mere aggregation, it is allowed to include non-GPL'd stuff in the distribution set. http://groups.google.com/group/comp.lang.python/msg/29c7588fbecproblem , as OpenSSL is a separate DLL which is loaded at runtime. The link doesn't work for me Yup, I broke it on pasting, see my second mail. but the situation on POSIX systems is the same -- when you do import OpenSSL.SSL and then use OpenSSL facilities, they don't come from PyOpenSSL's independent SSL implementation (as there isn't any), they come from libssl. So the .so is loaded at runtime as well. Right, it is loaded at runtime. So the combined work is created at _RUNTIME_, and _NOT_ at distribution. This isn't covered by the GPL at all. It doesn't say a single word that it's forbidden to combine GPL'd and non-GPL'd code in RAM. -- Jonathan PGP.sig Description: Signierter Teil der Nachricht ___ Gajim-devel mailing list Gajim-devel@gajim.org http://lists.gajim.org/cgi-bin/listinfo/gajim-devel
Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
Yavor Doganov wrote: On Tue, Jan 27, 2009 at 02:48:45PM +0100, Jonathan Schleifer wrote: OpenSSL is loaded at runtime, but GPL doesn't cover which code is allowed to be run in memory, Please. All libraries you link against should be under a GPL-compatible license. The fact that you link with libssl via a python wrapper does not alleviate that. We are not linked against anything as in a C program, there is no mention to OpenSSL.so in our compiled binaries. We don't use openssl.so, python-openssl do. And I don't see why Gajim debian package cannot depend on another package in debian which is not in non-free. If openssl and python-openssl are in debian it means they have an opensource license, an I wrong? -- Yann ___ Gajim-devel mailing list Gajim-devel@gajim.org http://lists.gajim.org/cgi-bin/listinfo/gajim-devel
Re: [Gajim-devel] Licence incompatibility -- GPL and OpenSSL
Anfang der weitergeleiteten E-Mail: Von: Yavor Doganov ya...@gnu.org The problem is the linking. You can't link a GPL'ed application against a library under incompatible license, unless it classifies as a system library. You can, if you are not DISTRIBUTING the result of the linking. The linkage occurs at run time, so unless you distribute, say, a core dump, nothing happens – the GNU GPL is not triggered. Furthermore, gajim (GPL) uses (*not* links, this is an additional distinction!) py-openssl via its defined API. It’s an exercise left to the reader to provide an implementation of the py-openssl API which either uses the piece of crap called GnuTLS, or is a dummy implementation. If you call it just the same, gajim would never know the difference. It just would suck more or be unable to use TLS at all (for the dummy implementation). This is a defined API, and the code is never distributed after combining. Please read http://groups.google.com/group/comp.lang.python/msg/29c7588fbecd8289 (again, if you already have) – it’s common FSF FUD (or, perhaps more politely, practice) to _assume_ the result being distributed. Here, it never is, because this is a scripting language, which does not support combining other than at run time anyway. The act of running the programme is not restricted, the GNU GPL says. By the way, even if I strongly believe they are evil, this is the same reason why binary LKMs for the Linux kernel are legal (unless they are bound by the GNU GPL for some other reason, such as being an actual derived work). That is precisely the problem. You do that and the combination is impossible Note how carefully you omit to (re)distribute in this place. , which is why[…] Please reread the license. Distributors are not allowed to distribute Gajim (at least in binary form, for sure) I’d like you to show how a Python “binary” – compiled to .pyc or .pyo files or not – is linked to a C library. Especially statically, as a dynamic linkage is, contrary to popular belief, not covered by the GNU GPL (simply for the reason that everyone can just place a different(ly licenced) or dummy implementation in its place). (How such bugs are resolved: 1) the package is relicensed upstream to GPL+OpenSSL exception While I do not consider this a bug, the LGPL, if it were not for its insanely huge size, would probably be a viable option. Note that I’m strictly talking for myself, and I am a developer of MirBSD and FreeWRT, not of gajim. 2) the package migrates to GnuTLS or NSS Yeah, sometimes I get the impression that “the GNU community” is using this FUD to promote GnuTLS, because it cannot shine through quality. 3) the openssl support is removed if 1) and 2) are impossible.) Actually, gajim does not use OpenSSL. It is py-openssl which does. It is definitely covered by the GPL, as the work you distribute as a whole Indeed, but mere aggregation does not count. should be under the GPL (which in practical terms means that all dynamically linked libraries ^^^ This is the part where both the FSF and you are wrong. The FSF is wrong in how they interpret the GNU GPL here (please re-read the above linked Usenet posting at this place), and you are wrong since gajim is not linked to OpenSSL at all. By the way, dynamic linkage is much more alike to using a dlopen(3)- style API than to shared linkage, in regard how works are combined at least. See for example http://www.gnu.org/licenses/gpl-faq.html#AllCompatibilty. Interestingly, here you point out the source of this FUD. Note the two distinguished usages I want to copy code under and I want to use a library under Note how it says “use a library”, yet the act of running (using) a programme is not restricted by the GNU GPL? Do you know the most funny part: the GNU project itself has made available the means to prove you wrong. There is a wrapper for GnuTLS exposing the OpenSSL API to other programmes. In recent versions it may be licenced GPLv3+ but that does not matter for this example, especially since it was not always like that. To gajim, this means you get a combined (in memory) work consisting only of GNU LGPL and GPL licenced components. If said wrapper were to not work with py-openssl, again, it would be trivial and is left as an exercise to the reader to add wrappers or stubs for the missing ABIs. In fact, it would be possible to write a DLL (shared object, dylib) which does not link against either at all, but uses dlopen(3)-style APIs to load one at run time, and decides which one to use by avai- lability and/or environment variables. The mere possibility of such a thing (even for GPLv3, since these are not “plugins specifically designed for the programme”) makes your argumentation moot. bye, //mirabilos -- I believe no one can invent an algorithm. One just happens to hit upon it when God enlightens him. Or only God invents algorithms, we merely copy them. If you don't believe in God, just consider God as