1=head1 NAME 2 3perlpolicy - Various and sundry policies and commitments related to the Perl core 4 5=head1 DESCRIPTION 6 7This document is the master document which records all written 8policies about how the Perl 5 Porters collectively develop and maintain 9the Perl core. 10 11=head1 GOVERNANCE 12 13=head2 Perl 5 Porters 14 15Subscribers to perl5-porters (the porters themselves) come in several flavours. 16Some are quiet curious lurkers, who rarely pitch in and instead watch 17the ongoing development to ensure they're forewarned of new changes or 18features in Perl. Some are representatives of vendors, who are there 19to make sure that Perl continues to compile and work on their 20platforms. Some patch any reported bug that they know how to fix, 21some are actively patching their pet area (threads, Win32, the regexp 22-engine), while others seem to do nothing but complain. In other 23words, it's your usual mix of technical people. 24 25Over this group of porters presides Larry Wall. He has the final word 26in what does and does not change in any of the Perl programming languages. 27These days, Larry spends most of his time on Perl 6, while Perl 5 is 28shepherded by a "pumpking", a porter responsible for deciding what 29goes into each release and ensuring that releases happen on a regular 30basis. 31 32Larry sees Perl development along the lines of the US government: 33there's the Legislature (the porters), the Executive branch (the 34-pumpking), and the Supreme Court (Larry). The legislature can 35discuss and submit patches to the executive branch all they like, but 36the executive branch is free to veto them. Rarely, the Supreme Court 37will side with the executive branch over the legislature, or the 38legislature over the executive branch. Mostly, however, the 39legislature and the executive branch are supposed to get along and 40work out their differences without impeachment or court cases. 41 42You might sometimes see reference to Rule 1 and Rule 2. Larry's power 43as Supreme Court is expressed in The Rules: 44 45=over 4 46 47=item 1 48 49Larry is always by definition right about how Perl should behave. 50This means he has final veto power on the core functionality. 51 52=item 2 53 54Larry is allowed to change his mind about any matter at a later date, 55regardless of whether he previously invoked Rule 1. 56 57=back 58 59Got that? Larry is always right, even when he was wrong. It's rare 60to see either Rule exercised, but they are often alluded to. 61 62=head1 MAINTENANCE AND SUPPORT 63 64Perl 5 is developed by a community, not a corporate entity. Every change 65contributed to the Perl core is the result of a donation. Typically, these 66donations are contributions of code or time by individual members of our 67community. On occasion, these donations come in the form of corporate 68or organizational sponsorship of a particular individual or project. 69 70As a volunteer organization, the commitments we make are heavily dependent 71on the goodwill and hard work of individuals who have no obligation to 72contribute to Perl. 73 74That being said, we value Perl's stability and security and have long 75had an unwritten covenant with the broader Perl community to support 76and maintain releases of Perl. 77 78This document codifies the support and maintenance commitments that 79the Perl community should expect from Perl's developers: 80 81=over 82 83=item * 84 85We "officially" support the two most recent stable release series. 5.12.x 86and earlier are now out of support. As of the release of 5.18.0, we will 87"officially" end support for Perl 5.14.x, other than providing security 88updates as described below. 89 90=item * 91 92To the best of our ability, we will attempt to fix critical issues 93in the two most recent stable 5.x release series. Fixes for the 94current release series take precedence over fixes for the previous 95release series. 96 97=item * 98 99To the best of our ability, we will provide "critical" security patches 100/ releases for any major version of Perl whose 5.x.0 release was within 101the past three years. We can only commit to providing these for the 102most recent .y release in any 5.x.y series. 103 104=item * 105 106We will not provide security updates or bug fixes for development 107releases of Perl. 108 109=item * 110 111We encourage vendors to ship the most recent supported release of 112Perl at the time of their code freeze. 113 114=item * 115 116As a vendor, you may have a requirement to backport security fixes 117beyond our 3 year support commitment. We can provide limited support and 118advice to you as you do so and, where possible will try to apply 119those patches to the relevant -maint branches in git, though we may or 120may not choose to make numbered releases or "official" patches 121available. Contact us at E<lt>perl5-security-report@perl.orgE<gt> 122to begin that process. 123 124=back 125 126=head1 BACKWARD COMPATIBILITY AND DEPRECATION 127 128Our community has a long-held belief that backward-compatibility is a 129virtue, even when the functionality in question is a design flaw. 130 131We would all love to unmake some mistakes we've made over the past 132decades. Living with every design error we've ever made can lead 133to painful stagnation. Unwinding our mistakes is very, very 134difficult. Doing so without actively harming our users is 135nearly impossible. 136 137Lately, ignoring or actively opposing compatibility with earlier versions 138of Perl has come into vogue. Sometimes, a change is proposed which 139wants to usurp syntax which previously had another meaning. Sometimes, 140a change wants to improve previously-crazy semantics. 141 142Down this road lies madness. 143 144Requiring end-user programmers to change just a few language constructs, 145even language constructs which no well-educated developer would ever 146intentionally use is tantamount to saying "you should not upgrade to 147a new release of Perl unless you have 100% test coverage and can do a 148full manual audit of your codebase." If we were to have tools capable of 149reliably upgrading Perl source code from one version of Perl to another, 150this concern could be significantly mitigated. 151 152We want to ensure that Perl continues to grow and flourish in the coming 153years and decades, but not at the expense of our user community. 154 155Existing syntax and semantics should only be marked for destruction in 156very limited circumstances. If a given language feature's continued 157inclusion in the language will cause significant harm to the language 158or prevent us from making needed changes to the runtime, then it may 159be considered for deprecation. 160 161Any language change which breaks backward-compatibility should be able to 162be enabled or disabled lexically. Unless code at a given scope declares 163that it wants the new behavior, that new behavior should be disabled. 164Which backward-incompatible changes are controlled implicitly by a 165'use v5.x.y' is a decision which should be made by the pumpking in 166consultation with the community. 167 168When a backward-incompatible change can't be toggled lexically, the decision 169to change the language must be considered very, very carefully. If it's 170possible to move the old syntax or semantics out of the core language 171and into XS-land, that XS module should be enabled by default unless 172the user declares that they want a newer revision of Perl. 173 174Historically, we've held ourselves to a far higher standard than 175backward-compatibility -- bugward-compatibility. Any accident of 176implementation or unintentional side-effect of running some bit of code 177has been considered to be a feature of the language to be defended with 178the same zeal as any other feature or functionality. No matter how 179frustrating these unintentional features may be to us as we continue 180to improve Perl, these unintentional features often deserve our 181protection. It is very important that existing software written in 182Perl continue to work correctly. If end-user developers have adopted a 183bug as a feature, we need to treat it as such. 184 185New syntax and semantics which don't break existing language constructs 186and syntax have a much lower bar. They merely need to prove themselves 187to be useful, elegant, well designed, and well tested. 188 189=head2 Terminology 190 191To make sure we're talking about the same thing when we discuss the removal 192of features or functionality from the Perl core, we have specific definitions 193for a few words and phrases. 194 195=over 196 197=item experimental 198 199If something in the Perl core is marked as B<experimental>, we may change 200its behaviour, deprecate or remove it without notice. While we'll always 201do our best to smooth the transition path for users of experimental 202features, you should contact the perl5-porters mailinglist if you find 203an experimental feature useful and want to help shape its future. 204 205=item deprecated 206 207If something in the Perl core is marked as B<deprecated>, we may remove it 208from the core in the next stable release series, though we may not. As of 209Perl 5.12, deprecated features and modules warn the user as they're used. 210When a module is deprecated, it will also be made available on CPAN. 211Installing it from CPAN will silence deprecation warnings for that module. 212 213If you use a deprecated feature or module and believe that its removal from 214the Perl core would be a mistake, please contact the perl5-porters 215mailinglist and plead your case. We don't deprecate things without a good 216reason, but sometimes there's a counterargument we haven't considered. 217Historically, we did not distinguish between "deprecated" and "discouraged" 218features. 219 220=item discouraged 221 222From time to time, we may mark language constructs and features which we 223consider to have been mistakes as B<discouraged>. Discouraged features 224aren't candidates for removal in the next major release series, but 225we may later deprecate them if they're found to stand in the way of a 226significant improvement to the Perl core. 227 228=item removed 229 230Once a feature, construct or module has been marked as deprecated for a 231stable release cycle, we may remove it from the Perl core. Unsurprisingly, 232we say we've B<removed> these things. When a module is removed, it will 233no longer ship with Perl, but will continue to be available on CPAN. 234 235=back 236 237=head1 MAINTENANCE BRANCHES 238 239=over 240 241=item * 242 243New releases of maint should contain as few changes as possible. 244If there is any question about whether a given patch might merit 245inclusion in a maint release, then it almost certainly should not 246be included. 247 248=item * 249 250Portability fixes, such as changes to Configure and the files in 251hints/ are acceptable. Ports of Perl to a new platform, architecture 252or OS release that involve changes to the implementation are NOT 253acceptable. 254 255=item * 256 257Acceptable documentation updates are those that correct factual errors, 258explain significant bugs or deficiencies in the current implementation, 259or fix broken markup. 260 261=item * 262 263Patches that add new warnings or errors or deprecate features 264are not acceptable. 265 266=item * 267 268Patches that fix crashing bugs that do not otherwise change Perl's 269functionality or negatively impact performance are acceptable. 270 271=item * 272 273Patches that fix CVEs or security issues are acceptable, but should 274be run through the perl5-security-report@perl.org mailing list 275rather than applied directly. 276 277=item * 278 279Patches that fix regressions in perl's behavior relative to previous 280releases are acceptable. 281 282=item * 283 284Updates to dual-life modules should consist of minimal patches to 285fix crashing or security issues (as above). 286 287=item * 288 289Minimal patches that fix platform-specific test failures or 290installation issues are acceptable. When these changes are made 291to dual-life modules for which CPAN is canonical, any changes 292should be coordinated with the upstream author. 293 294=item * 295 296New versions of dual-life modules should NOT be imported into maint. 297Those belong in the next stable series. 298 299=item * 300 301Patches that add or remove features are not acceptable. 302 303=item * 304 305Patches that break binary compatibility are not acceptable. (Please 306talk to a pumpking.) 307 308=back 309 310 311=head2 Getting changes into a maint branch 312 313Historically, only the pumpking cherry-picked changes from bleadperl 314into maintperl. This has scaling problems. At the same time, 315maintenance branches of stable versions of Perl need to be treated with 316great care. To that end, as of Perl 5.12, we have a new process for 317maint branches. 318 319Any committer may cherry-pick any commit from blead to a maint branch if 320they send mail to perl5-porters announcing their intent to cherry-pick 321a specific commit along with a rationale for doing so and at least two 322other committers respond to the list giving their assent. (This policy 323applies to current and former pumpkings, as well as other committers.) 324 325=head1 CONTRIBUTED MODULES 326 327 328=head2 A Social Contract about Artistic Control 329 330What follows is a statement about artistic control, defined as the ability 331of authors of packages to guide the future of their code and maintain 332control over their work. It is a recognition that authors should have 333control over their work, and that it is a responsibility of the rest of 334the Perl community to ensure that they retain this control. It is an 335attempt to document the standards to which we, as Perl developers, intend 336to hold ourselves. It is an attempt to write down rough guidelines about 337the respect we owe each other as Perl developers. 338 339This statement is not a legal contract. This statement is not a legal 340document in any way, shape, or form. Perl is distributed under the GNU 341Public License and under the Artistic License; those are the precise legal 342terms. This statement isn't about the law or licenses. It's about 343community, mutual respect, trust, and good-faith cooperation. 344 345We recognize that the Perl core, defined as the software distributed with 346the heart of Perl itself, is a joint project on the part of all of us. 347From time to time, a script, module, or set of modules (hereafter referred 348to simply as a "module") will prove so widely useful and/or so integral to 349the correct functioning of Perl itself that it should be distributed with 350the Perl core. This should never be done without the author's explicit 351consent, and a clear recognition on all parts that this means the module 352is being distributed under the same terms as Perl itself. A module author 353should realize that inclusion of a module into the Perl core will 354necessarily mean some loss of control over it, since changes may 355occasionally have to be made on short notice or for consistency with the 356rest of Perl. 357 358Once a module has been included in the Perl core, however, everyone 359involved in maintaining Perl should be aware that the module is still the 360property of the original author unless the original author explicitly 361gives up their ownership of it. In particular: 362 363=over 364 365=item * 366 367The version of the module in the Perl core should still be considered the 368work of the original author. All patches, bug reports, and so 369forth should be fed back to them. Their development directions 370should be respected whenever possible. 371 372=item * 373 374Patches may be applied by the pumpkin holder without the explicit 375cooperation of the module author if and only if they are very minor, 376time-critical in some fashion (such as urgent security fixes), or if 377the module author cannot be reached. Those patches must still be 378given back to the author when possible, and if the author decides on 379an alternate fix in their version, that fix should be strongly 380preferred unless there is a serious problem with it. Any changes not 381endorsed by the author should be marked as such, and the contributor 382of the change acknowledged. 383 384=item * 385 386The version of the module distributed with Perl should, whenever 387possible, be the latest version of the module as distributed by the 388author (the latest non-beta version in the case of public Perl 389releases), although the pumpkin holder may hold off on upgrading the 390version of the module distributed with Perl to the latest version 391until the latest version has had sufficient testing. 392 393=back 394 395In other words, the author of a module should be considered to have final 396say on modifications to their module whenever possible (bearing in mind 397that it's expected that everyone involved will work together and arrive at 398reasonable compromises when there are disagreements). 399 400As a last resort, however: 401 402 403If the author's vision of the future of their module is sufficiently 404different from the vision of the pumpkin holder and perl5-porters as a 405whole so as to cause serious problems for Perl, the pumpkin holder may 406choose to formally fork the version of the module in the Perl core from the 407one maintained by the author. This should not be done lightly and 408should B<always> if at all possible be done only after direct input 409from Larry. If this is done, it must then be made explicit in the 410module as distributed with the Perl core that it is a forked version and 411that while it is based on the original author's work, it is no longer 412maintained by them. This must be noted in both the documentation and 413in the comments in the source of the module. 414 415Again, this should be a last resort only. Ideally, this should never 416happen, and every possible effort at cooperation and compromise should be 417made before doing this. If it does prove necessary to fork a module for 418the overall health of Perl, proper credit must be given to the original 419author in perpetuity and the decision should be constantly re-evaluated to 420see if a remerging of the two branches is possible down the road. 421 422In all dealings with contributed modules, everyone maintaining Perl should 423keep in mind that the code belongs to the original author, that they may 424not be on perl5-porters at any given time, and that a patch is not 425official unless it has been integrated into the author's copy of the 426module. To aid with this, and with points #1, #2, and #3 above, contact 427information for the authors of all contributed modules should be kept with 428the Perl distribution. 429 430Finally, the Perl community as a whole recognizes that respect for 431ownership of code, respect for artistic control, proper credit, and active 432effort to prevent unintentional code skew or communication gaps is vital 433to the health of the community and Perl itself. Members of a community 434should not normally have to resort to rules and laws to deal with each 435other, and this document, although it contains rules so as to be clear, is 436about an attitude and general approach. The first step in any dispute 437should be open communication, respect for opposing views, and an attempt 438at a compromise. In nearly every circumstance nothing more will be 439necessary, and certainly no more drastic measure should be used until 440every avenue of communication and discussion has failed. 441 442 443=head1 DOCUMENTATION 444 445Perl's documentation is an important resource for our users. It's 446incredibly important for Perl's documentation to be reasonably coherent 447and to accurately reflect the current implementation. 448 449Just as P5P collectively maintains the codebase, we collectively 450maintain the documentation. Writing a particular bit of documentation 451doesn't give an author control of the future of that documentation. 452At the same time, just as source code changes should match the style 453of their surrounding blocks, so should documentation changes. 454 455Examples in documentation should be illustrative of the concept 456they're explaining. Sometimes, the best way to show how a 457language feature works is with a small program the reader can 458run without modification. More often, examples will consist 459of a snippet of code containing only the "important" bits. 460The definition of "important" varies from snippet to snippet. 461Sometimes it's important to declare C<use strict> and C<use warnings>, 462initialize all variables and fully catch every error condition. 463More often than not, though, those things obscure the lesson 464the example was intended to teach. 465 466As Perl is developed by a global team of volunteers, our 467documentation often contains spellings which look funny 468to I<somebody>. Choice of American/British/Other spellings 469is left as an exercise for the author of each bit of 470documentation. When patching documentation, try to emulate 471the documentation around you, rather than changing the existing 472prose. 473 474In general, documentation should describe what Perl does "now" rather 475than what it used to do. It's perfectly reasonable to include notes 476in documentation about how behaviour has changed from previous releases, 477but, with very few exceptions, documentation isn't "dual-life" -- 478it doesn't need to fully describe how all old versions used to work. 479 480 481=head1 CREDITS 482 483"Social Contract about Contributed Modules" originally by Russ Allbery E<lt>rra@stanford.eduE<gt> and the perl5-porters. 484 485