Initial Commit
This commit is contained in:
531
database/perl/lib/pods/perlgov.pod
Normal file
531
database/perl/lib/pods/perlgov.pod
Normal file
@@ -0,0 +1,531 @@
|
||||
=encoding utf-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
perlgov - Perl Rules of Governance
|
||||
|
||||
=head1 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 the 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
|
||||
Reference in New Issue
Block a user