Re: [PHP-PEAR] Re: [PHP-CVS] cvs: php4 /pear/Experimental README/pear/Experimental/HTML Menu.php

[email protected] ((Stig Sæther Bakken)) 09 Mar 2001 23:33:54 +0100
Newsgroups php.pear
Message-ID <[email protected]>
NB!  Reply-to: set to [email protected]!

[Sebastian Bergmann <[email protected]>]
> Ulf Wendel wrote:
> > uw              Fri Mar  9 00:54:01 2001 EDT
> > 
> >   Added files:
> >     /php4/pear/Experimental     README
> >     /php4/pear/Experimental/HTML        Menu.php
> >   Log:
> >   Added a directory Experimental/ as no one said "no" on the PEAR list
> >    - added a PHPlib menu2.inc rewrite
> >    - added a README for the directory with a policy for Experimental/
> 
>   I like the idea, Ulf.
> 
>   Chuck - Stig, should Experimental/ be added to Makefile.in?

Actually, if we start going down this route we might as well move all
the code to the "pear" CVS module and get to the next level.

Below are some ideas on how to use the php.net-supplied CVS module:

1. New CVS module file structure

I think the new CVS module should be structured by package names,
rather than like a hierarchy like it is today.  The hierarchy will be
used when files are installed.

Package names are almost like class names, but if the package contains
a lot of classes, the "root" class is used.  For example, PEAR DB's
package name would be "DB", because its root class is called DB (even
though there's a bunch of other classes too).

Each package has one or more maintainers, and releases can be
completely independent from other packages or PHP itself.  However, in
future PHP releases we will bundle stable releases of some packages
(PEAR and PEAR_Installer as the very minimum).  This way we get more
control of the quality (and quantity :-) of what is distributed with
PHP.

2. Suggested packages

I suggest that we split the current files in php4/pear into these
packages:

DB
Benchmark
CMD
Cache
Crypt
Date
File_Find
File_SearchReplace
File_Passwd
HTML_IT[X]
HTML_Form
HTML_Menu
HTML_Processor
HTTP
HTTP_Compress
Image_Remote
Log
Mail
Math
PEAR
PHPDoc
Payment
Shedule
XML_RPC
XML_Parser
XML_Render

I've grouped them after how I assume they would be best maintained.
The people who will maintain each package should of course make the
final decision on what packages we should split into and what
files/classes go into each.

Each of these packages gets its own subdirectory in the "pear" CVS
module.

3. CVS tagging standard

When a release is done, the package should be tagged so it is possible
to go back and check out the source as of a specific release later.
The tags could be named "REL_n_n_n" (REL for release, n_n_n is the
release/version number with all non-alphanumeric characters replaced
by an underscore).

4. Code staging (dealing with experimental code etc.)

We need to be able to register some additional information about each
package.  We could use the website/database for this.  One of the
attributes we can register is how mature the code (or a given release)
is, and I think that could replace today's "Experimental".

If a package needs to fork off an experimental development cycle, I
think CVS branches are the best thing to use, with sufficient user
education. :-)

If we decide that CVS branches are too difficult, awkward or whatever,
it could perhaps be done on the filesystem level instead, using a
subdirectory instead of a branch.

 - Stig

-- 
  Stig Sæther Bakken <[email protected]>
  Fast Search & Transfer ASA, Trondheim, Norway