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

Re: Copyright file granularity



Hi,

On Fri, Nov 13, 2015 at 10:51:11AM -0800, Steve Langasek wrote:
...
> It is important to list all copyright holders; this is not something that
> it's "easy enough" to look up in the source, because many of these free
> software licenses require that you reproduce the copyright statement
> whenever you distribute binaries.
> 
>   2. 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.
> 
>   (/usr/share/common-licenses/BSD)
> 
> 
> To avoid accidental failures to comply with such license terms, Debian
> policy requires that *all* packages include the copyright information.

Please note one type of de-facto exception which is not documented but
widely accepted.  FTP master has accepted such packages with the GNU
permissive type license on autotools generated files.   I see almost no
one follow the rule literary on these files. They are slightly different
files to files and are nothing but noise for then purpose we use
debian/copyright if we pedantically list them.

In normal usage of the debmake parogram now, it drops all GNU permissive
license listing for autotools generated files.

> And if we want the debian/copyright file to be readable afterwards, the
> tools are going to need to make some smart decisions about grouping of
> copyright stanzas, and not just list one for each (license, copyright
> holders, copyright dates) tuple.

That's done and simple.  Spaces and line breaks does not affect the
grouping.

Tough part is when you see multiple copyright like text apears on the
file, what to do.  iThis involves judgement and huristics when to give
up and which file to skip for scanning.   A large translation dictionary
text file with a word "copyright" listed next to "著作権, 版権" may
cause false positive.  (I encounterd such file).
 
> As an example of what I mean by "smart" groupings, I offer up the
> debian/copyright of edk2, attached.  Unfortunately, I had to craft this
> monster by hand; and there are no tools to validate that it remains
> correct[1] after updating to new upstream releases.
> 
> Having a machine-readable copyright format is only the first step.  If I
> ever get a round tuit, my goals are:
> 
>  - a stand-alone tool that can generate a debian/copyright (with "smart"
>    stanza grouping) from the output of licensecheck

Currently, I recommend to use debmake to make a nice initial template
copyright file and also check problematic non-free license with
licensecheck.  Then human manual work.

>  - a standard format for hinting this tool in the debian directory when the
>    answers licensecheck detects by inspecting the source are inaccurate

This is interesting idea.

>  - a stand-alone tool that can compare any two machine-readable copyright
>    files and a given source tree and tell you whether they are equivalent

"debmake -k" checks current source against existing debian/copyright
(It allow slightly different words such as name of organization to be
changed ...)

> The last is key, because it gives us automation around making sure
> debian/copyright is accurate and stays accurate.

Yes.  And focus should be non-free detection and incompatible license
mixture.  So we should not bother too much on permissive license like
the GNU permissive ones for autotools generated files.

Just for fun, I checked edk2 ;-)

I think some ISC license files are labeled as BSD-4-clause.  They are
human errors.

But debmake makes more mistakes than human.  Hmmm.. debmake needs to
improve on Intel-Fat-Driver license.  Hmmm... public domain is also non
optimal result although file has text "This file is in the public
domain,".

- BSD-4-clause
+ BSD-4-Clause-UC

This difference comes from the pedantic SPDX-ism I use.
  http://spdx.org/licenses/

Hmmm... SPDX seems to be updated.  That laso needs to be addressed.  I
don't know how precise we classify.

$ debmake -k
 ...
=== debian/copyright checked for 12165 data ===
Pattern #00: *
  File: StdLib/LibC/Time/tzfile.h
        StdLib/LibC/Time/ZoneProc.c
        StdLib/LibC/Time/Time.c
        StdLib/LibC/Time/TimeVals.h
- BSD-2-clause
+ Public domain

Pattern #38: FatBinPkg/*
  File: FatBinPkg/License.txt
- Intel-Fat-Driver
+ BSD-3-Clause

Pattern #39: FatPkg/*
  File: FatPkg/FatPkg.dsc
        FatPkg/FatPkg.dec
        FatPkg/License.txt
        FatPkg/FatPei/FatPei.inf
        FatPkg/EnhancedFatDxe/Fat.inf
- Intel-Fat-Driver
+ BSD-3-Clause

