[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: List of abbreviations for licenses
From: |
Ludovic Courtès |
Subject: |
Re: List of abbreviations for licenses |
Date: |
Thu, 29 Nov 2012 23:05:08 +0100 |
User-agent: |
Gnus/5.130005 (Ma Gnus v0.5) Emacs/24.2 (gnu/linux) |
Hello!
Nikita Karetnikov <address@hidden> skribis:
> I'm trying to package 'util-linux'. It uses several licenses:
>
> - GPLv3+
> - GPLv2+
> - GPLv2
> - LGPLv2+
> - BSD with advertising
> - Public Domain
>
> What are the common abbreviations for Public Domain and BSD with
> advertising? Is there a list of abbreviations for licenses?
Nixpkgs uses this:
https://github.com/NixOS/nixpkgs/blob/master/pkgs/lib/licenses.nix
which is a subset of this:
http://fedoraproject.org/wiki/Licensing
> As far as I can tell, 'license' doesn't check the used values. So it's
> possible to use an incorrect value (e.g. "foobar"). Should we add a
> function to check this?
There could be a (guix licenses) module along these lines:
(define-module (guix licenses)
#:use-module (srfi srfi-9)
#:export (gplv2+ gplv3+))
(define-record-type <license>
(license name)
license?
(name license-name))
(define gplv3+ (license "GPLv3+"))
(define gplv2+ (license "GPLv2+"))
Packages would then do, for instance:
(package
...
(license gplv3+))
and you would get a unbound-variable warning when passing something
wrong. We could imagine a <license-union> type for multiply-licensed
code, and a <license-set> type for packages that incorporate code under
different licenses. There could be a mechanism to make sure the
‘license’ field is a <license> object, or a <license-set> or
<license-union>
And then, it would be tempting to make a graph of <license> objects to
indicate compatibility, and add additional properties to each <license>
object to describe it more precisely (copyleft, version number, etc.),
and so on.
But! We must keep in mind that people will always write new licenses;
packages will always include files covered by different licenses;
there will always be dual-licensed packages; etc.
More importantly, licensing is not a science, and we can’t pretend to
devise a universal “license calculus”. (This has been discussed at
length in the past on nix-dev.)
Thus, I would start with a simple (guix licenses) module. I would
perhaps even omit the <license> type, and use just plain strings to
start with.
WDYT?
Thanks,
Ludo’.