From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 21BB2138334 for ; Fri, 13 Jul 2018 13:06:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0101CE08ED; Fri, 13 Jul 2018 13:06:17 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B5C04E08ED for ; Fri, 13 Jul 2018 13:06:16 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id EB0D2335CE6 for ; Fri, 13 Jul 2018 13:06:14 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E412535F for ; Fri, 13 Jul 2018 13:06:12 +0000 (UTC) From: "Ulrich Müller" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ulrich Müller" Message-ID: <1531487009.8cea4f9e8c19acc0fbd77d3900f34e1bbc826f94.ulm@gentoo> Subject: [gentoo-commits] data/glep:master commit in: / X-VCS-Repository: data/glep X-VCS-Files: glep-0077.rst X-VCS-Directories: / X-VCS-Committer: ulm X-VCS-Committer-Name: Ulrich Müller X-VCS-Revision: 8cea4f9e8c19acc0fbd77d3900f34e1bbc826f94 X-VCS-Branch: master Date: Fri, 13 Jul 2018 13:06:12 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 8f031de7-e6a1-4fa9-89eb-d50fd364c4e5 X-Archives-Hash: f3cfc792049c7932d11ad09e68a9690c commit: 8cea4f9e8c19acc0fbd77d3900f34e1bbc826f94 Author: Michał Górny gentoo org> AuthorDate: Mon Jul 2 18:55:29 2018 +0000 Commit: Ulrich Müller gentoo org> CommitDate: Fri Jul 13 13:03:29 2018 +0000 URL: https://gitweb.gentoo.org/data/glep.git/commit/?id=8cea4f9e glep-0077: Initial draft of General Resolution pre-GLEP glep-0077.rst | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) diff --git a/glep-0077.rst b/glep-0077.rst new file mode 100644 index 0000000..551e1b3 --- /dev/null +++ b/glep-0077.rst @@ -0,0 +1,302 @@ +--- +GLEP: 77 +Title: Gentoo General Resolution +Author: Michał Górny +Type: Standards Track +Status: Draft +Version: 1 +Created: 2018-06-22 +Last-Modified: 2018-06-28 +Post-History: 2018-06-28 +Content-Type: text/x-rst +--- + +Abstract +======== + +This GLEP defines the procedure of a ‘general resolution’ that can +be used by developers to enforce Council's responsibility towards their +electorate. The general resolution can be used to overrule a Council +decision or disband the Council with a 2:1 majority vote of all +developers. + + +Motivation +========== + +The GLEP 39 metastructure defines the Council as an elected body +of Gentoo developer representatives. The Council decides on global +issues and handles appeals from disciplinary actions. While the Council +should naturally represent their electorate, the metastructure does not +define a precise way of exercising this responsibility. [#GLEP39]_ + +In the past, a few developers have expressed their dissatisfaction with +some of the Council decisions. However, the Council members lacked +a good way of determining whether those opinions expressed the feelings +of the majority of developers, or were limited to a small group. +At the same time, disagreeing developers had no way of answering +the same question without raising inevitable hostility between +developers. + +This GLEP aims to introduce a mechanism of a ‘general resolution’ that +can be used by developers to override Council decisions, or initiate +a vote of no confidence against the Council. This introduces a clear +method of expressing and verifying disagreement with the proceedings +of the Council at any point during its term. + +This mechanism is inspired by the ‘general resolution’ defined +by the Debian Constitution [#DEBIAN-CONSTITUTION]_. It has been +originally suggested by Matthias Maier [#MAIER-20180403]_. + + +Specification +============= + +Possible subjects for a general resolution +------------------------------------------ + +The general resolution provides for the following possibilities: + +1. Overruling (voiding) any Council decision, provided that: + + a. the Council decision in question is final (i.e. a general + resolution can not be used to bypass the Council), + + b. the decision can be made without disclosing any information that + is considered confidential (e.g. appeals of disciplinary actions + cannot be the subject of a general resolution). + +2. Initiating a vote of no confidence against Council members, resulting + in a new Council election. + + +Formal procedure of a general resolution +---------------------------------------- + +The general resolution mechanism is defined as follows: + +1. A Gentoo developer (or a group of Gentoo developers) defines + the subject of the general resolution --- the specific motion + to void, or other request as defined in the previous section. + +2. The requestor gathers initial support for their proposal. In order + for general resolution vote to be possible, the request needs to + be supported by *N1* developers. Developers second the request + by stating their approval along with the subject of the general + resolution. This shall happen in text form with an OpenPGP-signed + e-mail sent to the original requestor. + +3. Once the signed approvals of *N1* developers are collected, + the requestor sends a ‘Request for a general resolution’ + to the gentoo-project mailing list. The request shall include + the subject of the resolution, all signed approvals + from the seconding developers, and a rationale for further + discussion. The discussion is open for at least two weeks. + +4. The elections project shall confirm that all formal requirements + for a general resolution are fulfilled, and shall state a timeline + for voting. The voting period shall start no sooner than two weeks + after the request, and shall last for two weeks. All active Gentoo + developers at the time when the request is published on the mailing + list are eligible to vote. + +5. The developers vote on the motion of the general resolution. + In order for the motion to pass, it must result in a ratio + of positive to negative votes of at least 2:1. Additionally, + the number of positive votes must be at least *N2*. + +The developer counts are initially defined as: + +- *N1*: 2 times the square root of the number of active Gentoo + developers, + +- *N2*: one fourth of active Gentoo developers but no less than *N1*. + +The numbers are not rounded. All quorums are defined as ‘no less than’. + + +Rationale +========= + +Limitations in subject +---------------------- + +The main purpose of the general resolution mechanism is to provide a way +for developers to overrule Council decisions or to disband the Council +whenever necessary. It is not meant to be used as a regular procedure +for making decisions. Its limitations and the procedure has been +specifically designed to focus on that. + +Most notably, only final Council decisions can be overruled +via a general resolution. This aims to prevent developers +from attempting to bypass the Council and abuse the general resolution +as a generic decision-making process. Furthermore, for simplicity +the general resolution does not provide means to alter the motion +or make a new one --- it only provides for voiding +the previously-approved motion. + +The general resolution involves a vote of all developers. For this +reason, it is essential that all developers know the rationale +for the request and have access to all the data. This is why +the process involves a public discussion prior to the vote, and why it +can't be used for the purposes of cancelling disciplinary actions. +If developers believe that the Council is unjustly rejecting +disciplinary action appeals, they can request the vote of no confidence. + +The alternative option of a vote of no confidence is provided for +the case when developers believe that Council members are repeatedly +neglecting their duty towards the developers. This option makes it +possible to disband the Council mid-term and run a new Council election. +If the vote of no confidence passes, the Council members lose their +seats immediately and there is no Council until the election finishes. + + +Limitations in procedure +------------------------ + +Since the general resolution requires a vote of all developers, this +GLEP provides further procedural restrictions in order to prevent +developers from abusing the process to repeatedly call all-developer +votes. + +Most notably, the general resolution vote can be called only +if the required number of developers second the motion first. It is +recommended that the initial support is collected via private channels, +to avoid creating unnecessary peaks of ‘me too’ traffic on the Gentoo +mailing lists. OpenPGP signatures are used to confirm the authenticity +of developer support; the signed messages are required to contain +the original motion in order to prevent reusing earlier approvals +for a new motion. + +The minimal number of developers initially supporting the general +resolution has been selected to prevent abuse by small groups +of developers while making it possible to actually collect support +for justified use of general resolution. + +The 2:1 majority of votes requirement, as well as quorum, also mean +to discourage developers from trying to abuse the process. Since +the decisions made this way indicate serious accusations towards +the Council members, it is important that they are actually supported +by significant population of developers. + +The quorum (*N2*, defined as one fourth of active developers) is +intentionally lower than the turnout at the recent Council elections +(39% in 2017, 37% in 2016). It is defined in terms of positive votes +in order to satisfy the criterium of monotonicity (i.e. prevent ‘no’ +votes from helping the motion to pass). + + +The numbers in practice +----------------------- + +Let's assume the developer count to be 200 active developers. + +*N1* is defined as twice the square root of 200 then which equals +approximate 28.3 developers. Therefore, in order to call for general +resolution one does need the support of 29 developers. The number does +not grow quick with new developers being admitted — it would be 34.6 +for 300 developers, 40 for 400 developers. + +*N2* is defined as one fourth of active developers, and the majority +of votes is defined as 2:1. This means that for a motion to pass, it +must be approved by at least 50 active developers, with no more than +25 developers actively opposing it. For every developer voting ‘no’ +above the 25, at least two developers need to vote ‘yes’ for the motion +to pass. + + +Example procedure of a general resolution +----------------------------------------- + +Let's consider the following example. On 2018-02-30 the Council has +passed a motion that changed the default init system for Gentoo +to systemd. The developer community at large seems to disagree with +this decision. The developer community consists of 200 developers. + +One of the developers puts forward the following subject: + + Void the 2018-02-30 Council decision regarding changing the default + init system to systemd. + +He finds 28 other developers who disagree with the Council decision, +and sends this text to them. They add a cleartext signature to it, +and send it back. He adds his own signed subject, and prepares a text +file with 29 signed subjects. + +At this point, he sends the following mail to gentoo-project: + + Dear developer community, + + I would like to call for a general resolution regarding the following + subject: + + Void the 2018-02-30 Council decision regarding changing the default + init system to systemd. + + I believe this was a very bad decision because ... + +He appropriately attaches the signed approvals as a text file to +the mail. At this point, the discussion on the topic can begin. + +A member of elections project notices the request and starts processing +it. First he determines the cutoff date for the vote and creates +an appropriate list of eligible developers. He downloads the signed +approvals and uses GnuPG to verify all the signatures. Afterwards, he +confirms that the keys used match the fingerprints of 29 distinct +developers at the cutoff date. + +The elections project member sets up vote for the presented subject +to start two weeks from the initial mail. He sends a reply +to the original post with the schedule and voting instructions. + +Once the voting period is over, the elections project collect results. +They are as follows: + +* 74 developers voted ‘yes’, +* 37 developers voted ‘no’, +* remaining developers either abstained or did not vote. + +Firstly, the quorum is verified. In this instance, 50 ‘yes’ votes are +required to satisfy the quorum. Since 74 developers have voted ‘yes’, +the quorum is satisfied. + +Secondly, the ratio is verified. Since 37 developers have voted ‘no’, +there needs to be at least 74 ‘yes’. Since exactly 74 developers have +voted ‘yes’, the motion passes. + +The Council decision is void then. The previous default init system +is restored. + + +Backwards Compatibility +======================= + +n/a + + +Reference Implementation +======================== + +n/a + + +References +========== + +.. [#GLEP39] GLEP 39: An "old-school" metastructure proposal with + "boot for being a slacker" + (https://www.gentoo.org/glep/glep-0039.html) + +.. [#DEBIAN-CONSTITUTION] Debian Constitution + (https://www.debian.org/devel/constitution.en.html) + +.. [#MAIER-20180403] Matthias Maier, Re: [gentoo-project] Call for + agenda items - Council meeting 2018-04-08 + (https://archives.gentoo.org/gentoo-project/message/973be0a662b3cc74aa118a1128dcac9e) + + +Copyright +========= +This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 +Unported License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-sa/3.0/.