Hi,
there is some talk about contributing new features and roadmaps for
PHP. What is missing is talk about maintenance.
PHP is developing really fast, if you consider the distribution we
reach.
Let's take a look at the last few years and the amount of language
changes. PHP 5.2 was releasesd in 2006. 7 years ago. After that we
struggled a bit with our PHP 6 project which resulted in 5.3 in in 2009.
In those three years we've added
* lambdas
* A new operator ( ?: )
* Namespaces
* Late static Binding
* __callStatic
* dynamic access of static members
* DIR
Again three years later in 2012 we released 5.4.0 with
* short array syntax
* binary numbers
* traits
* closure $this
* array dereferencing
* different indirect fcall improvements
Just a single year later in 2013 we release 5.5.0 with
* generators and coroutines
* finally
* constant array/string dereferencing.
* ::class
* empty() on the result of function calls and other expressions
* non-scalar Iterator keys in foreach
* list in foreach
That is a lot of language change (ignoring all "library" changes,
things we removed optimizations being made, ...) in seven years.
Let's compare this to a few other widespread languages:
* With C there is a commonly used standard C89/C90, a newer
version C99 and a bug fix version C11. C99 to a large part is a
catchup with C++ features already provided by many compilers
(inline functions, intermingled declarations and code, //-style
comments) and a few new features (newdata types, variable-length
arrays, designated initializers, compound literals and support
for variadic macros) that is a lot but took them ten years and
still is not incommon use. C11 another ten years later brought
some multithreading, some unicode, Bounds-checking interfaces
and static assertions.
* With C++ there is C++89. C++03 was a minor bug fix. In 2007 TR1
was released which included library features. In 2011 C++11 came
out. 12 years after the last "real" version. This included a
looong list of languages features. next planned is C++14 which
will bring one language feature (concepts)
* With Java 6 was released in 2006. 2011 Java 7 came and "added
many small language changes including strings in switch,
try-with- resources and type inference for generic instance
creation". Java 8 will, probably, be released in 2014 and adds
lambdas and a few annotations
For other languages I don't know enough about them to summarize
language changes. But I'm quite sure PHP is among the fastest evolving
languages.
This is nice but bears two problems:
1. Adoption. Take any statistic and trust it as much as you like
and we're now somewhere around the time where 5.3 overtakes 5.2
in total usage. Far ahead of 5.4 and 5.5.
2. Bugs. https://bugs.php.net/stats.php currently lists 3974 open
issues.
I think for both of the issues it is good if we slow down a bit and
try to fix more bugs instead of adding new ones.
Now contributing bug fixes is also not 100% painless as we have to
review patches and we are limited in resources. Especially as we have
code areas with very few interested active developers while we need
experienced developers who know PHPisms for reviewing.
I'd love if the people who are enthusiastic about contributing to PHP
would go and help working on these bugs. This can be done simply by
reviewing reports or by writing patches. If you are stuck in a place
while trying to write a patch or analyzing a bug ask here, ask on the
quieter pecl-dev list or #php.pecl on efnet irc. If you provide a patch
and think it is being ignored for too long ask for a review. Usually
after the second time there will be somebody. Asking also shows you're
eager to improve PHP, which will give you an account and karma quite
quickly.
A good start might be this bug: https://bugs.php.net/random
Thanks for going through this long mail and helping to make PHP better,
johannes
Am 12.09.2013 14:18 schrieb "Johannes Schlüter" johannes@schlueters.de:
Hi,
there is some talk about contributing new features and roadmaps for
PHP. What is missing is talk about maintenance.PHP is developing really fast, if you consider the distribution we
reach.Let's take a look at the last few years and the amount of language
changes. PHP 5.2 was releasesd in 2006. 7 years ago. After that we
struggled a bit with our PHP 6 project which resulted in 5.3 in in 2009.
In those three years we've added
* lambdas
* A new operator ( ?: )
* Namespaces
* Late static Binding
* __callStatic
* dynamic access of static members
* DIRAgain three years later in 2012 we released 5.4.0 with
* short array syntax
* binary numbers
* traits
* closure $this
* array dereferencing
* different indirect fcall improvementsJust a single year later in 2013 we release 5.5.0 with
* generators and coroutines
* finally
* constant array/string dereferencing.
* ::class
* empty() on the result of function calls and other expressions
* non-scalar Iterator keys in foreach
* list in foreachThat is a lot of language change (ignoring all "library" changes,
things we removed optimizations being made, ...) in seven years.Let's compare this to a few other widespread languages:
* With C there is a commonly used standard C89/C90, a newer
version C99 and a bug fix version C11. C99 to a large part is a
catchup with C++ features already provided by many compilers
(inline functions, intermingled declarations and code, //-style
comments) and a few new features (newdata types, variable-length
arrays, designated initializers, compound literals and support
for variadic macros) that is a lot but took them ten years and
still is not incommon use. C11 another ten years later brought
some multithreading, some unicode, Bounds-checking interfaces
and static assertions.
* With C++ there is C++89. C++03 was a minor bug fix. In 2007 TR1
was released which included library features. In 2011 C++11 came
out. 12 years after the last "real" version. This included a
looong list of languages features. next planned is C++14 which
will bring one language feature (concepts)
* With Java 6 was released in 2006. 2011 Java 7 came and "added
many small language changes including strings in switch,
try-with- resources and type inference for generic instance
creation". Java 8 will, probably, be released in 2014 and adds
lambdas and a few annotationsFor other languages I don't know enough about them to summarize
language changes. But I'm quite sure PHP is among the fastest evolving
languages.This is nice but bears two problems:
1. Adoption. Take any statistic and trust it as much as you like
and we're now somewhere around the time where 5.3 overtakes 5.2
in total usage. Far ahead of 5.4 and 5.5.
2. Bugs. https://bugs.php.net/stats.php currently lists 3974 open
issues.I think for both of the issues it is good if we slow down a bit and
try to fix more bugs instead of adding new ones.Now contributing bug fixes is also not 100% painless as we have to
review patches and we are limited in resources. Especially as we have
code areas with very few interested active developers while we need
experienced developers who know PHPisms for reviewing.I'd love if the people who are enthusiastic about contributing to PHP
would go and help working on these bugs. This can be done simply by
reviewing reports or by writing patches. If you are stuck in a place
while trying to write a patch or analyzing a bug ask here, ask on the
quieter pecl-dev list or #php.pecl on efnet irc. If you provide a patch
and think it is being ignored for too long ask for a review. Usually
after the second time there will be somebody. Asking also shows you're
eager to improve PHP, which will give you an account and karma quite
quickly.A good start might be this bug: https://bugs.php.net/random
Thanks for going through this long mail and helping to make PHP better,
johannes--
Maybe something else....
Complaining is easier than contribution....