Commit | Line | Data |
---|---|---|
05a3a9e2 RS |
1 | =encoding utf-8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perlgov - Perl Rules of Governance | |
6 | ||
f8e911a1 | 7 | =head1 PREAMBLE |
05a3a9e2 RS |
8 | |
9 | We are forming a system of governance for development of the Perl programming | |
10 | language. | |
11 | ||
12 | The scope of governance includes the language definition, its | |
13 | implementation, its test suite, its documentation, and the policies and | |
14 | procedures by which it is developed and maintained. | |
15 | ||
16 | The system of governance includes definitions of the groups that will make | |
17 | decisions, the rules by which these groups are formed and changed, and the | |
18 | enumerated powers and constraints on the activities of these governing | |
19 | groups. | |
20 | ||
21 | In forming a system of governance, we seek to achieve the following goals: | |
22 | ||
23 | =over | |
24 | ||
25 | =item * | |
26 | ||
27 | We want a system that is functional. That means the governing groups may | |
28 | decide to undertake large changes, or they may decide to act conservatively, | |
29 | but they will act with intent and clear communication rather than fail to reach | |
30 | decisions when needed. | |
31 | ||
32 | =item * | |
33 | ||
34 | We want a system that is trusted. That means that a reasonable contributor to | |
35 | Perl might disagree with decisions made by the governing groups, but will | |
36 | accept that they were made in good faith in consultation with relevant | |
37 | communities outside the governing groups. | |
38 | ||
39 | =item * | |
40 | ||
41 | We want a system that is sustainable. That means it has provisions to | |
42 | self-modify, including ways of adding new members to the governing groups, ways | |
43 | to survive members becoming inactive, and ways of amending the rules of | |
44 | governance themselves if needed. | |
45 | ||
46 | =item * | |
47 | ||
48 | We want a system that is transparent. That means that it will prefer policies | |
49 | that manage ordinary matters in public, and it will prefer secrecy in a limited | |
50 | number of situations. | |
51 | ||
52 | =item * | |
53 | ||
54 | We want a system that is respectful. That means that it will establish | |
55 | standards of civil discourse that allow for healthy disagreement but avoid | |
56 | rancor and hostility in the community for which it is responsible. | |
57 | ||
58 | =back | |
59 | ||
60 | =head1 Mandate | |
61 | ||
62 | Perl language governance shall work to: | |
63 | ||
64 | =over | |
65 | ||
66 | =item * | |
67 | ||
68 | Maintain the quality, stability, and continuity of the Perl language and | |
69 | interpreter | |
70 | ||
71 | =item * | |
72 | ||
73 | Guide the evolution of the Perl language and interpreter | |
74 | ||
75 | =item * | |
76 | ||
77 | Establish and oversee the policies, procedures, systems, and mechanisms that | |
78 | enable a community of contributors to the Perl language and interpreter | |
79 | ||
80 | =item * | |
81 | ||
82 | Encourage discussion and consensus among contributors as preferential to formal | |
83 | decision making by governance groups | |
84 | ||
85 | =item * | |
86 | ||
87 | Facilitate communication between contributors and external stakeholders in the | |
88 | broader Perl ecosystem | |
89 | ||
90 | =back | |
91 | ||
92 | =head1 Definitions | |
93 | ||
94 | This document describes three roles involved in governance: | |
95 | ||
96 | =over | |
97 | ||
98 | =item "Core Team" | |
99 | ||
100 | =item "Steering Council" | |
101 | ||
102 | =item "Vote Administrator" | |
103 | ||
104 | =back | |
105 | ||
106 | A section on each follows. | |
107 | ||
108 | =head2 The Core Team | |
109 | ||
110 | The Core Team are a group of trusted volunteers involved in the ongoing | |
111 | development of the Perl language and interpreter. They are not required to be | |
112 | language developers or committers. | |
113 | ||
114 | References to specific votes are explained in the "Rules for Voting" section. | |
115 | ||
116 | =head3 Powers | |
117 | ||
118 | In addition to their contributions to the Perl language, the Core Team sets | |
119 | the rules of Perl governance, decides who participates in what role in | |
120 | governance, and delegates substantial decision making power to the Steering | |
121 | Council. | |
122 | ||
123 | Specifically: | |
124 | ||
125 | =over | |
126 | ||
127 | =item * | |
128 | ||
129 | They elect the Steering Council and have the power to remove Steering | |
130 | Council members. | |
131 | ||
132 | =item * | |
133 | ||
134 | In concert with the Steering Council, they manage Core Team membership. | |
135 | ||
136 | =item * | |
137 | ||
138 | In concert with the Steering Council, they have the power to modify the Perl | |
139 | Rules of Governance. | |
140 | ||
141 | =back | |
142 | ||
143 | The Core Team do not have any authority over parts of the Perl ecosystem | |
144 | unrelated to developing and releasing the language itself. These include, but | |
145 | are not limited to: | |
146 | ||
147 | =over | |
148 | ||
149 | =item * | |
150 | ||
151 | The Perl Foundation | |
152 | ||
153 | =item * | |
154 | ||
155 | CPAN administration and CPAN authors | |
156 | ||
157 | =item * | |
158 | ||
159 | perl.org, metacpan.org, and other community-maintained websites and services | |
160 | ||
161 | =item * | |
162 | ||
159f1088 | 163 | Perl conferences and events, except those organized directly by the Core Team |
05a3a9e2 RS |
164 | |
165 | =item * | |
166 | ||
167 | Perl-related intellectual property legally owned by third-parties, except as | |
159f1088 | 168 | allowed by applicable licenses or agreements |
05a3a9e2 RS |
169 | |
170 | =back | |
171 | ||
172 | =head3 Membership | |
173 | ||
174 | The initial Core Team members will be specified when this document is | |
175 | first ratified. | |
176 | ||
177 | Any Core Team member may nominate someone to be added to the Core Team by | |
178 | sending the nomination to the Steering Council. The Steering Council must | |
179 | approve or reject the nomination. If approved, the Steering Council will | |
180 | organize a Membership Change Vote to ratify the addition. | |
181 | ||
182 | Core Team members should demonstrate: | |
183 | ||
184 | =over | |
185 | ||
186 | =item * | |
187 | ||
188 | A solid track record of being constructive and helpful | |
189 | ||
190 | =item * | |
191 | ||
192 | Significant contributions to the project's goals, in any form | |
193 | ||
194 | =item * | |
195 | ||
196 | Willingness to dedicate some time to improving Perl | |
197 | ||
198 | =back | |
199 | ||
200 | Contributions are not limited to code. Here is an incomplete list of areas | |
201 | where contributions may be considered for joining the Core Team: | |
202 | ||
203 | =over | |
204 | ||
205 | =item * | |
206 | ||
207 | Working on community management and outreach | |
208 | ||
209 | =item * | |
210 | ||
211 | Providing support on mailing lists, IRC, or other forums | |
212 | ||
213 | =item * | |
214 | ||
215 | Triaging tickets | |
216 | ||
217 | =item * | |
218 | ||
219 | Writing patches (code, docs, or tests) | |
220 | ||
221 | =item * | |
222 | ||
223 | Reviewing patches (code, docs, or tests) | |
224 | ||
225 | =item * | |
226 | ||
227 | Participating in design discussions | |
228 | ||
229 | =item * | |
230 | ||
231 | Providing expertise in a particular domain (security, i18n, etc.) | |
232 | ||
233 | =item * | |
234 | ||
235 | Managing Perl infrastructure (websites, CI, documentation, etc.) | |
236 | ||
237 | =item * | |
238 | ||
239 | Maintaining significant projects in the Perl ecosystem | |
240 | ||
241 | =item * | |
242 | ||
243 | Creating visual designs | |
244 | ||
245 | =back | |
246 | ||
247 | Core Team membership acknowledges sustained and valuable efforts that align | |
248 | well with the philosophy and the goals of the Perl project. | |
249 | ||
250 | Core Team members are expected to act as role models for the community and | |
251 | custodians of the project, on behalf of the community and all those who rely | |
252 | on Perl. | |
253 | ||
254 | =head3 Term | |
255 | ||
256 | Core Team members serve until they are removed. | |
257 | ||
258 | =head3 Removal | |
259 | ||
260 | Core Team Members may resign their position at any time. | |
261 | ||
262 | In exceptional circumstances, it may be necessary to remove someone from the | |
263 | Core Team against their will, such as for flagrant or repeated violations of a | |
264 | Code of Conduct. Any Core Team member may send a recall request to the | |
265 | Steering Council naming the individual to be removed. The Steering Council | |
266 | must approve or reject the recall request. If approved, the Steering Council | |
267 | will organize a Membership Change vote to ratify the removal. | |
268 | ||
269 | If the removed member is also on the Steering Council, then they are removed | |
270 | from the Steering Council as well. | |
271 | ||
272 | =head3 Inactivity | |
273 | ||
274 | Core Team members who have stopped contributing are encouraged to declare | |
275 | themselves "inactive". Inactive members do not nominate or vote. Inactive | |
276 | members may declare themselves active at any time, except when a vote has been | |
277 | proposed and is not concluded. Eligibility to nominate or vote will be | |
278 | determined by the Vote Administrator. | |
279 | ||
280 | To record and honor their contributions, inactive Core Team members will | |
281 | continue to be listed alongside active members. | |
282 | ||
283 | =head3 No Confidence in the Steering Council | |
284 | ||
285 | The Core Team may remove either a single Steering Council member or the entire | |
286 | Steering Council via a No Confidence Vote. | |
287 | ||
288 | A No Confidence Vote is triggered when a Core Team member calls for one | |
289 | publicly on an appropriate project communication channel, and another Core | |
290 | Team member seconds the proposal. | |
291 | ||
292 | If a No Confidence Vote removes all Steering Council members, the Vote | |
293 | Administrator of the No Confidence Vote will then administer an election | |
294 | to select a new Steering Council. | |
295 | ||
296 | =head3 Amending Perl Rules of Governance | |
297 | ||
298 | Any Core Team member may propose amending the Perl Rules of Governance by | |
299 | sending a proposal to the Steering Council. The Steering Council must decide | |
300 | to approve or reject the proposal. If approved, the Steering Council will | |
fef5f04d | 301 | organize an Amendment Vote. |
05a3a9e2 RS |
302 | |
303 | =head3 Rules for Voting | |
304 | ||
305 | Membership Change, Amendment, and No Confidence Votes require 2/3 of | |
306 | participating votes from Core Team members to pass. | |
307 | ||
308 | A Vote Administrator must be selected following the rules in the "Vote | |
309 | Administrator" section. | |
310 | ||
311 | The vote occurs in two steps: | |
312 | ||
313 | =over | |
314 | ||
315 | =item 1 | |
316 | ||
317 | The Vote Administrator describes the proposal being voted upon. The Core Team | |
318 | then may discuss the matter in advance of voting. | |
319 | ||
320 | =item 2 | |
321 | ||
322 | Active Core Team members vote in favor or against the proposal. Voting is | |
323 | performed anonymously. | |
324 | ||
325 | =back | |
326 | ||
327 | For a Membership Change Vote, each phase will last one week. For Amendment and | |
328 | No Confidence Votes, each phase will last two weeks. | |
329 | ||
330 | =head2 The Steering Council | |
331 | ||
332 | The Steering Council is a 3-person committee, elected by the Core | |
333 | Team. Candidates are not required to be members of the Core Team. Non-member | |
334 | candidates are added to the Core Team if elected as if by a Membership Change | |
335 | Vote. | |
336 | ||
337 | References to specific elections are explained in the "Rules for Elections" section. | |
338 | ||
339 | =head3 Powers | |
340 | ||
341 | The Steering Council has broad authority to make decisions about the | |
342 | development of the Perl language, the interpreter, and all other components, | |
343 | systems and processes that result in new releases of the language interpreter. | |
344 | ||
345 | For example, it can: | |
346 | ||
347 | =over | |
348 | ||
349 | =item * | |
350 | ||
351 | Manage the schedule and process for shipping new releases | |
352 | ||
353 | =item * | |
354 | ||
355 | Establish procedures for proposing, discussing and deciding upon changes to the | |
356 | language | |
357 | ||
358 | =item * | |
359 | ||
360 | Delegate power to individuals on or outside the Steering Council | |
361 | ||
362 | =back | |
363 | ||
364 | Decisions of the Steering Council will be made by majority vote of non-vacant | |
365 | seats on the council. | |
366 | ||
367 | The Steering Council should look for ways to use these powers as little as | |
368 | possible. Instead of voting, it's better to seek consensus. Instead of ruling | |
369 | on individual cases, it's better to define standards and processes that apply | |
370 | to all cases. | |
371 | ||
372 | As with the Core Team, the Steering Council does not have any authority over | |
373 | parts of the Perl ecosystem unrelated to developing and releasing the language | |
374 | itself. | |
375 | ||
376 | The Steering Council does not have the power to modify the Perl Rules of | |
377 | Governance, except as provided in the section "Amending Perl Rules of | |
378 | Governance". | |
379 | ||
380 | =head3 Term | |
381 | ||
6b0a21cb RS |
382 | A new Steering Council will be chosen by a Term Election after each stable |
383 | feature release (that is, change to C<PERL_REVISION> or C<PERL_VERSION>) or | |
384 | after two years, whichever comes first. The Term Election will be organized | |
385 | within two weeks of the triggering event. The council members will serve until | |
386 | the completion of the next Term Election unless they are removed. | |
05a3a9e2 RS |
387 | |
388 | =head3 Removal | |
389 | ||
390 | Steering Council members may resign their position at any time. | |
391 | ||
392 | Whenever there are vacancies on the Steering Council, the council will | |
393 | organize a Special Election within one week after the vacancy occurs. If the | |
394 | entire Steering Council is ever vacant, a Term Election will be held instead. | |
395 | ||
97649266 RS |
396 | The Steering Council may defer the Special Election for up to twelve weeks. |
397 | Their intent to do so must be publicly stated to the Core Team. If any active | |
398 | Core Team member objects within one week, the Special Election must be | |
399 | organized within two weeks. At any time, the Steering Council may choose to | |
400 | cancel the deferment and immediately commence organizing a Special Election. | |
401 | ||
05a3a9e2 RS |
402 | If a Steering Council member is deceased, or drops out of touch and cannot be |
403 | contacted for a month or longer, then the rest of the council may vote to | |
404 | declare their seat vacant. If an absent member returns after such a | |
405 | declaration is made, they are not reinstated automatically, but may run in the | |
406 | Special Election to fill the vacancy. | |
407 | ||
408 | Otherwise, Steering Council members may only be removed before the end of | |
409 | their term through a No Confidence Vote by the Core Team. | |
410 | ||
411 | =head3 Rules for Elections | |
412 | ||
413 | Term and Special Election are ranked-choice votes to construct an ordered list | |
414 | of candidates to fill vacancies in the Steering Council. | |
415 | ||
416 | A Vote Administrator must be selected following the rules in the "Vote | |
417 | Administrator" section. | |
418 | ||
419 | Both Term and Special Elections occur in two stages: | |
420 | ||
421 | =over | |
422 | ||
423 | =item 1 | |
424 | ||
425 | Candidates advertise their interest in serving. Candidates must be nominated by | |
426 | an active Core Team member. Self-nominations are allowed. Nominated candidates | |
427 | may share a statement about their candidacy with the Core Team. | |
428 | ||
429 | =item 2 | |
430 | ||
c3ef981b RS |
431 | If there are no more candidates than open seats, no vote is required. The |
432 | candidates will be declared to have won when the nomination period ends. | |
433 | ||
434 | Otherwise, active Core Team Members vote by ranking all candidates. Voting is | |
435 | performed anonymously. After voting is complete, candidates are ranked using | |
436 | the Condorcet Internet Voting Service's proportional representation mode. If a | |
437 | tie occurs, it may be resolved by mutual agreement among the tied candidates, | |
438 | or else the tie will be resolved through random selection by the Vote | |
05a3a9e2 RS |
439 | Administrator. |
440 | ||
441 | =back | |
442 | ||
443 | Anyone voted off the Core Team is not eligible to be a candidate for Steering | |
444 | Council unless re-instated to the Core Team. | |
445 | ||
446 | For a Term Election, each phase will last two weeks. At the end of the second | |
447 | phase, the top three ranked candidates are elected as the new Steering Council. | |
448 | ||
449 | For a Special Election, each phase will last one week. At the end of the | |
450 | second phase, vacancies are filled from the ordered list of candidates until | |
451 | no vacancies remain. | |
452 | ||
453 | The election of the first Steering Council will be a Term Election. Ricardo | |
454 | Signes will be the Vote Administrator for the initial Term Election unless he | |
455 | is a candidate, in which case he will select a non-candidate administrator to | |
456 | replace him. | |
457 | ||
458 | =head2 The Vote Administrator | |
459 | ||
460 | Every election or vote requires a Vote Administrator who manages | |
461 | communication, collection of secret ballots, and all other necessary | |
462 | activities to complete the voting process. | |
463 | ||
464 | Unless otherwise specified, the Steering Council selects the Vote | |
465 | Administrator. | |
466 | ||
467 | A Vote Administrator must not be a member of the Steering Council nor a | |
468 | candidate or subject of the vote. A Vote Administrator may be a member of the | |
469 | Core Team and, if so, may cast a vote while also serving as administrator. If | |
470 | the Vote Administrator becomes a candidate during an election vote, they will | |
471 | appoint a non-candidate replacement. | |
472 | ||
473 | If the entire Steering Council is vacant or is the subject of a No Confidence | |
474 | Vote, then the Core Team will select a Vote Administrator by consensus. If | |
475 | consensus cannot be reached within one week, the President of The Perl | |
476 | Foundation will select a Vote Administrator. | |
477 | ||
adc62d4a RS |
478 | =head1 Steering Council Members |
479 | ||
480 | =over | |
481 | ||
482 | =item * Neil Bowers | |
483 | ||
76c45124 | 484 | =item * Paul Evans |
adc62d4a RS |
485 | |
486 | =item * Ricardo Signes | |
487 | ||
488 | =back | |
489 | ||
05a3a9e2 RS |
490 | =head1 Core Team Members |
491 | ||
492 | The current members of the Perl Core Team are: | |
493 | ||
877661e3 | 494 | =head2 Active Members |
05a3a9e2 | 495 | |
877661e3 | 496 | =over 4 |
05a3a9e2 | 497 | |
877661e3 | 498 | =item Chad Granum <exodist7@gmail.com> |
05a3a9e2 | 499 | |
877661e3 | 500 | =item Chris 'BinGOs' Williams <chris@bingosnet.co.uk> |
05a3a9e2 | 501 | |
877661e3 | 502 | =item Craig Berry <craigberry@mac.com> |
05a3a9e2 | 503 | |
877661e3 | 504 | =item Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> |
05a3a9e2 | 505 | |
877661e3 | 506 | =item David Golden <xdg@xdg.me> |
05a3a9e2 | 507 | |
877661e3 | 508 | =item David Mitchell <davem@iabyn.com> |
05a3a9e2 | 509 | |
877661e3 | 510 | =item H. Merijn Brand <perl5@tux.freedom.nl> |
05a3a9e2 | 511 | |
877661e3 | 512 | =item Hugo van der Sanden <hv@crypt.org> |
05a3a9e2 | 513 | |
877661e3 | 514 | =item James E Keenan <jkeenan@cpan.org> |
05a3a9e2 | 515 | |
877661e3 | 516 | =item Jason McIntosh <jmac@jmac.org> |
05a3a9e2 | 517 | |
877661e3 | 518 | =item Karen Etheridge <ether@cpan.org> |
05a3a9e2 | 519 | |
877661e3 | 520 | =item Karl Williamson <khw@cpan.org> |
d6491d6b | 521 | |
877661e3 | 522 | =item Leon Timmermans <fawaka@gmail.com> |
05a3a9e2 | 523 | |
877661e3 | 524 | =item Matthew Horsfall <wolfsage@gmail.com> |
05a3a9e2 | 525 | |
877661e3 | 526 | =item Max Maischein <cpan@corion.net> |
05a3a9e2 | 527 | |
877661e3 | 528 | =item Neil Bowers <neilb@neilb.org> |
05a3a9e2 | 529 | |
877661e3 | 530 | =item Nicholas Clark <nick@ccl4.org> |
05a3a9e2 | 531 | |
877661e3 | 532 | =item Nicolas R <atoomic@cpan.org> |
05a3a9e2 | 533 | |
877661e3 | 534 | =item Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> |
44646a11 | 535 | |
877661e3 | 536 | =item Philippe "BooK" Bruhat <book@cpan.org> |
05a3a9e2 | 537 | |
877661e3 | 538 | =item Ricardo Signes <rjbs@semiotic.systems> |
05a3a9e2 | 539 | |
877661e3 | 540 | =item Steve Hay <steve.m.hay@googlemail.com> |
05a3a9e2 | 541 | |
877661e3 | 542 | =item Stuart Mackintosh <stuart@perlfoundation.org> |
05a3a9e2 | 543 | |
877661e3 | 544 | =item Todd Rinaldo <toddr@cpanel.net> |
05a3a9e2 | 545 | |
877661e3 RS |
546 | =item Tony Cook <tony@develop-help.com> |
547 | ||
548 | =back | |
05a3a9e2 | 549 | |
877661e3 | 550 | =head2 Inactive Members |
05a3a9e2 | 551 | |
877661e3 | 552 | =over 4 |
05a3a9e2 | 553 | |
877661e3 RS |
554 | =item Abhijit Menon-Sen <ams@toroid.org> |
555 | ||
556 | =item Andy Dougherty <doughera@lafayette.edu> | |
557 | ||
558 | =item Jan Dubois <jan@jandubois.com> | |
559 | ||
560 | =item Jesse Vincent <jesse@fsck.com> | |
05a3a9e2 RS |
561 | |
562 | =back | |
877661e3 | 563 |