Gentoo Archives: gentoo-commits

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