summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Signes <rjbs@semiotic.systems>2020-11-24 09:17:46 -0500
committerSteve Hay <steve.m.hay@googlemail.com>2021-01-09 12:17:10 +0000
commit942f668e9233a3d2ce9eefb0d0d81ca9a65ef859 (patch)
tree45a7c2a9b55ac13c62b3e68b71b19e656e5ab670
parent9f289b466f6ebe0aa645eddd42669ee8dbb57cbc (diff)
downloadperl-942f668e9233a3d2ce9eefb0d0d81ca9a65ef859.tar.gz
perlgov: the perl governance document
(cherry picked from commit 05a3a9e270acbdb476e3ca1a8ef39a7eaf374406)
-rw-r--r--MANIFEST1
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perlgov.pod531
-rw-r--r--win32/pod.mak4
4 files changed, 537 insertions, 0 deletions
diff --git a/MANIFEST b/MANIFEST
index 8542727347..6fac691f4d 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5233,6 +5233,7 @@ pod/perlfork.pod Perl fork() information
pod/perlform.pod Perl formats
pod/perlfunc.pod Perl built-in functions
pod/perlgit.pod Using git with the Perl repository
+pod/perlgov.pod Perl Rules of Governance
pod/perlgpl.pod GNU General Public License
pod/perlguts.pod Perl internal functions for those doing extensions
pod/perlhack.pod Perl hackers guide
diff --git a/pod/perl.pod b/pod/perl.pod
index f17c4b68a1..eb42e51c4f 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -171,6 +171,7 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
perlhacktut Walk through the creation of a simple C code patch
perlhacktips Tips for Perl core C code hacking
perlpolicy Perl development policies
+ perlgov Perl Rules of Governance
perlgit Using git with the Perl repository
=head2 Miscellaneous
diff --git a/pod/perlgov.pod b/pod/perlgov.pod
new file mode 100644
index 0000000000..2a500def45
--- /dev/null
+++ b/pod/perlgov.pod
@@ -0,0 +1,531 @@
+=encoding utf-8
+
+=head1 NAME
+
+perlgov - Perl Rules of Governance
+
+=head2 PREAMBLE
+
+We are forming a system of governance for development of the Perl programming
+language.
+
+The scope of governance includes the language definition, its
+implementation, its test suite, its documentation, and the policies and
+procedures by which it is developed and maintained.
+
+The system of governance includes definitions of the groups that will make
+decisions, the rules by which these groups are formed and changed, and the
+enumerated powers and constraints on the activities of these governing
+groups.
+
+In forming a system of governance, we seek to achieve the following goals:
+
+=over
+
+=item *
+
+We want a system that is functional. That means the governing groups may
+decide to undertake large changes, or they may decide to act conservatively,
+but they will act with intent and clear communication rather than fail to reach
+decisions when needed.
+
+=item *
+
+We want a system that is trusted. That means that a reasonable contributor to
+Perl might disagree with decisions made by the governing groups, but will
+accept that they were made in good faith in consultation with relevant
+communities outside the governing groups.
+
+=item *
+
+We want a system that is sustainable. That means it has provisions to
+self-modify, including ways of adding new members to the governing groups, ways
+to survive members becoming inactive, and ways of amending the rules of
+governance themselves if needed.
+
+=item *
+
+We want a system that is transparent. That means that it will prefer policies
+that manage ordinary matters in public, and it will prefer secrecy in a limited
+number of situations.
+
+=item *
+
+We want a system that is respectful. That means that it will establish
+standards of civil discourse that allow for healthy disagreement but avoid
+rancor and hostility in the community for which it is responsible.
+
+=back
+
+=head1 Mandate
+
+Perl language governance shall work to:
+
+=over
+
+=item *
+
+Maintain the quality, stability, and continuity of the Perl language and
+interpreter
+
+=item *
+
+Guide the evolution of the Perl language and interpreter
+
+=item *
+
+Establish and oversee the policies, procedures, systems, and mechanisms that
+enable a community of contributors to the Perl language and interpreter
+
+=item *
+
+Encourage discussion and consensus among contributors as preferential to formal
+decision making by governance groups
+
+=item *
+
+Facilitate communication between contributors and external stakeholders in the
+broader Perl ecosystem
+
+=back
+
+=head1 Definitions
+
+This document describes three roles involved in governance:
+
+=over
+
+=item "Core Team"
+
+=item "Steering Council"
+
+=item "Vote Administrator"
+
+=back
+
+A section on each follows.
+
+=head2 The Core Team
+
+The Core Team are a group of trusted volunteers involved in the ongoing
+development of the Perl language and interpreter. They are not required to be
+language developers or committers.
+
+References to specific votes are explained in the "Rules for Voting" section.
+
+=head3 Powers
+
+In addition to their contributions to the Perl language, the Core Team sets
+the rules of Perl governance, decides who participates in what role in
+governance, and delegates substantial decision making power to the Steering
+Council.
+
+Specifically:
+
+=over
+
+=item *
+
+They elect the Steering Council and have the power to remove Steering
+Council members.
+
+=item *
+
+In concert with the Steering Council, they manage Core Team membership.
+
+=item *
+
+In concert with the Steering Council, they have the power to modify the Perl
+Rules of Governance.
+
+=back
+
+The Core Team do not have any authority over parts of the Perl ecosystem
+unrelated to developing and releasing the language itself. These include, but
+are not limited to:
+
+=over
+
+=item *
+
+The Perl Foundation
+
+=item *
+
+CPAN administration and CPAN authors
+
+=item *
+
+perl.org, metacpan.org, and other community-maintained websites and services
+
+=item *
+
+Perl conferences and events, except those organized directly by Core Team
+
+=item *
+
+Perl-related intellectual property legally owned by third-parties, except as
+allowed by applicable licenses or agreements.
+
+=back
+
+=head3 Membership
+
+The initial Core Team members will be specified when this document is
+first ratified.
+
+Any Core Team member may nominate someone to be added to the Core Team by
+sending the nomination to the Steering Council. The Steering Council must
+approve or reject the nomination. If approved, the Steering Council will
+organize a Membership Change Vote to ratify the addition.
+
+Core Team members should demonstrate:
+
+=over
+
+=item *
+
+A solid track record of being constructive and helpful
+
+=item *
+
+Significant contributions to the project's goals, in any form
+
+=item *
+
+Willingness to dedicate some time to improving Perl
+
+=back
+
+Contributions are not limited to code. Here is an incomplete list of areas
+where contributions may be considered for joining the Core Team:
+
+=over
+
+=item *
+
+Working on community management and outreach
+
+=item *
+
+Providing support on mailing lists, IRC, or other forums
+
+=item *
+
+Triaging tickets
+
+=item *
+
+Writing patches (code, docs, or tests)
+
+=item *
+
+Reviewing patches (code, docs, or tests)
+
+=item *
+
+Participating in design discussions
+
+=item *
+
+Providing expertise in a particular domain (security, i18n, etc.)
+
+=item *
+
+Managing Perl infrastructure (websites, CI, documentation, etc.)
+
+=item *
+
+Maintaining significant projects in the Perl ecosystem
+
+=item *
+
+Creating visual designs
+
+=back
+
+Core Team membership acknowledges sustained and valuable efforts that align
+well with the philosophy and the goals of the Perl project.
+
+Core Team members are expected to act as role models for the community and
+custodians of the project, on behalf of the community and all those who rely
+on Perl.
+
+=head3 Term
+
+Core Team members serve until they are removed.
+
+=head3 Removal
+
+Core Team Members may resign their position at any time.
+
+In exceptional circumstances, it may be necessary to remove someone from the
+Core Team against their will, such as for flagrant or repeated violations of a
+Code of Conduct. Any Core Team member may send a recall request to the
+Steering Council naming the individual to be removed. The Steering Council
+must approve or reject the recall request. If approved, the Steering Council
+will organize a Membership Change vote to ratify the removal.
+
+If the removed member is also on the Steering Council, then they are removed
+from the Steering Council as well.
+
+=head3 Inactivity
+
+Core Team members who have stopped contributing are encouraged to declare
+themselves "inactive". Inactive members do not nominate or vote. Inactive
+members may declare themselves active at any time, except when a vote has been
+proposed and is not concluded. Eligibility to nominate or vote will be
+determined by the Vote Administrator.
+
+To record and honor their contributions, inactive Core Team members will
+continue to be listed alongside active members.
+
+=head3 No Confidence in the Steering Council
+
+The Core Team may remove either a single Steering Council member or the entire
+Steering Council via a No Confidence Vote.
+
+A No Confidence Vote is triggered when a Core Team member calls for one
+publicly on an appropriate project communication channel, and another Core
+Team member seconds the proposal.
+
+If a No Confidence Vote removes all Steering Council members, the Vote
+Administrator of the No Confidence Vote will then administer an election
+to select a new Steering Council.
+
+=head3 Amending Perl Rules of Governance
+
+Any Core Team member may propose amending the Perl Rules of Governance by
+sending a proposal to the Steering Council. The Steering Council must decide
+to approve or reject the proposal. If approved, the Steering Council will
+administer an Amendment Vote.
+
+=head3 Rules for Voting
+
+Membership Change, Amendment, and No Confidence Votes require 2/3 of
+participating votes from Core Team members to pass.
+
+A Vote Administrator must be selected following the rules in the "Vote
+Administrator" section.
+
+The vote occurs in two steps:
+
+=over
+
+=item 1
+
+The Vote Administrator describes the proposal being voted upon. The Core Team
+then may discuss the matter in advance of voting.
+
+=item 2
+
+Active Core Team members vote in favor or against the proposal. Voting is
+performed anonymously.
+
+=back
+
+For a Membership Change Vote, each phase will last one week. For Amendment and
+No Confidence Votes, each phase will last two weeks.
+
+=head2 The Steering Council
+
+The Steering Council is a 3-person committee, elected by the Core
+Team. Candidates are not required to be members of the Core Team. Non-member
+candidates are added to the Core Team if elected as if by a Membership Change
+Vote.
+
+References to specific elections are explained in the "Rules for Elections" section.
+
+=head3 Powers
+
+The Steering Council has broad authority to make decisions about the
+development of the Perl language, the interpreter, and all other components,
+systems and processes that result in new releases of the language interpreter.
+
+For example, it can:
+
+=over
+
+=item *
+
+Manage the schedule and process for shipping new releases
+
+=item *
+
+Establish procedures for proposing, discussing and deciding upon changes to the
+language
+
+=item *
+
+Delegate power to individuals on or outside the Steering Council
+
+=back
+
+Decisions of the Steering Council will be made by majority vote of non-vacant
+seats on the council.
+
+The Steering Council should look for ways to use these powers as little as
+possible. Instead of voting, it's better to seek consensus. Instead of ruling
+on individual cases, it's better to define standards and processes that apply
+to all cases.
+
+As with the Core Team, the Steering Council does not have any authority over
+parts of the Perl ecosystem unrelated to developing and releasing the language
+itself.
+
+The Steering Council does not have the power to modify the Perl Rules of
+Governance, except as provided in the section "Amending Perl Rules of
+Governance".
+
+=head3 Term
+
+A new Steering Council will be chosen by a Term Election within two weeks after
+each stable feature release (that is, change to C<PERL_REVISION> or
+C<PERL_VERSION>) or after two years, whichever comes first. The council members
+will serve until the completion of the next Term Election unless they are
+removed.
+
+=head3 Removal
+
+Steering Council members may resign their position at any time.
+
+Whenever there are vacancies on the Steering Council, the council will
+organize a Special Election within one week after the vacancy occurs. If the
+entire Steering Council is ever vacant, a Term Election will be held instead.
+
+If a Steering Council member is deceased, or drops out of touch and cannot be
+contacted for a month or longer, then the rest of the council may vote to
+declare their seat vacant. If an absent member returns after such a
+declaration is made, they are not reinstated automatically, but may run in the
+Special Election to fill the vacancy.
+
+Otherwise, Steering Council members may only be removed before the end of
+their term through a No Confidence Vote by the Core Team.
+
+=head3 Rules for Elections
+
+Term and Special Election are ranked-choice votes to construct an ordered list
+of candidates to fill vacancies in the Steering Council.
+
+A Vote Administrator must be selected following the rules in the "Vote
+Administrator" section.
+
+Both Term and Special Elections occur in two stages:
+
+=over
+
+=item 1
+
+Candidates advertise their interest in serving. Candidates must be nominated by
+an active Core Team member. Self-nominations are allowed. Nominated candidates
+may share a statement about their candidacy with the Core Team.
+
+=item 2
+
+Active Core Team Members vote by ranking all candidates. Voting is performed
+anonymously. After voting is complete, candidates are ranked using the
+Condorcet Internet Voting Service's proportional representation mode. If a tie
+occurs, it may be resolved by mutual agreement among the tied candidates, or
+else the tie will be resolved through random selection by the Vote
+Administrator.
+
+=back
+
+Anyone voted off the Core Team is not eligible to be a candidate for Steering
+Council unless re-instated to the Core Team.
+
+For a Term Election, each phase will last two weeks. At the end of the second
+phase, the top three ranked candidates are elected as the new Steering Council.
+
+For a Special Election, each phase will last one week. At the end of the
+second phase, vacancies are filled from the ordered list of candidates until
+no vacancies remain.
+
+The election of the first Steering Council will be a Term Election. Ricardo
+Signes will be the Vote Administrator for the initial Term Election unless he
+is a candidate, in which case he will select a non-candidate administrator to
+replace him.
+
+=head2 The Vote Administrator
+
+Every election or vote requires a Vote Administrator who manages
+communication, collection of secret ballots, and all other necessary
+activities to complete the voting process.
+
+Unless otherwise specified, the Steering Council selects the Vote
+Administrator.
+
+A Vote Administrator must not be a member of the Steering Council nor a
+candidate or subject of the vote. A Vote Administrator may be a member of the
+Core Team and, if so, may cast a vote while also serving as administrator. If
+the Vote Administrator becomes a candidate during an election vote, they will
+appoint a non-candidate replacement.
+
+If the entire Steering Council is vacant or is the subject of a No Confidence
+Vote, then the Core Team will select a Vote Administrator by consensus. If
+consensus cannot be reached within one week, the President of The Perl
+Foundation will select a Vote Administrator.
+
+=head1 Core Team Members
+
+The current members of the Perl Core Team are:
+
+=over
+
+=item * Abhijit Menon-Sen (inactive)
+
+=item * Andy Dougherty
+
+=item * Chad Granum
+
+=item * Chris 'BinGOs' Williams
+
+=item * Craig Berry
+
+=item * Dagfinn Ilmari Mannsåker
+
+=item * Dave Mitchell
+
+=item * David Golden
+
+=item * H. Merijn Brand
+
+=item * Hugo van der Sanden
+
+=item * James E Keenan
+
+=item * Jan Dubois (inactive)
+
+=item * Jesse Vincent (inactive)
+
+=item * Karen Etheridge
+
+=item * Karl Williamson
+
+=item * Leon Timmermans
+
+=item * Matthew Horsfall
+
+=item * Max Maischein
+
+=item * Nicholas Clark
+
+=item * Nicolas R.
+
+=item * Paul "LeoNerd" Evans
+
+=item * Philippe "BooK" Bruhat
+
+=item * Ricardo Signes
+
+=item * Sawyer X
+
+=item * Steve Hay
+
+=item * Stuart Mackintosh
+
+=item * Todd Rinaldo
+
+=item * Tony Cook
+
+=back
diff --git a/win32/pod.mak b/win32/pod.mak
index 81b65b8c15..4e26a9ef69 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -104,6 +104,7 @@ POD = perl.pod \
perlform.pod \
perlfunc.pod \
perlgit.pod \
+ perlgov.pod \
perlgpl.pod \
perlguts.pod \
perlhack.pod \
@@ -264,6 +265,7 @@ MAN = perl.man \
perlform.man \
perlfunc.man \
perlgit.man \
+ perlgov.man \
perlgpl.man \
perlguts.man \
perlhack.man \
@@ -424,6 +426,7 @@ HTML = perl.html \
perlform.html \
perlfunc.html \
perlgit.html \
+ perlgov.html \
perlgpl.html \
perlguts.html \
perlhack.html \
@@ -584,6 +587,7 @@ TEX = perl.tex \
perlform.tex \
perlfunc.tex \
perlgit.tex \
+ perlgov.tex \
perlgpl.tex \
perlguts.tex \
perlhack.tex \