[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#649530: [copyright-format] clearer definitions and more consistent License: stanza specification



On 10/01/12 00:41, Ximin Luo wrote:
> On 08/01/12 05:30, Steve Langasek wrote:
>> On Sun, Dec 18, 2011 at 03:22:04PM -0600, Jonathan Nieder wrote:
>>> Ximin Luo wrote:
>>
>>>> OK, understood. I will take a look at creating a patch for copyright-format.xml
>>>> like you did. However, I think I would prefer using an explicit grammar instead
>>>> (e.g. the sort that programming language specifications use), because that
>>>> leads to clearer thinking and less ambiguity.
>>
>>>> Which would you prefer?
>>
>>> That's up to Steve, since he's the editor of the document.
>>
>>> I am personally of two minds --- on one hand, I would like to see the
>>> copyright-format released quickly, which means making only minimal
>>> changes to the document.  On the other hand, an explicit grammar would
>>> indeed make the details of the spec easier to understand.
>>
>>> I guess if I were in your shoes, I'd keep a grammar in mind and make
>>> sure the text specifies it unambiguously but use plain text so as to
>>> make the changes not too invasive.
>>
>> It would be nice to have a formal grammar down the line, but that's also too
>> large of a change for 1.0.
>>
> 
> Alright, I've set aside some time to work on this. I've checked out the SVN,
> installed the build-deps (docbook-utils tidy), will send a patch soon.
> 
> X
> 

Patch attached. I moved some stuff around as well, but not that much; hopefully
the description is clear enough to explain everything.

X

-- 
GPG: 4096R/5FBBDBCE
https://github.com/infinity0
https://bitbucket.org/infinity0
https://launchpad.net/~infinity0
From ebf53e0a334df9da3288a48c8d19b3244de97ddc Mon Sep 17 00:00:00 2001
From: Ximin Luo <infinity0@gmx.com>
Date: Fri, 13 Jan 2012 01:11:49 +0000
Subject: [PATCH] DEP5: several structure changes

section "Paragraphs/standalone License"
- change tri-license example to be the more common "MPL-1.1 or GPL-2+ or LGPL-2.1+"

section "Fields/License":
- move the requirement to "include all text needed to fulfill policy 12.5 [etc]" into the case of header/Files paragraph ONLY
- header/Files paragraph: rather than "all or nothing" approach, allow any component of a license to be individually delegated to standalone paragraph
- License paragraph: forbid author- and software-specific information
- License paragraph: recommend to use only irreducible license component (new definition of "short-name", without +/exception)

chapter "License spec":
- move "syntax" section to the top of the chapter, since that describes the overall structure

section "License spec/short names":
- move "+"/"with * exception" into the "syntax" section instead, so it's at the same level as "and"/"or"
- move list of exception names into its own section, so it's at the same level as "short names"
- remove full text of the example "GPL-2+ with OpenSSL exception"; the new structure makes its redundancy more obvious

notes:
- the "public-domain" section was not changed, despite the diff's appearance
---
 web/deps/dep5/copyright-format.xml |  293 ++++++++++++++++--------------------
 1 files changed, 133 insertions(+), 160 deletions(-)

diff --git a/web/deps/dep5/copyright-format.xml b/web/deps/dep5/copyright-format.xml
index 2420631..30a078a 100644
--- a/web/deps/dep5/copyright-format.xml
+++ b/web/deps/dep5/copyright-format.xml
@@ -350,7 +350,7 @@ License: GPL-2+</programlisting>
 <programlisting>Files: src/js/editline/*
 Copyright: 1993, John Doe
            1993, Joe Average
-License: MPL-1.1 or GPL-2 or LGPL-2.1
+License: MPL-1.1 or GPL-2+ or LGPL-2.1+
 
 License: MPL-1.1
  [LICENSE TEXT]
@@ -448,38 +448,48 @@ License: MPL-1.1
     <section id="license-field">
       <title><varname>License</varname></title>
       <para>
-        Formatted text, with synopsis.  In the header paragraph, this field
-        gives the license information for the package as a whole, which may
-        be different or simplified from a combination of all the per-file
-        license information.  In a Files paragraph, this field gives the
-        licensing terms for the files listed in the <varname>Files</varname>
-        field for this paragraph.  In a stand-alone License paragraph, it
-        gives the licensing terms for those paragraphs which reference it.
-      </para>
-      <para>
-        First line: an abbreviated name for the license, or expression
-        giving alternatives (see <link linkend="license-short-name">Short
-        names</link> section for a list of standard abbreviations).  If
-        there are licenses present in the package without a standard short
-        name, an arbitrary short name may be assigned for these licenses. 
+        Formatted text, with synopsis in the form of a <link linkend="license-syntax">license expression</link>.
+        If there are licenses present in the package without a standard short
+        name, an arbitrary short name may be assigned for these licenses.
         These arbitrary names are only guaranteed to be unique within a
         single copyright file.
       </para>
       <para>
-        Remaining lines: if left blank here, the file
-        <emphasis>must</emphasis> include a <link
-        linkend="stand-alone-license-paragraph">stand-alone License
-        paragraph</link> matching each license short
-        name listed on the first line.
-        Otherwise, this field should either
-        include the full text of the license(s) or include a pointer to the
-        license file under <filename>/usr/share/common-licenses</filename>. 
-        This field should include all text needed in order to fulfill both
-        Debian Policy's requirement for including a copy of the software's
-        distribution license (<ulink
-        url="http://www.debian.org/doc/debian-policy/ch-docs#s-copyrightfile";>12.5</ulink>),
-        and any license requirements to include warranty disclaimers or
-        other notices with the binary package.
+        Description text (header or Files paragraphs): In the header paragraph,
+        this field gives the license information for the package as a whole,
+        which may be different or simplified from a combination of all the
+        per-file license information.  In a Files paragraph, this field gives
+        the licensing terms for the files listed in the <varname>Files</varname>
+        field for this paragraph.  In either case, the field should include all
+        text needed in order to fulfill both Debian Policy's requirement to
+        include a copy of the distribution license of said files or package
+        (<ulink url="http://www.debian.org/doc/debian-policy/ch-docs#s-copyrightfile";>12.5</ulink>),
+        and any license requirements to include warranty disclaimers or other
+        notices with the binary package. Alternatively, if appropriate, license
+        full text may be substituted by a pointer to the license file under
+        <filename>/usr/share/common-licenses</filename>.
+      </para>
+      <para>
+        Additionally, the full text of any component license may be omitted from
+        this section, in which case the file <emphasis>must</emphasis> include a
+        standalone License paragraph that does contain the full text for it (or
+        a pointer to common-licenses, if appropriate).
+      </para>
+      <para>
+        Description text (License paragraphs): gives the licensing terms for
+        those paragraphs which reference it. (Other extra-license information,
+        which is software- or author-specific, should instead be given in the
+        appropriate Files paragraph, either in the License or Comment fields.
+        For example, the MPL-1.1 requirement to state the initial developers of
+        a particular piece of software, or any copyright notices explicitly
+        mentioning authorship.
+      </para>
+      <para>
+        It is recommended that standalone License paragraphs only reference
+        irreducible <link linkend="license-short-name">short names</link> of
+        published licenses, e.g. GPL-2 rather than GPL-2+, since this allows
+        maximum re-use. This is currently not enforced, but may be in a later
+        version of this specification.
       </para>
     </section>
 
@@ -594,9 +604,65 @@ Copyright 2009, 2010 Angela Watts</programlisting>
     </section>
 
   </section>
+
   <section id="license-specification">
     <title>License specification</title>
 
+    <section id="license-syntax">
+      <title>Syntax</title>
+      <para>
+        License names are case-insensitive, and may not contain spaces.
+      </para>
+      <para>
+        In case of multi-licensing, the license <link linkend="license-short-name">short names</link>
+        are separated by <literal>or</literal> when the user can chose between
+        different licenses, by <literal>and</literal> when use of the work
+        must simultaneously comply with the terms of multiple licenses, and
+        followed by <literal>+</literal> when the user can chose between the
+        license or any later version.
+      </para>
+      <para>
+        For instance, this is a simple, <quote>GPL version 2 or later</quote>
+        field:
+<programlisting>License: GPL-2+</programlisting>
+        This is a dual-licensed GPL/Artistic work such as Perl:
+<programlisting>License: GPL-1+ or Artistic</programlisting>
+        This is for a file that has both GPL and classic BSD code in it:
+<programlisting>License: GPL-2+ and BSD</programlisting>
+        For the most complex cases, the comma is used to disambiguate the
+        priority of <literal>or</literal>s and <literal>and</literal>s
+        <literal>and</literal> has the priority over <literal>or</literal>,
+        unless preceded by a comma. For instance:
+      </para>
+      <simpara>
+        <literal>A or B and C</literal> means <literal>A or (B and C)</literal>.
+      </simpara>
+      <simpara>
+        <literal>A or B, and C</literal> means <literal>(A or B), and
+        C</literal>.
+      </simpara>
+      <para>
+        This is for a file that has Perl code and classic BSD code in it:
+<programlisting>License: GPL-2+ or Artistic-2.0, and BSD</programlisting>
+      </para>
+      <para>
+        Additional permissions to a license are represented by appending
+        <literal>with <varname><replaceable>keywords</replaceable></varname>
+        exception</literal> to the license expression.  This document provides a
+        <link linkend="license-exception-name">list of keywords</link> that must
+        be used when referring to the most frequent exceptions.  When exceptions
+        other than these are in effect (that grant additional permissions), you
+        may use an arbitrary keyword not from that list.
+<programlisting>License: GPL-2+ with OpenSSL exception</programlisting>
+      </para>
+      <para>
+        If a license differs from a common license because of added restrictions
+        rather than because of added permissions, a distinct short name should
+        be used instead of this syntax.  If more than one permissive exception
+        applies to a single license, a distinct short name must be used as well.
+      </para>
+    </section>
+
     <section id="license-short-name">
       <title>Short name</title>
       <para>
@@ -633,11 +699,9 @@ Copyright 2009, 2010 Angela Watts</programlisting>
       <para>
         For licenses which have multiple versions in use, the version number is
         added, using a dash as a separator. If omitted, the lowest version
-        number is implied. When the license grant permits using the terms of any
-        later version of that license, the short name is finished with a plus
-        sign. For <link linkend="spdx">SPDX</link> compatibility, trailing
-        <emphasis>dot-zeroes</emphasis> are considered to be equal to plainer
-        version (e.g., <quote>2.0.0</quote> is considered equal to
+        number is implied. For <link linkend="spdx">SPDX</link> compatibility,
+        trailing <emphasis>dot-zeroes</emphasis> are considered to be equal to
+        plainer version (e.g., <quote>2.0.0</quote> is considered equal to
         <quote>2.0</quote> and <quote>2</quote>).
       </para>
       <para>
@@ -969,25 +1033,38 @@ Copyright 2009, 2010 Angela Watts</programlisting>
         versions of the MIT license</ulink>. Please use Expat instead, when it
         matches.
       </para>
-      <para>
-        An exception or clarification to a license is signaled in plain text, by appending
-        <literal>with <varname><replaceable>keywords</replaceable></varname>
-        exception</literal> to the short name.  This document provides a list of
-        keywords that must be used when referring to the most frequent
-        exceptions.  When exceptions other than these are in effect that modify
-        a common license by granting additional permissions, you may use an
-        arbitrary keyword not taken from the below list of keywords.  When a
-        license differs from a common license because of added restrictions
-        rather than because of added permissions, a distinct short name should
-        be used instead of <literal>with
-        <varname><replaceable>keywords</replaceable></varname>
-        exception</literal>.
-      </para>
-      <para>
-        Only one exception may be specified for each license within a given
-        license specification.  If more than one exception applies to a single
-        license, an arbitrary short name must be used instead.
-      </para>
+
+      <section id="public-domain">
+        <title>Public domain</title>
+        <para>
+          The <varname>License</varname> short name
+          <literal>public-domain</literal> does not refer to a set of license
+          terms. There are some works which are not subject to copyright in
+          any jurisdiction and therefore no license is required for any
+          purpose covered by copyright law. This short name is an explicit
+          declaration that the associated files are <quote>in the public
+          domain</quote>.
+        </para>
+        <para>
+          Widespread misunderstanding about copyright in general, and the
+          public domain in particular, results in the common assertion that a
+          work is in the public domain when this is partly or wholly untrue
+          for that work. The <ulink
+          url="http://en.wikipedia.org/wiki/Public_domain";>Wikipedia article
+          on public domain</ulink> is a useful reference for this subject.
+        </para>
+        <para>
+          When the <varname>License</varname> field in a paragraph has the
+          short name <literal>public-domain</literal>, the remaining lines of
+          the field <emphasis>must</emphasis> explain exactly what exemption
+          the corresponding files for that paragraph have from default
+          copyright restrictions.
+        </para>
+      </section>
+    </section>
+
+    <section id="license-exception-name">
+      <title>Exception names</title>
       <para>
         The GPL <literal>Font</literal> exception refers to the text added to the
         license notice of each file as specified at <ulink
@@ -1003,8 +1080,8 @@ by the GNU General Public License. If you modify this font, you may
 extend this exception to your version of the font, but you are not
 obligated to do so. If you do not wish to do so, delete this exception
 statement from your version.</programlisting>
-        </para>
-        <para>
+      </para>
+      <para>
           The GPL <literal>OpenSSL</literal> exception gives permission to link GPL-licensed
 code with the OpenSSL library, which contains GPL-incompatible clauses.
 For more information, see <ulink
@@ -1028,113 +1105,9 @@ file(s), but you are not obligated to do so. If you do not wish to do
 so, delete this exception statement from your version. If you delete
 this exception statement from all source files in the program, then
 also delete it here.</programlisting>
-        </para>
-
-        <section id="public-domain">
-          <title>Public domain</title>
-          <para>
-            The <varname>License</varname> short name
-            <literal>public-domain</literal> does not refer to a set of license
-            terms. There are some works which are not subject to copyright in
-            any jurisdiction and therefore no license is required for any
-            purpose covered by copyright law. This short name is an explicit
-            declaration that the associated files are <quote>in the public
-            domain</quote>.
-          </para>
-          <para>
-            Widespread misunderstanding about copyright in general, and the
-            public domain in particular, results in the common assertion that a
-            work is in the public domain when this is partly or wholly untrue
-            for that work. The <ulink
-            url="http://en.wikipedia.org/wiki/Public_domain";>Wikipedia article
-            on public domain</ulink> is a useful reference for this subject.
-          </para>
-          <para>
-            When the <varname>License</varname> field in a paragraph has the
-            short name <literal>public-domain</literal>, the remaining lines of
-            the field <emphasis>must</emphasis> explain exactly what exemption
-            the corresponding files for that paragraph have from default
-            copyright restrictions.
-        </para>
-      </section>
+      </para>
     </section>
 
-    <section id="license-syntax">
-      <title>Syntax</title>
-      <para>
-        License names are case-insensitive, and may not contain spaces.
-      </para>
-      <para>
-        In case of multi-licensing, the license short names are separated by
-        <literal>or</literal> when the user can chose between different licenses,
-        and by <literal>and</literal> when use of the work must simultaneously
-        comply with the terms of multiple licenses.
-      </para>
-      <para>
-        For instance, this is a simple, <quote>GPL version 2 or later</quote>
-        field:
-<programlisting>License: GPL-2+</programlisting>
-        This is a dual-licensed GPL/Artistic work such as Perl:
-<programlisting>License: GPL-1+ or Artistic</programlisting>
-        This is for a file that has both GPL and classic BSD code in it:
-<programlisting>License: GPL-2+ and BSD</programlisting>
-        For the most complex cases, the comma is used to disambiguate the
-        priority of <literal>or</literal>s and <literal>and</literal>s
-        <literal>and</literal> has the priority over <literal>or</literal>,
-        unless preceded by a comma. For instance:
-      </para>
-      <simpara>
-        <literal>A or B and C</literal> means <literal>A or (B and C)</literal>.
-      </simpara>
-      <simpara>
-        <literal>A or B, and C</literal> means <literal>(A or B), and
-        C</literal>.
-      </simpara>
-      <para>
-        This is for a file that has Perl code and classic BSD code in it:
-<programlisting>License: GPL-2+ or Artistic-2.0, and BSD</programlisting>
-        A <literal>GPL-2+</literal> work with the <literal>OpenSSL</literal>
-        exception is in effect a dual-licensed work that can be redistributed
-        either under the <literal>GPL-2+</literal>, or under the
-        <literal>GPL-2+</literal> with the <literal>OpenSSL</literal> exception.
-        It is thus expressed as <literal>GPL-2+ with OpenSSL
-        exception</literal>:
-<programlisting>License: GPL-2+ with OpenSSL exception
- 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 2 of the License, or (at your option) any later
- version.
- .
- In addition, as a special exception, the author of this
- program gives permission to link the code of its
- release with the OpenSSL project's "OpenSSL" library (or
- with modified versions of it that use the same license as
- the "OpenSSL" library), and distribute the linked
- executables. You must obey the GNU General Public
- License in all respects for all of the code used other
- than "OpenSSL".  If you modify this file, you may extend
- this exception to your version of the file, but you are
- not obligated to do so.  If you do not wish to do so,
- delete this exception statement from your 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 package; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- Boston, MA  02110-1301 USA
- .
- On Debian systems, the full text of the GNU General Public
- License version 2 can be found in the file
- `/usr/share/common-licenses/GPL-2'.</programlisting>
-       </para>
-     </section>
-
     <section id="spdx">
       <title>SPDX</title>
       <para>
-- 
1.7.7.3

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: