1 |
Hi, everyone. |
2 |
|
3 |
The text of a new GLEP proposal follows. The GLEP implements a General |
4 |
Resolution mechanism based on the one in Debian; the idea was initially |
5 |
proposed by Matthias Maier [1]; however, he didn't manage to find time |
6 |
to write the GLEP. |
7 |
|
8 |
Please review the proposed text and let me know what you think. Please |
9 |
note that the numbers presented have been chosen arbitrarily and are up |
10 |
for discussion. |
11 |
|
12 |
[1]:https://archives.gentoo.org/gentoo-project/message/973be0a662b3cc74aa118a1128dcac9e |
13 |
|
14 |
|
15 |
--- |
16 |
GLEP: 9999 |
17 |
Title: Gentoo General Resolution |
18 |
Author: Michał Górny <mgorny@g.o> |
19 |
Type: Standards Track |
20 |
Status: Draft |
21 |
Version: 1 |
22 |
Created: 2018-06-22 |
23 |
Last-Modified: 2018-06-28 |
24 |
Post-History: |
25 |
Content-Type: text/x-rst |
26 |
Requires: |
27 |
Replaces: |
28 |
--- |
29 |
|
30 |
Abstract |
31 |
======== |
32 |
|
33 |
This GLEP defines the procedure of a ‘general resolution’ that can |
34 |
be used by developers to enforce Council's responsibility towards their |
35 |
electorate. The general resolution can be used to overrule a Council |
36 |
decision or disband the Council with a 2:1 majority vote of all |
37 |
developers. |
38 |
|
39 |
|
40 |
Motivation |
41 |
========== |
42 |
|
43 |
The GLEP 39 metastructure defines the Council as an elected body |
44 |
of Gentoo developer representatives. The Council decides on global |
45 |
issues and handles appeals from disciplinary actions. While the Council |
46 |
should naturally represent their electorate, the metastructure does not |
47 |
define a precise way of exercising this responsibility. [#GLEP39]_ |
48 |
|
49 |
In the past, a few developers have expressed their dissatisfaction with |
50 |
some of the Council decisions. However, the Council members lacked |
51 |
a good way of determining whether those opinions expressed the feelings |
52 |
of the majority of developers, or were limited to a small group. |
53 |
At the same time, disagreeing developers had no way of answering |
54 |
the same question without raising inevitable hostility between |
55 |
developers. |
56 |
|
57 |
This GLEP aims to introduce a mechanism of a ‘general resolution’ that |
58 |
can be used by developers to override Council decisions, or initiate |
59 |
a vote of no confidence against the Council. This introduces a clear |
60 |
method of expressing and verifying disagreement with the proceedings |
61 |
of the Council at any point during its term. |
62 |
|
63 |
This mechanism is inspired by the ‘general resolution’ defined |
64 |
by the Debian Constitution [#DEBIAN-CONSTITUTION]_. It has been |
65 |
originally suggested by Matthias Maier [#MAIER-20180403]_. |
66 |
|
67 |
|
68 |
Specification |
69 |
============= |
70 |
|
71 |
Possible subjects for a general resolution |
72 |
------------------------------------------ |
73 |
|
74 |
The general resolution provides for the following possibilities: |
75 |
|
76 |
1. Overruling (voiding) any Council decision, provided that: |
77 |
|
78 |
a. the Council decision in question is final (i.e. a general |
79 |
resolution can not be used to bypass the Council), |
80 |
|
81 |
b. the decision can be made without disclosing any information that |
82 |
is considered confidential (e.g. appeals of disciplinary actions |
83 |
cannot be the subject of a general resolution). |
84 |
|
85 |
2. Initiating a vote of no confidence against Council members, resulting |
86 |
in a new Council election. |
87 |
|
88 |
|
89 |
Formal procedure of a general resolution |
90 |
---------------------------------------- |
91 |
|
92 |
The general resolution mechanism is defined as follows: |
93 |
|
94 |
1. A Gentoo developer (or a group of Gentoo developers) defines |
95 |
the subject of the general resolution --- the specific motion |
96 |
to void, or other request as defined in the previous section. |
97 |
|
98 |
2. The requestor gathers initial support for their proposal. In order |
99 |
for general resolution vote to be possible, the request needs to |
100 |
be supported by *N1* developers. Developers second the request |
101 |
by stating their approval along with the subject of the general |
102 |
resolution. This shall happen in text form with an OpenPGP-signed |
103 |
e-mail sent to the original requestor. |
104 |
|
105 |
3. Once the signed approvals of *N1* developers are collected, |
106 |
the requestor sends a ‘Request for a general resolution’ |
107 |
to the gentoo-project mailing list. The request shall include |
108 |
the subject of the resolution, all signed approvals |
109 |
from the seconding developers, and a rationale for further |
110 |
discussion. The discussion is open for at least two weeks. |
111 |
|
112 |
4. The elections project shall confirm that all formal requirements |
113 |
for a general resolution are fulfilled, and shall state a timeline |
114 |
for voting. The voting period shall start no sooner than two weeks |
115 |
after the request, and shall last for two weeks. All active Gentoo |
116 |
developers at the time when the request is published on the mailing |
117 |
list are eligible to vote. |
118 |
|
119 |
5. The developers vote on the motion of the general resolution. |
120 |
In order for the motion to pass, it must result in a ratio |
121 |
of positive to negative votes of at least 2:1. Additionally, |
122 |
the number of positive votes must be at least *N2*. |
123 |
|
124 |
The developer counts are initially defined as: |
125 |
|
126 |
- *N1*: 2 times the square root of the number of active Gentoo |
127 |
developers, |
128 |
|
129 |
- *N2*: one fourth of active Gentoo developers but no less than *N1*. |
130 |
|
131 |
The numbers are not rounded. All quorums are defined as ‘no less than’. |
132 |
|
133 |
|
134 |
Rationale |
135 |
========= |
136 |
|
137 |
Limitations in subject |
138 |
---------------------- |
139 |
|
140 |
The main purpose of the general resolution mechanism is to provide a way |
141 |
for developers to overrule Council decisions or to disband the Council |
142 |
whenever necessary. It is not meant to be used as a regular procedure |
143 |
for making decisions. Its limitations and the procedure has been |
144 |
specifically designed to focus on that. |
145 |
|
146 |
Most notably, only final Council decisions can be overruled |
147 |
via a general resolution. This aims to prevent developers |
148 |
from attempting to bypass the Council and abuse the general resolution |
149 |
as a generic decision-making process. Furthermore, for simplicity |
150 |
the general resolution does not provide means to alter the motion |
151 |
or make a new one --- it only provides for voiding |
152 |
the previously-approved motion. |
153 |
|
154 |
The general resolution involves a vote of all developers. For this |
155 |
reason, it is essential that all developers know the rationale |
156 |
for the request and have access to all the data. This is why |
157 |
the process involves a public discussion prior to the vote, and why it |
158 |
can't be used for the purposes of cancelling disciplinary actions. |
159 |
If developers believe that the Council is unjustly rejecting |
160 |
disciplinary action appeals, they can request the vote of no confidence. |
161 |
|
162 |
The alternative option of a vote of no confidence is provided for |
163 |
the case when developers believe that Council members are repeatedly |
164 |
neglecting their duty towards the developers. This option makes it |
165 |
possible to disband the Council mid-term and run a new Council election. |
166 |
If the vote of no confidence passes, the Council members lose their |
167 |
seats immediately and there is no Council until the election finishes. |
168 |
|
169 |
|
170 |
Limitations in procedure |
171 |
------------------------ |
172 |
|
173 |
Since the general resolution requires a vote of all developers, this |
174 |
GLEP provides further procedural restrictions in order to prevent |
175 |
developers from abusing the process to repeatedly call all-developer |
176 |
votes. |
177 |
|
178 |
Most notably, the general resolution vote can be called only |
179 |
if the required number of developers second the motion first. It is |
180 |
recommended that the initial support is collected via private channels, |
181 |
to avoid creating unnecessary peaks of ‘me too’ traffic on the Gentoo |
182 |
mailing lists. OpenPGP signatures are used to confirm the authenticity |
183 |
of developer support; the signed messages are required to contain |
184 |
the original motion in order to prevent reusing earlier approvals |
185 |
for a new motion. |
186 |
|
187 |
The minimal number of developers initially supporting the general |
188 |
resolution has been selected to prevent abuse by small groups |
189 |
of developers while making it possible to actually collect support |
190 |
for justified use of general resolution. |
191 |
|
192 |
The 2:1 majority of votes requirement, as well as quorum, also mean |
193 |
to discourage developers from trying to abuse the process. Since |
194 |
the decisions made this way indicate serious accusations towards |
195 |
the Council members, it is important that they are actually supported |
196 |
by significant population of developers. |
197 |
|
198 |
The quorum (*N2*, defined as one fourth of active developers) is |
199 |
intentionally lower than the turnout at the recent Council elections |
200 |
(39% in 2017, 37% in 2016). It is defined in terms of positive votes |
201 |
in order to satisfy the criterium of monotonicity (i.e. prevent ‘no’ |
202 |
votes from helping the motion to pass). |
203 |
|
204 |
|
205 |
The numbers in practice |
206 |
----------------------- |
207 |
|
208 |
Let's assume the developer count to be 200 active developers. |
209 |
|
210 |
*N1* is defined as twice the square root of 200 then which equals |
211 |
approximate 28.3 developers. Therefore, in order to call for general |
212 |
resolution one does need the support of 29 developers. The number does |
213 |
not grow quick with new developers being admitted — it would be 34.6 |
214 |
for 300 developers, 40 for 400 developers. |
215 |
|
216 |
*N2* is defined as one fourth of active developers, and the majority |
217 |
of votes is defined as 2:1. This means that for a motion to pass, it |
218 |
must be approved by at least 50 active developers, with no more than |
219 |
25 developers actively opposing it. For every developer voting ‘no’ |
220 |
above the 25, at least two developers need to vote ‘yes’ for the motion |
221 |
to pass. |
222 |
|
223 |
|
224 |
Example procedure of a general resolution |
225 |
----------------------------------------- |
226 |
|
227 |
Let's consider the following example. On 2018-02-30 the Council has |
228 |
passed a motion that changed the default init system for Gentoo |
229 |
to systemd. The developer community at large seems to disagree with |
230 |
this decision. The developer community consists of 200 developers. |
231 |
|
232 |
One of the developers puts forward the following subject: |
233 |
|
234 |
Void the 2018-02-30 Council decision regarding changing the default |
235 |
init system to systemd. |
236 |
|
237 |
He finds 28 other developers who disagree with the Council decision, |
238 |
and sends this text to them. They add a cleartext signature to it, |
239 |
and send it back. He adds his own signed subject, and prepares a text |
240 |
file with 29 signed subjects. |
241 |
|
242 |
At this point, he sends the following mail to gentoo-project: |
243 |
|
244 |
Dear developer community, |
245 |
|
246 |
I would like to call for a general resolution regarding the following |
247 |
subject: |
248 |
|
249 |
Void the 2018-02-30 Council decision regarding changing the default |
250 |
init system to systemd. |
251 |
|
252 |
I believe this was a very bad decision because ... |
253 |
|
254 |
He appropriately attaches the signed approvals as a text file to |
255 |
the mail. At this point, the discussion on the topic can begin. |
256 |
|
257 |
A member of elections project notices the request and starts processing |
258 |
it. First he determines the cutoff date for the vote and creates |
259 |
an appropriate list of eligible developers. He downloads the signed |
260 |
approvals and uses GnuPG to verify all the signatures. Afterwards, he |
261 |
confirms that the keys used match the fingerprints of 29 distinct |
262 |
developers at the cutoff date. |
263 |
|
264 |
The elections project member sets up vote for the presented subject |
265 |
to start two weeks from the initial mail. He sends a reply |
266 |
to the original post with the schedule and voting instructions. |
267 |
|
268 |
Once the voting period is over, the elections project collect results. |
269 |
They are as follows: |
270 |
|
271 |
* 74 developers voted ‘yes’, |
272 |
* 37 developers voted ‘no’, |
273 |
* remaining developers either abstained or did not vote. |
274 |
|
275 |
Firstly, the quorum is verified. In this instance, 50 ‘yes’ votes are |
276 |
required to satisfy the quorum. Since 74 developers have voted ‘yes’, |
277 |
the quorum is satisfied. |
278 |
|
279 |
Secondly, the ratio is verified. Since 37 developers have voted ‘no’, |
280 |
there needs to be at least 74 ‘yes’. Since exactly 74 developers have |
281 |
voted ‘yes’, the motion passes. |
282 |
|
283 |
The Council decision is void then. The previous default init system |
284 |
is restored. |
285 |
|
286 |
|
287 |
Backwards Compatibility |
288 |
======================= |
289 |
|
290 |
n/a |
291 |
|
292 |
|
293 |
Reference Implementation |
294 |
======================== |
295 |
|
296 |
n/a |
297 |
|
298 |
|
299 |
References |
300 |
========== |
301 |
|
302 |
.. [#GLEP39] GLEP 39: An "old-school" metastructure proposal with |
303 |
"boot for being a slacker" |
304 |
(https://www.gentoo.org/glep/glep-0039.html) |
305 |
|
306 |
.. [#DEBIAN-CONSTITUTION] Debian Constitution |
307 |
(https://www.debian.org/devel/constitution.en.html) |
308 |
|
309 |
.. [#MAIER-20180403] Matthias Maier, Re: [gentoo-project] Call for |
310 |
agenda items - Council meeting 2018-04-08 |
311 |
(https://archives.gentoo.org/gentoo-project/message/973be0a662b3cc74aa118a1128dcac9e) |
312 |
|
313 |
|
314 |
Copyright |
315 |
========= |
316 |
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 |
317 |
Unported License. To view a copy of this license, visit |
318 |
http://creativecommons.org/licenses/by-sa/3.0/. |
319 |
|
320 |
|
321 |
-- |
322 |
Best regards, |
323 |
Michał Górny |