Next: , Previous: , Up: Legal Matters   [Contents][Index]

6.7 External Libraries

When maintaining an FSF-copyrighted GNU package, you may occasionally want to use a general-purpose free software module which offers a useful functionality, as a “library” facility (though the module is not always packaged technically as a library).

Make sure the license of the module is compatible with current and future GPL versions. “GNU GPL version 3 or later” is good, and so is anything which includes permission for use under those GPL versions (including “GNU GPL version 2 or later”, “LGPL version n or later”, “LGPL version 2.1”, “GNU Affero GPL version 3 or later”). Lax permissive licenses are ok too, since they are compatible with all GPL versions.

“GPL version 2 only” is obviously unacceptable because it is incompatible with GPL version 3. “GPL version 3 only” and “GPL version 2 or 3 only” have a subtler problem: they would be incompatible with GPL version 4, if we ever make one, so the module would become an obstacle to upgrading your package’s license to “GPL version 4 or later”.

One package you need to avoid is goffice, since it allows only GPL versions 2 and 3.

It would be unreasonable to ask the author of the external module to assign its copyright to the FSF. After all, person did not write it specifically as a contribution to your package, so it would be impertinent to ask, out of the blue, “Please give the FSF your copyright.”

So make your program use the module but without treating the module as a part of your program. There are two reasonable methods of doing this:

  1. Assume the module is already installed on the system, and use it when linking your program. This is only reasonable if the module really has the form of a library.
  2. Include the module in your package, putting the source in a separate subdirectory whose README file says, “This is not part of the GNU FOO program, but is used with GNU FOO.” Then set up your makefiles to build this module and link it into the executable.

    For this method, it is not necessary to treat the module as a library and make a ‘.a’ file from it. You can link with the ‘.o’ files directly in the usual manner.

Both of these methods create an irregularity, and our lawyers have told us to minimize the amount of such irregularity. So consider using these methods only for general-purpose modules that were written for other programs and released separately for general use. For anything that was written as a contribution to your package, please get papers signed.

Next: , Previous: , Up: Legal Matters   [Contents][Index]