Difference between revisions of "MapServer Provenance Review"

From OSGeo
Jump to navigation Jump to search
(→‎FAQ: added section for Copyright Header)
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
'''MapServer is a graduated OSGeo project. This page is part of the archive of the incubation process.'''
 +
 
{{Template:Code_Provenance_Review_Goals}}
 
{{Template:Code_Provenance_Review_Goals}}
  
 
= Library/Component Review =
 
= Library/Component Review =
 
+
See [http://spreadsheets.google.com/pub?key=p3ovxbvq1mBuBRaJiIT14eA spreadsheets].
# Prepare a list of any external components that are included "in the source tree" for the project. For instance, GDAL includes a copy of libtiff, libjpeg, etc in the source tree. It is necessary to be able to identify things like that in the source tree that are under their own distinct license, and are not explicited vetted by the project team.   If practical it is desirable to remove these internal components and treat them as external depenendencies.  If kept internal, notes on the licenses of the components should be included in the provenance review document.
 
# Prepare a list of external dependencies with with potentially problematic license terms.  So, all non-free libraries for instance.  All libraries with licenses that might conflict (for instance GDAL's use of GPL'ed GRASS libraries in the non-GPL GDAL). 
 
  
 
= Code Copyright Review =
 
= Code Copyright Review =
 
 
The objective here is to visit every source file, and identify possible issues, and work to "regularize" things.  
 
The objective here is to visit every source file, and identify possible issues, and work to "regularize" things.  
  
# Does the file include the license information?  If not, add it if there there is no ambiguity about whether the standard project license applies.  If that is not obvious, make notes in the review document. 
+
See [http://spreadsheets.google.com/pub?key=p3ovxbvq1mBuBRaJiIT14eA spreadsheets].
# Is the file under the normal project license?  If not, make notes in the review document.
 
# Is there anything obviously unusual about the origin of the code?  Does this pose any conflicts?  Is the issue properly described in the source file?  For instance, in GDAL, the gdal/port/cpl_strtod.cpp file is closely derived from external code that was placed in the public domain. cpl_strtod.cpp is placed under the normal GDAL MIT/X license, but detailed notes are kept in the header text on it's origin, the fact that this was public domain and so the fact that we are ok to relicense it.  Oddities should be noted in the source file itself and in the review document.
 
# Maintain a list of all copyright holders identified in the review document.  This list is essentially everyone who would need to agree to relicense the project.  It may be desirable to seek copyright assignment to a "project lead", or to the foundation to reduce the number of copyright holders for the project though this is not required.
 
 
 
  
 +
* Maintain a list of all copyright holders identified in the review document (see REAMDE in the trunk root of the SVN).
  
 
= Review Document =
 
= Review Document =
Line 25: Line 21:
 
When completed, a much briefer form of the review document should be prepared, just listing information that would be pertinent to folks using the project.  Essentially a summary.  This summary might live in source control as README.LICENSE or something similar.
 
When completed, a much briefer form of the review document should be prepared, just listing information that would be pertinent to folks using the project.  Essentially a summary.  This summary might live in source control as README.LICENSE or something similar.
  
= FAQ =
 
 
; Do we need to ensure there is a copyright and licence headers in every file?
 
: Projects are expected to embed a copyright and license header in every source file (.cpp and .h for instance).  Machine generated files (such as lex or yacc output for instance) does not require a header if it is inconvenient to embed one, but then an effort should be made to embed a header in the original source file (ie. .l or .y).  There is no need to embed copyright and license headers in build files (ie. Makefiles, Visual Studio project files), nor in small documentation fragments (like READMEs).  Copyright/license headers should be included in substantial bodies of documentation if it can be done in such a way that it doesn't interfere with the document.
 
  
 
== Copyright Header ==
 
== Copyright Header ==
 
It is sufficient to refer to a single copy of the license agreement for the project, but each file should include an indication of what the license is, and the location of the full license document.  
 
It is sufficient to refer to a single copy of the license agreement for the project, but each file should include an indication of what the license is, and the location of the full license document.  
  
For MapServer the copyright header looks like this:  
+
The [MapServer] MapServer license text ([http://trac.osgeo.org/mapserver/browser/trunk/mapserver/mapserv.c retrieved from mapserv.c Revision 7147]:
 
 
/*
 
  * Copyright (C) XXX
 
  *
 
  * This library is free software; you can redistribute it and/or
 
  * modify it under the terms of version 2.1 of the GNU Lesser
 
  * General Public License as published by the Free Software Foundation.
 
  * 
 
  * This library 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
 
  * Lesser General Public License for more details.
 
  *
 
  * You should have received a copy of the GNU Lesser General Public
 
  * License along with this library; if not, write to the Free Software
 
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
  */
 
 
 
: or
 
 
 
* COPYRIGHT:    (C) XXX
 
*
 
*              This program is free software under the GNU General Public
 
*              License (>=v2). Read the file COPYING that comes with XXX
 
*              for details.
 
 
 
 
 
; Can I just write a script to check everything?
 
: No.  The point of a human review is to ensure that human eyes have looked at the header of each file, looking for any anomolies.  For instance it is not uncommon to have additional messages written in headers about the original source of particular code, but not necessarily in a way that a script could recognise. 
 
  
; But I just did a review similar to this a few months ago, do I really need to do it again?
+
<pre>
: If you believe you have already met or exceeded the rigor described in this review document, then you can present the results of your previous analysis along with an explanation of why you think it still applies. You will need to manually review additions since that earlier review. It will be up to the Incubator (and ultimately the foundation board) to determine if they are satisfied with any review.  
+
  Project:  MapServer
 +
  PurposeMapServer CGI mainline.
 +
  Author:  Steve Lime and the MapServer team.
  
; Do I need to track down every contributor and ask for permission to use their code?
+
  Copyright (c) 1996-2005 Regents of the University of Minnesota.
: No.  As long as code was knowingly provided by contributors to the project while it was under a clear licensing policy then it is reasonable to assume the project licensing arrangements are accepted unless there is some reason to have doubts.  If code was brought into the project from outside sources under ambiguous circumstances then it may be necessary to contact the copyright holder for a legal release, or at least a statement of permission.
 
  
; Some project code was adapted from other sources with ambiguous copyrights, what do I do?
+
  Permission is hereby granted, free of charge, to any person obtaining a
: First, document such concerns in the review document and within the source files themselves.  Second, try to obtain a release to use the provide code.  An email statement of permission should be sufficient, but pertinant details of such an email should be included in the source file in questions (eg. date, identification of releasing person, text of the release).  If no release is possible, but the code isn't very necessary, consider removing or replacing it to simplify things.  Otherwise the issue will need to be discussed in the incubator to assess risk.
+
  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:
  
; Should I be looking for patent problems?
+
  The above copyright notice and this permission notice shall be included in
: No.  However, if the code review turns up notes about patent issues - or if there are known patent issues for the project, then these should be noted in the review document.  Generally speaking a proper patent review is very difficult and may increase, rather than decrease, legal liability.
+
  all copies of this Software or works derived from this Software.
  
; Should I be looking for trademark conflicts?
+
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
: Possibly. It may be prudent to check for trademark conflicts for the project name, or the name of public packages within the project.  If issues are found they should be noted in the review document.
+
  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.
 +
</pre>
  
 
[[Category:Incubation]]
 
[[Category:Incubation]]
 +
[[Category:MapServer]]

Latest revision as of 10:58, 2 September 2022

MapServer is a graduated OSGeo project. This page is part of the archive of the incubation process.

Goal

To establish a reasonable comfort level that projects going through incubation do not have improperly contributed code, and that the code is all under the project license.

A code provenance review is desirable because it reduces the risk of the foundation, project developers or software users becoming involved in a legal action or having their use of the software disrupted by sudden removal of improperly contributed code. In particular, many enterprises will not build on open source software projects without some degree of assurance that care is being taken to avoid improper contributions.

It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on us to prove there are no problems. However we want to ensure we do not release code with provenance issues that we could have identified and corrected with a reasonable effort.

Library/Component Review

See spreadsheets.

Code Copyright Review

The objective here is to visit every source file, and identify possible issues, and work to "regularize" things.

See spreadsheets.

  • Maintain a list of all copyright holders identified in the review document (see REAMDE in the trunk root of the SVN).

Review Document

The result of the provenance review is two fold. First, there is clarification and "fixes" done during the review. For instance, adding missing copyright notices, or factoring out external libraries. The second is a review report with a fairly detailed list of outstanding issues, ambiguities and information of note.

The review document will be distributed to the project PSC members, as well as the incubation committee. Based on it, the incubation committee may require the project to do additional work, either resolving ambiguities, factoring items out, or rewriting questional components.

When completed, a much briefer form of the review document should be prepared, just listing information that would be pertinent to folks using the project. Essentially a summary. This summary might live in source control as README.LICENSE or something similar.


Copyright Header

It is sufficient to refer to a single copy of the license agreement for the project, but each file should include an indication of what the license is, and the location of the full license document.

The [MapServer] MapServer license text (retrieved from mapserv.c Revision 7147:

   Project:  MapServer
   Purpose:  MapServer CGI mainline.
   Author:   Steve Lime and the MapServer team.

   Copyright (c) 1996-2005 Regents of the University of Minnesota.

   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 shall be included in
   all copies of this Software or works derived from this 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.