/[gentoo]/xml/htdocs/proj/en/glep/glep-0023.txt
Gentoo

Contents of /xml/htdocs/proj/en/glep/glep-0023.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (hide annotations) (download)
Tue Nov 21 00:02:05 2006 UTC (7 years, 9 months ago) by genone
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +3 -3 lines
File MIME type: text/plain
update post history

1 g2boojum 1.1 GLEP: 23
2 genone 1.5 Title: Handling of ACCEPT_LICENSE
3 genone 1.7 Version: $Revision: 1.6 $
4     Last-Modified: $Date: 2006/11/19 22:50:15 $
5 genone 1.4 Author: Jason Stubbs <jstubbs@gentoo.org>, Marius Mauch <genone@gentoo.org>
6 g2boojum 1.3 Status: Accepted
7 g2boojum 1.1 Type: Standards Track
8     Content-Type: text/x-rst
9     Created: 9-Mar-2004
10 genone 1.7 Post-History: 8-Mar-2004 10-Mar-2004 25-Oct-2004 18-Nov-2006 21-Nov-2006
11 g2boojum 1.1
12    
13     Abstract
14     ========
15    
16 genone 1.5 Currently, every ebuild in the main gentoo repository is required to have a
17     valid LICENSE entry. However, the syntax of this entry is not officially
18 g2boojum 1.1 defined and the entry itself is only used when outputting package
19     details.
20 g2boojum 1.3
21     Status Update
22     =============
23    
24     Repoman has been updated to check for the LICENSE syntax.
25 genone 1.4 A development portage branch with support for ACCEPT_LICENSE
26     and license groups exists.
27 g2boojum 1.1
28     Motivation
29     ==========
30    
31     Many users wish to regulate the software they install with regards to
32     licenses for various reasons [1]_. Some want a system free of any
33     software that is not OSI-approved; others are simply curious as to what
34     licenses they are implicitly accepting.
35    
36     Furthermore, some software requires that a user interactively accept its
37     license for its author's to consider it legally binding. This is
38     currently implemented using ``eutils.eclass``.
39    
40    
41     Specification
42     =============
43    
44     Ebuild LICENSE Variable
45     -----------------------
46    
47     Most ebuilds are for software which is released under a single license.
48     In these cases, the current LICENSE variable can remain as is. For
49     example:
50    
51     ::
52    
53     LICENSE="single-license"
54    
55     However, there are several ebuilds for software which is released under
56     several licenses, of which the user must accept one, some or all [2]_.
57     To complicate this, some ebuilds include optional components which fall
58     under a different license.
59    
60     To accomodate these cases, LICENSE syntax should accomodate all
61     functionality offered by a DEPEND string. To keep things simple, this
62     GLEP proposes that the syntax be identical. For example:
63    
64     ::
65    
66 g2boojum 1.2 LICENSE="mandatory-license
67     || ( choosable-licence1 chooseable-license-2 )
68 g2boojum 1.1 useflag? ( optional-component-license )"
69    
70    
71 genone 1.5 License names may contain [a-zA-Z0-9] (english alphanumeric characters),
72     _ (underscore), - (dash), . (dot) and + (plus sign).
73    
74 g2boojum 1.1 License Groups
75     --------------
76    
77     Almost all users are willing to install any software that is
78 g2boojum 1.2 FSF-approved. Other users are willing to install any software and
79 genone 1.5 implicitly accept its license. To this end, implementations will also
80     need to handle grouping of licenses.
81 g2boojum 1.1
82 g2boojum 1.2 At a minimum, there needs to be the groups ``GPL-COMPATIBLE``,
83 genone 1.6 ``FSF-APPROVED``, ``OSI-APPROVED`` and ``NON-MUST-HAVE-READ``.
84     ``NON-MUST-HAVE-READ`` licenses are those that don't require manual
85 g2boojum 1.2 acceptance for to be considered legally binding. This is the current
86     behaviour of portage.
87 g2boojum 1.1
88 genone 1.4 These groups are defined in a new file ``license_groups`` in
89     the ``profiles`` subdirectory of the tree (or overlays).
90 genone 1.5 Details of handling groups defined in overlays is implementation dependent.
91    
92 genone 1.4 The format of this file is
93    
94     ::
95    
96     <groupname> <license1> <license2> ... <licenseN>
97    
98     Also any line starting with # is ignored and may be used for comments.
99 genone 1.5 Group names use the same syntax as normal license names. Also license groups
100     may contain other groups.
101 genone 1.4 License groups may not contain negated elements, so a group
102    
103     ::
104    
105     mygroup foo -bar -bla
106    
107     is illegal.
108    
109 g2boojum 1.1
110     ACCEPT_LICENSE
111     --------------
112    
113     This GLEP proposes that a user be able to explicitly accept or decline
114     licenses by editing a new variable ``ACCEPT_LICENSE`` in
115     ``/etc/make.conf``. Again, to keep things simple, the syntax should be
116     similar to that of other incrementals. For example:
117    
118     ::
119    
120     ACCEPT_LICENSE="-* accepted-license -declined-license"
121    
122     As an extension, ``ACCEPT_LICENSE`` must also support `license groups`_.
123     This GLEP proposes that the license group be prepended by the special
124     character "``@``". For example:
125    
126     ::
127    
128 g2boojum 1.2 ACCEPT_LICENSE="-* @FSF-APPROVED"
129 g2boojum 1.1
130 genone 1.4 License groups may be negated with the result that all elements of that group
131     are also negated.
132 g2boojum 1.1
133 genone 1.5 Portage will also offer a package.license facility to offer this functionality
134     on a per-package base (analog to package.keywords), other implementations may
135     implement such a facility differently or not at all.
136    
137     Behaviour
138     ---------
139 g2boojum 1.1
140 genone 1.4 Unaccepted licenses will be treated like any other masked package, that is
141 genone 1.5 the user interface of an implementation will display a message listing any
142     license that has to be accepted before the package can be merged with a
143     pointer to the exact license text.
144 genone 1.4
145     Past versions of this document proposed to handle license-masked packages
146     like blockers, but this would be inconsistent with other visibility
147     filters as well as the current blocker system (as a blocker affects two
148     packages) and be more complicated to implement.
149 g2boojum 1.1
150     Rationale
151     =========
152    
153     An implementation of this proposal should make it easy for users wishing
154     to regulate their software without affecting those that don't.
155    
156    
157     Reference Implementation
158     ========================
159    
160 genone 1.4 Available in portage svn repository under main/branches/license-masking
161 g2boojum 1.1
162    
163     Backwards Compatibility
164     =======================
165    
166     There should be no change to the user experience without the user
167     explicitly choosing to do so. This mandates that the
168     configuration variable be named ``ACCEPT_LICENSE`` as some users may
169     already have it set due to ebuilds using ``eutil.eclass``'s
170     implementation. It also mandates that the default ``ACCEPT_LICENSE`` be
171 genone 1.6 set to ``@NON-MUST-HAVE-READ`` in the main gentoo repository as implementations
172 genone 1.5 are not required to provide an internal default.
173 g2boojum 1.1
174     References
175     ==========
176    
177     .. [1] Gentoo Linux Bug 17367
178     (http://bugs.gentoo.org/show_bug.cgi?id=17367)
179     .. [2] Gentoo Linux Bug 34146
180     (http://bugs.gentoo.org/show_bug.cgi?id=34146)
181    
182    
183     Copyright
184     =========
185    
186     This document has been placed in the public domain.

  ViewVC Help
Powered by ViewVC 1.1.20