rfc:php6

PHP RFC: Name of Next Release of PHP

Version: 2.0

Date: 2014-07-05 (latest 2014-07-22)

Authors: Andrea Faulds ajf@ajf.me , Zeev Suraski zeev@php.net

Status: Accepted (Name is PHP 7)

First Published at: http://wiki.php.net/rfc/php6

Introduction

There has been some debate over what the name of the next major release of PHP, to succeed the PHP 5.x series, should be called. This RFC is an attempt to settle the matter once and for all. This RFC proposes that the next major version of PHP shall be named either PHP 6 or PHP 7, based on the outcome of this vote. In the following arguments for both sides are presented.

Historical context

The reason why this question even comes up, is that there has been a previous attempt at a new major version, which was started in 2005 and abandoned in 2010 due to difficulties in the Unicode implementation. Apart from language-integrated Unicode support, most features added for that version were integrated either in PHP 5.3 or PHP 5.4. This previous attempt at a new major version was also developed under the name of PHP 6 and as such there are various resources referring to it, including a number of books. There is concern that there might be confusion between the abandoned previous attempt and the work that is currently happening.

The Case for PHP 7

The case for choosing 7 as the next major version for PHP is comprised from 2 key elements - there are no good reasons not to do it, and several good reasons to do it.

No good reasons NOT to skip version 6

Regarding the first element, it seems that many people are concerned that if we skip a version, we somehow cause confusion or break away from our versioning scheme. The main confusion point cited by proponents of 'PHP 6' was that people will wonder 'how come we suddenly have PHP 7 and without having PHP 6?' - however, this is really much more of a trivia question than a cause for confusion. For obvious reasons, it will be clear that 7 is the latest version and even if there is 6 out there, 7 is newer and better. We also wouldn't be breaking away or even changing our current versioning scheme. We're only skipping a version, while keeping everything about our versioning scheme intact.

Strong reasons of why we actually should skip version 6 into 7

There are several reasons of why we shouldn't reuse version 6 for the next major version of PHP. First and foremost, PHP 6 already existed and it was something completely different. The decimal system (or more accurately the infinite supply of numbers we have) makes it easy for us to skip a version, with plenty more left for future versions to come.

While it's true that the other PHP 6 never reached General Availability, it was still a very widely published and well-known project conducted by php.net that will share absolutely nothing with the version that is under discussion now. Anybody who knew what PHP 6 is (and there are many) will have a strong misconception in his or her mind as to the contents and features of this new upcoming version (essentially, that it's all about Unicode).

PHP 6, the original PHP 6, has been discussed in detail in many PHP conferences. It was taught to users as a done-deal, including detailed explanations about features and behavior (by php.net developers, not 'evil' book authors).

PHP 6 was widely known not only within the Internals community, but around the PHP community at large. It was a high profile project that many - if not most - PHP community members knew about.

There's lots of PHP 6 information, about the original PHP 6, that exists around the web. Books are the smallest part of the problem.

Unlike the 'trivia question' of 'why did we skip into 7?', reusing version 6 is likely to call real confusion in people's minds, with ample information on two completely different versions with entirely different feature sets that have the exact same name.

Skipping versions isn't unprecedented or uncommon in both open source projects and commercial products. MariaDB, jumped all the way up to version 10.0 to avoid confusion, Netscape Communicator skipped version 5.0 directly into 6.0, and Symantec skipped version 13. Each and every one of those had different reasons for the skipping, but the common denominator is that skipping versions is hardly a big deal.

Version 6 is generally associated with failure in the world of dynamic languages. PHP 6 was a failure; Perl 6 was a failure. It's actually associated with failure also outside the dynamic language world - MySQL 6 also existed but never released. The perception of version 6 as a failure - not as a superstition but as a real world fact (similar to the association of the word 'Vista' with failure) - will reflect badly on this PHP version.

The case for 6 is mostly a rebuttal of some of the points above, but without providing a strong case for why we *shouldn't* skip version 6. If we go with PHP 7, the worst case scenario is that we needlessly skipped a version. We'd still have an infinite supply of major versions at our disposal for future use. If, however, we pick 6 instead of 7 - the worst case scenario is widespread confusion in our community and potential negative perception about this version. As a special non serious bonus, 7 is perceived as a lucky number in both the Western world and Chinese culture. A little bit of luck never hurt anybody. http://en.wikipedia.org/wiki/Numbers_in_Chinese_culture (no, we're not truly seeing it as a real advantage - the case for 7 is very strong without it).

Summary

Version 6 is already taken by a highly publicized project that is in the minds of a very large chunk of PHP developers, internals and general PHP community alike. We risk nothing by calling it PHP 7. We risk confusion and negative perception if we insist on reusing 6 for a completely different project. Taking a risk that stands to yield absolutely no reward is not a good strategy.

The Case for PHP 6

According to our current release process and semantic versioning, the next major version after PHP 5 should be PHP 6. Unless there are very strong reasons to the contrary, we should not abandon our current version numbering scheme.

While there exists a number of resources about the previous attempt at a PHP 6 release, these will be quickly displaced once PHP 6 is actually released. This applies both to blog posts, which will be (and partially already are) displaced by newer content, and books, which will receive negative reviews because they do not actually cover the version of PHP they claim to cover.

By now there are also many resources which refer to the next major version as “PHP 6”, without having any relation to the abandoned previous attempt. This includes anything from blog posts and discussions about features for the upcoming version, to RFCs and design documents in this wiki. Calling the next major version “PHP 7” instead will cause confusion in this direction.

In OTR discussions about a new major version, it is nearly always referred to as “PHP 6”. Given that the current version is PHP 5, people understandably jump to the conclusion that the next one will be “PHP 6” and refer to it as such. In the minds of many devs “PHP 6” is already deeply ingrained as the name of the next major.

While many participants on the internals mailing list were involved in the original PHP 6 effort and as such are acutely aware of its existence, the larger PHP community is not. While discussing this RFC with various developers, many did not really understand why this was even a question, because they were no more than vaguely aware that there was something like PHP 6 in the past. As such wrong expectations due to confusion about the version number should be minimal.

While there has certainly been precedent for missing version numbers, this usually occurs in the context of larger changes to the versioning scheme. For example, when Java went from 1.4 to 5.0, it's clear that the numbering system changed. The existing precedent suggests going to PHP 2016 or something equally distinct, rather than just skipping a version. (No, this is not a serious suggestion.)

Vote

References