From: Konstantin S. <st...@me...> - 2006-09-06 11:48:10
|
Hello, I have a question regarding MinGW and licensing issues. We have been modifying a C program that is available under the BSD license (with the advertising clause). The license (including the abnoxious advertisement clause) has been adapted by another party, so it does not fall under the blanket lifting of the advertising clause done by Berkeley. Since most of our modifications are done within the C source code files that the authors of the original version wrote, I am aware of the fact that we can only redistribute these modifications under the author's above-mentioned license. Now, in order for the program to be available under Windows - and also distributable as .exe - we used MinGW-gcc. Our extension of the program needs the files hsearch.c and lsearch.h (with hash table functionality), Copyright (c) 1993-2000 FSF, which are part of the GNU C Library and licensed under the GNU Lesser (Library) General Public License, for compilation of our program. These files are included with Unix installations that include gcc (so there is no problem here) - however they are not available with MinGW-gcc. So, for the MinGW version, these two files need to be added by hand to the collection of source code files for a successful compilation. I know that the _GPL_ is not compatible with the original BSD license, but the _LGPL_ _is_ compatible? (correct?) That means if we create an .exe of our program with MinGW-gcc, we are (because of the license compatibility) actually allowed to use the files hsearch.c and lsearch.h for compilation if we redistribute the resulting .exe of our program? Further, do we have to provide the files hsearch.c and lsearch.h as source code with the distribution? What about the LGPL text? Thanks in advance for any help, Konstantin |
From: Keith M. <kei...@to...> - 2006-09-06 13:12:41
|
Konstantin Strauch wrote: > Now, in order for the program to be available under Windows - and > also distributable as .exe - we used MinGW-gcc. Our extension of > the program needs the files hsearch.c and lsearch.h (with hash > table functionality), Copyright (c) 1993-2000 FSF, which are part > of the GNU C Library and licensed under the GNU Lesser (Library) > General Public License, for compilation of our program. Since you've presumably already adapted those to work with MinGW, we could consider packaging them as an optional, LGPL licensed add-on for MinGW, much as I did with my GPL licensed `exec/spawn' function wrappers. That way, they become available as a MinGW supported add-on, for any user who may need them, and who can accept the licence. You could also bundle that extra package with your own distribution, so that by configuring, say `--with-included-hsearch', it can be automatically seen as installed, and your project builds just as it would on *nix. > Further, do we have to provide the files hsearch.c and lsearch.h > as source code with the distribution? As a MinGW optional add-on, I would distribute as a source package in any case, possibly backed up by a mingwPORT to facilitate both building and installation, for users who may prefer that format. > What about the LGPL text? It can never hurt to include this; you'd need to study the licence for yourself, but I think it would be mandatory. Regards, Keith. |
From: Earnie B. <ea...@us...> - 2006-09-06 13:27:09
|
Quoting Konstantin Strauch <st...@me...>: > for a successful compilation. I know that the _GPL_ is not compatible > with the original BSD license, but the _LGPL_ _is_ compatible? (correct?) > That means if we create an .exe of our program with MinGW-gcc, we are > (because of the license compatibility) actually allowed to use the files > hsearch.c and lsearch.h for compilation if we redistribute the resulting > .exe of our program? > > Further, do we have to provide the files hsearch.c and lsearch.h as source > code with the distribution? What about the LGPL text? > I suggest you segregate hsearch.c and lsearch.h into a separate library package. This way the LGPL will apply to only that library. The LGPL will allow you to use that library with your BSD licensed package without forcing the GPL license. If you mix the hsearch.c coding into your BSD package then the package needs to be licensed under the GPL. Segregating hsearch.c into a separate library also requires that you only supply the source for that library. Earnie Boyd http://shop.siebunlimited.com |
From: Konstantin S. <st...@me...> - 2006-09-06 15:30:33
|
> > Now, in order for the program to be available under Windows - and > > also distributable as .exe - we used MinGW-gcc. Our extension of > > the program needs the files hsearch.c and lsearch.h (with hash > > table functionality), Copyright (c) 1993-2000 FSF, which are part > > of the GNU C Library and licensed under the GNU Lesser (Library) > > General Public License, for compilation of our program. Keith wrote: > Since you've presumably already adapted those to work with MinGW, > we could consider packaging them as an optional, LGPL licensed > add-on for MinGW, much as I did with my GPL licensed `exec/spawn' > function wrappers. That way, they become available as a MinGW > supported add-on, for any user who may need them, and who can > accept the licence. hsearch.c and lsearch.h were simply taken from unix-gcc. With these, our program compiled fine, no adaptation was necessary. - Of course it would be good to have an optional LGPL-licensed package with hsearch.c and lsearch.h for MinGW. I can provide the versions of the files I have, if this is of help. Keith wrote: > You could also bundle that extra package with your own distribution, > so that by configuring, say `--with-included-hsearch', it can be > automatically seen as installed, and your project builds just as it > would on *nix. I understand this as providing e.g. two different .zip files, one with my project and the other just with hsearch.c and lsearch.h, and e.g. `--with-included-hsearch' supposedly an option of my project builder, i.e., Makefile (correct?). Since I want to provide a Windows/MinGW- specific version, I would not even need the --with-included-hsearch option - it would be the default. Earnie wrote: > I suggest you segregate hsearch.c and lsearch.h into a separate library > package. This way the LGPL will apply to only that library. The LGPL > will allow you to use that library with your BSD licensed package > without forcing the GPL license. If you mix the hsearch.c coding into > your BSD package then the package needs to be licensed under the GPL. > Segregating hsearch.c into a separate library also requires that you > only supply the source for that library. I am confused by your statment - why should combining the two _LGPL_-licensed files with the _BSD_ licensed package force the _GPL_ license? - The GNU webpage on licenses http://www.gnu.org/licenses/license-list.html says about the GNU LGPL: "This is a free software license, but not a strong copyleft license, because it permits linking with non-free modules." > > Further, do we have to provide the files hsearch.c and lsearch.h > > as source code with the distribution? Keith wrote: > As a MinGW optional add-on, I would distribute as a source package > in any case, possibly backed up by a mingwPORT to facilitate both > building and installation, for users who may prefer that format. Admittedly I am not expert enough to create a mingwPORT... My main intention basically is the following. With my software package, I would like to provide an executable for Windows. Most of the users of my program never used MinGW nor Cygwin nor Unix nor possibly a compiler; I just want users to download the program for Windows and run it without bother - particularly without needing Cygwin.dll, that is why I use MinGW. So I want to give users the .exe, taking the burden of compilation away from them. I created the .exe with MinGW - which only worked by adding hsearch.c and lsearch.h. It would be enough for me just to provide this .exe along with my program documentation (and possibly the source code of my program for convenience). So, (1) can I distribute the .exe? Further, (2) do I _have_ to also provide hsearch.c and lsearch.h as source code? I (and definitely most of the users) would be fine without including the two files in the distribution. - My questions arise simply because I do not want to get into trouble with the licenses. Can your above suggestions practically be interpreted like this - I need to provide two .zip files for download, one with the executable (.exe) and possibly the source code of my program, and one containing the hsearch.c and lsearch.h source code files (where the second one is not needed by simple users but only those who want to further develop the program with MinGW) ? Thanks, Konstantin |
From: Rene R. <gra...@gm...> - 2006-09-06 17:15:18
|
Konstantin Strauch wrote: > It would be enough for me just to provide this > .exe along with my program documentation (and possibly the source code of > my program for convenience). So, (1) can I distribute the .exe? Further, > (2) do I _have_ to also provide hsearch.c and lsearch.h as source code? I > (and definitely most of the users) would be fine without including the two > files in the distribution. - My questions arise simply because I do not > want to get into trouble with the licenses. IANAL, and hence you should really consult with a lawyer, only then can you get an answer you can rely on. But, for GPL *any* distribution *must* make available full sources for *all* components such that users can recompile your program. For LGPL *any* distribution *must* make available full sources for the *LGPL* components such that users can relink your program, either statically or dynamically. So for LGPL you have to make available your compiled components + shared libraries, or your compiled components in object form (*.o files) plus sources for LGPL parts. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo |
From: Keith M. <kei...@to...> - 2006-09-07 13:01:21
|
Konstantin Strauch wrote, quoting me: >> You could also bundle that extra package with your own distribution, >> so that by configuring, say `--with-included-hsearch', it can be >> automatically seen as installed, and your project builds just as it >> would on *nix. > > I understand this as providing e.g. two different .zip files, one with > my project and the other just with hsearch.c and lsearch.h, Ok, here's how I would do it, with *three* distributable files:-- 1) A source tarball, (or zip if you prefer), providing just the hsearch functionality. That would obviously contain the `hsearch.c' and the `lsearch.h' source files, and I'd also add, (at least), a README to explain why you're providing it, and how to build `hsearch.o' from the included source, a `Makefile' which will create that `hsearch.o' target, a `COPYING' file explaining the licensing terms and the usual exclusion of warranty, and an `LGPL' file containing the verbatim and unmodified text of the LGPL. 2) A second source tarball, (or zip), providing the BSD licensed source of your own project. I'd also include a README, in which you explain how to build your project, and pointing out the need to also get the `hsearch' source, if building with MinGW, (or indeed, in any other situation where that isn't already available on the host platform). 3) Your prebuilt executable package, as a zip, self-extracting zipped.exe, or tarball, as you prefer. Now, upload these three to the same public host, and leave the end users to choose what they download. Note that the GPL/LGPL don't require you to actually distribute source along with binary packages; the requirement is that you offer to provide it on demand, and that you can subsequently honour any such demand. By making the source and binaries separately available from the same public host, you satisfy that obligation, even if the majority of users never either ask for, or acquire the source. > and e.g. `--with-included-hsearch' supposedly an option of my project > builder, i.e., Makefile (correct?). Well, `--with-included-hsearch' would more typically be a `configure' script option, rather than something directly provided by the `Makefile'. You may not want that at this stage in your project's life cycle. > Since I want to provide a Windows/MinGW-specific version, I would not > even need the --with-included-hsearch option - it would be the default. Yes, that is true. However, if you ever did want to port your project to UNIX, you may not want to maintain separate development systems for UNIX and Windoze; typically, you would maintain a single integrated source tree, and provide a configure script with Makefile templates. The configure script would then generate working Makefiles from the templates, to suit the eventual distributor's build environment. Of course, if your requirements are simple, you may find it acceptable to just provide pre-configured Makefiles, separately maintained for each platform you expect to support. While that seems like a simple option, it may become unwieldy as the number of supported platforms grows, and the complexity of the dependencies increases. Regards, Keith. |
From: Keith M. <kei...@to...> - 2006-09-07 15:30:48
|
Konstantin Strauch wrote, quoting me: >> Since you've presumably already adapted those to work with MinGW, >> we could consider packaging them as an optional, LGPL licensed >> add-on for MinGW, much as I did with my GPL licensed `exec/spawn' >> function wrappers. That way, they become available as a MinGW >> supported add-on, for any user who may need them, and who can >> accept the licence. > > hsearch.c and lsearch.h were simply taken from unix-gcc. With these, > our program compiled fine, no adaptation was necessary. I find this puzzling. I've just had a quick look in glibc CVS where, in the `misc' directory, I see: hsearch.c hsearch_r.c lsearch.c search.h but there is no `lsearch.h'. All three of these `*.c' sources #include `search.h', which introduces a further dependency on `features.h', and that is also missing from a standard MinGW setup. Additionally, `hsearch.c' defines three functions, `hcreate', `hsearch' and `hdestroy', all of which are simple wrappers for re-entrant versions of the same three, defined in `hsearch_r.c'. Thus, to provide a MinGW implementation of just the GNU `hsearch' capability, would require me to source *at* *least* `search.h', `features.h', `hsearch.c' and `hsearch_r.c', plus any additional dependencies they may add. This doesn't seem to match your experience. > Of course it would be good to have an optional LGPL-licensed package > with hsearch.c and lsearch.h for MinGW. I can provide the versions of > the files I have, if this is of help. It would certainly be interesting to compare your sources to the GNU implementations, before making any decision regarding the creation of a MinGW package. Regards, Keith. |