This is an old revision of the document!
PHP 7 and 5.7 roadmap
- Version: 0.1
- Date: 2014-08-15
- Status: Draft
- First Published at: https://wiki.php.net/rfc/php7_57_roadmap
Now that phpng has been merged to master, the way to php 7 is open. However there are many other points that need to be cleared before a final release can be done. Many feature developments have been suspended because of phpng, which was a moving target until now.
PHP major release is an unique opportunity to do a lot of things not possible in minor releases. Code cleanup, refactoring, adding new major features, etc. All these tasks cannot be done in minor releases and the work we do for a major release, and how we do it, define how PHP will look like for the next decade.
As this time there are two positions about when we should try to release php 7 final:
- within a year, no php 5.7
- within 1.5 years, with 5.7
With key decisions about both the version number and the engine for PHP 7 behind us, it's time to define an agreed-upon timeline so that all contributors can align around it. The purpose of this RFC is to define a one year timeline for the delivery of PHP 7.0, with a projected release date of November 2015.
As the competitive landscape for PHP is evolving, the proposal is to shorten that timeline as much as possible while still taking advantage of the unique opportunities available to us due to the major version number change. A one year timeline will allow us a fair amount of time to work on changes that are only allowed in major versions - namely, ones that break compatibility. Arguably, while we should definitely take the opportunity to implement compatibility-breaking changes in 7.0, we also shouldn't turn it into a compatibility-breaking festival, as the more we break, the more likely it is users would delay upgrades, stay with old, insecure versions - or even consider other alternative options. RFCs that don't explicitly require a major version change (i.e., ones that don't break compatibility) - can also be proposed, but they should be secondary, as they can equally make it into future minor versions (7.1, 7.2, etc.).
|1. Line up any remaining RFCs that target PHP 7.0.||Now - Mar 15 (4+ additional months)||We're already well under way with doing that, with the PHPNG, AST, uniform variable syntax, etc.|
|2. Finalize implementation & testing of new features.||Mar 16 - Jun 15 (3 months)|
|3. Release Candidate (RC) cycles||Jun 16 - Oct 15 (3 months)||Subject to quality!|
|4. GA/Release||Mid October 2015||Subject to quality!|
It's worth noting that the 3rd and 4th milestones will be quality dependent. If we have evidence that suggests that PHP 7 isn't sufficiently mature to go into the RC stage in June, or GA in October - we should of course adjust the timeline accordingly, and not push out a half-baked release. However, the goal would be to stick as much as possible to the deadline of new going-into-7.0 RFCs, and strive to follow the timelines for the 2nd and 3rd milestones as much as possible, to ensure an October 2015 release of PHP 7.0.
One and a half year
- no risk to reproduce what happened with the php 6
- Keep our limited resources on one release
- There are enough new features in phpng to justify a major version
- cleanups can be done later
PHP 6 was one of the biggest trauma in the php.net history. We have magisterially failed to define a clear roadmap, to find consensus on what it should be along many other issues like small groups fighting each other or hidden meetings or developments.
Most of these issues have been solved or can be solved with the RFC process. However the increasing pressure on PHP from the various alternative implementations (hhvm on top) puts us in a difficult position, and we may better have to act quickly to provide a better or similar alternative.
One and year development and 5.7
- Major versions are an unique opportunity to cleanup our code base
- Major versions dictate what PHP will be in the next decade or more
- It is unrealistic to consider than less than a year is enough to understand, stabilize and release a phpng based major version.
- There are a couple of major features that are long due, RFCs are in progress
The release process clearly defines how a release development phase should be done. Being strict allows us to actually release any version in time, as planed. A clear roadmap defining until when RFCs can be proposed, when they have to be implemented and merged, etc prevents any delay.
It is important to keep in mind that only 5.4 has managed to respect it. 5.5 suffers from the opcache introduction, delaying it by 3-4 months. And it was only a simple bundle. However its stability was far away from what was told, bringing any kind of surprises, some of them being still not solved. phpng is by far more complex and brings a lot of changes, many APIs changes in existing functions, most of them are hard to detect automatically.
There are also a couple of features not twenty that are long due. For example, big integer supprt, AST, other like getter/setter, unicode string class annotation may resurface. Some of them can only be done in a major version due to possible BC breaks or too large changes to be done in a minor version (argument used against the int64 patch in 5.x, f.e.). Many of them are closed to be finished but will require time to get stable, just like the new engine.
This is why it is critical, if not vital, to do not hurry up and be sure we do it right.
Proposed PHP Version(s)
- PHP 7
- PHP 5.7
No impact on existing extensions, code, etc. This is purely a planing RFC.
Proposed Voting Choices
The RFC is considered approved with 50%+1 acceptance.