Re: [RFC] BC breakage in PEAR - how to handle it properly
| From: | Tomas V.V.Cox | Date: | Wed, 17 Sep 2003 23:55:44 +0000 |
| Subject: | Re: [RFC] BC breakage in PEAR - how to handle it properly | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-21670@lists.php.net to get a copy of this message | ||
On Thursday, September 18, 2003 1:08, Greg Beaver wrote:
> [RFC] BC breakage in PEAR
> Sep. 17, 2003
> Greg Beaver
> Problem:
> BC breakage in PEAR has not been addressed. If one package depends on
> version 2.x of a package, and another depends on version 1.x, one
> package loses in the end. version 1.x can't be installed with version 2.x.
> Solution:
> If a minor BC break occurs, or BC is maintained, but a package is
> completely re-written, a major version number should be incremented in
> package.xml, and current PEAR systems already in place should be used.
> The installer should be modified so that a <dep rel="ge"
> version="1.5">
> will fail if the major version is > 1, unless another explicit <dep
> rel="lt" version="3.0"> is specified.
> If a major BC break occurs, then the package should be released as a new
> package as detailed below.
> The solution requires effort on the part of developers only. No changes
> need be made to the installer, and no changes need be made to package.xml.
> First, when a new version of a package comes out that is not backwards
> compatible with an older version, it should be released as a new,
> separate package. This package shall follow a specific naming scheme
> Package Foo version 1.x will be named "Foo"
> Package Foo version 2.x will be named "Foo2"
> Package Foo version 3.x will be named "Foo3"
> In addition to these naming conventions, the versioning for Foo2 shall
> start with major version 1.0
> Second, directory structure shall be as follows:
> Package Foo version 1.x
> Foo.php
> Foo/Supporting/FileOne.php
> Foo/Supporting/FileTwo.php
> Package Foo version 2.x
> Foo2.php
> Foo2/Supporting/FileOne.php
> Foo2/Supporting/FileTwo.php
> Third, class naming conventions shall follow the directory structure as
> well, class Foo2, class Foo2_Supporting_FileOne.
> In this way, naming and file conflicts cannot happen, and Foo can
> co-exist with Foo2
> Foo.php
> Foo2.php
> Foo/Supporting/FileOne.php
> Foo/Supporting/FileTwo.php
> Foo2/Supporting/FileOne.php
> Foo2/Supporting/FileTwo.php
> Last, supporting files should be unique to a new major version (Foo2 may
> not depend on Foo/Supporting/FileOne.php, for example)
As many packages shares directories, I'm not sure if directories
should be affected by the version scheme. What do you think?
--
Tomas V.V.Cox mailto:cox@idecnet.com