The text hereafter is a proposed unified policy for copyright and patent management in source code submitted to IPOL. It is the result of a discussion on the IPOL mailing list and an overview and French and European laws.


1. Copyright Attribution

EVERY source code file MUST mention its author or authors in a copyright attribution line at the top of the file. The form of this line should be:

Copyright (c) 2011, AUTHOR NAME <AUTHOR EMAIL>
All rights reserved.

When the work on these files spans over many years, these dates should be mentioned:

Copyright (c) 2005, 2009-2011, AUTHOR NAME <AUTHOR EMAIL>
All rights reserved.

Every person whose contribution to this file is not trivial and implies some creative work must be credited.

Copyright (c) 1998-2003, AUTHOR1
Copyright (c) 2005-2011, AUTHOR2
Copyright (c) 2011, AUTHOR3
All rights reserved.

2. Patent Warning

When the authors are aware or suspect that a source code file might be linked to a patented algorithm (it may be the main algorithm published on IPOL or another algorithm used for this implementation), a patent warning MUST be inserted after the copyright attribution, in EVERY file potentially linked to this patent. The proposed text for this patent warning is:

This file implements an algorithm possibly linked to the patent
<REFERENCE OF THE PATENT>.
This file is made available for the exclusive aim of serving as
scientific tool to verify the soundness and completeness of the
algorithm description. Compilation, execution and redistribution
of this file may violate patents rights in certain countries.
The situation being different for every country and changing
over time, it is your responsibility to determine which patent
rights restrictions apply to you before you compile, use,
modify, or redistribute this file. A patent lawyer is qualified
to make this determination.
If and only if they don't conflict with any patent terms, you
can benefit from the following license terms attached to this
file.

The patents that may be linked to the algorithm should also be acknowledged in the algorithm web page.

3. License

EVERY source code file MUST mention a usage and redistribution license. The general IPOL policy is to use free software licenses, GPL or BSD type. When a file can be linked to a patented algorithm,

  • GPL licences can't be used because they might conflict with patents or are somehow unclear;
  • BSD licenses can be used;
  • as a special exception to the IPOL policy, the authors of a file can decide that this file is provided "for scientific and educational purposes only".

This exception may help avoiding problems when the file authors are the patent owners: distributing he source code with a free software license could conflict with their patent rights. This exception is not necessary for other patents because the previous paragraph states that the license only applies if it doesn't conflict with the patent rights.

The license must be mentioned after the copyright attribution line (and patent warning for algorithms potentially linked to a patent) in one of these terms:

This program is free software: you can use, modify and/or
redistribute it under the terms of the GNU General Public
License as published by the Free Software Foundation, either
version 3 of the License, or (at your option) any later
version. You should have received a copy of this license along
this program. If not, see <http://www.gnu.org/licenses/>.

This program is free software: you can use, modify and/or
redistribute it under the terms of the simplified BSD
License. You should have received a copy of this license along
this program. If not, see
<http://www.opensource.org/licenses/bsd-license.html>.

This program is provided for scientific and educational only:
you can use and/or modify it for these purposes, but you are
not allowed to redistribute this work or derivative works in
source or executable form. A license must be obtained from the
patent right holders for any other use.

The exact terms may change, for example when a different GPL license version is chosen. The full text of the license must be included in a separate file with the source code, for every license used.

4. README Summary

All that (copyrights, patents and licenses) MUST be summarized in the README.txt file provided with the code. This summary is in free-form text, and should include all the informations mentioned before. A simple summary (single author and license, no patent known) can be:

This software is written by John Doe <doe@example.org> and
distributed under the terms of the GPLv3 licence.

A complex case (multiple authors and licences, patents) can be:

This software is written by John Doe <doe@example.org>, Joe
Average <ja@server.net> with contributions from Taro Suzuki and
Jean Dupont.
- mmatch.c and rot_tree.c may be linked to the pending EU patent
  555.555 by John Doe and Joe Average and are provided for
  scientific and education only.
- demoz.c may be linked to the US patent 123.456 by Another Guy;
  see the file header for license terms.
- eizo.c and linalg_lib.c are distributed under the terms
  of the BSD license.
- All the other files are distributed under the terms of the
  LGPLv3 license.

Of course the README file will also include other informations, such as compilation and usage instructions, reference to the IPOL (and other) article, etc.

5. Web Page Info

The license and patent information MUST be mentioned on the algorithm web page with the links to download the source code, but we can refer to the README file for details. The simple case can be:

This software is distributed under the terms of the GPLv3
licence. See the README file for details.

The complex case would be:

This code includes the implementations of algorithms potentially
linkable to patents. Various distribution terms apply. Some files
are distributed under the terms of the BSD and LGPL licenses, some
are for scientific and education only. See the README file for
details.

External References