[cairo] Re: License for cairo changed to LGPL

Turner, David DTurner at nds.com
Thu Aug 5 02:28:18 PDT 2004

> Around 18 o'clock on Aug 4, "M. Evans" wrote:
> > To my mind, the wx approach is a very good middle ground.  It lets
> > businesses sell binaries with or without library changes, 
> and without
> > worrying about the definition of "linkage."
> One reason for the switch to LGPL is precisely to avoid 
> 'hidden' changes like these.  We really do want to see any changes people need 
> to make in cairo for whatever weird environment they're using.  To my 
> mind, the wx license is no more effective at this than the MIT or BSD licenses.

> Basically, if you use cairo, we want to see what you've done 
> with it, but not any code outside of cairo.  The LGPL provides a 
> reasonably coherant description of what changes are "within the library" by 
> requiring that the user be able to (in theory) replace the version of the 
> library used within the resulting product.  The goal is to make it possible for 
> people to use cairo without disclosing their own code, while still sharing 
> any changes they've made to cairo itself.

If that's the *primary* goal, why not simplify the problem by releasing
Cairo under the GPL + linking exception license, which is already
used by projects like GNU ClassPath, PNet and others. Here it is:

    The source code for the library is distributed under the terms of 
    the GNU General Public License, with the following exception:

    As a special exception, the copyright holders of this library give 
    you permission to link this library with independent modules to produce 
    an executable, regardless of the license terms of these independent
    modules, and to copy and distribute the resulting executable under 
    terms of your choice, provided that you also meet, for each linked 
    independent module, the terms and conditions of the license of
    that module. An independent module is a module which is not derived
    from or based on this library. If you modify this library, you may 
    extend this exception to your version of the library, but you are not
    obligated to do so. If you do not wish to do so, delete this exception
    statement from your version. 


  - no distinction need to be made between dynamic and static linking

  - anybody can use an unmodified version of the library

  - all modifications must be released under either the GPL or
    the same license. In other words, no "hidden changes" to the
    library itself are possible.

  - much simpler terms than the LGPL. I believe it's also much
    simpler to understand. (basically, "use it freely, but release
    any changes you make to it")


  - doesn't provide the user with the "freedom" to "relink" the final
    product, whatever that means. I think this is the *major*
    difference, you really need to decide wether you want it or

  - some people might find it less 'standard'

  - some GNU nut could make some improvements and exclusively release
    them under the GPL, but I don't see this as a probable

The exception's text could be clarified by replacing

  "the copyright holders of this library give you permission to 
   link this library"


  "the copyright holders of this library give you permission to 
   link *unmodified* versions of this library"

but you get the idea... The FAQ for such a license can be very
small indeed. Hell, I just took five minutes to write it[1]

Does this seem even remotely interesting to you ? 
reasonnable or not ?

Opinions welcomed,


- David Turner
- The FreeType Project  (www.freetype.org)

[1] Quick on-the-fly FAQ:

  Q1: Can I use <Project> in proprietary or non-GPL products ?

  A1: YES. Because of the linking exception, you can use
      unmodified versions of <Project> in any kind of project,
      and distribute the corresponding binaries under the terms
      you choose (provided the licenses of all modules are

      However, to obey the parts of the GPL that are not covered
      by the exception, you *must* distribute the <Project>
      sources you used to any user of your product. For example
      by putting a source archive on your product's media, or
      by providing a download from your web/ftp site.

      All other sources used to generate your product don't need
      to be distributed to users, unless specified by their

  Q2 : Can I use a version of <Project> that I modified for my
       own use in proprietary or non-GPL products ?

  A2: YES, If you release it under the same license.

      The linking exception only covers code written by
      <Project> copyright holder(s), and doesn't affect your

      This means that by default, your modified version of
      <Project> can only be distributed under the "pure" GPL,
      which doesn't allow redistribution in non-GPL products.

      However, you have the ability to release your modified
      <Project> under the exact same license (i.e. GPL + linking
      exception), which would allow you, and *anyone* else, to
      use it in non-GPL products.

      Note that this however *still* obliges you to distribute
      the source code of all your modifications to your users.

      Hence, while you can create a modified version of the
      library, you'll need to release it under the same
      license to be able to distribute it in your product.

  Q3 : Why are you not using the LGPL instead ?

  A3 : Compared to the GPL, the LGPL contains a lot of ambiguous
       technical terms whose meaning can change with time (e.g.
       what is the exact meaning of static and dynamic linking
       in Java ? Think as a lawyer, not a developer !).

       We also didn't want to forbid certain users from using
       the library (e.g. when the code is in the ROM of an
       embedded device, there is simply no way to "relink"
       as mandated by the LGPL).

  Q4 : Can I distribute <Project> as a DLL in my product

  A4 : SURE, one good thing about the linking exception is that
       it doesn't need to distinguish between static and/or
       dynamic linking. You can distribute <Project> binaries
       under the format that best suits your need.

       Note that DLLs have the additionnal benefit of allowing
       easy updates of <Project> to an installed product.

       Unlike the LGPL, this license doesn't mandate that the
       users have the ability to relink your product with
       modified version of <Project> at will.

More information about the cairo mailing list