Revisiting the license unification idea

Daniel Drake ddrake at brontes3d.com
Sat Sep 22 15:23:01 PDT 2007


Hi,

A quick background: I'm involved in development of a kiosk-like embedded 
product which runs the X.org X11 implementation. In other words, we will 
be distributing X11 binaries to our customers.

License compliance is important for us. So, we spent time processing all 
the open source licenses and figuring out what would be needed to be in 
compliance.

xorg licensing proved to be a pain here, for a few reasons.

The license requires us to include the license text *and* copyright 
notices with the product (some say "with all copies" but we believe that 
a binary constitutes as a copy, some explicitly talk about 
documentation). Many packages didn't have COPYING files or had 
incomplete ones (e.g. without copyright notices). So I had to go through 
lots of code finding all the notices, and aggregating them into our 
product documentation.

Doing this for the X server took most of a day.

Add to that the fact that there are loads of small variations on the 
licenses and some people who embed their names in the license text.

While producing our product documentation I did submit almost all of my 
work in the form of COPYING files, which Alan Coopersmith and Daniel 
Stone recently committed. Thanks!

I also see that there was discussion on this before:

http://lists.freedesktop.org/archives/xorg/2006-October/018648.html
and more recently:
http://marc.info/?l=freedesktop-xorg&m=118469455423316&w=2

We'd like to assist in this process of license unification and I can 
spend time doing so.

I have a few ideas and proposals, outlined below. I will spend time 
making these happen if people like them. I'm not really involved in 
X.org development, so if any of these ideas are a little off, please 
forgive me (and help me come up with more realistic ones) :)

I would like to see the following happen:
  - A decision on an official "X.org license", backed by the X.org
    foundation
  - A wiki page publishing this license, plus a recommendation that
    past/current/future code is published under this license.
  - Some guidelines on keeping the COPYING file updated with new
    copyright notices, so that binary distributors can simply aggregate
    COPYING files from all xorg components and include them in the
    documentation

It obviously wouldn't be realistic for us to relicense all old code, 
although I would put time into contacting some individual developers and 
asking if I could submit a patch relicensing all their work.

Would we want to require this license to be used for all future code 
submissions, or would we just leave it as a recommendation?


Anyway, hopefully I haven't jumped the gun, but I've drafted the content 
for the wiki page which I'm including below in hope that people will 
review it (assuming the above ideas are generally acceptable). Sorry for 
the slightly inconvenient wrapping. I've selected the license mentioned 
by Daniel Stone in the above marc link. I've also assumed we want it as 
a recommendation rather than a requirement for new code.


Please send me feedback.

------------
X.org licensing

The X.org source code has a long history, and has had many contributors 
over time. The licenses chosen by contributors have varied slightly, 
leading to a large collection of similar-but-not-the-same licenses in 
use over the codebase.

In order to make life easier for distributors and to increase 
consistency, we've selected an official X.org license which we encourage 
you to use for past, current and future X.org contributions. You are not 
required to use this license, however the usual vetting will apply: if 
it's not MIT/X11-like, your submission will be rejected (just like 
before we had this license recommendation in place).

The X.org license is below:

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
IN THE
SOFTWARE.

You should include the license at the top of all source files, prepended 
by copyright notices.

Copyright notices should be in the form:

	Copyright © YEAR NAME

Multiple years should be listed as a range (START-END) where 
appropriate, or if you need to specify non-consecutive years, as a 
comma-separated list (or a mix of both).

Some examples:

	Copyright © 2007 A Person
	Copyright © 2002-2007 A Person
	Copyright © 2002-2004, 2007 A Person

So, a .c file would look something like the following:

/*
  * Library functions to enhance the renderer
  *
  * Copyright © 2006-2007 Fred Brown
  * Copyright © 2001, 2004 Frizter, Inc
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
...

You should include a COPYING file in the root of your source 
distribution. This should include the full X.org license text as above, 
preferably as the first license entry in the file. Again, the license 
should be prepended with copyright notices which form an aggregate of 
the copyright notices prepending the X.org license text in all the 
source files in your package.

As an example, consider that you have render.c and display.c in your 
project, with this at the top of each file respectively:

/*
  * render.c: Library functions to enhance the renderer
  *
  * Copyright © 2006-2007 Fred Brown
  * Copyright © 2001, 2004 Jamie McManus
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
...

/*
  * display.c: Manipulate display controls
  *
  * Copyright © 2004 Fred Brown
  * Copyright © 2003 Frizter, Inc
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
...

Your COPYING file would then aggregate the copyright notices and then 
include the complete license text, i.e.:

Copyright © 2004, 2006-2007 Fred Brown
Copyright © 2003 Frizter, Inc
Copyright © 2001, 2004 Jamie McManus

Permission is hereby granted, free of charge, to any person obtaining a
[...]

When updating copyright notices in source files, or adding or removing 
files from the project [which contain license text], you should update 
the COPYING file accordingly too. This may be a little bit of extra 
work, but it is simply how we avoid making life hell for people wishing 
to redistribute X.org binaries: they can be within license compliance 
simply take the COPYING file from each package and include it in their 
product documentation. So, please take care to keep COPYING up-to-date 
and advising that your contributors do the same.




More information about the xorg mailing list