Hi,
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]
PHP releases have always been done spontaneously, in a somehow chaotic
way. Individual(s) decided when a release will happen and what could
or could fit in. Release managers role are unclear and the way to
nominate them is not clearly defined either.
The goals of this RFC aim to solve these issues while giving to us,
our users and 3rd parties (distributions, contributors, etc.) more
visibility and the ability to actually have a roadmap, or plan
developments. This RFC aims to define:
- a clear release cycle, periodic
- a transparent decision process for the feature additions, via
the RFCs and a transparent but anonymous vote - which changes can be done during a release lifetime (BC breaks,
bugs fixes, security fixes, etc.) - a transparent way to choose release managers for a given release
- a better usage of bugs.php.net to track each change, addition,
bug fixes (security incl.) or other various tasks related to a release - reduce time between bugs fix releases
- reduce the time to get new features in a release
- suppress BC breaks in bugs fix releases
- feature(s) preview release
[1] http://wiki.php.net/rfc/releaseprocess
--
Regards,
Felipe Pena
Hi,
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]
Thanks for preparing this. I have one change proposal:
With the proposed model it might, as you have illustrated, happen that
there are 5 versions being maintained.
As I mentioned multiple times on this list, on irc and other places I
like a Ubuntu-like model with two kinds of release which I, for the
purpose of this discussion, call "early access" (EA) and "long term
supported" (LTS) version.
At any given time only one EA may exist. When a new LTS version is being
released the previous LTS version enters security-only mode to give
users a transition period. Between every LTS version there are two EA
versions.
2011 2012 2013 2014 2015 2016 2017
| | | | | | | | | | | | |
LTS1 +++++++++++++++++++++++++++++++++++++-----------D | | | |
EA1 | | ++++++++++++D | | | | | | | |
EA2 | | | | ++++++++++++D | | | | | |
LTS2 | | | | | | ++++++++++++++++++++++++++++++++++++-----------D
EA3 | | | | | | | | ++++++++++++D
EA4 | | | | | | | | | | ++++++++++++D
The benefit is that developers and users who require a specific feature
get it early while distributors/hosters/software vendors/... have a safe
bet.
johannes
I think support 5 or even 3 parallel versions will be highly
impractical and extra-ordinarily challenging. I think we need a plan
that limits us to 2 versions and perhaps a 3rd one for critical
security fixes only.
2010/11/23 Johannes Schlüter johannes@schlueters.de:
Hi,
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]Thanks for preparing this. I have one change proposal:
With the proposed model it might, as you have illustrated, happen that
there are 5 versions being maintained.As I mentioned multiple times on this list, on irc and other places I
like a Ubuntu-like model with two kinds of release which I, for the
purpose of this discussion, call "early access" (EA) and "long term
supported" (LTS) version.At any given time only one EA may exist. When a new LTS version is being
released the previous LTS version enters security-only mode to give
users a transition period. Between every LTS version there are two EA
versions.2011 2012 2013 2014 2015 2016 2017
| | | | | | | | | | | | |
LTS1 +++++++++++++++++++++++++++++++++++++-----------D | | | |
EA1 | | ++++++++++++D | | | | | | | |
EA2 | | | | ++++++++++++D | | | | | |
LTS2 | | | | | | ++++++++++++++++++++++++++++++++++++-----------D
EA3 | | | | | | | | ++++++++++++D
EA4 | | | | | | | | | | ++++++++++++DThe benefit is that developers and users who require a specific feature
get it early while distributors/hosters/software vendors/... have a safe
bet.johannes
2010/11/23 Ilia Alshanetsky ilia@prohost.org
I think support 5 or even 3 parallel versions will be highly
impractical and extra-ordinarily challenging. I think we need a plan
that limits us to 2 versions and perhaps a 3rd one for critical
security fixes only.2010/11/23 Johannes Schlüter johannes@schlueters.de:
Hi,
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions:
[1]Thanks for preparing this. I have one change proposal:
With the proposed model it might, as you have illustrated, happen that
there are 5 versions being maintained.As I mentioned multiple times on this list, on irc and other places I
like a Ubuntu-like model with two kinds of release which I, for the
purpose of this discussion, call "early access" (EA) and "long term
supported" (LTS) version.At any given time only one EA may exist. When a new LTS version is being
released the previous LTS version enters security-only mode to give
users a transition period. Between every LTS version there are two EA
versions.2011 2012 2013 2014 2015 2016
2017
| | | | | | | | | | |
| |
LTS1 +++++++++++++++++++++++++++++++++++++-----------D | |
| |
EA1 | | ++++++++++++D | | | | | |
| |
EA2 | | | | ++++++++++++D | | | |
| |
LTS2 | | | | | |
++++++++++++++++++++++++++++++++++++-----------D
EA3 | | | | | | | | ++++++++++++D
EA4 | | | | | | | | | |
++++++++++++DThe benefit is that developers and users who require a specific feature
get it early while distributors/hosters/software vendors/... have a safe
bet.johannes
--
--
You can't expect the users to switch to the new major version as soon as it
comes out. They have to either migrate their codebase, and sadly they will
wait(at least me and my collegues/friends do this) one or two micro/build
version bump, usually the new major/major.minor version is stable enough.
So if we want to support "equally" 2 major version concurrently, I can't see
how can we make it through supporting 4 branches (oldmajor.last,
oldmajor.current, newmajor.last, newmajor.current)
or we can make "unequal" or "favored" branches:
-
either an early adopter vs lts sytem like ubuntu does, but they have 4
supported version at a time also
https://wiki.ubuntu.com/LTS
but I don't know how to mix LTS and php, because they release "shared
nothing" versions, while the php versions does share a common codebase
through their major version, so we can't plan beforehand that what version
will be the nextlts before getting there like the ubuntu guys can. :/ -
or stopping the development on the oldmajor version (I mean no new minor
version for the oldmajor, only micro/build bugfix releases)
with that modification, the multiple major version would be like this:
http://wiki.php.net/rfc/releaseprocessalternatives
what do you think?
Tyrael
- Ferenc Kovacs info@tyrael.hu wrote:
You can't expect the users to switch to the new major version as soon as it
comes out. They have to either migrate their codebase, and sadly they will
wait(at least me and my collegues/friends do this) one or two micro/build
version bump, usually the new major/major.minor version is stable enough.
ACK. One of my customers, a major ISP with millions of customers,
often sticks in older versions as newer ones tend to break many things.
Just had such a problem myself a few weeks ago: a minor update
(IIRC was from 5.3.2 to 5.3.3) broke virtually all of my web applications
(had to do lots of config adaptions to get it running again ;-o).
I got the strange feeling that php-devs don't care very much of long
term stability ;-p
It's more a problem of careful API/feature design than release cycling.
Once some feature or interface is in stable branch, it should stay there
w/o any disturbance at least until next major release.
So if we want to support "equally" 2 major version concurrently, I can't see
how can we make it through supporting 4 branches (oldmajor.last,
oldmajor.current, newmajor.last, newmajor.current)or we can make "unequal" or "favored" branches:
- either an early adopter vs lts sytem like ubuntu does, but they have 4
supported version at a time also
https://wiki.ubuntu.com/LTS
but I don't know how to mix LTS and php, because they release "shared
nothing" versions, while the php versions does share a common codebase
through their major version, so we can't plan beforehand that what version
will be the nextlts before getting there like the ubuntu guys can. :/
Why not using a branch hierachy ?
- new major branch is forked from latest release tag when compatibility
breaks will occour (properly planned and only done if necessary,
eg. like 4.x -> 5.x). - for each minor release, a separate branch is forked on the latest
stable tag. - bugs in a minor releases are fixed in these branches and micro
releases tagged out from there. - canonical versioning scheme: A.B.C (the 4th digit is reserved for
distros / downstreams) - all issues (bugfixes, features, etc) are done in their own per-issue
branches, which get rebased to their parent branch before merging back.
Scenario A: bugfixing.
-> found a bug in 5.3.4, reporting as bug# 12345
-> forking a branch bugfix_5.3.4_12345 from release-5.3.4
-> fixing the bug, testing until everything's fine
-> rebasing to latest php-5.3 branch and maybe retest.
-> submit my bugfix branch for review, until aggreed to be fine
-> rebase to latest php-5.3 again and merge into it
-> tag a new release from that branch
-> rebase to to latest master branch (that will become 5.4),
test again and merge if still applicable there
Scenario B: new feature
-> inventing some super-new feature, which will take a while to
be stableized
-> fork from latest stable release or master branch (whatever seems
applicable, on when the feature might get into mainline)
-> do development here, possible rework multiple times
-> frequently rebase to new releases or master branch
-> plan into which release the feature will get in
-> when properly reviewed/tested/accepted, rebased to latest master
and merge into it
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
Hi!
Just had such a problem myself a few weeks ago: a minor update
(IIRC was from 5.3.2 to 5.3.3) broke virtually all of my web applications
Out of curiosity - what exactly broke it? What change was it?
I got the strange feeling that php-devs don't care very much of long
term stability ;-p
If enough people would actually test pre-releases, the probability of
this happening would be lower.
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
On Fri, Dec 31, 2010 at 6:25 AM, Stas Malyshev smalyshev@sugarcrm.comwrote:
Hi!
Just had such a problem myself a few weeks ago: a minor update
(IIRC was from 5.3.2 to 5.3.3) broke virtually all of my web applications
Out of curiosity - what exactly broke it? What change was it?
I got the strange feeling that php-devs don't care very much of long
term stability ;-p
If enough people would actually test pre-releases, the probability of this
happening would be lower.
Btw: maybe we could announce the RCs to a wider audience.
I mean announce it on the site, tweet/blog about it, ask the community for
testing and feedback.
currently only thoose who closely follow the development (subscribed to the
mailing lists) are aware the general direction and status of the
development.
what do you think?
Tyrael
2010/12/31 Ferenc Kovacs info@tyrael.hu:
On Fri, Dec 31, 2010 at 6:25 AM, Stas Malyshev smalyshev@sugarcrm.comwrote:
[snip]
Btw: maybe we could announce the RCs to a wider audience.
I mean announce it on the site, tweet/blog about it, ask the community for
testing and feedback.
currently only thoose who closely follow the development (subscribed to the
mailing lists) are aware the general direction and status of the
development.what do you think?
Definitely a HUGE +1 !
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Hi!
Just had such a problem myself a few weeks ago: a minor update
(IIRC was from 5.3.2 to 5.3.3) broke virtually all of my web applicationsOut of curiosity - what exactly broke it? What change was it?
IIRC many deprecation warnings, which totally broke the output.
I guess with the next release I can expect certain warnings to
become true and certain functionality disappearing ;-o
I got the strange feeling that php-devs don't care very much of long
term stability ;-pIf enough people would actually test pre-releases, the probability of
this happening would be lower.
I, personally, have no time to test prereleases of dozens of
packages (php is just one of dozens I'm using, not in the list
of those I'm actively developing on). I use the packages of my
distro (Gentoo), which has an own release process where new
packages first masked as unstable and only get stabelized after
some testing period - even this didn't catch this. Even large
distros cannot test everything.
IMHO there's a fundamental flaw in the development process:
existing semantics in a stable line should never change.
Things like certain superglobals or calltime-reference passing
should neither disappear or suddenly produce warnings within
the stable line. The whole idea of depcreation warnings which
explicitly have to be switched off is insane from the operator's
perspective - it means a semantic change which requires each single
php application to be tested in realworld scenarios before rolling
out a new php version to production servers, leading to imensive
costs simply driving people away from php completely.
I really can understand the idea of these warnings, as well as
removing things like superglobals, from development perspective.
But they better belong into an additional instrumentation system
which does not affect the behaviour of the running applications
(eg. send these warnings to syslog instead of stdout, unless
explicitly asked to do otherwise).
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Hi!
Just had such a problem myself a few weeks ago: a minor update
(IIRC was from 5.3.2 to 5.3.3) broke virtually all of my web applicationsOut of curiosity - what exactly broke it? What change was it?
IIRC many deprecation warnings, which totally broke the output.
I guess with the next release I can expect certain warnings to
become true and certain functionality disappearing ;-o
Your application broke because of a deprecation warning? Are you
sending PHP errors to the user in your production code? At most this
should have caused some extra lines in your error log which end users
should never ever see.
-Rasmus
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Your application broke because of a deprecation warning? Are you
sending PHP errors to the user in your production code?
Unfortunately, yes. I didn't enable that - happend magically
on the update. That's yet another strange point here - why do
such warnings go stdout per default, instead of syslog ? ;-o
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
Hi!
Unfortunately, yes. I didn't enable that - happend magically
on the update. That's yet another strange point here - why do
such warnings go stdout per default, instead of syslog ? ;-o
You should use settings based on php.ini-production in production. One
of these is display_errors=Off. Use it.
--
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Hi!
Unfortunately, yes. I didn't enable that - happend magically
on the update. That's yet another strange point here - why do
such warnings go stdout per default, instead of syslog ? ;-oYou should use settings based on php.ini-production in production. One
of these is display_errors=Off. Use it.
In essence you say here, that I should diff the production config
example from one version to another to find out what changed
and adapt my config, on each update. Adds about 15mins extra work
per system and update just for that.
Why aren't the production settings the built-in defaults ?
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
Hi!
In essence you say here, that I should diff the production config
example from one version to another to find out what changed
No. You should use it now and should always have used it. There was no
change in this config parameter at least since 5.3.0. Look in the public
SVN repo if you don't believe me.
Why aren't the production settings the built-in defaults ?
Because we expect from people that run production servers to be able to
invest minimal effort of configuring their system given ready-made
settings provided to them. Running production server implies one has
more experience than a beginner developer, so default settings are
targeted to beginners, which don't know how to use php.ini settings.
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
Am 03.01.2011 02:19, schrieb Enrico Weigelt:
In essence you say here, that I should diff the production config
example from one version to another to find out what changed
and adapt my config, on each update.
Hm thats your job as sysadmin
Adds about 15mins extra work
What is your job
per system and update just for that.
per system?
are you riding totally differnet or random configurations
on many servers?
Why aren't the production settings the built-in defaults ?
because on development-machines warnings should jump
over your screen before you put a broken application
on a production server
on the other side NEVER EVER any server-software has to go online
withe default settings becuase lazy admins they are not
knowing what they do!
PRODUCTION:
error_reporting = E_ALL
| E_STRICT
display_errors = 0
log_errors = 1
DEVELOPMENT:
error_reporting = E_ALL
| E_STRICT
display_errors = 1
log_errors = 1
And yes with this settings for 500 domains we having some warnings
every month because applications which are spitting in the log
are fixed or killed because they are not production ready
This way update from 4.0 -> 5.0 -> 5.3 for some servers with
henrets of domains where painless - so what will you tell us
expecting you are not knowing what your configuration does?
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Your application broke because of a deprecation warning? Are you
sending PHP errors to the user in your production code?Unfortunately, yes. I didn't enable that - happend magically
on the update. That's yet another strange point here - why do
such warnings go stdout per default, instead of syslog ? ;-o
We do not overwrite your existing php.ini file on an install. And the
default has not changed in 10+ years. So I suspect some user error here.
Also, you said this happened between 5.3.2 and 5.3.3? Looking through
the diff between those two versions we did not add any new deprecation
warnings. We tend to not do that in a minor release. At least I don't
recall the last time we did so.
I suspect your issue comes down to your system somehow ending up with a
new php.ini with different settings when you installed 5.3.3 and it has
nothing to do with any code changes on our part at all.
-Rasmus
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Also, you said this happened between 5.3.2 and 5.3.3? Looking through
the diff between those two versions we did not add any new deprecation
warnings. We tend to not do that in a minor release. At least I don't
recall the last time we did so.
That's where I noticed it. Maybe several other things had to come
together to make it show up now. I can just tell you my observation
that the latest update suddenly brought up all these warnings
to stdout.
I suspect your issue comes down to your system somehow ending up with a
new php.ini with different settings when you installed 5.3.3 and it has
nothing to do with any code changes on our part at all.
No, as usual on Gentoo, config files are never overwritten, but
written to another place and tools like etc-update show you the
differences. I've merged the configs manually, and I'm pretty
sure I didn't add anything like error_reporting=On, etc.
But I can't tell if these options had been previously set at all,
so it's maybe a matter of built-in defaults.
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
Am 03.01.2011 02:41, schrieb Enrico Weigelt:
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Also, you said this happened between 5.3.2 and 5.3.3? Looking through
the diff between those two versions we did not add any new deprecation
warnings. We tend to not do that in a minor release. At least I don't
recall the last time we did so.
That's where I noticed it. Maybe several other things had to come
together to make it show up now. I can just tell you my observation
that the latest update suddenly brought up all these warnings
to stdout.I suspect your issue comes down to your system somehow ending up with a
new php.ini with different settings when you installed 5.3.3 and it has
nothing to do with any code changes on our part at all.
No, as usual on Gentoo, config files are never overwritten, but
written to another place and tools like etc-update show you the
differences. I've merged the configs manually, and I'm pretty
sure I didn't add anything like error_reporting=On, etc.
But I can't tell if these options had been previously set at all,
so it's maybe a matter of built-in defaults.cu
Am 03.01.2011 02:41, schrieb Enrico Weigelt:
No, as usual on Gentoo, config files are never overwritten, but
written to another place and tools like etc-update show you the
differences. I've merged the configs manually, and I'm pretty
sure I didn't add anything like error_reporting=On, etc.
But I can't tell if these options had been previously set at all,
so it's maybe a matter of built-in defaults.cu
Hi,
Sorry for the noise. Here is the correct answer.
Since ebuild php-5.3.3 Gentoo introduced a set of new features. One of
them is the PHP_INI_VERSION variable in the file /etc/make.conf. If you
don't set this variable, Gentoo installs the development version of the
php.ini file. I think this is your problem. For more informations you
can visit the Blog from the PHP ebuild maintainer.
olemarkus.org
Greetings,
Christian
Since ebuild php-5.3.3 Gentoo introduced a set of new features.
Which includes the possibility to have each minor version of PHP
installed in parallel. Hence a new /etc/php layout, hence the need to
migrate your config. Which I foolishly assumed users would do before
firing up their servers.
And we do inform users about the possibility to change config files
right after the install.
Regards,
Matti
Am 03.01.2011 14:00, schrieb Matti Bickel:
Since ebuild php-5.3.3 Gentoo introduced a set of new features.
Which includes the possibility to have each minor version of PHP
installed in parallel.
Sounds nice
Hence a new /etc/php layout, hence the need to
migrate your config.
Hm, i am not a gentoo user but this is not so fine as
long most users have installed only one php-version
anyways, posting on php-mailing-list without
understanding from where config-chnages are
coming is weak
Which I foolishly assumed users would do before
firing up their servers.
admins would to this
users which sould not play admin not
And we do inform users about the possibility to change config files
right after the install.
can you make the message red and blinking for users who
are thinking they have not to read anything what their computer
says if it does not look dangerous enough? :-)
Hence a new /etc/php layout, hence the need to migrate your
config.Hm, i am not a gentoo user but this is not so fine as long most users
have installed only one php-version
Yeah, right now talking about having a symlink to the active config in
the usual place.
Anyway, I don't want to clutter -internals with distro issues, just
meant to explain where this issue might come from.
Regards,
Matti
Am 03.01.2011 02:41, schrieb Enrico Weigelt:
No, as usual on Gentoo, config files are never overwritten, but
written to another place and tools like etc-update show you the
differences. I've merged the configs manually, and I'm pretty
sure I didn't add anything like error_reporting=On, etc.
But I can't tell if these options had been previously set at all,
so it's maybe a matter of built-in defaults.cu
Hi,Sorry for the noise. Here is the correct answer.
Since ebuild php-5.3.3 Gentoo introduced a set of new features. One of
them is the PHP_INI_VERSION variable in the file /etc/make.conf. If you
don't set this variable, Gentoo installs the development version of the
php.ini file. I think this is your problem. For more informations you
can visit the Blog from the PHP ebuild maintainer.
Thanks for clearing that up.
We do seem to get blamed a lot for breaking stuff between releases. The
truth is that we try really hard not to, but there are a lot of moving
parts that we have no control over. Changes in 3rd-party libraries and
distro-specific stuff like this as well and most of these issues end up
being attributed to us.
-Rasmus
Hi!
IIRC many deprecation warnings, which totally broke the output.
Err, you actually output the warnings in your output? In production?!
Please tell me you turned it off now, at least - it would make
deprecation warning doubly beneficial. I'd even consider inserting
couple of random ones just to make people turn off display_errors in
production.
I, personally, have no time to test prereleases of dozens of
packages (php is just one of dozens I'm using, not in the list
Of course, nobody personally has any time. But PHP is a volunteer
project, so if nobody has the time, nobody should complain about "php
developers not caring". PHP developers are caring, but it's not humanly
possible for them to foresee everything, that's why testing exists.
IMHO there's a fundamental flaw in the development process:
existing semantics in a stable line should never change.
Deprecating a function is a very minor change and doesn't change the
semantics. It's a warning that semantics is going to be changed - and if
it took a major version to deprecate every single thing, we'd be now
somewhere at PHP 318.0. I don't think that's what you mean by stability.
Anyway, last such change I can recall was in 5.3.0.
Things like certain superglobals or calltime-reference passing
should neither disappear or suddenly produce warnings within
the stable line. The whole idea of depcreation warnings which
What you call "stable line" anyway? E_DEPRECATED
was added in 5.3.0, and
most deprecations were introduced or converted from warnings then. The
only change I see related to deprecation post 5.3.0 is this:
. Changed deprecated ini options on startup from E_WARNING
to
E_DEPRECATED.
Which changes already existing warning to lower level.
call_time_reference was deprecated since forever, and so was
register_globals. It's not a new thing even with 5.3 - which is a major
version, certainly not in a subminor version.
I really can understand the idea of these warnings, as well as
removing things like superglobals, from development perspective.
But they better belong into an additional instrumentation system
which does not affect the behaviour of the running applications
(eg. send these warnings to syslog instead of stdout, unless
explicitly asked to do otherwise).
PHP goes at extraordinary length to keep BC - including keeping with
some stuff that everybody hates and wishes it was different, but because
of BC is not being changed. 5.3.0 did some minor changes - that's what
the x.0 versions are for. If you discover some BC breaks in non x.0
version - you should complain, as they are not allowed except if they
fix a major bug or there's another very very good reason. However so far
I don't see much basis to complain about 5.3.
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Hi!
IIRC many deprecation warnings, which totally broke the output.
Err, you actually output the warnings in your output? In production?!
Something seem to turn them on magically, no idea what it was.
(perhaps the config variable name changed ? ;-o)
I, personally, have no time to test prereleases of dozens of
packages (php is just one of dozens I'm using, not in the listOf course, nobody personally has any time. But PHP is a volunteer
project, so if nobody has the time, nobody should complain about "php
developers not caring". PHP developers are caring, but it's not humanly
possible for them to foresee everything, that's why testing exists.
True. But at least we could use an development process that requires
less testing (or automates much of it). Perhaps starting with clear
specifications which it gets tested against.
If it was some commercial project and I was the chief architect,
I'd require my people to first have a well-thought specification
before starting actually implementing anything new.
I know, it's a big beaurocracy which doesn't make as much fun as
coding, but at some point it gets necessary for stability and
reliability.
IMHO there's a fundamental flaw in the development process:
existing semantics in a stable line should never change.Deprecating a function is a very minor change and doesn't change the
semantics.
The fact that those warnings suddenly appeared in the output is
a semantic change. I still wonder why went to stdout instead of
syslog in the first place.
It's a warning that semantics is going to be changed - and if
it took a major version to deprecate every single thing, we'd be now
somewhere at PHP 318.0. I don't think that's what you mean by stability.
Why such kind of deprecations at all ?
Why dont such things become optional (buildtime) features that are
enabled by default (unless some --disable-deprecated-foo given) ?
Things like certain superglobals or calltime-reference passing
should neither disappear or suddenly produce warnings within
the stable line. The whole idea of depcreation warnings whichWhat you call "stable line" anyway?
The line of stable releases, those which are meant to go in production.
call_time_reference was deprecated since forever, and so was
register_globals.
Still many code relies on that. Probably not very fine concepts from
language design view, but still quite useful. If it's so bad, it
should have been gone since 5.0.
It's not a new thing even with 5.3 - which is a major
version, certainly not in a subminor version.
Next major would be 6.x
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Hi!
IIRC many deprecation warnings, which totally broke the output.
Err, you actually output the warnings in your output? In production?!
Something seem to turn them on magically, no idea what it was.
(perhaps the config variable name changed ? ;-o)I, personally, have no time to test prereleases of dozens of
packages (php is just one of dozens I'm using, not in the listOf course, nobody personally has any time. But PHP is a volunteer
project, so if nobody has the time, nobody should complain about "php
developers not caring". PHP developers are caring, but it's not humanly
possible for them to foresee everything, that's why testing exists.True. But at least we could use an development process that requires
less testing (or automates much of it). Perhaps starting with clear
specifications which it gets tested against.If it was some commercial project and I was the chief architect,
I'd require my people to first have a well-thought specification
before starting actually implementing anything new.I know, it's a big beaurocracy which doesn't make as much fun as
coding, but at some point it gets necessary for stability and
reliability.IMHO there's a fundamental flaw in the development process:
existing semantics in a stable line should never change.Deprecating a function is a very minor change and doesn't change the
semantics.The fact that those warnings suddenly appeared in the output is
a semantic change. I still wonder why went to stdout instead of
syslog in the first place.It's a warning that semantics is going to be changed - and if
it took a major version to deprecate every single thing, we'd be now
somewhere at PHP 318.0. I don't think that's what you mean by stability.Why such kind of deprecations at all ?
Why dont such things become optional (buildtime) features that are
enabled by default (unless some --disable-deprecated-foo given) ?
Nope, we really didn't change anything. The simple explanation is that
you installed without or with a different php.ini from the previous
version. If you go back and use your current php.ini config with the
version of PHP you were upgrading from you will see exactly the same
output. Like I said, no defaults changed, no warnings were added, nor
removed.
-Rasmus
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Nope, we really didn't change anything. The simple explanation is
that you installed without or with a different php.ini from the
previous version.
Of course, I've kept my original (old) config and just adapted
some things to the new default config manually. So it might have
something to do with built-in defaults.
cu
Enrico Weigelt, metux IT service -- http://www.metux.de/
phone: +49 36207 519931 email: weigelt@metux.de
mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
- Rasmus Lerdorf rasmus@lerdorf.com wrote:
Nope, we really didn't change anything. The simple explanation is
that you installed without or with a different php.ini from the
previous version.Of course, I've kept my original (old) config and just adapted
some things to the new default config manually. So it might have
something to do with built-in defaults.
But like I said, we have not changed any built-in defaults in a very
long time. Certainly not between 5.3.2 and 5.3.3. The evidence points
to a simple change in your config. Whether you did or or Gentoo did it,
I don't know, but I can tell you with 100% certainty that we didn't do it.
Download both 5.3.2 and 5.3.3 and look at the diff yourself if you are
still skeptical. There is no magic here.
-Rasmus
On Mon, 03 Jan 2011 01:14:42 -0000, Enrico Weigelt weigelt@metux.de
wrote:
- Stas Malyshev smalyshev@sugarcrm.com wrote:
Of course, nobody personally has any time. But PHP is a volunteer
project, so if nobody has the time, nobody should complain about "php
developers not caring". PHP developers are caring, but it's not humanly
possible for them to foresee everything, that's why testing exists.True. But at least we could use an development process that requires
less testing (or automates much of it). Perhaps starting with clear
specifications which it gets tested against.If it was some commercial project and I was the chief architect,
I'd require my people to first have a well-thought specification
before starting actually implementing anything new.I know, it's a big beaurocracy which doesn't make as much fun as
We usually add test cases when fixing bugs and adding new features.
However, besides being impossible to test all possible code paths, there's
one problem you're not considering.
The problem is that you seem to have no idea of how undermanned the
project is. We can barely fix the bugs that are reported. On top of that,
most of the contributors are volunteers -- when faced with an endless
boring task (in your words, not "fun" task), the reaction isn't "well it
sucks, but I have to earn money to eat", it's "screw it, I have better
things to do with my scarce free time". I'm not saying that whatever
stability/reliability improving procedures you'd like to see implemented
are worthless, I'm saying they have to be weighted against the
motivational factor.
If you actually want PHP's development process to be more reliable, the
best thing you can do is to contribute by writing test cases, reviewing
the code committed, etc.
--
Gustavo Lopes
Hi!
Something seem to turn them on magically, no idea what it was.
(perhaps the config variable name changed ? ;-o)
No, it has not. Whatever "magically changed" on your system was not
caused by PHP. On the other hand it gave you a chance to fix a serious
configuration problem on your server, so I write it down as a win :).
The fact that those warnings suddenly appeared in the output is
a semantic change. I still wonder why went to stdout instead of
syslog in the first place.
Those warnings should never ever appear in output, and the said change
happened in 5.3.0, which is supposed to have such kind of changes. It
went to stdout because your system was not configured like a production
system should be.
Why such kind of deprecations at all ?
Why dont such things become optional (buildtime) features that are
enabled by default (unless some --disable-deprecated-foo given) ?
Because nobody cares about these options. For heaven's sake, people
still have trouble with how display_errors works! Who is going to look
into these "options"? People would ignore them and then complain "why
suddenly things changed without a warning? You should have warned us!"
Still many code relies on that. Probably not very fine concepts from
language design view, but still quite useful. If it's so bad, it
should have been gone since 5.0.
"Many code" is broken and should be fixed now. Sorry, but there's no
better answer for that - these features are broken, dangerous and should
not be used. register_globals is off by default since 4.2.0.
allow_call_time_pass_reference is deprecated since 5.0.
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
hi,
2010/11/23 Ilia Alshanetsky ilia@prohost.org:
I think support 5 or even 3 parallel versions will be highly
impractical and extra-ordinarily challenging. I think we need a plan
that limits us to 2 versions and perhaps a 3rd one for critical
security fixes only.
Yes, that's what the two examples tried to show.
Also reducing the bugs fixing period (move earlier to security mode
only) could help a lot. Having one release in bugs fixes mode and two
in security only is not too much work.
The one thing we have to improve to achieve this goal (be 2 or 3
active versions) is to share tests infrastructure. At our labs we are
working on improving our tests platforms with more BC tests,
performance/stress tests and apps testing using the usual apps (wp,
joomla, drupal, etc.) with setup and usage. We would like to add
frameworks too soonish, but for that we would prefer to work with the
framework directly.
Doing so will let us tests a RC withing a couple of days with a high
level of confidence. I also think that with a bug fixes and security
only mode will reduce a release period to a month (2 RCs) for 99% of
the releases.
Feel free to ping me if you are one of the QA lead/lead of a framework
or app and have a tests suite ready to be used.
Cheers,
Pierre
@pierrejoye | http://blog.thepimp.net | http://www.libgd.org
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]
Really? I think you're blowing this all way out of proportion.
I don't mind a yearly release cycle, as we should get out more releases.
I don't mind a monthly release cycle for .z releases.
What however goes straight against this is:
* January
o Decisions which features or changes will be in the next
release
You don't decide on it, you just have to go with what we have.
All the rest you write in the RFC is basically already as we do it.
regards,
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions:
[1]Really? I think you're blowing this all way out of proportion.
Why do you think that?
I can see two reason:
- you think that the current rules/policies/methods are good enough.
- you think that these rules/policies/methods aren't important for the
quality of the release.
both seems wrong from the past experiences of new php major/major.minor
releases.
see my last email in the other thread
I don't mind a yearly release cycle, as we should get out more releases.
I don't mind a monthly release cycle for .z releases.What however goes straight against this is:
* January o Decisions which features or changes will be in the next release
You don't decide on it, you just have to go with what we have.
who decided that?
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known rules, so
you can forgot/misunderstand/bend them. :/
Tyrael
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known rules, so
you can forgot/misunderstand/bend them. :/
And I don't think that is a bad thing. It's good to be able to be
flexible.
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known rules,
so
you can forgot/misunderstand/bend them. :/And I don't think that is a bad thing. It's good to be able to be
flexible.Derick
Its good for you, but its bad for the people, who expect you to follow the
rules, you know, the vendors, developers, etc.
Tyrael
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known
rules, so you can forgot/misunderstand/bend them. :/And I don't think that is a bad thing. It's good to be able to be
flexible.Its good for you, but its bad for the people, who expect you to follow the
rules, you know, the vendors, developers, etc.
Well, vendors don't follow rules in the first place. They just add
random patches anyway. Developers are pretty much aware what a bug fix,
security bug fix and development tree means. With an annoucement (which
should really be a regular thing, sortof) of a new minor release, isn't
it clear? In case you say no, don't write an RFC that requires really
strict following, but instead write guidelines that match current
practise.
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known
rules, so you can forgot/misunderstand/bend them. :/And I don't think that is a bad thing. It's good to be able to be
flexible.Its good for you, but its bad for the people, who expect you to follow
the
rules, you know, the vendors, developers, etc.Well, vendors don't follow rules in the first place.
you are sure that there aren't any vendor out there that don't following
your rules, which you think it better if it isn't documented or followed?
They just add
random patches anyway.
usually they more lazy, than the original developers, so I think they don't
add random shit just for fun.
Developers are pretty much aware what a bug fix,
security bug fix and development tree means.
as long as you and Zeev can't agree on what is the trunk (either be that a
development/experience branch, or the next stable version), then I think
they aren't aware.
With an annoucement (which
should really be a regular thing, sortof) of a new minor release, isn't
it clear?
sorry, I lost you here. what is clear? that you want to release the current
trunk? thats crystal clear.
What it's not clear to me, that who decided when that you will be the
current RM, and that the current trunk is ready for an alpha release.
what is an alpha release? when did we started releasing
and announcing alphas, who decided that? can we add new features after the
alpha? or can we remove something if the feedback is bad about some change?
so this is what I'm talking about, lack of
In case you say no, don't write an RFC that requires really
strict following, but instead write guidelines that match current
practise.
from my POV, I don't mind, if you guys decide that the current process is
the best, and create a wiki for that, but please decide on that, write it
down, and at least try to stick with it, if it works.
thats the point.
Tyrael
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known rules, so
you can forgot/misunderstand/bend them. :/And I don't think that is a bad thing. It's good to be able to be
flexible.
A good artist is capable of great flexibility within the constraints of
their medium. In the case of software releases, you can still have
greate flexibility even with an existing release process. In many ways,
having the process defined helps bring about creative solutions -- "if I
want to get this in time for the release, what solution will work best?"
I used to love the ad hoc nature of "we'll release when it's ready."
However, having done quite a number of scheduled releases, I've found
that:
-
Predictability motivates developers. "Release is in 3 months? Okay,
let's get rolling on this!" -
Knowing when the next release is coming also means that developers
are more comfortable if they're unable to make the deadline. "I can't
do it by this release, but I should have no trouble making the next." -
Less stressful for release managers. If the code isn't ready by the
deadline, it's not merged to the branch, plain and simple.
The status quo works great for those whom it serves. For everyone else,
it stinks. There's no transparency, which leads to disenfranchisement.
--
Matthew Weier O'Phinney
Project Lead | matthew@zend.com
Zend Framework | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc
The status quo works great for those whom it serves. For everyone else,
it stinks. There's no transparency, which leads to disenfranchisement.
That's why my first reply said:
I don't mind a yearly release cycle, as we should get out more releases.
I don't mind a monthly release cycle for .z releases.
that is a good thing.
regards,
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
hi,
amen.
On Tue, Nov 23, 2010 at 3:17 PM, Matthew Weier O'Phinney
weierophinney@php.net wrote:
All the rest you write in the RFC is basically already as we do it.
yeah, maybe, but they aren't written down, accepted and well-known rules, so
you can forgot/misunderstand/bend them. :/And I don't think that is a bad thing. It's good to be able to be
flexible.A good artist is capable of great flexibility within the constraints of
their medium. In the case of software releases, you can still have
greate flexibility even with an existing release process. In many ways,
having the process defined helps bring about creative solutions -- "if I
want to get this in time for the release, what solution will work best?"I used to love the ad hoc nature of "we'll release when it's ready."
However, having done quite a number of scheduled releases, I've found
that:* Predictability motivates developers. "Release is in 3 months? Okay,
let's get rolling on this!"* Knowing when the next release is coming also means that developers
are more comfortable if they're unable to make the deadline. "I can't
do it by this release, but I should have no trouble making the next."* Less stressful for release managers. If the code isn't ready by the
deadline, it's not merged to the branch, plain and simple.The status quo works great for those whom it serves. For everyone else,
it stinks. There's no transparency, which leads to disenfranchisement.--
Matthew Weier O'Phinney
Project Lead | matthew@zend.com
Zend Framework | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc--
--
Pierre
@pierrejoye | http://blog.thepimp.net | http://www.libgd.org
Hi!
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]Really? I think you're blowing this all way out of proportion.
I don't mind a yearly release cycle, as we should get out more releases.
I don't mind a monthly release cycle for .z releases.
I think the idea is not focusing on "yearly" or "monthly" but having
some predictable schedule. Nobody says it should be set in stone, let's
be realistic here - if we need to slip a release here and there, we'd do
it. But having known targets is the goal, not having releases "whenever
somebody on the list wakes up and decides to have a release". I think
the project needs to grow up a bit and have at least some semblance of
release schedule. The mere existence of it written somewhere public
would motivate people to adhere to it.
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
-----Original Message-----
From: Stas Malyshev [mailto:smalyshev@sugarcrm.com]
Sent: Wednesday, November 24, 2010 9:39 PM
To: Derick Rethans
Cc: Felipe Pena; internals
Subject: Re: [PHP-DEV] [RFC] Release ProcessHi!
With the recent chaos in the way we begin and ended releases, we
would like to propose a clean way to deal with releases and related
decisions: [1]Really? I think you're blowing this all way out of proportion.
I don't mind a yearly release cycle, as we should get out more releases.
I don't mind a monthly release cycle for .z releases.I think the idea is not focusing on "yearly" or "monthly" but having some
predictable schedule. Nobody says it should be set in stone, let's be realistic
here - if we need to slip a release here and there, we'd do it. But having known
targets is the goal, not having releases "whenever somebody on the list wakes
up and decides to have a release". I think the project needs to grow up a bit and
have at least some semblance of release schedule. The mere existence of it
written somewhere public would motivate people to adhere to it.
I agree with that. More structure and predictability will be very valuable to the project. We created a lot of structure in Zend Framework and it has really paid off.
Btw, we don't have to look far. Just the change in having people document their suggestions via RFCs already had a substantial impact on this project both in terms of peer review and having a long lasting trail of what made it into a given release.
More structure will typically yield in higher quality, more visibility and therefore more motivation for people to contribute, and I believe also in more deliverables rather than less as people will work towards clear goals + be accepting if they miss them and they need to wait for the next release train.
Andi
hi Andi,
I agree with that. More structure and predictability will be very valuable to the project. We created a lot of structure in Zend Framework and it has really paid off.
Btw, we don't have to look far. Just the change in having people document their suggestions via RFCs already had a substantial impact on this project both in terms of peer review and having a long lasting trail of what made it into a given release.
More structure will typically yield in higher quality, more visibility and therefore more motivation for people to contribute, and I believe also in more deliverables rather than less as people will work towards clear goals + be accepting if they miss them and they need to wait for the next release train.
As we will stay flexible, a fixed time time to begin with is better.
The other key part was about features selection, unlike what has been
done (or suggested in this thread), we should take what is done but
what we what is ready and desired. Desired as in tested (viable, BC,
QAs, etc.) and desired (RFC, votes, etc.).
A fixed time line also helps developers to catch the next band wagon
if they miss one, instead of pushing in half backed additions.
Cheers,
Pierre
@pierrejoye | http://blog.thepimp.net | http://www.libgd.org
--001636eef06580573f0495ae312f
Content-Type: text/plain; charset=UTF-8Hi,
With the recent chaos in the way we begin and ended releases, we would
like to propose a clean way to deal with releases and related decisions: [1]PHP releases have always been done spontaneously, in a somehow chaotic
way. Individual(s) decided when a release will happen and what could
or could fit in. Release managers role are unclear and the way to
nominate them is not clearly defined either.The goals of this RFC aim to solve these issues while giving to us,
our users and 3rd parties (distributions, contributors, etc.) more
visibility and the ability to actually have a roadmap, or plan
developments. This RFC aims to define:
- a clear release cycle, periodic
- a transparent decision process for the feature additions, via
the RFCs and a transparent but anonymous vote- which changes can be done during a release lifetime (BC breaks,
bugs fixes, security fixes, etc.)- a transparent way to choose release managers for a given release
- a better usage of bugs.php.net to track each change, addition,
bug fixes (security incl.) or other various tasks related to a release- reduce time between bugs fix releases
- reduce the time to get new features in a release
- suppress BC breaks in bugs fix releases
- feature(s) preview release
thanks for preparing this,
as matthew and andi pointed out, more structure is a good idea. I still think
even with all the things in the RFC in place, we are still very flexible.
Having planned releases and clear processes how to reduce BCs and add transparency was
always a good thing in the projects I worked on.
So I'm definatly in favor of this.
Now I've thought a bit more about it, I'm trying to reply to this with
some constructive comments. I'm reordering it a bit in the response
where it makes sense to do. In a general way, some of the things in here
are done, and IMO it make sense to refine them during the 5.4 process if
we find that things don't work as this theoretical RFC implies.
===== Releases Cycle =====
No feature addition after final x.y.0 release (or x.0.0). Self
contained features or new SAPIs could be carefully considered on a
case by case basis.Backward compatibility must be respected with the same major releases,
for example from 5.2 to 5.6. Binary compatibility can be broken
between two features releases, f.e. between 5.3 and 5.4:
- x.y.z to x.y.z+1
- Bugs fixes only (with a room for exceptions on a case by case
basis and only for small self contained features additions).- Extensions support can't be removed (like move them to pecl)
- Backward compatibility must be kept (internals and userland)
- ABI/API compatibility must be kept (internals)
- x.y.z to x.y+1.z
- Bugs fixes
- New features
- Extensions support can be ended (moved to pecl)
- Backward compatibility must be kept
- API compatibility must be kept (internals and userland)
- ABI can be broken (internals)
- x.y.z to x+1.0.0
- Bugs fixes
- New features
- Extensions support can be ended (moved to pecl)
- Backward compatibility can be broken
- API compatibility can be broken (internals and userland).
- ABI can be broken (internals)
It is critical to understand the consequences of breaking BC, APIs or
ABIs. It should not be done for the sake of doing it. RFCs explaining
the reasoning behind a breakage and the consequences along with test
cases and patch(es) should help.
The whole section above is really nothing new, but good to write down.
- Yearly release cycle
- 3 years release life cycle
- 2 years bugs fixes only
- 1 year security fixes only
==== Example time line with only one major version at a time ====
<code>
**** pre release phase
++++ release lifetime with all bugs fixes, no feature addition
---- release lifetime security fixes only
D EOL
Version Time ->
2011 2012 2013 2014 2015 2016 2017
| | | | | | | | | | | | |
5.3 +++++++++++++-----D
5.4 |+++++++++++++++++++++++++-----------D
5.5 | | |++++++++++++++++++++++++-----------D
5.6 | | | | |++++++++++++++++++++++++-----------D
6.0 | | | | |++++++++++++++++++++++++-----------D
6.1 | | | | |*****++++++++++++++++++++++++-----------D
</code>==== Example time line with two majors versions ====
However it could happen that a new major version is desired while the
active major version is still heavily used. Like what we had between
php 4 and 5 or for the oldest, between php 3 and 4.
Because of this, Perhaps the latest release before a new major one
should run for a year longer. So in the example above, 5.6 runs until
where 6.0 ends too.
<code> **** pre release phase ++++ release lifetime bugs ---- release lifetime security only D EOL Version Time -> 2011 2012 2013 2014 2015 2016 2017 | | | | | | | | | | | | | 5.3 +++++++++++++-----D 5.4 |*****+++++++++++++++++++++++++-----------D | | | | | 5.5 | | |******++++++++++++++++++++++++-----------D | | | 5.6 | | | |******++++++++++++++++++++++++-----------D 6.0 | | |******++++++++++++++++++++++++-----------D | | 6.1 | | | |******++++++++++++++++++++++++-----------D </code>
This variant is not workable, because there are (in the example) in 2014
five branches. Merging between those, manually and automatically is
going to be a major pain. I'd say we all rather want to focus our time
on fixes and new features; and not spend more time doing branch merging,
whatever tool we use for this.
==== Timeline example for a release ====
- January
- Decisions which features or changes will be in the next release
- 1st release alpha (may have many alpha)
- At least one release per month, more at wish
- March, RC phases, biweekly release
- each RC should go through the QA before being published
- usually2 days
Uh? The whole RC phase is QA. I don't see why you need another QA
'period'.
I would however want to say that packaging and bundling is
done on Wednesday, with any release on Thursday (morning). The original
idea was to not have just a Friday for people to upgrade before a
weekend. I've always bundled/packages on Wednesday and released on
Thursday, but I've seen that lately it's all done on Thursday, and
sometimes even Thursday evening US time.
* running the various test suites (phpt, custom real life tests, platform specific tests). Some tests need a day to run
- June, Final
- Last RC taken as final, golden release (no change between the last RC and the final version)
TBH, I think 6 months is too much between first alpha and release.
Because we'd only have 6 months for a "normal cycle". I am also thinking
that it might be better to not start in January, but in
September/October so that a new release doesn't come out just before the
summer holidays.
===== Feature selection and development =====
RFCs have been introduced two years ago and have been proven as being
an amazing way to avoid conflicts while providing a very good way to
propose new things to php.net. New features or additions to the core
should go through the RFC process.
New big language features, I agree with. Small little self-contained
extension functions do not need a full blown RFC process. Extension's
maintainers should have the responsibilty for this. (I am not saying it
wouldn't be good to have an RFC for some of those new additions though).
It has been done successfully (as
the process went well, but the features were not necessary accepted)
already for a dozen of new features or improvements.
One issue with it though, the page that lists all the RFCs isn't
maintained, and status isn't always updated. That needs to be done
otherwise we get to "oh, is this implemented yet?"
Features can use branch(es) if necessary, doing so will minimize the
impact of other commits and changes on the development of a specific
feature (or the other way 'round). The shorter release cycle also
ensures that a given feature can get into the next release, as long as
the RFC has been accepted.
I would word "can use branches if necessary" stronger, like "can use
branches if absolutely necessary. The reason why, is that it is a good
idea to get as many people familiar with new code. Of course, if there
is a lot of ongoing work then a feature branch helps, but it should be
merged into trunk as soon as it compiles (and doesn't break any test
case) for peer review and more testing.
The change to what we have now is the voting process. It will not
happen anymore on the mailing list but in the RFCs directly, for
php.net members, in an anonymous way (who votes what won't be made
public).The question for this section is about who will be allowed to vote:
- php-src (yes, no)
- php-doc (yes, no)
- qa, *phpt (yes, no)
- other sub projects like pear (yes, no)
NB: the poll plugin will be installed shortly
A few things here that I don't like. First of all, I think voting
should be public. I've nothing to hide, and I hope nobody else has
either. Voting just on a wiki is too hidden as well- I think it should
happen on the mailinglist with just +1, 0 and -1 responses. I quite like
the Apache model: http://www.apache.org/foundation/voting.html and
wouldn't mind adopting that in a slightly modified way. It is important
however that votes come without comments.
===== Release managers selection =====
The release managers team should be selected in a more transparent
way. The ideal way is again to go through a proposal and a vote. The
same system than the RFCs can obviously be used for the release
managers selection.The volunteers (a team of two persons) can add propose themselves via
the mailing list and they will be added to a RFC page. A week between
the last call and the vote should be sufficient (given that anyone can
volunteer himself for the next release at any time). The vote takes
place for a week.Examples:
- John/Fred (yes, no)
- Ted/Georges (yes, no)
- Leon/Nikita (yes, no)
The team with the most votes will be then the RMs for the given
release. One person cannot be a RM for more than one release at the
same time.Again, one of the questions for this section is about who will be
allowed to vote:
- php-src (yes, no)
- php-doc (yes, no)
- qa, *phpt (yes, no)
- other sub projects like pear (yes, no)
NB: the poll plugin will be installed shortly
Sounds like something we might want to look at for feature releases
(from 5.5).
===== Feature(s) preview release, solving the experimental features =====
Some features require a lot of testing or users feedback before they
can be considered as ready, stable enough or proven as having made
good design decisions. Having them in normal releases is dangerous.
The past releases told us more that once than many good ideas ended as
being not so good after all. But we had to keep them in and, even
worst, maintain them forever.A feature preview release could solve this problem. A feature(s)
preview release gives us and our users a way to try bleeding edge
additions to the language or core while providing us with an
invaluable feedback to actually valid both the implementation and the
design choices.
Non core features (engine, stream, etc.) could benefit from a feature
preview release while doing it via PECL should be the preferred way.Feature(s) preview releases can happen any time and can be platform
specific. Whether a specific development branch is used or not is up
to the developers of the given features (external repositories like
github or bitbucket can obviously be used as well).
Isn't a feature preview just a snapshot or (the first) alpha? I don't
want to see various feature releases that don't have just trunk. The
reason being mostly is that we would want to avoid splintering of
"what is PHP"? Even more, because if we say "feature release" people
might actually start using that to write applications against. I also
don't see with being platform specific has to do with this. PHP is PHP,
and on each platform PHP is (or at least should be) behaving the same.
That also brings me to the point that all our downloads should be in one
place: http://snaps.php.net for snapshots, and
http://php.net/releases/index.php for releases. It makes no sense to
have them spread over multiple locations.
cheers,
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug