GNOME Bugzilla – Bug 463248
Goffice contains GPL version2 only files
Last modified: 2012-03-28 00:25:09 UTC
HI, First let me start by introducing myself, I'm a linux enthousiast / developer and a Fedora contributer. I maintain the goffice package for Fedora. Currently we are doing a licensing audit of all our packages (what a pain) because of the coming of GPL version 3. GPL version 3 causes problems, because a GPL program may only use (L)GPL libs under the same version of the GPL as the program itself. So once the C-library becomes GPL version 3 (if it will ever) all GPL v2 or higher programs automatically become GPL3 too and GPL version 2 only programs can not be distributed. This brings me to the reason for writing this mail, I've checked goffice-0.2.2 and several files contain copyright headers without the "or (at your option) any later version" language. I hope that this can be remedied, as this could be a problem in the future.
The current state of affairs is as listed below. Anyone who owns (== wrote all the code) of these files, please change to gpl v2+. Sample language to use is in ./goffice/gtk/go-rotation-sel.c ./goffice/app/error-info.c: No stated license ./goffice/app/file.c: No stated license ./goffice/app/go-cmd-context.c: No stated license ./goffice/app/go-doc.c: GPL v2 only ./goffice/app/go-doc-control.c: GPL v2 only ./goffice/app/go-object.c: GPL v2 only ./goffice/app/go-plugin.c: No stated license ./goffice/app/go-plugin-loader.c: No stated license ./goffice/app/go-plugin-loader-module.c: No stated license ./goffice/app/go-plugin-service.c: No stated license ./goffice/app/go-service.c: No stated license ./goffice/app/io-context.c: No stated license ./goffice/component/go-component.c: GPL v2 only ./goffice/component/go-component-factory.c: GPL v2 only ./goffice/cut-n-paste/foocanvas/foo-canvas-marshal.c: No stated license ./goffice/data/go-data.c: GPL v2 only ./goffice/data/go-data-simple.c: GPL v2 only ./goffice/goffice.c: GPL v2 only ./goffice/graph/gog-axis.c: GPL v2 only ./goffice/graph/gog-axis-line.c: GPL v2 only ./goffice/graph/gog-chart.c: GPL v2 only ./goffice/graph/gog-chart-map.c: GPL v2 only ./goffice/graph/gog-child-button.c: GPL v2 only ./goffice/graph/gog-control-foocanvas.c: GPL v2 only ./goffice/graph/gog-data-allocator.c: GPL v2 only ./goffice/graph/gog-data-set.c: GPL v2 only ./goffice/graph/gog-error-bar.c: GPL v2 only ./goffice/graph/gog-graph.c: GPL v2 only ./goffice/graph/gog-grid.c: GPL v2 only ./goffice/graph/gog-grid-line.c: GPL v2 only ./goffice/graph/gog-label.c: GPL v2 only ./goffice/graph/gog-legend.c: GPL v2 only ./goffice/graph/gog-object.c: GPL v2 only ./goffice/graph/gog-object-xml.c: GPL v2 only ./goffice/graph/gog-outlined-object.c: GPL v2 only ./goffice/graph/gog-plot.c: GPL v2 only ./goffice/graph/gog-plot-engine.c: GPL v2 only ./goffice/graph/gog-reg-curve.c: GPL v2 only ./goffice/graph/gog-renderer.c: GPL v2 only ./goffice/graph/gog-series.c: GPL v2 only ./goffice/graph/gog-smoothed-curve.c: GPL v2 only ./goffice/graph/gog-style.c: GPL v2 only ./goffice/graph/gog-styled-object.c: GPL v2 only ./goffice/graph/gog-theme.c: GPL v2 only ./goffice/graph/gog-trend-line.c: GPL v2 only ./goffice/graph/gog-view.c: GPL v2 only ./goffice/gtk/go-action-combo-color.c: GPL v2 only ./goffice/gtk/go-action-combo-pixmaps.c: GPL v2 only ./goffice/gtk/go-action-combo-stack.c: GPL v2 only ./goffice/gtk/go-action-combo-text.c: GPL v2 only ./goffice/gtk/go-color-group.c: LGPL v2 only ./goffice/gtk/go-color-palette.c: LGPL v2 only ./goffice/gtk/go-color-selector.c: LGPL v2 only ./goffice/gtk/go-combo-box.c: LGPL v2 only ./goffice/gtk/go-combo-color.c: LGPL v2 only ./goffice/gtk/go-combo-pixmaps.c: LGPL v2 only ./goffice/gtk/go-combo-text.c: No stated license ./goffice/gtk/go-dock-item-grip.c: No stated license ./goffice/gtk/goffice-gtk.c: GPL v2 only ./goffice/gtk/go-font-sel.c: No stated license ./goffice/gtk/go-gradient-selector.c: GPL v2 only ./goffice/gtk/go-line-selector.c: GPL v2 only ./goffice/gtk/go-marker-selector.c: GPL v2 only ./goffice/gtk/go-palette.c: GPL v2 only ./goffice/gtk/go-pattern-selector.c: GPL v2 only ./goffice/gtk/go-pixbuf.c: GPL v2 only ./goffice/gtk/go-selector.c: GPL v2 only ./goffice/math/go-complex.c: No stated license ./goffice/math/go-cspline.c: GPL v2 only ./goffice/math/go-fft.c: No stated license ./goffice/math/go-math.c: No stated license ./goffice/math/go-rangefunc.c: No stated license ./goffice/math/go-regression.c: No stated license ./goffice/ms-compat/god-drawing-ms.c: LGPL v2 only ./goffice/ms-compat/go-ms-parser.c: LGPL v2 only ./goffice/utils/datetime.c: No stated license ./goffice/utils/formats.c: No stated license ./goffice/utils/go-cairo.c: GPL v2 only ./goffice/utils/go-file.c: GPL v2 only ./goffice/utils/go-font.c: GPL v2 only ./goffice/utils/go-format.c: GPL v2 only ./goffice/utils/go-geometry.c: GPL v2 only ./goffice/utils/go-glib-extras.c: No stated license ./goffice/utils/go-gradient.c: GPL v2 only ./goffice/utils/go-image.c: GPL v2 only ./goffice/utils/go-libxml-extras.c: No stated license ./goffice/utils/go-line.c: GPL v2 only ./goffice/utils/go-locale.c: GPL v2 only ./goffice/utils/go-marker.c: GPL v2 only ./goffice/utils/go-marshalers.c: No stated license ./goffice/utils/go-pango-extras.c: No stated license ./goffice/utils/go-path.c: GPL v2 only ./goffice/utils/go-pattern.c: GPL v2 only ./goffice/utils/go-undo.c: No stated license ./goffice/utils/regutf8.c: No stated license ./plugins/plot_barcol/gog-1.5d.c: GPL v2 only ./plugins/plot_barcol/gog-barcol.c: GPL v2 only ./plugins/plot_barcol/gog-barcol-prefs.c: GPL v2 only ./plugins/plot_barcol/gog-dropbar.c: GPL v2 only ./plugins/plot_barcol/gog-line.c: GPL v2 only ./plugins/plot_barcol/gog-minmax.c: GPL v2 only ./plugins/plot_boxes/gog-boxplot.c: GPL v2 only ./plugins/plot_boxes/gog-histogram.c: GPL v2 only ./plugins/plot_pie/gog-pie.c: GPL v2 only ./plugins/plot_pie/gog-pie-prefs.c: GPL v2 only ./plugins/plot_radar/gog-radar.c: GPL v2 only ./plugins/plot_surface/gog-contour-prefs.c: GPL v2 only ./plugins/plot_surface/gog-surface.c: GPL v2 only ./plugins/plot_surface/xl-surface.c: GPL v2 only ./plugins/plot_xy/gog-bubble-prefs.c: GPL v2 only ./plugins/plot_xy/gog-xy.c: GPL v2 only ./plugins/reg_linear/gog-exp-reg.c: GPL v2 only ./plugins/reg_linear/gog-lin-reg.c: GPL v2 only ./plugins/reg_linear/gog-log-reg.c: GPL v2 only ./plugins/reg_linear/gog-polynom-reg.c: GPL v2 only ./plugins/reg_linear/gog-power-reg.c: GPL v2 only ./plugins/reg_logfit/gog-logfit.c: GPL v2 only ./plugins/smoothing/gog-exp-smooth.c: GPL v2 only ./plugins/smoothing/gog-moving-avg.c: GPL v2 only ./plugins/smoothing/plugin.c: GPL v2 only
For the record, we have blanket permissions from Morten Welinder <terra@gnome.org> Jean Brefort <jean.brefort@normalesup.org>
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. J.H.M. Dassen (Ray) <jdassen@debian.org>
+1 jody@gnome.org
I hereby permit relicensing my contributions to goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Emmanuel Pacaud <emmanuel.pacaud@lapp.in2p3.fr>
We have blanket permission from Ivan Wong too.
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Jon Kåre Hellan <hellan@acm.org>
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer.
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Eduardo Lima <eduardo.lima@indt.org.br>
Ximian made a conscious decision at its foundation that any work that went into our contributions would be GPL version 2 only (this was influenced at the time by discussions on the Linux kernel forums at the time). Which would cover the work did on Gnumeric that Jody did while employed at Ximian, and this would cover my code before I stopped working on it. It is possible to contact the Novell lawyers to figure whether this could be done, but having gone through a relicensing myself (GPL to X11) I know that this will be a long process, but of course, we also need to understand why this change is necessary.
Miguel: I was specifically asking for code marked with a copyright for you personally. There is very little Ximian code left and the little there is has been (functionally) included in gtk+ since. We can replace that with fairly thin wrappers. The basic problem is that distributions are voicing concerns that when some library -- glibc or glib/gtk+ -- goes lgpl3, then they might not be able to distribute a gpl2-only program. (I do not actually see the problem as long as we _can_ run dynamically linked against a gpl2 version on the library whether or not the general user choses to _do_ so. In that situation we are not a derived product of the gpl3 library at distribution time.) Miguel: it would make sense for Novell to look into this in Evolution context. If gtk+ goes gpl3, will Novell stop distributing Evolution? (There is at least one non-Novell copyright holder for Evolution code.)
Morten, Derivative work (the result of heavy refactoring) continues to be derivative work, regardless if its bears any resemblance to the original code, unless it was written from scratch with no orgranic growth. If thats how that code was written, then that would address that issue, if its an evolution of the software, then it would continue to be covered by the original copyright holder's license. Any code after October 1999 was owned by Ximian. As for any code before October 1999, I still do not understand the reason for the "or later" clause. I still do not understand the first scenario presented, do you have information about this incompatibility of LGPLv3 with GPLv2 software? This seems odd, and I find it surprising. Additionally, this is the first time that I heard that Gtk+ is going to LGPLv3, is that a reality, or is this merely an hypothetical scenario? The "or later" is problematic, going to "GPL v2 or GPL v3" is easier to get approval for than a blanket statement for "or later".
"continues to be derivative work, regardless if its bears any resemblance to the original code" Not in the US. The broadest view of what is a derivative work is the abstraction-filtration-comparison test. If, at the end, it does not compare to the work things were copied from, it is not a derivative work. http://www.linux.com/articles/113252 Hans de Goede: could you please present the case for the need of gplv2+?
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Andreas J. Guelzow <aguelzow@pyrshep.ca> (earlier contributions may have been identified witht eh e-mail address <aguelzow@taliesin.ca>)
Miguel: re gtk+, there has been a request to go gpl3+: http://mail.gnome.org/archives/gtk-devel-list/2008-March/msg00055.html It seems it will not happen until (the hypothetical) gtk+ 3, if at all.
That document that you linked states that: "Therefore, one is left to ask, just what is a "derivative work?" The answer to that question depends on which court is being asked. The analysis below sets forth the differing definitions of derivative work by U.S. Circuit Court.[ii] The broadest and most established definition of derivative work for software is the abstraction, filtration, and comparison test ("the AFC test") as created and developed by the Second Circuit. Some Circuits, including the Ninth Circuit and the First Circuit, have either adopted narrower versions of the AFC test or have expressly rejected the AFC test in favor of a narrower standard. Further, several other Circuits have yet to adopt any definition of derivative work for software. " That does not sound like a 100% clear statement, and the rest of the document is far from giving a black and white answer.
(In reply to comment #13) > Hans de Goede: could you please present the case for the need of gplv2+? > Okay, A GPL licensed application may only be distributed under the conditions of the GPL, now the GPL states that all components must also be distributed under the GPL. Components here also means any libraries the application links to. This is a necessary requirement because otherwise someone could embrace and extend an GPL application and still distribute it legally simply by putting most of the interesting new stuff in a library. Now this means that all libraries a GPL application use must be licensed under a GPL compatible license. Nothing new sofar, right? However the LGPL is not GPL compatible! Yes that one warrants repeating: the LGPL is not GPL compatible! Because that one does allow the embrace and extend through putting stuff in another lib which GPL explicitly forbids. This incompatibility is fixed in the LGPL by the following text: --- 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. --- So any LGPL version 2 lib may also be distributed under the GPL version 2 or later, fixing the GPL, LGPL compatibility. In effect any LGPL version 2 library is dual licensed as "LGPL version 2" or "GPL version 2 or later" Now this is where things become problematic with [L]GPL version 3, any LGPL version 3 licensed lib is effectively dual licensed as "LGPL version 3" or "GPL version 3 or later". And GPL version 3 is not compatible with GPL version 2, so a GPL version 2 application / lib using [L]GPL version 3 licensed libraries, is effectively (technically) not distributable. Hence my request to fix the GPL version 2 only licensed files in goffice / gnumeric, because if any library they depend upon ever decides to move to [L]GPLv3, gnumeric/goffice would have to keep using the old version or it would become undistributable.
I'm afraid I don't understand. Did you run that by your lawyer? If so, may be he could help you phrase it in a way I would be able to understand. If you didn't run it by your lawyer, may be you should.
(In reply to comment #18) > I'm afraid I don't understand. > > Did you run that by your lawyer? If so, may be he could help you phrase it in a > way I would be able to understand. > Try reading it again, slowly, this is the best I can do to explain it. > If you didn't run it by your lawyer, may be you should. > Yes I did, this is RedHat's and the FSF's lawyers interpretation. esp see the GPL compatibility matrix here: http://fedoraproject.org/wiki/Licensing#head-699ce10b1f5d466cd4c3d61301c3651f0c2ca219 and here for the original: http://www.fsf.org/licensing/licenses/gpl-faq.html#v2v3Compatibility
That' also how I now understand things. I asked the fsf for clarification and their answer is quite clear: a GPL-v2 only program can't use a (L)GPL-v3 library a GPL-v2+ program can use either a GPL-v2 or a (L)GPL-v3 libray, but not both seems also that a GPL-v3 program can use both L(GPL)-v3 libraires and LGPL-v2.1+ libraries (because the last can be interpreted as GPL-v2 or later), but I did not ask about that point.
I hereby permit relicensing my contributions to libgsf, goffice and gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Dominic Lachowicz <domlachowicz@gmail.com>
Well, if GLP-v2+ is not possible, would LGPL-v2, or v3 (as was the case for Evolution) be possible (for the whole goffice/gnumeric sources)?
I don't think LGPL-v2 or v3 would be appropriate (or desirable) for gnumeric.
I don't really like the idea either, but it's better than GPL-v2 only for the future.
Re comment 17: we run into this usecase: right now AbiWord includes some GOffice GPLv2 code. AbiWord itself is GPLv2+, but this inclusion makes it GPLv2-only as well. Now the math plugin we ship depends on gtkmathview, which recently changed it's license to LGPLv3+. The LGPLv3+ license is incompatible with a GPLv2-only license, see http://www.fsf.org/licensing/licenses/gpl-faq.html#AllCompatibility. Because of the GOffice license, we have 2 options now: 1) Rewrite all goffice code we need 2) Drop Equation support. Not fun :)
Marc, of course you could also say that because of the gtkmathview license you have those two non-fun options. While I am in favour of changing the gnumeric/goffice licence to GPL version 2 and newer, one does have to realize that when a project chose to use a certain version of goffice they should have checked whether the license that came along was acceptable to them.
Don't forget 3) Take it up with the gtkmathview people. they might be able to reserve course.
You are of course absolutely correct Andreas, it should never have been added in the first place. Our mistake, and it's up to us to fix that. And regarding option 3: Luca (GtkMathView's maintainer) was not unwilling to relicense again, but things move *very* slowly on that front.
Things did not change and now there is more and more code released under (L)GPL-v3. I just realized that it is now impossible to use GSL in goffice or gnumeric. If the "or later" statement is problematic, would "GPL-v2 or v3" or just "GPL-v3" acceptable for the whole goffice/gnumeric tree? This would work at least until the FSF release a new version of the GPL license. Who should be contacted at Novell to make things advance?
I hereby permit relicensing my contributions to gnumeric from GPL v2 only to GPL v2 or newer and from LGPL v2 only to LGPL v2 or newer. Or indeed whatever the current gnumeric team ask for. Hal Ashburner <hal@ashburner.info> <hal_ashburner@yahoo.co.uk>
For Novell/Suse permission, see https://bugzilla.gnome.org/show_bug.cgi?id=670727#c7
We have gplv2/gplv3 permission also from Micheel Devine and Valek "Frob" Filippov.
This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.