GNOME Bugzilla – Bug 83362
Incompatible licenses used in the GIMP
Last modified: 2009-08-15 18:40:50 UTC
As reported by Anthony DeRobertis in the Debian bug tracker, there are some files in the GIMP distributions that have copyright notices that require credits for the authors in the documentation (in this case, that would be the GIMP help files and maybe the README file). The Debian bug report #148412 can be found here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=148412 The following files are affected: ./gimp-1.2.1.in (Spencer Kimball, Peter Mattis) ./gimptool-1.2.1.in (Owen Taylor, Manish Singh) ./install-sh (M.I.T.) ./plug-ins/common/edge.c (Jef Poskanzer) ./plug-ins/common/gif.c (David Koblas) ./plug-ins/common/mail.c (CMU and Bellcore) ./plug-ins/common/nlfilt.c (Graeme W. Gill) ./plug-ins/common/tiff.c (Patrick J. Naughton) ./plug-ins/webbrowser/webbrowser.c (Netscape, Jamie Zawinski, Andreas Stolcke, Solbourne Computer) ./plug-ins/script-fu/interp_slib.c (Paradigm Associates, Inc.) ./tools/gimp-remote.c (Netscape, Jamie Zawinski) These licenses (old-style BSD with advertising clause) are generally not compatible with the GPL, so the files that contain these licenses and the GPL cannot be distributed at all! This issue is currently being discussed on the gimp-developer mailing list, but I am opening this bug report so that we can keep track of the problem.
For those who do not know why the old-style BSD license with advertising clause is incompatible with the GPL, Christian Rose posted this useful link to the gimp-developer mailing list: http://www.gnu.org/licenses/gpl-faq.html#TOCOrigBSD Basically, the advertising clause puts an additional restriction on the modifications that can be done to the software and its documentation, and the GPL does not allow that. By the way, another file affected by this conflict is: ./plug-ins/common/gifload.c
I was asked to check the plug-ins for lack of GPL a while ago, so that Sven and Mitch could ask the developers of these 1.2.x plug-ins to GPL them for a next release. I grepped my local version of stable CVS for the inclusion of the GPL, then examined all the remaining files to see under which license they are distributed. I will put the results of that work in the following three attachments.
Created attachment 8831 [details] authors involved
Created attachment 8832 [details] a list of plug-ins included with GIMP 1.2.2. that are not GPL'ed
Created attachment 8833 [details] Like the previous list, but sorted by problems for easier solving
The problem with most of the files mentioned in this bug report (especially for the plug-ins) is that the standard GPL copyright notice was added at the top of the files, but some part of the code contains a different license that is not compatible with the GPL. In other words, the GPL shouldn't have been added before contacting the original authors of the code, because these incompatibilities between the licenses makes it illegal to distribute these files. If we do not solve these conflicts in one way or another (either by contacting the authors of the borrowed code or by changing the license for these plug-ins), then we have to remove these files from the next release of the GIMP. This is rather serious, because now the problem is publicly know and we cannot simply ignore it...
Here is a short summary of the options that are available for each of the files mentioned above: * Contact the authors of the borrowed code (using the old BSD license) and ask them if their code can be re-licensed under the GPL or LGPL. * Replace these pieces of code with some other code that is compatible with the GPL. Some parts may have to be re-written from scratch. * Contact the authors of the plug-ins and ask them if their code can be re-licensed or dual-licensed under a BSD license instead of the GPL. Although this would weaken the protection on that code, this would make it possible to distribute the plug-ins legally (because there would be no conflict between the licenses). It must also be stated clearly in the GIMP documentation that these plug-ins are independent programs and that the GPL does not apply to the whole package. * Remove these files from the GIMP distribution. If they cannot be distributed legally, then we have to stop distributing them. This would be a rather serious problem for the Script-Fu interpreter. I do not think that we have any other options for solving this. Note that we cannot distribute 1.2.4 legally if we do not solve this problem.
As far as I'm concerned my gif/gifload changes can be relicensed however you like, from the presumption that it was S&P's original error in having erroneously GPL-licensed Koblas' code around 1995-ish, and it's that GPL-ing which needs reverting. Alternatively, I dug around for a fairly recent address of a likely-seeming person called David Koblas: koblas@excitecorp.com
I might have a solution of the GIF plug-in: I have some GIF load/save code that was written from scratch (for my old Doom level editor) and that is available under the GPL. Unfortunately, adapting it so that it fits in the GIF plug-in will probably take some time, and I will not be able to do that before mid-January. Anyway, it looks like you would be in favour of the third solution (re-licensing the plug-in code under a non-GPL license). Assuming that all those who have contributed to these plug-ins can be contacted and agree to change the license on the code that they have added, we would also have to announce this change of license to the GIMP distributors. So far, most of them state that the whole GIMP package is under the GPL. This would not be true anymore, so we would have to mention clearly that some plug-ins should be seen as independent programs, and the GIMP package is a "mere aggregate" of those parts.
I thought that GIMP always was an aggregate of its disparate parts. n.b. some distributions already make license distinctions (free/nonfree according to their specifications) between various parts of GIMP. The alternative de/compression plan sounds reasonable too, if you're up for the effort. I'm interested in whether every contributor would have to be contacted if the license were changed. I suspect that only authors who have copyright attributions need to be contacted (out of legality, that is, courtesy is another thing), but IANAL.
Raphael, can you point me to your code? I've integrated the GIF code out of GIMP into blib and would like to avoid licensing problems there. Perhaps I can switch to Raphaels code instead.
Yeah, come to think of it, I recall now that the GIMP gif code was used for GTK2's gdk-pixbuf gif loader. Fun. Actually I see that they credit me but not any other author; however from a quick browse, their LZW code doesn't immediately resemble gifload.c's, so that might not be a problem at all (Koblas' code was just the LZW-y part IIRC).
Unfortunately, I do not have the code here for the moment (FYI, it was written in 1995 by Ted Vessenes and myself for DEU). I have several copies of that code at home, but I will not be able to send it to you before the end of this month (and year) because I am leaving for a 10-days break without 'net access starting this evening. I will check if I kept a copy online somewhere, but I doubt it. Sorry. :-(
I've removed the wrong copyright licenses from the man-pages and Mitch and me have rewritten the affected parts of gimp-remote. These changes have been applied to both branches.
Attaching some mails about this to the bug report... Dave.
--- Sven, March 20th --- Hi, Raphaël Quinet <quinet@gamers.org> writes: > Well, yes this is a ridiculous bug. However, the license problems > are now publicly known. And there is a Debian bug report related to > that. So I assume that any distribution that is aware of these > issues and cares about being able to distribute packages legally > would consider this bug to be a blocker. Otherwise, they would be > liable in the (unlikely) case that some copyright holder complains > about the licenses. Not very likely, maybe, but some distributors > are probably taking these legal issues seriously. Well, we already took care about a couple of affected files. Let's look at the remaining files: plug-ins/common/edge.c This file has about 500 lines from which at least 400 are completely GIMP specific. The algorithm used boils down to a few lines and could probably be "discovered" by any high-school student who made his/her maths homework from time to time. I'd like to cite RMS here: "You don't need to worry about copyrights or licenses for just a few lines of code." plug-ins/common/gif.c This one is difficult since its a mix of some older code for which the license is not perfectly clear and lots of new code that has been added while this file lived in the GIMP source tree under a GPL license. Definitely a difficult choice with rather unpleasant consequences since other projects have long adapted this code under GPL and LGPL licenses. plug-ins/common/mail.c This plug-in contains a few lines that perform base64 encoding. The authors of this code should feel honored for being mentioned since anyone could take the base64 spec and rewrite this from scratch. plug-ins/common/nlfilt.c The algorithms here are not really trivial and it would make sense to try to contact the author. If he doesn't agree to relicense his code, we could just drop the plug-in. plug-ins/common/tiff.c I don't see where this plug-in uses any non-GIMP-specific code that is worth being mentioned. The TIFF file format is handled by libtiff and I doubt there's anything in this plug-in that can not be determined from reading the libtiff docs. plug-ins/webbrowser/webbrowser.c The algorithm used here is rather trivial and can be redone using the docs provided by Netscape. The original authors should feel honored for being mentioned. We want to get rid of this plug-in for GIMP-1.4 anyway. plug-ins/script-fu/interp_slib.c I'd rather not have to rewrite this one. But then we have always very clearly stated the source of the SIOD interpreter that runs Script-Fu. Just go and try 'gimp-1.3 -i -b -'. You will see the following lines: Welcome to SIOD, Scheme In One Defun, Version 3.2x 12-MAR-96 (C) Copyright 1988-1994 Paradigm Associates Inc. Help: (help) IMO this is exactly what the SIOD license asks for. I don't see any problems. Salut, Sven
--- Dave Neary (me), 11 May --- Sven Neumann wrote: > David Neary <bolsh@gimp.org> writes: > > I suggest pushing all these bugs, with the exception of bug > > #83362, to a target other than 1.2.4 (either 1.2.5, 1.2.x or > > CLOSED with WONTFIX). > > What do you think we should do about #83362 then? > (http://bugzilla.gnome.org/show_bug.cgi?id=83362) Well, obviously it's a blocker for 1.2.4 (Bugzilla says so :) - the question is how best to remove BLOCKER status from it. For the most part the problems are small, or don't really exist any more - it's mostly copyright messages that could be removed if we so felt like it, since the code to which the copyright applies no longer exists. But there are a couple of sticky ones which need addressing - namely, SIOD, nlfilter and gif. The way I see it, there are 3 solutions - 1) Accept that SIOD stays, and if repackagers want to distributee the GIMP as non-free, then so be it. Either copy gif code from another gpl program (say gif2png) or contact opriginal author for re-licencing, or add it as an exception. Contact nlfilter author for relicencing, or drop plug-in. If the contacts don't yielmd answers by the end of this week, we should make a decision. For the rest of the code, either acknowledge that there is code that needs relicencing, and get onto the people who did it, or declare that all the code that was taken from bsd licenced software was fairly trivial, and re-licence under GPL. For the most part, the latter should do. 2) Continue to delay the release of a bug-fix patch for the gimp until we have a new, fully tested scheme interpreter, and we can get in contact with anyone who ever wrote code for the gimp and didn't realise that the BSD advertising clause was incompatible with the GPL (even if they're now working a humanitarian aid worker in the Peru highlands who haven't looked at a computer since they wrote a gimp plug-in as their final year project). I think we should go for 1, send requests to relicence bits of borrowed code to GPL for the important bits, just declare ourselves compliant and relicence for the trivial bits, add SIOD as an exception to our GPL, and if we haven't gotten permission to relicence nlfilter by next Friday, drop it. If we haven't gotten permission to relicence gif, steal some gpl code. Or steal some GPL code now... In any case, I think that we should split it into 3 bugs, nlfilter, gif and SIOD licencing, and for the rest, just declare everything GPL. [snipping the rest - not relevant to this bug] Dave.
Just to add, I have sent mail to David Koblas (gif) at koblas@netcom.com, koblas@novoemdia.com, koblas@point.homepages.com, koblas@extra.com and koblas@excitecorp.com. A couple of those have bounced already - I expect that another couple will come back with time-outs in a few days. Hopefully one of them will get through. In the meantime, it seems that the copyright notice is in the wrong place. The Koblas code was for GIF decompression, which is done in gifload.c, not compression, which is done in gif.c - so hilariously enough, we're including the copyright notice somewhere it's not necessary, and it's not included in the file where it's obliged to be added. I have also sent mail to Eric L. HErnes (nlfilt) at erich@freebsd.org, erich@rrnet.com and erich@lodgenet.com - the freebsd and rrnet addresses have bounced already, and from what I can tell the lodgenet address is very old, so I wouldn't be too hopeful. Are there any other situations where a relicencing is required? Should this bug be split into bits? Cheers, Dave.
I have just sent a mail to Graeme Gill, who is the owner of the artistically licenced code in nlfilt. The rest of the code (from Eric L. Hernes) is BSD licenced. The consent of both would be needed to change the licence, even if the BSD bits are only the usual plug-in wrapper code around the algorithm. In addition, the following files in the 1.2 branch do not include the GPL notice (someone might like to add the notice if they care enough about it). for i in `find /usr/local/src/gimp-1.2 -name '*.[ch]' ` ; do grep General $i > /dev/null || echo $i; done ./app/authors.h ./app/boundaryF.h ./app/colormap_dialog.i.c ./app/colormap_dialog.i.h ./app/colormap_dialog.p.h ./app/colormap_dialog.t.h ./app/gdisplayF.h ./app/marching_ants.h ./app/paint_core_kernels.h ./app/pixmaps.h ./app/pixmaps2.h ./app/tile.c ./app/tile.h ./app/tile_cache.c ./app/tile_cache.h ./app/tile_pvt.h ./app/tile_swap.c ./app/tile_swap.h ./app/wilber.h ./app/unittest/globals.c ./app/unittest/unittest.h ./acconfig.h ./devel-docs/libgimp/libgimp-include.c ./plug-ins/FractalExplorer/Dialogs.c ./plug-ins/FractalExplorer/Dialogs.h ./plug-ins/FractalExplorer/Events.c ./plug-ins/FractalExplorer/Events.h ./plug-ins/FractalExplorer/FractalExplorer.h ./plug-ins/FractalExplorer/Globals.c ./plug-ins/FractalExplorer/logo.h ./plug-ins/FractalExplorer/pix_data.h ./plug-ins/Lighting/lighting_apply.c ./plug-ins/Lighting/lighting_apply.h ./plug-ins/Lighting/lighting_image.c ./plug-ins/Lighting/lighting_image.h ./plug-ins/Lighting/lighting_main.h ./plug-ins/Lighting/lighting_preview.c ./plug-ins/Lighting/lighting_shade.c ./plug-ins/Lighting/lighting_shade.h ./plug-ins/Lighting/lighting_ui.h ./plug-ins/MapObject/arcball.c ./plug-ins/MapObject/arcball.h ./plug-ins/MapObject/mapobject_apply.c ./plug-ins/MapObject/mapobject_apply.h ./plug-ins/MapObject/mapobject_image.c ./plug-ins/MapObject/mapobject_image.h ./plug-ins/MapObject/mapobject_main.h ./plug-ins/MapObject/mapobject_preview.c ./plug-ins/MapObject/mapobject_preview.h ./plug-ins/MapObject/mapobject_shade.c ./plug-ins/MapObject/mapobject_shade.h ./plug-ins/MapObject/mapobject_ui.h ./plug-ins/bmp/bmp.h ./plug-ins/common/CEL.c ./plug-ins/common/aa.c ./plug-ins/common/animationplay.c ./plug-ins/common/animoptimize.c ./plug-ins/common/autocrop.c ./plug-ins/common/edge.c ./plug-ins/common/emboss.c ./plug-ins/common/gbr.c ./plug-ins/common/gee.c ./plug-ins/common/gee_zoom.c ./plug-ins/common/nlfilt.c ./plug-ins/common/pat.c ./plug-ins/common/pcx.c ./plug-ins/common/spheredesigner.c ./plug-ins/common/tiff.c ./plug-ins/common/tiler.c ./plug-ins/common/waves.c ./plug-ins/common/zealouscrop.c ./plug-ins/faxg3/g3.c ./plug-ins/faxg3/g3.h ./plug-ins/faxg3/run_tbl.c ./plug-ins/fits/fitsrw.h ./plug-ins/fp/fp.h ./plug-ins/fp/fp_gdk.c ./plug-ins/fp/fp_gtk.c ./plug-ins/fp/fp_misc.c ./plug-ins/gap/gap_filter_codegen.c ./plug-ins/gfig/pix_data.h ./plug-ins/gimpressionist/about.c ./plug-ins/gimpressionist/brush.c ./plug-ins/gimpressionist/color.c ./plug-ins/gimpressionist/gimp.c ./plug-ins/gimpressionist/gimpressionist.c ./plug-ins/gimpressionist/gimpressionist.h ./plug-ins/gimpressionist/orientation.c ./plug-ins/gimpressionist/orientmap.c ./plug-ins/gimpressionist/paper.c ./plug-ins/gimpressionist/placement.c ./plug-ins/gimpressionist/plasma.c ./plug-ins/gimpressionist/ppmtool.c ./plug-ins/gimpressionist/ppmtool.h ./plug-ins/gimpressionist/presets.c ./plug-ins/gimpressionist/preview.c ./plug-ins/gimpressionist/repaint.c ./plug-ins/gimpressionist/size.c ./plug-ins/gimpressionist/sizemap.c ./plug-ins/imagemap/imap_cern_parse.h ./plug-ins/imagemap/imap_csim_parse.h ./plug-ins/imagemap/imap_ncsa_parse.h ./plug-ins/maze/maze.h ./plug-ins/mosaic/mosaic_logo.h ./plug-ins/perl/Gimp/Lib.c ./plug-ins/perl/Net/Net.c ./plug-ins/perl/acconfig.h ./plug-ins/perl/extradefs.h ./plug-ins/perl/gppport.h ./plug-ins/perl/perl-intl.h ./plug-ins/perl/ppport.h ./plug-ins/perl/UI/UI.c ./plug-ins/perl/embed/perlmod.c ./plug-ins/perl/po/cat-id-tbl.c ./plug-ins/perl/Gimp.c ./plug-ins/script-fu/interp_md5.c ./plug-ins/script-fu/interp_md5.h ./plug-ins/script-fu/interp_regex.c ./plug-ins/script-fu/interp_slib.c ./plug-ins/script-fu/interp_sliba.c ./plug-ins/script-fu/interp_trace.c ./plug-ins/script-fu/siod.h ./plug-ins/script-fu/siodp.h ./plug-ins/twain/twain.h ./plug-ins/winsnap/resource.h ./plug-ins/winsnap/winsnap.h ./po-libgimp/cat-id-tbl.c ./po-plug-ins/cat-id-tbl.c ./po-script-fu/cat-id-tbl.c ./tools/gcg/ex/file_ostream.i.c ./tools/gcg/ex/ostream.i.c ./tools/gcg/ex/strtest.c ./tools/gcg/db.c ./tools/gcg/fp.c ./tools/gcg/gcg.c ./tools/gcg/gcg.h ./tools/gcg/getopt.c ./tools/gcg/main.c ./tools/gcg/marshall.c ./tools/gcg/marshall.h ./tools/gcg/output.c ./tools/gcg/output.h ./tools/gcg/output_enum.c ./tools/gcg/output_flags.c ./tools/gcg/output_object.c ./tools/gcg/parse.h ./tools/gcg/pnode.c ./tools/gcg/pnode.h ./build/win32/dirent/dirent.c ./build/win32/dirent/dirent.h ./config.h
> In the meantime, it seems that the copyright notice is in the wrong > place. The Koblas code was for GIF decompression, which is done in > gifload.c, not compression, which is done in gif.c I was the one who split gif.c into gif.c and gifload.c and I assure you that the division was done in a hurry for political reasons and quite sloppy (improved over time) AND it has never been clear to me which code, precisely, came from David Koblas back in '95 or whenever it was, which is why his copyright block got split to both files. Additionally, the last time I remember attacking these plugins, his notice block was indeed on both plugins (I don't know why you say it's only on the wrong one, neither do I know on what information you base the suggestion that Koblas' code only covered decompression).
Apologies - I didn't mean to offend. I've had a look in the gifload file, and the Koblas notice is indeed there. I was basing the thing on the absence of gifload.c from the list of "dodgy" files above, without having looked. As to what exactly came from David Koblas, I went to Google. gd, for example, credits David Koblas for the gif decompression code it took from pbmplus, which in turn sources it to GIFDECOD. GIFENCODE, again used in pbmplus, is credited to David Rowley. Oh - and David Koblas :) Sorry for the confusion. When I said "hilariously", I meant that what I found hilarious is that we are getting so worked up over code which someone released and said "do what you want with it", and the possibility that we were getting worked up about a comment which I thought was on the wrong file, I found ironic. Cheers, Dave.
Hi Dave, thanks for the info. I didn't take any offense, I was just puzzled. :)
Below is the text of an email received from David Koblas. He has given his permission for the gif code to be relicenced GPL. Cheers, Dave. From: "David Koblas" <koblas at extra dotcom> To: "David Neary" <bolsh at gimp dot org> Subject: Re: GIF save routine copyright Date: Mon, 12 May 2003 10:02:47 -0700 X-Mailer: Microsoft Outlook Express 6.00.2720.3000 You found me... it's the extra.com address that's right. In general I have no issue with "relicensing the code", though I'm a little perplexed.. My original intent was to allow unlimited redistribution of the code and I belive that's what the copyright implies.. I would expect that any modification of my code would be subject to the copyright restrictions of the the author, not of the original code... But, heck I'm not a lawer... Is the intent to remove the copyright that is in gif.c and gifload.c, or to add a note stating that the code has be "licensed" under the GPL? --koblas > Hi David, > > A long time ago, in a galaxy far far away, you wrote some code to > write gif images. This code was released under an "artistic" type > licence - that is, free use for any purpose, as long as your > copyright notice was kept. > > That code went on to become the basis for the GIMP's gif loading > routine, and has been modified slightly over the years as teh > GIMP has evolved. Your copyright notice has also remained. > > Recently, someone pointed out that this licence is incompatible > with the GPL under which the GIMP is distributed. This is because > it places a limitation on what can be done with the source code > (it's silly, I know, to consider a comment source code, but the > GNU folks do). This poses a problem for us GIMP people, > unfortunately. In addition, since the GIMP is GPL, many other GPL > projects have "borrowed" our gif writing code. > > So finally I get to the point - I'm writing to ask your > permission to re-licence the existing gif writing code in the > GIMP to the GPL, allowing us to distribute it with eth GIMP. This > will save us, among other things, the job of re-writing some LZW > code from scratch. Your name will, of course, continue to be > included with the list of GIMP authors, as before. > > So, what do you say? May we relicence this code? > > For a look at what the code currently looks like, you can have a > look at > http://cvs.gnome.org/lxr/source/gimp/plug-ins/common/gif.c > > Thanks for your time, > Dave. > > -- > David Neary, > Lyon, France > E-Mail: bolsh at gimp dot org
Given this, would someone please add the GPL required stuff to the top of gif.c and gifload.c? I'm not sure I know exactly what needs adding. Cheers, Dave.
They're already GPL'd, the question was just whether that's actually okay with respect to compatability with Koblas' original license. All that's required then, I think, is to remove the block that's specific to Koblas' license (but keep his copyright notice out of respect). I don't mind doing that in 1.2.x and the HEAD, just say the word.
n.b. I don't think my last comment was clear enough, I meant that your successful research answers the question and all that we have to do is delete about 3 lines of comment from the two GIF plugins (we can ship right now as-is, but David Koblas' license block could cause future confusion if not amended).
Oh - they're already GPLed? Alright then... In that case, the word. Cheers, Dave.
By the way, to address the original comment of Raphael, I don't believe that the licence used in most of the questionable code could be called 'the original BSD licence", or anything like it for that matter. The advertising clause in the original BSD licence is a long spiel about how the copyright notice must be included with all materials including the program in question. There is no code that I've seen in the gimp released under such a licence. Cheers, Dave.
The problem that makes the original BSD license incompatible with the GPL is that it requires some statements to be added to the documentation of the program (i.e., not only in the code itself, but also in the printed material that could be distributed with the program). Although it is worded differently in the license statements included in the files mentioned above, the effect is the same as in the original BSD license. For example, here is the incompatible section in the license for gif.c: "[...] provided that [...] both that copyright notice and this permission notice appear in supporting documentation." Fortunately, we can remove that statement now, according to what David Koblas said. We should probably replace his copyright notice and permission notice by something like this: /* Some parts of this code were derived from some old code written */ /* by David Koblas. He has given us the permission to re-license */ /* his code under the GPL. Here is the original copyright notice: */ /* Copyright 1990, 1991, 1993, David Koblas. (koblas@netcom.com) */ /* His current e-mail address uses "extra" instead of "netcom". */
IANAL but I think that a license would already be incompatible with the GPL if it would require some statements such as the copyright notice and permission notice to be kept in the source files, not only in the documentation. But even if that point is debatable, there is no doubt about the incompatibility if the license requires something to be added to the documentation of the program. As explained by RMS and some other FSF folks, this would put an unacceptable burden on those who want to distribute some packages containing hundreds of programs using licenses requiring some credits in the documentation.
Can we please get those changes into CVS and out this discussion to an end?
Received this mail from Eric Hernes, allowing relicencing of his code under the GPL. Waiting on Graeme Gill to clear up all the issues with nlfilt. Subject: RE: NLFilt copyright notice Date: Tue, 13 May 2003 08:30:15 -0500 From: "Hernes,Eric" <Eric dot Hernes at lodgenet dotcom> To: "David Neary" <bolsh at gimp dot org> Hi David, Funny this should come up now... a week or so ago I downloaded a recent version of the gimp and was looking at the plugins, wondering if any of the stuff I did was being used by anyone. Anyway, in general, I'm not too crazy about the GPL, but in this case it will be ok. Also be aware that I only adapted the pnmnlfilt program for use as a gimp plugin, the algorithms and code that does the real work is not mine. The original authors of that code should probably be contacted as well. thanks, Eric -----Original Message----- From: David Neary [mailto:bolsh@gimp.org] Sent: Sunday, May 11, 2003 9:30 AM To: Eric L. Hernes Subject: NLFilt copyright notice Hi, As you know, a few years ago you wrote a plug-in for the GIMP called nlfilt. Recently, someone pointed out that your copyright notice (which is still included in the code) is incompatible with the GPL, under which the GIMP is packaged. This is because your licence poses restrictions on what can and cannot be done with the source (even if that condition only applies to a comment, which is IMHO a little ridiculous). In any case, this poses us something of a problem. The GIMP which we ship has, as policy, always insisted on shipping GPL code. nlfilt could still be distributed separately, but it would no longer be possible to ship is in the main GIMP package. I'm writing to you, therefore, to ask your permission that the files nlfilt.c and nlfilt.h in the GIMP (in both the 1.2 and 1.3 branches) be relicenced under the GPL. The net effect of this would be the removal of the advertising clause from teh top of these files, and an addition to the effect that the files are licenced under the GPL. Your name and your copyright would remain, and of course you would continue to be listed as an author of the GIMP in the file which holds that list. So, what do you say? Can we re-licence these files and keep them in the main GIMP distribution? Thanks for your time, Dave. -- David Neary, Lyon, France
I've amended the licenses for gif.c and gifload.c on the gimp-1-2 branch. These files fall under GIMP's default license now...
Okay, license-comments changed on HEAD too. If I've made things uncompilable then someone will have to tell me, tee hee.
Mail from George Carrette, author of SIOD. It doesn't authorise a licence change explicitly, but I have asked for a follow-up which will hopefully be clearer. Date: Tue, 13 May 2003 15:58:56 -0400 From: Gjcarrette@aol.com To: dneary@free.fr (David Neary) Subject: Re: SIOD licencing X-Mailer: Atlas Mailer 2.0 Yes, I would like to get the situation with GIMP fixed to your liking and mine. I am authoratative on SIOD licensing. For one thing, it sure would be nice if there was some more obvious reference in the GIMP manuals, especially printed documentation, that Script FU was an application of SIOD... Anyway, it would seem best to release SIOD with an LGPL. Stallman says that LGPL is good for things that are pretty much standard, not extremely unique things, and there are plenty of little lisp interpreters around today. (Not so many back in 1988 when SIOD was released). Now there is the technical issue. Does GIMP use SIOD in a standard way through the shared library libsiod.so? Or does it have its own private copy of SIOD with lots of files reworked etc? I think I know the answer, that GIMP has its own private reworked version of SIOD. Oh, well. Oh, a quesiton about the copyright holder. Does it have to be FSF? Or can it be LGPL with George J. Carrette?
Received a reply from Graeme Gill. Will attach it later, or tomorrow if I don't get a chance this evening. Basically, his original code had a copyright notice, but no licence. In any case, he has agreed that the licence may be changed to a GPL compatible one, but not to the GPL. He has attached a licence to put on his code. The only outstanding issue here is whether SIOD will be relicenced. It seems it will. Do we wait for that before closing this bug? Cheers, Dave.
Pasting mail from Graeme Gill... --------------------------------- Date: Thu, 15 May 2003 22:51:35 +1000 From: Graeme Gill <GraemeGill_SPANMOT@access.net.au> X-Mailer: Mozilla 4.73 [en] (WinNT; I) To: David Neary <dneary@free.fr> Subject: Re: Non-linear filter in the GIMP David Neary wrote: > A few years ago, you wrote some code to do non-linear filtering > of images. I guess you knew that already :) In that code, you > included an "advertising clause" - that is, a copyright notice > which must be included in the source any time it's used. I'm not sure what you mean. It's quite normal for copyright notices to insist that such notices not be deleted (thereby ensuring that the fact that there is a copyright is not obscured). The term "advertising clause" has been used to refer to the conditions on MIT derived copyright notices, where a condition of use is that the authors name or their employer not be used in the promotion of products that use the software without their permission. Is this what you mean ? (I had to remove a clause from this from the original icclib code for it to be included with Ghostscript). Another common clause (ie. the IJG JPEG library) is that acknowledgement be made to the use of the the software in any accompanying user documentation. In any case, doing a search on the web reveals the following uunet posting +<http://ftp.rge.com/pub/usenet/sources/comp.sources.misc/volume35/pnmnlfilt/par +t01.gz> and this contains no copyright statement. The source code at +<http://web.mit.edu/afs/athena/contrib/graphics/src/netpbm/pnm/pnmnlfilt.c> has a copyright notice, but not "advertising" clause. Searching through the archives of the machines I was using at the time, I can't find any statement in the source code referring to a copyright or "advertising" clause (all source code copies are very similar to the web.mit.edu reference above). I think that was the "form" for source code included in the pbm/pnm library at the time. I can only conclude that any such copyright notice has been added by someone else. > That code got included in the pnmnlfilt, and got used in the > non-linear plug-in for the GIMP afterwards. Ah! then there is some of my code in GIMP, even if none of the color code that it really should be making use of... > Someone recently pointed out that your original licence > (basically, an Artistic licence) is incompatible with some > people's interpretation of the GPL, under which the GIMP is > released. Given the facts above, it's hard to conclude this. > May we have permission to re-licence your code from pnmnlfilt to > the GPL, so that we can satisfy these people and continue to > include nlfilter in the main gimp distribution? The net effect of > this would be the replacement of your original "you may do whatever > you want, as long as you include this copyright notice" with a > message to the effect "Copyright 1993 <your name> This code is > made availmable under the GNU General Public Licence.". I'm not sure I see what the problem is. The GNU licence has similar requirements that the copyright notice be maintained. The licence I have included with the icclib library includes a similar clause, and (after modifying it slightly at their request), seems perfectly acceptable for inclusion in Ghostscript (and hence, I presume, compatible enough with the GNU licence.) As for changing the licence to the GNU licence, then no, I don't agree to this. The GNU licence is more restrictive that the original intent, and I don't wish people to be mislead that that pnmfilt code can only be distributed as long as source code is provided, when in fact it is a "free use" licence (like MIT or BSD). If you need a definitive copyright notice for this code, then I'm happy that the icclib one be used: ************************************************************************* Copyright (c) 1993 Graeme W. Gill Permission is hereby granted, to use, copy, modify, distribute, and sell this software and its associated documentation files (the "Software") for any purpose without fee, provided that: 1) The above copyright notices and this permission notice accompany all source code copies of the Software and related documentation. and 2) If executable code based on the Software only is distributed, then the accompanying documentation must acknowledge that "this software is based in part on the work of Graeme W. Gill". and 3) It is accepted that Graeme W. Gill (the "Author") accepts NO LIABILITY for damages of any kind. The Software is provided without fee by the Author "AS-IS" and without warranty of any kind, express, implied or otherwise, including without limitation, any warranty of merchantability or fitness for a particular purpose. and 4) These conditions apply to any software derived from or based on the Software, not just to the unmodified library. ************************************************************************* > Of course, you would continue to be the copyright holder to your > code, and would continue to be listed in the list of authors of > the GIMP. Your original code, released in pnmnlfilt, would stay > artistically licenced (but, of course, anyone would be able to > derive a GPL licenced copy from the GIMP code). This all seems a > little silly to me, but there are people who care about these > types of things. I'm not sure if it is different lawyers with different opinions, but I believe (from the Gostscript experience) the above should be OK, and isn't incompatible with the GNU licence. If this is still an issue, then let me know. Graeme Gill.
If this has passed the GPL test for ghostscript, I don't see how we could have any problems with it. Dave.
The "without fee" part in the above to my eyes looks like a GPL-incompatible restriction. Possibly also a problem for distributors that want to sell boxes. In any case, I think a standard license (be it the revised BSD one or any other documented GPL-compatible one) is much preferrable to a more "unique" one like the above. Unless we have legal expertize that can analyze the compatibility with the GPL and other implications of the above.
I understand that "without fee" means "without paying a fee to the author"; otherwise why would the heading say "Permission is hereby granted, to [...] sell this software..."?
The wording of this license is a bit vague (e.g. meaning of "only" in clause 2) and it would have been better if clause 4 would refer to "any substantial portions of this code" instead of "any software derived from...". But it seems to be GPL-compatible. I checked the list at: http://www.gnu.org/licenses/license-list.html and the requirement in clause 2 of this license is similar to what is found in Zope Public License v2.0, for example. The "without fee" part is not a problem, as Pedro explained in the previous comment. So it looks like this part of the problem is solved. Dave, I suggest that you commit the new license in CVS (both branches). The new license should only appear in the part of the file that contains Graeme Gill's code but the top of the file should still refer to the GPL, of course. In the future, when we have bugs covering multiple files that may have to be tracked individually, I suggest that any discussion that spawns more than a couple of comments be moved to a separate bug report. The new bug report would then be marked as a blocker for this one. This would be similar to the tracking bug #70335.
Attaching a mail from George Carrette which clarifies his licencing position for SIOD. If someone is able to answer his technical questions, they're more than welcome. ------------------------- From: Gjcarrette at aol dot com Date: Fri, 16 May 2003 07:10:12 EDT Subject: Re: SIOD licencing To: dneary at free dot fr X-Mailer: 8.0 for Windows sub 6011 I'll combine the technical and licensing issues together in this message about "what I would like to do." (1) upload SIOD to sourceforge.net (2) put it under LGPL (3) package RPM's etc, building gnu autoconfig, especially libconfig (4) see how packages like GIMP could make use of shared library libsiod.so As far as how SIOD is packaged inside GIMP now, I did observe that GIMP has a "help/about" kind of box, that has some authorship information, but failed to mention my contribution of SIOD to script fu. I think that once I do step (1) and (2) that GIMP would pretty much be covered. I am interested in what technical and practical reasons led the GIMP authors to repackage SIOD into different source files. Maybe there were some hooks they needed as well as purely cosmetic reasons.
nlfilter licence changed in HEAD and in 1.2 branch: 2003-05-16 Dave Neary <bolsh@gimp.org> * plug-ins/common/nlfilt.c: Changed licence for Graeme Gill's code in this filter. Fixes part of bug #83362.
As agreed earlier in this bug report, I have removed the offending parts of permission notices which applied to either very small portions of code, or to code which appears to no longer share a common root with the original licenced code. I have, as is noremal, left existing copyright notices in place. Dave. 2003-05-16 Dave Neary <bolsh@gimp.org> * plug-ins/common/edge.c * plug-ins/common/tiff.c * plug-ins/common/mail.c * plug-ins/webbrowser/webbrowser.c: Removed GPL conflicting parts of permission notices on these files, in line with what has been said in bug #83362.
So - what do we do about SIOD? Dave.
I've added George Carrette's name to the contributors list. Should add the SIOD banner to to the batch mode startup and script-fu console and be good for now I think.
Should we include SIOD as an exception to our GPL? Or just close this and get back to writing software? Cheers, Dave.
Oh - as a side note, George Carrette has expressed an interest in getting involved in the GIMP to get it using siod.so, which would presumably also result in the scheme interpreter becoming commoditised. That is, if there's only gimp specific code left in script-fu, plugging in an alternative scheme interpreter wouldn't seem too difficult. Cheers, Dave.
I'd say we do as Yosh suggested. In gimp-1.3 the SIOD banner is already shown in batch-mode: neo@blixa:~$ gimp-1.3 -i -b - Welcome to SIOD, Scheme In One Defun, Version 3.2x 12-MAR-96 (C) Copyright 1988-1994 Paradigm Associates Inc. Help: (help) We should do the same in 1.2 and add the same text to the Script-Fu console as well.
Fair enough. I could do that, but someone who knew their way around script-fu better than me might be able to do it quicker. I will probably have no gimp time until Wednesday, and since this is the only thing left in the way of 1.2.4, it'd be nice to get it done before then. Cheers, Dave.
Bumped to 1.2.5. Will close when SIOD has been officially relicensed as LGPL.
It turns out that the SIOD licence is GPL compatible, and we've been worrying over nothing. Attaching a mail from the FSF licence guys. Closing this as fixed. Subject: Re: [gnu.org #33077] GIMP licensing issue From: "John S Costello via RT" <licensing at fsf dot org> To: dneary at free dot fr,bolsh at gimp dot org Date: Tue, 20 May 2003 08:24:54 -0400 > Permission to (1) use, copy, modify, distribute and sell this software > and its documentation for any purpose and without fee is hereby > granted, provided that (2) the above copyright notice appear in all copies > and that both that copyright notice and (3) this permission notice appear > in supporting documentation, and that the name of (4) Paradigm Associates > Inc not be used in advertising or publicity pertaining to distribution > of the software without specific, written prior permission. Yes, this is GPL-compatible. (1) provides the appropriate grant of rights. (2) would be forbidden by copyright law anyway, (3) is a reasonable request because without the inclusion of the license it wouldn't be clear you had the right to use the code, and (4) would presumably be forbidden because "Paradigm Associates" is their trademark. If you don't change these sources at all, you could just include this notice in the source and documentation (along with the statement "Portions copyright by ..."). If you change these sources, you could put your copyright at the top of the source file ("Portions copyright by <your name here>") along with your GPL notice, followed by their copyright statement and license. -- John -- John S Costello jsac at math dot arizona dot edu ______________________________________________________________________________ "The devil is an optimist if he thinks he can make people meaner." -- Karl Kraus
The fix is part of the stable release 1.2.5 (partially in 1.2.4). Closing this bug.