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