Gentoo Archives: gentoo-project

From: "Michał Górny" <mgorny@g.o>
To: gentoo-project <gentoo-project@l.g.o>
Subject: [gentoo-project] [RFC] pre-GLEP: Gentoo General Resolution
Date: Thu, 28 Jun 2018 16:14:29
1 Hi, everyone.
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.
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.
12 [1]:
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 ---
30 Abstract
31 ========
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.
40 Motivation
41 ==========
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]_
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.
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.
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]_.
68 Specification
69 =============
71 Possible subjects for a general resolution
72 ------------------------------------------
74 The general resolution provides for the following possibilities:
76 1. Overruling (voiding) any Council decision, provided that:
78 a. the Council decision in question is final (i.e. a general
79 resolution can not be used to bypass the Council),
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).
85 2. Initiating a vote of no confidence against Council members, resulting
86 in a new Council election.
89 Formal procedure of a general resolution
90 ----------------------------------------
92 The general resolution mechanism is defined as follows:
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.
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.
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.
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.
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*.
124 The developer counts are initially defined as:
126 - *N1*: 2 times the square root of the number of active Gentoo
127 developers,
129 - *N2*: one fourth of active Gentoo developers but no less than *N1*.
131 The numbers are not rounded. All quorums are defined as ‘no less than’.
134 Rationale
135 =========
137 Limitations in subject
138 ----------------------
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.
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.
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.
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.
170 Limitations in procedure
171 ------------------------
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.
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.
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.
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.
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).
205 The numbers in practice
206 -----------------------
208 Let's assume the developer count to be 200 active developers.
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.
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.
224 Example procedure of a general resolution
225 -----------------------------------------
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.
232 One of the developers puts forward the following subject:
234 Void the 2018-02-30 Council decision regarding changing the default
235 init system to systemd.
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.
242 At this point, he sends the following mail to gentoo-project:
244 Dear developer community,
246 I would like to call for a general resolution regarding the following
247 subject:
249 Void the 2018-02-30 Council decision regarding changing the default
250 init system to systemd.
252 I believe this was a very bad decision because ...
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.
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.
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.
268 Once the voting period is over, the elections project collect results.
269 They are as follows:
271 * 74 developers voted ‘yes’,
272 * 37 developers voted ‘no’,
273 * remaining developers either abstained or did not vote.
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.
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.
283 The Council decision is void then. The previous default init system
284 is restored.
287 Backwards Compatibility
288 =======================
290 n/a
293 Reference Implementation
294 ========================
296 n/a
299 References
300 ==========
302 .. [#GLEP39] GLEP 39: An "old-school" metastructure proposal with
303 "boot for being a slacker"
304 (
306 .. [#DEBIAN-CONSTITUTION] Debian Constitution
307 (
309 .. [#MAIER-20180403] Matthias Maier, Re: [gentoo-project] Call for
310 agenda items - Council meeting 2018-04-08
311 (
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
321 --
322 Best regards,
323 Michał Górny


File name MIME type
signature.asc application/pgp-signature