Re: bindist for Intel MacOS X 10.4 (Tiger) with static libs

Hello, On Tuesday 08 January 2008 15:07, Christian Maeder wrote:
Hi,
I've succeeded in building a binary distribution that uses static libraries for gmp and readline. libreadline.a, libncurses.a and libgmp.a with corresponding header files are included. (For license issues ask someone else.)
On http://gmplib.org/ we find: "GMP is distributed under the GNU LGPL. This license makes the library free to use, share, and improve, and allows you to pass on the result. The license gives freedoms, but also sets firm restrictions on the use with non-free programs." I have not attempted to check whether your distribution fulfills the requirements of the LGPL. Further, on http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html: "Readline is free software, distributed under the terms of the GNU General Public License, version 2. This means that if you want to use Readline in a program that you release or distribute to anyone, the program must be free software and have a GPL-compatible license." For your distribution to adhere to this, it appears to require GHC to have a GPL-compatible license. I don't believe it does.
...
Best regards Thorkil

Hello Thorkil, Thursday, January 10, 2008, 11:24:16 AM, you wrote:
I've succeeded in building a binary distribution that uses static libraries for gmp and readline. "GMP is distributed under the GNU LGPL. This license makes the library free to "Readline is free software, distributed under the terms of the GNU General Public License, version 2.
in short, that means that software compiled with this compiler AND distributed to general audience, should have GPL-compatible license (i.e. GPL or BSD-like) (as far as i understand GPL/LGPL terms) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Thorkil Naur wrote:
"Readline is free software, distributed under the terms of the GNU General Public License, version 2.
Bulat Ziganshin wrote:
in short, that means that software compiled with this compiler AND distributed to general audience, should have GPL-compatible license (i.e. GPL or BSD-like) (as far as i understand GPL/LGPL terms)
Any software compiled with this compiler, or only software that uses System.Console.Readline? Isn't this the same on all platforms? If what you are saying is correct, then isn't it required for any program compiled with any readline-enabled GHC to have a GPL-compatible license? I don't think that's right, but IANAL. -Yitz

Hello Yitzchak, Thursday, January 10, 2008, 1:06:12 PM, you wrote:
"Readline is free software, distributed under the terms of the GNU General Public License, version 2.
in short, that means that software compiled with this compiler AND distributed to general audience, should have GPL-compatible license (i.e. GPL or BSD-like) (as far as i understand GPL/LGPL terms)
Any software compiled with this compiler, or only software that uses System.Console.Readline?
any software that links with readline.a or gmp.a. which actually means every program because even if you don't use GMP, it's probably still linked in
Isn't this the same on all platforms? If what you are saying is correct, then isn't it required for any program compiled with any readline-enabled GHC to have a GPL-compatible license? I don't think that's right, but IANAL.
GPL license means that any program that uses readline functionality should be *distributed* on GPL-compatible license. are you ever hear how GPL infects computer programs? :) you may also use it for in-house development, without distribution for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Bulat Ziganshin wrote:
in short, that means that software compiled with this compiler AND distributed to general audience, should have GPL-compatible license (i.e. GPL or BSD-like) (as far as i understand GPL/LGPL terms)
Any software compiled with this compiler, or only software that uses System.Console.Readline?
any software that links with readline.a or gmp.a. which actually means every program because even if you don't use GMP, it's probably still linked in
No, GMP is only LGPL, not GPL. So it only needs to be LGPL compatible unless it uses readline.
Isn't this the same on all platforms? If what you are saying is correct, then isn't it required for any program compiled with any readline-enabled GHC to have a GPL-compatible license? I don't think that's right, but IANAL.
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
LGPL specifically allows BSD-licensed software to link in object code that is LGPL. But, basically, you need to include the source code of the LGPL parts in your distribution package, and mention in your license notice that part of the code is LGPL. If LGPL is a problem for your project, that is hard to get around right now. We have been reading about efforts to allow alternative multi-precision libraries with GHC. That is very important work, but apparently difficult. However, LGPL is often not a serious problem, even for commercial products. GNU readline, on the other hand, is never suitable for non-free software. The authors of the GNU readline library have publicly stated that the whole reason they are using GPL is to make sure that no non-free software ever uses it. So this work to use editline instead of readline in GHC is very important for all platforms, not just the Mac. editline is BSD licensed. Therefore, I think the focus should be to get the best readline compatibility possible by using a sufficiently recent version of editline. If that causes problems on a specific platform, like Tiger, that is a lower priority. (I say that even though I myself am on Tiger.) We can work around that separately. -Yitz

