wiki:SWLicense

Version 17 (modified by RayPlante, 10 years ago) (diff)

--

An Open Source License for LSST

Introduction

LSST as a project has a mandate to publish all of its software as open source. There are a multitude of open source/free software licenses to choose from. At the same time, LSST has a few specific desiderata to take into consideration when choosing the "right" license:

  • Acknowledgement and credit of authorship
  • Establishing ownership without restricting use
  • Preserving all non-commercial use
  • Enabling community extension and contributions
  • Allowing, but not necessarily encouraging, commercial use (dropped 2009-03-27)

Another issue to take into consideration is that of copyright. Code written using LSST funds would have the approved LSST copyright notice, all other code would have the appropriate copyright notice instead. Whatever license is chosen should allow the specification and preservation of different copyright notices.

Proposal

All code written by the LSST project for the LSST Data Management System shall be licensed under the GNU Public License Version 3 (GPLv3) or later. This enables the following:

  • Users of the software are allowed to do so free of charge.
  • Others may copy, redistribute, extend or modify the software
  • Others can use the software for private purposes without any restriction as long as the software is not redistributed.
  • Allows LSST to use and link against other GPLed software, as well as other open source software with GPL-compatible licenses.
  • The software may be linked against certain proprietary software through well defined interfaces that are documented as special exceptions (Ref.)

At the same time, the GPL license makes the following restrictions

  • All copies, modified or unmodified, are accompanied by a copy of the license
  • Source code for derived works or extensions distributed by others must be made available in source form
  • GPLed software cannot be combined with other software and redistributed unless the other software is covered by a compatible license (or meets the above mentioned exceptions) and the combined result is also released under the GPL license.
  • GPLed software cannot be used as part of proprietary software.

Software distributed under GPL is provided as is (i.e. without any warranty of any sort).

Implementation

To apply GPL to LSST software, we will need to

  1. Add to each source code file a licensing notice that includes:
    • a copyright statement
    • a licensing/copying statement
  2. Distribute with LSST packages a file called COPYING containing:
    • a copyright statement
    • a copy of the GNU v3 License text
    • copies or notices of the other compatible licenses

See Ref: How to use the GNU licenses for your own software.

Licensing Notice to be included in Source Code

The following is an example of the notice for C++ header (*.h) and source (*.cc) files.

/* 
 * LSST [name of application, software package, or system]
 * Copyright 2008, 2009, 2010 LSST Corporation.
 * 
 * This product includes software developed by the
 * LSST Project (http://www.lsst.org/).
 *
 * This program is free software: you can redistribute it and/or modify
 * 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.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

Notes:

  • Other source files should use the same text but apply the appropriate commenting mark-up.
  • The start of this text should appear within a few lines of the top of the file
  • For simplicity, the name of the software (in the first line) can start off as "LSST Data Management System"; authors of the file may change it later to be more specific.

COPYING: the License statement

The COPYING file will contain the following:

  • Statement Identifying Licensor and Authors
LSST Data Management System Software
Copyright 2008, 2009, 2010 LSST Corporation.

This product includes software developed by the
LSST Project (http://www.lsst.org/) with contributions made at LSST partnerr
institutions:

  * The LSST Corporation
  * The NASA Infrared Processing and Analysis Center at Caltech University
  * The National Center for Supercomputing Applications (NCSA) at the University of
    Illinois at Urbana-Champaign
  * The National Optical Astronomy Observatory (NOAO)
  * Princeton University
  * The Stanford Linear Accelerator Laboratory (SLAC)
  * University of Arizona, Steward Observatory
  * University of California Davis
  * The San Diego Supercomputing Center (SDSC) at the University of California San Diego
  * University of Washington

Notes:

  • Individual author names may be provided else where in the file as appropriate (e.g. as part of Doxygen API documentation markup
  • Additional institutions may be added to the credit list over time as contributions are made
  • No effort will be made to update this list for packages that have already been released
  • For ease of maintenance, no effort will be made to remove institutions from the credit list even when the particular package distribution contains no actual contributions from that institution.

History

The development of this Open Source License policy can be found previous versions of this document; see in particular: version 15.

CCB Discussion: Four Alternatives

This proposal was discussed on 3 Sept. and the GPL compatibility issue continues to nag at us. We identified four alternative proposals:

  1. Apache 2 + GPL

We adopt the Apache 2 License for our LSST source code. Assuming we link against GPLed libraries, our binary distributions will be distributed under GPL, as required by the GPLed libraries.

  • Apache 2 has the advantage in that it will allow other people link our libraries to non-open source code. This, of course, would have to be limited to LSST code that itself does not link against GPL.
  • Technically, using Apache 2 does not allow us to link against GPLv2 licensed libraries; thus, this option requires that we ignore this fact. Given that GPLv3 addresses this incompatibility issue, ignoring this issue is not likely to result in an enforcement action. See this discussion from OSS watch for details.
  1. Mod-BSD + GPL

We adopt the Modified BSD Licence for our LSST source code. Assuming we link against GPLed libraries, our binary distributions will be distributed under GPL, as required by the GPLed libraries.

  • Like Apache 2, this has the advantage that it will allow other people link our libraries to non-open source code. This, of course, would have to be limited to LSST code that itself does not link against GPL.
  • This license is compatible with GPL (mainly by saying less)
  1. public domain + GPL

We do not license our LSST software; we simply put it into the public domain. Assuming we link against GPLed libraries, our binary distributions will be distributed under GPL, as required by the GPLed libraries.

  • This option is explicitly allowed by the GPL.
  1. GPL

We adopt GPL v3 for our LSST software. All distributions, source and binary have the same license.

  • This option is explicitly allowed by the GPL; there are no legal uncertainties in this option
  • In exchange for the simplicity of our distributions, it will not be possible for other people to link our libraries with non-open source code.

Further Resources

  1. the Apache 2 License
  2. OSS Watch discussion of the Apache License 2.0
  3. Wikipedia Article on Apache License 2.0
  4. A listing of open source licenses from opensource.org
  5. GNU's evaluation of compatible OSS licenses
  6. The Modified BSD License
  7. the GNU License FAQ

Attachments