Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] data/glep:glep-general-resolution commit in: /
Date: Wed, 04 Jul 2018 07:04:01
Message-Id: 1530687827.d9c38ef75c89272ed8dd43703cf79e3563b85226.mgorny@gentoo
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/.