pear:rfc:pear2_policy

PEAR2 Policies

Document Information

  • Title: PEAR2 Policies
  • Version: 0.3.0
  • Status: Draft
  • Type: Standards
  • Last updated: September 6, 2009

Author(s) Information

  • Name: Brett Bieber
  • Email: saltybeagle@php.net
  • Name: Michael Gauthier
  • Email: mike@silverorange.com

Past Author(s) Information

  • Version 0.2.0
    • Name: Joshua Eichorn
    • Email: josh@bluga.net
  • Version 0.1.0
    • Name: Gregory Beaver, Arnaud Limbourg
    • Email: cellog@php.net, arnaud@php.net

Discussion List

Introduction

This document contains the general policies for how coding and collaboration works in PEAR2.

Expiration

These policies will expire on August 15, 2010, and must be reviewed and renewed by the next PEAR Group in order to continue.

Policies

Collectives

A collective is a grouping of similar packages, such that the “local governing” of similar packages is managed by developers with similarly focused package expertise. The responsibilities of a given collective are outlined in the Constitution (Section V).

Commit access to the repository

All collective members have full commit access and can commit minor bugfixes without requesting permission or notifying lead developers. However, as a courtesy, it is expected that all developers will communicate with a package's lead developers prior to taking action. If a dispute over a commit arises, it is also expected that the commit in question will be reverted pending a review.

This rule is intended to encourage open and friendly collaboration. For an example of this commit model, the PHP project developers often commit minor fixes for thread-safe errors, spelling mistakes, and other obvious mistakes without consultation.

Exceptions can be made to this rule with explicit PEAR Group approval documented on the website.

Handling package design

All design decisions should be discussed freely in a Collective, and each Collective is responsible for enforcing these decisions in their own way. Some Collectives may require packages to adhere to basic interfaces, others may require common data storage formats, but individual package maintainers must adhere to these decisions or discuss ways of improving them. No cowboy coding! Ultimately, individual package developers have the full freedom to innovate without expecting too much interference, but are expected to learn how to both give and receive constructive criticism as a part of the privilege of having their code hosted at pear.php.net.

Pulling releases

All collective members can pull a release within 24 hours if there is a major regression or security bug. If at all possible, the primary lead maintainers should perform this action, but Collectives function as a unit, and have the role of policing huge problems.

Competing packages

Competing packages are allowed at the alpha level in PEAR2.

All alpha/devel stability packages have no claim to a package name. If a better package comes along that does the same thing, wants your package's name and achieves beta status, you have to either join forces or change the name of your package. The limit is that newer packages have to be unarguably better in implementation. It is up to the Collective to define “unarguably better”

Stale packages

The PEAR Group reserves the right to delete inactive proposals and packages.

What beta status means

To become beta, a package must undergo extensive review. - documentation must be complete - full test suite must demonstrate 50% code coverage - API must be approved by 2/3 of the collective developers (this will probably be a blanket stamp for most packages) - all developers in a collective (including alpha package maintainers) can vote on whether a package is ready for beta status - a final name for the package must be chosen by the lead developers of the package that does not conflict with the existing beta+ packages. Names are chosen on a first-come-first-serve basis.

Package acceptance into PEAR2

Packages can be proposed either as

For proof-of-concept packages, they should

  • Post a public notice to the pear-dev mailing list stating the intention to begin development
  • Request a new package be created on the pear.php.net website
  • Undergo a review by the collective (as defined in the previous section) when ready to move from alpha to beta stability
  • Once the review is complete, the package developers may request an official vote by the collective on whether the package is ready. The vote is conducted through PEPr. Unsuccessful packages may request a second review after fixing issues noted by the collective.
  • Successful packages may then move their development directly from the PEAR2 sandbox into PEAR2 itself using “svn move”

Packages listed in the channel

All packages will be listed in the public channel. Packages will be managed using the stability and paranoia options as described in the versioning RFC.

pear/rfc/pear2_policy.txt · Last modified: 2011/04/06 12:59 (external edit)