Bulat Ziganshin:
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
Of course, GHC is BSD3 licensed. It includes the GMP code as part of its tar ball to save people from the hassle to separately install GMP on platforms that don't have it by default (ie, essentially all non- Linux OSes). That doesn't change the license of GHC at all. It is a mere aggregation of different projects. Even binary distributions of GHC that include libgmp.a and statically link it into compiled code are not a problem. You may even use such GHC distributions to compile proprietary code and distribute it. All that is needed to make this legal is to (a) properly acknowledge the use of GMP in the code and (b) give users access to another version of the proprietary program that links GMP dynamically. Point (b) is sufficient to comply with Section 4(d) of the LGPL, which requires you to enable users to swap one version of GMP for another in a program that uses GMP. Manuel

Hello Manuel, Thursday, January 17, 2008, 7:49:00 AM, you wrote:
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
use of GMP in the code and (b) give users access to another version of the proprietary program that links GMP dynamically. Point (b) is sufficient to comply with Section 4(d) of the LGPL, which requires you to enable users to swap one version of GMP for another in a program that uses GMP.
how can i provide version of my ghc-compiled program that links GMP dynamically? especially on windows? -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Bulat Ziganshin wrote:
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
Manuel M T Chakravarty wrote:
..binary distributions of GHC that include libgmp.a and statically link it into compiled code... All that is needed to make this legal is to (a)... (b) give users access to another version of the proprietary program that links GMP dynamically.
Wow, I didn't realize that. Now I understand Bulat. In a project of any serious size and complexity, the use of static or dynamic linking is often architechted in and cannot be changed. So LGPL is really bad for a general purpose compiler like GHC. We've got to make GMP optional, or get rid of it. -Yitz

Yitzchak Gale wrote:
Bulat Ziganshin wrote:
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
Manuel M T Chakravarty wrote:
..binary distributions of GHC that include libgmp.a and statically link it into compiled code... All that is needed to make this legal is to (a)... (b) give users access to another version of the proprietary program that links GMP dynamically.
Wow, I didn't realize that. Now I understand Bulat. In a project of any serious size and complexity, the use of static or dynamic linking is often architechted in and cannot be changed.
(b) is a sufficient condition, but not necessary; there are other ways to satisfy the license. It's also possible to just distribute, for example, the .o file(s) and a way to link them with a GMP to get the final result; this doesn't even reveal your source-code any more than your program being dynamically linked, at least if you do it right -- right? ~Isaac

Hello Isaac, Thursday, January 17, 2008, 8:05:56 PM, you wrote:
(b) is a sufficient condition, but not necessary; there are other ways to satisfy the license. It's also possible to just distribute, for example, the .o file(s) and a way to link them with a GMP to get the final result; this doesn't even reveal your source-code any more than your program being dynamically linked, at least if you do it right -- right?
so, any commercial (closed-source) software written using GHC should be also provided in form of object files which can be linked with GMP to produce working executable -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Isaac Dupree wrote:
It's also possible to just distribute, for example, the .o file(s) and a way to link them with a GMP to get the final result; this doesn't even reveal your source-code any more than your program being dynamically linked, at least if you do it right -- right?
It doesn't matter. In a typical commercial development environment, you just don't have any control over that. At some companies I've gotten free software included in products in a way that required certain extra files from the 3rd party to be included inside our installation package - such as a source code tarball, GNU license, and such. It wasn't easy, but I've done it. But to change the way our own code is distributed - forget it. If you happen to be in a situation where the LGPL thing can be integrated as a dynamic library, fine. Otherwise, I don't see it. -Yitz

Hello Yitzchak, Thursday, January 17, 2008, 7:10:54 PM, you wrote:
Wow, I didn't realize that. Now I understand Bulat. In a project of any serious size and complexity, the use of static or dynamic linking is often architechted in and cannot be changed. So LGPL is really bad for a general purpose compiler like GHC. We've got to make GMP optional, or get rid of it.
things are even worse because we just don't have an option of dynamic GMP linkage (and i'm not sure whether it is possible taking into account that many GMP functions should be just inlined in GHC RTS and generated code to make things faster) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Yitzchak Gale:
Bulat Ziganshin wrote:
for me, GMP is much more problematic issue. strictly speaking, we can't say that GHC is BSD-licensed because it includes LGPL-licensed code (and that much worse, it includes this code in run-time libs)
Manuel M T Chakravarty wrote:
..binary distributions of GHC that include libgmp.a and statically link it into compiled code... All that is needed to make this legal is to (a)... (b) give users access to another version of the proprietary program that links GMP dynamically.
Wow, I didn't realize that. Now I understand Bulat. In a project of any serious size and complexity, the use of static or dynamic linking is often architechted in and cannot be changed. So LGPL is really bad for a general purpose compiler like GHC. We've got to make GMP optional, or get rid of it.
Well, I think you misunderstood what I was trying to say. My point is that the LGPL is *no* reason to worry. As Isaac wrote, there are a number of ways in which a vendor of a proprietary program can successfully work with LGPL'ed code. My proposal of providing a dynamically linked version of the software as an option is just one of these ways (which I think is especially easy to realise). Other ways include distributing the dynamically linked binary in the first place and providing access to .o file to link with a different version of the library (as Isaac outlined). BTW, when I write dynamically linked binary I mean a binary that links dynamically to the LGPL'ed code (ie, here GMP). All other libraries can still be linked statically. As a case in point for my argument, please consider Apple. Mac OS X contains a lot of GPL'ed and LGPL'ed code. Now you can argue that that's a simpler situation because it's a whole OS and many of the programs with GNU licenses are standalone, such as gcc. Now just for fun, go to your nearest Apple store, grab an ipod touch and have a look at its "Copyright" menu. There is lots of LGPL'ed code in there, too. I am sure they had a trillion lawyers making sure that they comply with the licence terms, so that the FSF is not going to come after them. Manuel

Thorkil Naur:
Hello,
On Tuesday 08 January 2008 15:07, Christian Maeder wrote:
Hi,
I've succeeded in building a binary distribution that uses static libraries for gmp and readline. libreadline.a, libncurses.a and libgmp.a with corresponding header files are included. (For license issues ask someone else.)
On http://gmplib.org/ we find:
"GMP is distributed under the GNU LGPL. This license makes the library free to use, share, and improve, and allows you to pass on the result. The license gives freedoms, but also sets firm restrictions on the use with non- free programs."
I have not attempted to check whether your distribution fulfills the requirements of the LGPL.
It does fullfil them. The source code of all components of the system is available enabling users to build the same software with a different version of GMP. That's all that the LGPL requires of software linked against a LGPL library.
Further, on http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html:
"Readline is free software, distributed under the terms of the GNU General Public License, version 2. This means that if you want to use Readline in a program that you release or distribute to anyone, the program must be free software and have a GPL-compatible license."
For your distribution to adhere to this, it appears to require GHC to have a GPL-compatible license. I don't believe it does.
It does. GHC's codebase is a mix of BSD3, LGLP, and GPL. They are perfectly compatible. See <http://www.fsf.org/licensing/licenses/index_html
.
Manuel
participants (5)
-
Bulat Ziganshin
-
Isaac Dupree
-
Manuel M T Chakravarty
-
Thorkil Naur
-
Yitzchak Gale