Pattern #116: StdLib/LibC/Time/strftime.c
  File: StdLib/LibC/Time/strftime.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #118: StdLib/LibC/String/strsep.c
  File: StdLib/LibC/String/strsep.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #127: StdLib/LibC/Stdio/vswscanf.c
  File: StdLib/LibC/Stdio/vswscanf.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #130: StdLib/Include/sys/*
  File: StdLib/Include/sys/ansi.h
        StdLib/Include/sys/EfiCdefs.h
        StdLib/Include/sys/dirent.h
        StdLib/Include/sys/endian.h
        StdLib/Include/sys/wait.h
        StdLib/Include/sys/time.h
        StdLib/Include/sys/stat.h
        StdLib/Include/sys/types.h
        StdLib/Include/sys/ieee754.h
        StdLib/Include/sys/select.h
        StdLib/Include/sys/fd_set.h
        StdLib/Include/sys/param.h
        StdLib/Include/sys/fcntl.h
        StdLib/Include/sys/ioccom.h
        StdLib/Include/sys/resource.h
        StdLib/Include/sys/uio.h
        StdLib/Include/sys/sigtypes.h
- BSD-4-clause
+ BSD-3-Clause

Pattern #130: StdLib/Include/sys/*
  File: StdLib/Include/sys/file.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #131: StdLib/Include/x86/ieee.h
  File: StdLib/Include/x86/ieee.h
- BSD-4-clause
+ BSD-3-Clause

Pattern #132: StdLib/Include/x86/ieee.h
  File: StdLib/Include/x86/ieee.h
- BSD-4-clause
+ BSD-3-Clause

Pattern #144: StdLib/Include/net/*
  File: StdLib/Include/net/radix.h
        StdLib/Include/net/route.h
        StdLib/Include/net/if_dl.h
        StdLib/Include/net/if.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #146: StdLib/Include/arpa/telnet.h
  File: StdLib/Include/arpa/telnet.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #147: StdLib/Include/arpa/nameser_compat.h
  File: StdLib/Include/arpa/nameser_compat.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #148: StdLib/Include/arpa/ftp.h
  File: StdLib/Include/arpa/ftp.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #150: StdLib/Include/netinet/in_systm.h
  File: StdLib/Include/netinet/in_systm.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #156: StdLib/Include/resolv.h
  File: StdLib/Include/resolv.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #157: StdLib/Include/netns/ns.h
  File: StdLib/Include/netns/ns.h
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #161: StdLib/BsdSocketLib/inet_net_pton.c
  File: StdLib/BsdSocketLib/inet_net_pton.c
- BSD-4-clause
+ ISC

Pattern #162: StdLib/BsdSocketLib/res_*.c
  File: StdLib/BsdSocketLib/res_update.c
        StdLib/BsdSocketLib/res_mkupdate.c
- BSD-4-clause
+ ISC

Pattern #164: StdLib/BsdSocketLib/ns_*.c
  File: StdLib/BsdSocketLib/ns_ntoa.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #164: StdLib/BsdSocketLib/ns_*.c
  File: StdLib/BsdSocketLib/ns_ttl.c
        StdLib/BsdSocketLib/ns_print.c
        StdLib/BsdSocketLib/ns_name.c
- BSD-4-clause
+ ISC

Pattern #165: StdLib/BsdSocketLib/getnetbyht.c
  File: StdLib/BsdSocketLib/getnetbyht.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #166: StdLib/BsdSocketLib/getproto.c
  File: StdLib/BsdSocketLib/getproto.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #168: StdLib/BsdSocketLib/gethostbydns.c
  File: StdLib/BsdSocketLib/gethostbydns.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #170: StdLib/BsdSocketLib/getprotoname.c
  File: StdLib/BsdSocketLib/getprotoname.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #171: StdLib/BsdSocketLib/inet_neta.c
  File: StdLib/BsdSocketLib/inet_neta.c
- BSD-4-clause
+ ISC

Pattern #172: StdLib/BsdSocketLib/getservbyport.c
  File: StdLib/BsdSocketLib/getservbyport.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #173: StdLib/BsdSocketLib/inet_pton.c
  File: StdLib/BsdSocketLib/inet_pton.c
- BSD-4-clause
+ ISC

Pattern #174: StdLib/BsdSocketLib/getservent.c
  File: StdLib/BsdSocketLib/getservent.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #176: StdLib/BsdSocketLib/getservbyname.c
  File: StdLib/BsdSocketLib/getservbyname.c
- BSD-4-clause
+ BSD-4-Clause-UC

Pattern #178: StdLib/BsdSocketLib/getprotoent.c
  File: StdLib/BsdSocketLib/getprotoent.c
- BSD-4-clause
+ BSD-4-Clause-UC

Osamu


Reply to: