On Sat, 2002-10-05 at 22:21, Sebastian Bergmann wrote:
> Andrei Zmievski wrote:
> > I have made PHP_4_3 branch just now.
> 
>   Will HEAD become 4.4.0-dev, or 5.0.0-dev? Considering the long release
>   cycle to be expected I prefer the latter.

I think it's time to head for 5.0 after 4.3, but not without a plan.

Below is an outline of what I think is necessary to make PHP 5 happen,
without going into each extension/SAPI layer.

I have not included extension-specific changes, but try to keep focus
on the core, and how to improve PHP 5 development and release
processes.

PHP has doubled in size since 4.0.0.  The release process is taking so
long now that it's painful, if it goes much further, people will start
burning out trying.

This is not a situation we can live with, so this plan addresses both
people and code issues that I think are necessary for PHP 5.0 to ever
see daylight.

Before I start, I want to mention that keeping the scope of 5.0
realistic is crucial.  If we didn't think of a feature already, 5.0
shouldn't have it.  This is not the time to dream up a feature only
because we're doing a new major version.  There's been plenty of
opportunity for that.

Step #1: Do 4.3.x releases from the 4.3 branch

We must expect to maintain PHP 4 quite a while longer, and should
figure out what the best approach is.  I think that just keeping PHP 4
on the 4.3 branch will work, but it depends on how many changes there
are in extensions.  Moving very active extensions to PECL and using
the step #5 approach in subsequent 4.x releases would work.

Step #2: Turn HEAD into 5.0.0-dev

Zend is replaced by ZE2, all the ZE2-specific branches are merged in.
Directory layout should stay the same, to make merging patches between
4.3 and 5.0 easier.  The naming will be weird, but it's more
manageable this way until the 4.3 commit volume is very low.

Step #3: Pickle all extensions!

Move all extensions except ext/standard w/dependencies to PECL.  Yes,
everything.  We can add CVS aliases to be able to check out like today
easily, but this is the first step towards parallelizing the release
process.  When extensions are pickled, they are given version numbers
(0.5 for experimental, 1.0 for the rest unless something suggests
otherwise).

Step #4: Getting pickles

I will add a "pear import-src" utility to add pickled extensions to
your PHP build, so they can be included in static builds.  It'll work
something like this:

$ pear import-src mysql pgsql session xml
Downloading mysql-1.0.tgz ... 174,080 bytes
Downloading pgsql-1.1.tgz ... 40,960 bytes
Downloading session-2.0.tgz ... 30,720 bytes
Downloading xml-1.5.1.tgz ... 71,680 bytes
Running buildconf...
Successfully added these extensions to your build tree: blah blah
$ ./configure ....

There should be a command for doing the same from CVS too.

Step #5: Release Process changes

When doing PHP 5 releases, we import the sources of bundled extensions
this way in the makedist script.

This will leave only the PHP core in the "php[45]" CVS module, which I
think is a great starting point for more manageable release cycles
than we have now.

Step #6: Fix API versioning!

As soon as extensions are made available in binary packages, our
versioning problems will show their true ugly rear.  We should fold
the current three API versions into one, and switch to a versioning
mechanism that allows using older libraries.

If we don't do this, people will have to re-install every
separately-installed (through PEAR or otherwise) extension on every
upgrade of PHP where the API version changes.  If the API change was
trivial and did not affect any of our modules, having to rebuild
everything is meaningless, and just a waste of peoples' time.  This is
a problem today, if not on the same scale.

This issue still needs a lot of thinking, this is just my reasoning.


 - Stig

-- 
Stig Sæther Bakken, Fast Search & Transfer ASA, Trondheim, Norway
http://pear.php.net/wishlist.php/ssb


--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to