wiki:SWLicense

Version 18 (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
    
    Use and redistribution of this software is covered by the GNU Public License Version 3 
    (GPLv3) or later, as detailed below.  A copy of the GPLv3 is also available at 
    <http://www.gnu.org/licenses/>.
    
    ==========================================================================================
    
    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.
  • For each 3rd-party software product that is part of the software's run-time (e.g. excluding doxygen), we include a reference to the software's license as required by that license. For example:
    This software makes use Numpy, Copyright (c) 2005, NumPy Developers
    All rights reserved.
    
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:
    
        * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.
    
        * Redistributions in binary form must reproduce the above
           copyright notice, this list of conditions and the following
           disclaimer in the documentation and/or other materials provided
           with the distribution.
    
        * Neither the name of the NumPy Developers nor the names of any
           contributors may be used to endorse or promote products derived
           from this software without specific prior written permission.
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    =============================================================================
    

History

The development of this Open Source License policy can be found previous versions of this document; see in particular: version 15. The original proposal to the TCT, developed in roughly August 2008 by Francesco Pierfederici, was to use the Apache 2 License to allow commercial use of the software. This raised questions concerning the combination and redistribution of our code with other GPLed software. Four alternatives were then put on the table for discussion:

  1. Apache 2 plus GPL for combined binary distributions
  2. Modified BSD plus GPL for combined binary distributions
  3. Public Domain plus GPL for combined binary distributions
  4. Pure GPL Licensing

Choice 4 was chosen because it offer the least legal ambiguity. This meant that commercialization could not be supported.

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