PFC-RFC Update
| From: | Christian Stocker | Date: | Tue, 25 Feb 2003 12:15:42 +0000 |
| Subject: | PFC-RFC Update | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-13847@lists.php.net to get a copy of this message | ||
Hi
I rewrote and extended it with all the comments I got. So here it is:
*******************************
* PEAR Foundation Classes RFC *
*******************************
Goal:
The intention of PEAR Foundation Classes is to provide well-written,
well-documentated, well-tested and well-extendable code within PEAR and
mark them as such. For becoming a PFC, a class has to follow strict rules.
Users of PFCs can be assured that those class went through thorough
reviewing and testing and therefore should be the first choice for
everyone needing a class for a given task.
Prerequesites:
--------------
- PFCs should only depend on PFCs. If a needed library is not yet a PFC,
the developers should take the appropriate steps to make it a PFC, as
well.
- PFCs should preferably have 2 lead-developer or at least some active and
dedictated maintainers.
- PFCs have to strictly follow the PEAR Coding Standards
- PFCs have to provide scripts for unit testing
- PFCs have to have thoroughly documented. This applies to inline docs
(PHPDoc), as well as external documentation (peardoc)
- PFCs have to work on all widely used platforms (Windows, Linux, *BSD,
Mac OS X), except where it doesn't make sense.
- PFCs have to have customizible error reporting (ie. they inherit PEAR
so users can do $obj->expectError() and so on).
- PFCs do not break BC without providing users enough time to adjust. A
well thought upgrade path should be provided.
- PFCs have to work with error-reporting set to E_ALL and throw no
NOTICEs, WARNINGs.
- PFCs have to work with register_globals = off
- PFCs have to run on each released PHP-version since 4.2. If PHP 5 has
matured, they have to run on PHP 5 as well. If new functionality of later
versions is needed, PFCs should provide a user-land implementation of this
functionality.
- PFCs should keep the dependencies on non-standard extensions as low as
possible. There should always be a fallback, if the extension is not
available.
- PFCs should follow the additional guidelines (to be written) to ensure
that the same approach is taken to solve the same problem. For example,
for pattern
implementations, the same general design and method names are used.
- PFCs have to show some kind of stability (in API-sense) and should be
widely used.
Further Stuff:
--------------
- PFCs packages are signed with a PFC Key by the PFC core group (see
below).
- PFCs are automatically tested on upload. If tests fail, the package will
not be published (multiple platform testing?)
Concurrent Packages:
--------------------
- Concurrent PFC Packages should be avoided as much as possible. They are
only allowed, if they take a whole different approach to the same problem
and if it's really not fitable in an existing PFC. It is always preferred
to extend existing PFCs before providing a new one.
Becoming a PFC:
---------------
- A class can only become a PFC, if at least 2 independent people have
reviewed the code and gave their approval.
- All prerequesites have to be accomplished.
- If everything is ok, the PFC core group decides, if it conforms to
everything asked for and changes the state of that package in the PEAR
databse. There is no public vote for becoming a PFC, since a class should
become a PFC if it conforms to the points above, and not if the public
thinks it should... [but how do you measure, if a class has enough
documentation/unittesting/etc..]
PFC core group:
---------------
- The PFC core group consists of some (5?) core developers, which decide,
when a class conforms to the standards and can get the PFC badge.
- The PFC core group signs newly uploaded PFC packages
- If more than "some" people want to become a PFC Core member, a public
vote should be held.
- PFC core group does not decide about which classes should go into PEAR.
This is still task of the whole PEAR community and the exact procedure
should be discussed in another RFC. PFC core group should be an
administrative counsil like the php-group and not make "political"
desicions. This wouldn't be in the spirit of php development.
To be discussed:
----------------
- Concurrent Packages: The above point is not very clearly defined. From
my point of view, it would make sensde to not allow concurrent packages in
PFC. But then again, when is a package a concurrent package and when it's
a new one. Who decides that?
- Who has the last saying? If some people want to do something this way
and some the other way, who decides? the lead developer(s)? the community?
- Who can commit to PFCs? at the moment, everyone with a pear-cvs-account
can commit to every package. Shouldn't be this restricted for PFC classes?
Or is this getting to copmlicated for maintaining CVSROOT/avail.
- If there is common approval of this RFC, what should be the next steps?
--
nam...christian stocker adr...pflanzschulstr. 31, ch-8004 zurich
pho...+41 43 317 9984 www...http://blog.bitflux.ch
mob...+41 76 561 8860 ema...chregu@phant.ch
wor...+41 1 240 5670 gpg...0x5CE1DECB