diff --git a/history/timeline-data.json b/history/timeline-data.json new file mode 100644 index 0000000000..b0978a1bc7 --- /dev/null +++ b/history/timeline-data.json @@ -0,0 +1,1474 @@ +[ + { + "priority": 2, + "date": "2020-05-04T00:00:00+00:00", + "title": "Attributes accepted for PHP 8", + "href": "https://wiki.php.net/rfc/attributes_v2", + "description": "
<<PhpAttribute>>\nclass Release {\n     public function __construct(\n        protected SemVer $version\n    ) {}\n } 
", + "comment": "" + }, + { + "priority": 3, + "date": "2020-04-14T00:00:00+00:00", + "title": "PhpStorm 2020.1", + "href": "https://blog.jetbrains.com/phpstorm/2020/04/phpstorm-2020-1-release/", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2020-04-06T00:00:00+00:00", + "title": "PHP 8 release schedule available", + "href": "https://wiki.php.net/todo/php80", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2020-03-16T00:00:00+00:00", + "title": "PHP to have str_contains()", + "href": "https://wiki.php.net/rfc/str_contains", + "description": "A function that checks if a string is contained in another string?
That should only take about 25 years.", + "comment": "" + }, + { + "priority": 3, + "date": "2020-03-03T00:00:00+00:00", + "title": "Laravel 7", + "href": "https://laravel-news.com/laravel7", + "description": "", + "comment": "remove as minor?" + }, + { + "priority": 3, + "date": "2020-02-24T00:00:00+00:00", + "title": "CodeIgniter 4.0", + "href": "https://github.com/codeigniter4/CodeIgniter4", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2020-02-18T00:00:00+00:00", + "title": "Language evolution proposal from Nikita Popov", + "href": "https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md", + "description": "Nikita has started a discussion about how to keep PHP moving forward without breaking legacy code.", + "comment": "" + }, + { + "priority": 2, + "date": "2020-01-23T00:00:00+00:00", + "title": "Implementation notes on Generics in PHP", + "href": "https://github.com/PHPGenerics/php-generics-rfc/issues/45", + "description": "Will we ever see generics in PHP? Nikita published a study on the feasibility of attaining that goal that revealed potential difficulties.", + "comment": "" + }, + { + "priority": 3, + "date": "2019-12-15T00:00:00+00:00", + "title": "CakePHP 4.0", + "href": "https://bakery.cakephp.org/2019/12/15/cakephp_400_released.html", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2019-11-28T00:00:00+00:00", + "title": "PHP 7.4", + "href": "https://www.php.net/releases/7_4_0.php", + "description": "Typed properties, arrow functions, numeric literal separator, FFI, and OPcache preloading.", + "comment": "" + }, + { + "priority": 2, + "date": "2019-11-21T00:00:00+00:00", + "title": "Symfony 5", + "href": "https://symfony.com/blog/symfony-5-0-0-released", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2019-09-11T00:00:00+00:00", + "title": "Laravel 6", + "href": "https://laravel-news.com/laravel-6", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2019-08-10T00:00:00+00:00", + "title": "PSR-12 Extended Coding Style Guide accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2019-08-08T00:00:00+00:00", + "title": "P++ discussion", + "href": "https://externals.io/message/106453", + "description": "The controversy, accusations in PHP Internals over the removal of short tags and other discussions eventually result in a proposal from Zeev Suraski to create a new PHP dialect called P++, like C++ for C. Under this proposal, PHP and P++ would be developed side by side within a single runtime. But after a straw poll, the initiative is abandoned.", + "comment": "" + }, + { + "priority": 3, + "date": "2019-05-21T00:00:00+00:00", + "title": "Doctrine Company, LLC created", + "href": "https://www.doctrine-project.org/2019/05/21/monetizing-open-source.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2019-04-17T00:00:00+00:00", + "title": "Zend Framework becomes Laminas", + "href": "https://framework.zend.com/blog/2019-04-17-announcing-laminas.html", + "description": "The framework is transitioned to the Linux Foundation and renamed to Laminas, to detach it from the commercial brand Zend.", + "comment": "" + }, + { + "priority": 3, + "date": "2019-03-25T00:00:00+00:00", + "title": "PSR-14 Event Dispatcher accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-14-event-dispatcher.md", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2019-02-22T00:00:00+00:00", + "title": "Narrow margins for RFCs abolished", + "href": "https://wiki.php.net/rfc/abolish-narrow-margins", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2019-02-11T00:00:00+00:00", + "title": "PEAR disabled by default", + "href": "https://externals.io/message/103977", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2019-01-22T00:00:00+00:00", + "title": "Perforce acquires Rogue Wave Software, owner of Zend", + "href": "https://www.perforce.com/press-releases/clearlake-capital-backed-perforce-software-acquire-rogue-wave-software", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2019-01-22T00:00:00+00:00", + "title": "The Xdebug Experience", + "href": "https://derickrethans.nl/xdebug-experience.html", + "description": "Derick Rethans leaves MongoDB and starts a new journey working almost exclusively on Xdebug.", + "comment": "" + }, + { + "priority": 1, + "date": "2019-01-11T00:00:00+00:00", + "title": "Nikita Popov joins PhpStorm team", + "href": "https://blog.jetbrains.com/phpstorm/2019/01/nikita-popov-joins-phpstorm-team/", + "description": "A well-known and long-time contributor to the PHP ecosystem joins JetBrains to work with the PhpStorm team on improving the PHP language and ecosystem.", + "comment": "" + }, + { + "priority": 3, + "date": "2019-01-10T00:00:00+00:00", + "title": "PHP 5.6.40 – the last PHP 5 release", + "href": "", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2018-12-06T00:00:00+00:00", + "title": "PHP 7.3", + "href": "https://www.php.net/releases/7_3_0.php", + "description": "Updates for Heredoc and Nowdoc strings, trailing comma in arguments list, new hrtime() function, and improved garbage collection.", + "comment": "" + }, + { + "priority": 3, + "date": "2018-11-20T00:00:00+00:00", + "title": "Symfony leaves PHP-FIG", + "href": "https://github.com/php-fig/fig-standards/pull/1120/files", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2018-10-29T00:00:00+00:00", + "title": "PSR-18 HTTP Client accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-18-http-client.md", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2018-10-17T00:00:00+00:00", + "title": "Zeev Suraski leaves Zend", + "href": "http://zsuraski.blogspot.com/2018/10/the-future-of-zend-engine-and-zend.html", + "description": "Zeev Suraski is the second of Zend’s two founders to leave the company. Matthew Weier O’Phinney and Enrico Zimuel also leave.", + "comment": "" + }, + { + "priority": 2, + "date": "2018-07-31T00:00:00+00:00", + "title": "PSR-17 HTTP Factories accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-17-http-factory.md", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2018-07-11T00:00:00+00:00", + "title": "ReactPHP 1.0 LTS", + "href": "https://clue.engineering/2018/announcing-reactphp-lts", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2018-05-21T00:00:00+00:00", + "title": "Adobe acquires Magento", + "href": "https://news.adobe.com/news/news-details/2018/Adobe-to-Acquire-Magento-Commerce/default.aspx", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2018-04-13T00:00:00+00:00", + "title": "PHP FFI announced", + "href": "https://externals.io/message/102036", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2018-03-16T00:00:00+00:00", + "title": "Zend Expressive 3", + "href": "https://framework.zend.com/blog/2018-03-16-expressive-3.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2018-02-22T00:00:00+00:00", + "title": "Psalm 1.0", + "href": "https://github.com/vimeo/psalm/releases/tag/1.0.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2018-01-22T00:00:00+00:00", + "title": "PSR-15 HTTP Server Request Handlers accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-15-request-handlers.md", + "description": "The standard lays out how to write request handlers and middleware in PHP.", + "comment": "" + }, + { + "priority": 3, + "date": "2018-01-08T00:00:00+00:00", + "title": "PHP-PM 1.0", + "href": "https://github.com/php-pm/php-pm/releases/tag/1.0.0", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2017-12-07T00:00:00+00:00", + "title": "Keep it simple stupid: RemoteOK.io is a single “index.php” file generating $2,342 a day. No frameworks. No libraries.", + "href": "https://twitter.com/levelsio/status/938707166508154880", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2017-11-30T00:00:00+00:00", + "title": "Symfony 4", + "href": "https://symfony.com/blog/hello-symfony-4", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2017-11-30T00:00:00+00:00", + "title": "PHP 7.2", + "href": "https://www.php.net/releases/7_2_0.php", + "description": "PHP becomes the first programming language with modern cryptography in its standard library thanks to the bundled libsodium. It also brings object typehint and parameter type widening.", + "comment": "" + }, + { + "priority": 2, + "date": "2017-09-18T00:00:00+00:00", + "title": "HHVM’s last release that commits to PHP support", + "href": "https://hhvm.com/blog/2017/09/18/the-future-of-hhvm.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2017-09-06T00:00:00+00:00", + "title": "Laravel 5.5 LTS", + "href": "https://laravel-news.com/laravel-5-5", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2017-07-01T00:00:00+00:00", + "title": "InfectionPHP 0.1", + "href": "https://github.com/infection/infection/releases/tag/0.1.0", + "description": "Introduction of framework that makes mutation testing possible in PHP.", + "comment": "" + }, + { + "priority": 3, + "date": "2017-06-15T00:00:00+00:00", + "title": "Amphp 2.0", + "href": "https://github.com/amphp/amp/releases/tag/v2.0.0", + "description": "Along with ReactPHP, Amp makes it possible to build async applications with PHP. It is implemented on top of generators.", + "comment": "" + }, + { + "priority": 2, + "date": "2017-05-28T00:00:00+00:00", + "title": "End of HHVM support in popular projects", + "href": "", + "description": "Symfony, Laravel, Doctrine, MongoDB driver, Twig, Silex, Swiftmailer, and many other major tools declare the end of HHVM support.", + "comment": "" + }, + { + "priority": 3, + "date": "2017-04-06T00:00:00+00:00", + "title": "Spiral Framework 1.0", + "href": "https://github.com/spiral/framework/releases/tag/v1.0.0", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2017-03-07T00:00:00+00:00", + "title": "Expressive 2.0", + "href": "https://framework.zend.com/blog/2017-03-07-expressive-2.html", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2017-02-14T00:00:00+00:00", + "title": "PSR-11 Container Interface accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md", + "description": "Standardizes how frameworks and libraries make use of containers to obtain objects and parameters.", + "comment": "" + }, + { + "priority": 2, + "date": "2017-01-02T00:00:00+00:00", + "title": "PSR-16 Simple Cache accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2016-12-01T00:00:00+00:00", + "title": "PHP 7.1", + "href": "https://www.php.net/releases/7_1_0.php", + "description": "Nullable types, class constant visibility modifiers, void return type, and a performance boost.", + "comment": "" + }, + { + "priority": 3, + "date": "2016-11-15T00:00:00+00:00", + "title": "PSR-13 Link definition interfaces accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-13-links.md", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2016-10-01T00:00:00+00:00", + "title": "PHP-FIG 3.0 – the new bylaws of the group", + "href": "https://github.com/php-fig/fig-standards/pull/752", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2016-08-01T00:00:00+00:00", + "title": "Swoole 2 released with coroutines", + "href": "", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-07-17T00:00:00+00:00", + "title": "externals.io launched", + "href": "https://externals.io", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2016-07-17T00:00:00+00:00", + "title": "PHPStan 0.1 released", + "href": "https://github.com/phpstan/phpstan", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-06-28T00:00:00+00:00", + "title": "Zend Framework 3", + "href": "https://framework.zend.com/blog/2016-06-28-zend-framework-3.html", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2016-05-18T00:00:00+00:00", + "title": "Silex 2.0", + "href": "https://github.com/silexphp/Silex/blob/master/doc/changelog.rst#200-2016-05-18", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-05-15T00:00:00+00:00", + "title": "Laravel, Propel, Doctrine, The PHP League, and Guzzle resign from PHP-FIG", + "href": "https://groups.google.com/forum/#!searchin/php-fig/resignation;context-place=forum/php-fig", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-04-05T00:00:00+00:00", + "title": "Composer 1.0 goes gold", + "href": "https://seld.be/notes/composer-goes-gold", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-03-17T00:00:00+00:00", + "title": "PhpStorm 2016.1", + "href": "https://blog.jetbrains.com/phpstorm/2016/03/phpstorm-2016-1-is-released/", + "description": "The first PhpStorm release with a new YYYY.R versioning model.", + "comment": "" + }, + { + "priority": 3, + "date": "2016-02-24T00:00:00+00:00", + "title": "Andi Gutmans leaves Zend", + "href": "https://andigutmans.com/2016/02/24/starting-a-new-journey/", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2016-01-28T00:00:00+00:00", + "title": "Zend Expressive 1.0", + "href": "https://framework.zend.com/blog/2016-01-28-expressive-1.0-stable.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-12-11T00:00:00+00:00", + "title": "PSR-6: Caching Interface accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-6-cache.md", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2015-12-03T00:00:00+00:00", + "title": "PHP 7.0", + "href": "https://www.php.net/releases/7_0_0.php", + "description": "A major language renewal comes with the new Zend Engine 3 (PHPNG), numerous improvements and new features. It’s also twice as fast as the previous PHP 5.6 release!", + "comment": "" + }, + { + "priority": 2, + "date": "2015-11-30T00:00:00+00:00", + "title": "Symfony 3", + "href": "https://symfony.com/blog/symfony-3-0-0-released", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-11-19T00:00:00+00:00", + "title": "Drupal 8 released", + "href": "https://www.drupal.org/blog/drupal-800-released", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-11-17T00:00:00+00:00", + "title": "Magento 2", + "href": "https://magento.com/blog/magento-news/new-era-commerce-innovation", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2015-10-06T00:00:00+00:00", + "title": "Rogue Wave acquires Zend", + "href": "https://web.archive.org/web/20151010035008/http://www.zend.com/en/resources/news-and-events/newsroom/press/3683_rogue-wave-software-acquires-enterprise-php-leader-zend-acquisition-broadens-enterprise-strength-across-top-five-development-languages", + "description": "Zend, the company that had stood behind the language since PHP 3, is bought out by Rogue Wave.", + "comment": "" + }, + { + "priority": 3, + "date": "2015-08-24T00:00:00+00:00", + "title": "A Field Guide to Elephpants started", + "href": "https://afieldguidetoelephpants.net/", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-06-08T00:00:00+00:00", + "title": "PHP turns 20", + "href": "", + "description": "Many developers share their PHP stories to mark 20 years of PHP: Ilia Alshanetsky, Cal Evans, Chris Hartjes, Stephan Hochdorfer, Ben Ramsey, Davey Shafik, AWS PHP SDK Blog, Amanda Folson, Michelangelo van Dam, Joe Watkins, Chris Tankersley, Shameer C, Erika Heidi, Matthew Weier O’Phinney, David Carr, Rafael Dohms, Derick Rethans, Wim Godden, Oscar Merida, Patrick Stephan, Rob Allen, Matthew Setter, Matt Raines, Justin Carmony, John Bafford, thePHP.cc.", + "comment": "" + }, + { + "priority": 1, + "date": "2015-05-18T00:00:00+00:00", + "title": "PSR-7 HTTP Message Interfaces accepted", + "href": "https://mwop.net/blog/2015-05-18-psr-7-accepted.html", + "description": "The standard finally settled on how to deal with HTTP requests and responses the OOP way.", + "comment": "" + }, + { + "priority": 2, + "date": "2015-03-30T00:00:00+00:00", + "title": "CodeIgniter 3", + "href": "", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-03-22T00:00:00+00:00", + "title": "CakePHP 3", + "href": "https://web.archive.org/web/20150324162704/https://bakery.cakephp.org/articles/lorenzo/2015/03/22/cakephp_3_0_0_is_here", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-02-27T00:00:00+00:00", + "title": "Zend JIT Open Sourced", + "href": "https://news-web.php.net/php.internals/83994", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2015-02-01T00:00:00+00:00", + "title": "Laravel 5", + "href": "https://laravel.com/docs/5.0/releases#laravel-5.0", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2014-10-22T00:00:00+00:00", + "title": "PSR-0 deprecated in favor of PSR-4", + "href": "https://groups.google.com/forum/#!topic/php-fig/7g6n145XlbI", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2014-10-12T00:00:00+00:00", + "title": "Yii 2.0", + "href": "https://www.yiiframework.com/news/81/yii-2-0-0-is-released", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2014-09-01T00:00:00+00:00", + "title": "PHP-Parser 1.0", + "href": "https://github.com/nikic/PHP-Parser", + "description": "A PHP parser written in PHP that allows a wide range of tools to be created on top of it.", + "comment": "" + }, + { + "priority": 1, + "date": "2014-08-28T00:00:00+00:00", + "title": "PHP 5.6", + "href": "https://www.php.net/releases/5_6_0.php", + "description": "This last major PHP 5 release brings constant scalar expressions, the splat ... operator for variadic functions and argument unpacking, function and constant import with the use keyword, phpdbg as an integrated debugger, and operator overloading (yep, PHP has it!) for GMP objects.", + "comment": "" + }, + { + "priority": 1, + "date": "2014-07-30T00:00:00+00:00", + "title": "PHP Language Specification", + "href": "https://github.com/php/php-langspec/blob/master/spec/00-specification-for-php.md", + "description": "Despite its popularity and considerable age, PHP never had a formal specification until 2014. The specification was initially developed at Facebook and later all copyright was transferred to the public domain worldwide.", + "comment": "" + }, + { + "priority": 2, + "date": "2014-07-19T00:00:00+00:00", + "title": "Wikipedia moves to HHVM", + "href": "https://lists.wikimedia.org/pipermail/wikitech-l/2014-July/077690.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2014-05-27T00:00:00+00:00", + "title": "PHPNG First Announced", + "href": "https://www.php.net/archive/2014.php#id2014-05-27-1", + "description": "First started with Dmitry Stogov’s message in php.internals, a new generation PHP interpreter is introduced, which goes on to become the basis of PHP 7.", + "comment": "" + }, + { + "priority": 3, + "date": "2014-05-06T00:00:00+00:00", + "title": "Codeception 2.0", + "href": "https://codeception.com/06-06-2014/codeception-2.0-final.html", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2014-04-01T00:00:00+00:00", + "title": "Last release of Kohana — R.I.P.", + "href": "https://web.archive.org/web/20140411235408/http://forum.kohanaframework.org/discussion/12509/final-releases-of-kohana-beginning-of-ohanzee", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2014-03-28T00:00:00+00:00", + "title": "HHVM 3.0", + "href": "https://hhvm.com/blog/4349/hhvm-3-0-0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2014-03-20T00:00:00+00:00", + "title": "Facebook introduces Hack", + "href": "https://engineering.fb.com/developer-tools/hack-a-new-programming-language-for-hhvm/", + "description": "The Hack programming language is born as a PHP dialect and extends PHP with a number of new features. Some of the successful solutions have since made their way into PHP and continue to inspire developers.", + "comment": "" + }, + { + "priority": 3, + "date": "2014-02-23T00:00:00+00:00", + "title": "PSR-8 Mutually Assured Hug published", + "href": "https://github.com/php-fig/fig-standards/blob/master/proposed/psr-8-hug/psr-8-hug.md", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2013-12-03T00:00:00+00:00", + "title": "PSR-4 Autoloader accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2013-09-01T00:00:00+00:00", + "title": "Zend Announces 10,000th Zend Certified Engineer", + "href": "http://blog.zend.com/2013/09/04/zend-announces-10000th-zend-certified-engineer/", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2013-08-01T00:00:00+00:00", + "title": "The League of Extraordinary Packages has started", + "href": "https://twitter.com/philsturgeon/status/322409684151701504", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2013-07-05T00:00:00+00:00", + "title": "ElisLab looking for new owner for CodeIgniter", + "href": "https://ellislab.com/blog/entry/ellislab-seeking-new-owner-for-codeigniter", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2013-07-03T00:00:00+00:00", + "title": "Nette 2", + "href": "https://github.com/nette/nette/releases/tag/v2.0.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2013-06-20T00:00:00+00:00", + "title": "PHP 5.5", + "href": "https://www.php.net/releases/5_5_0.php", + "description": "Generators and coroutines, the finally keyword, and scalar class name resolution via ::class. The bundled Zend OPcache extension makes opcode caching available and opens the door to more performance optimizations.", + "comment": "" + }, + { + "priority": 1, + "date": "2013-05-28T00:00:00+00:00", + "title": "Laravel 4", + "href": "https://web.archive.org/web/20130602115429/http://laravel.com/", + "description": "Illuminate, also known as Laravel 4, is re-written from the ground up as a collection of components that integrate with each other to make up a framework. And that’s when the Facades come in.", + "comment": "" + }, + { + "priority": 2, + "date": "2013-05-23T00:00:00+00:00", + "title": "Stack — the first middlewares in PHP", + "href": "https://igor.io/2013/05/23/introducing-stack.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2013-05-03T00:00:00+00:00", + "title": "Silex 1.0", + "href": "https://github.com/fabpot/Silex/releases/tag/v1.0.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2013-04-14T00:00:00+00:00", + "title": "React v0.3", + "href": "https://web.archive.org/web/20131113234811/http://reactphp.org/2013/04/14/v0.3.0.html", + "description": "The first public release of ReactPHP proves the async model can be brought into PHP applications. React.js is not yet a thing and is just called “React”.", + "comment": "" + }, + { + "priority": 2, + "date": "2013-03-21T00:00:00+00:00", + "title": "PHP version 5.3 is the most used version, just ahead of 5.2", + "href": "https://w3techs.com/blog/entry/php_version_5_3_is_now_the_most_used_version_just_ahead_of_5_2", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2013-02-13T00:00:00+00:00", + "title": "Zend Optimizer+ open sourced", + "href": "", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2013-01-08T00:00:00+00:00", + "title": "Go! AOP 1.0", + "href": "https://github.com/goaop/framework/releases/tag/0.1.0", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2013-01-06T00:00:00+00:00", + "title": "PSR-3 Logger Interface accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2012-09-09T00:00:00+00:00", + "title": "Slim 2.0", + "href": "https://github.com/codeguy/Slim/releases/tag/2.0.0", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2012-09-04T00:00:00+00:00", + "title": "Zend Framework 2.0", + "href": "https://framework.zend.com/changelog/2.0.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2012-07-08T00:00:00+00:00", + "title": "PHP The Right Way", + "href": "https://phptherightway.com/", + "description": "The “Right Way” becomes the source of PHP wisdom and best practices for developers all around the world.", + "comment": "" + }, + { + "priority": 3, + "date": "2012-07-04T00:00:00+00:00", + "title": "Phalcon framework released", + "href": "", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2012-06-04T00:00:00+00:00", + "title": "PSR-1 and PSR-2 accepted", + "href": "http://paul-m-jones.com/post/2012/06/04/php-fig-psr-1-and-2-accepted/", + "description": "The tabs vs spaces war is over!", + "comment": "" + }, + { + "priority": 2, + "date": "2012-05-08T00:00:00+00:00", + "title": "Pimple 1.0", + "href": "https://github.com/fabpot/Pimple/releases/tag/v1.0.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2012-04-09T00:00:00+00:00", + "title": "PHP: a fractal of bad design", + "href": "https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/", + "description": "The post presents an overview of many PHP problems of the day. Many of them will later be fixed, but PHP haters still refer to the article as a source of truth.", + "comment": "" + }, + { + "priority": 3, + "date": "2012-03-06T00:00:00+00:00", + "title": "PHP usergroups directory php.ug", + "href": "http://php.ug/", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2012-03-01T00:00:00+00:00", + "title": "PHP 5.4", + "href": "https://www.php.net/releases/5_4_0.php", + "description": "Traits, shortened array syntax, and built-in webserver for testing purposes come with significant performance improvements, a reduced memory footprint and over 100 fixed bugs.", + "comment": "" + }, + { + "priority": 2, + "date": "2012-02-03T00:00:00+00:00", + "title": "Laravel 3", + "href": "https://web.archive.org/web/20121025120144/http://forums.laravel.com/viewtopic.php?id=573", + "description": "Unit test integration, the Artisan command line interface, database migrations, events, more session drivers and database drivers, integration for “bundles”, and a shiny new website.", + "comment": "" + }, + { + "priority": 3, + "date": "2011-11-24T00:00:00+00:00", + "title": "Laravel 2", + "href": "https://web.archive.org/web/20121025120041/http://forums.laravel.com/viewtopic.php?id=403", + "description": "The release introduces support for controllers, making it a fully MVC-compliant framework, built-in support for the inversion of control (IoC) principle, and a templating system called Blade.", + "comment": "" + }, + { + "priority": 3, + "date": "2011-10-16T00:00:00+00:00", + "title": "CakePHP 2", + "href": "https://web.archive.org/web/20111018074256/https://bakery.cakephp.org/articles/lorenzo/2011/10/16/cakephp_2_0_released", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2011-08-21T00:00:00+00:00", + "title": "Composer", + "href": "https://groups.google.com/forum/#!topic/composer-dev/3UbUgUibyOo", + "description": "By 2011, all major languages already have their own package managers: npm, Bundler, pip, NuGet. Coming in last, PHP receives a state-of-the-art package management tool thanks to Jordi Boggiano, Nils Adermann, and other contributors.
OHAI PHP DEVS, Y U NO PACKAGE?", + "comment": "" + }, + { + "priority": 2, + "date": "2011-07-01T00:00:00+00:00", + "title": "Symfony 2", + "href": "https://web.archive.org/web/20110317011324/http://symfony.com/", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2011-07-01T00:00:00+00:00", + "title": "Monolog initial release", + "href": "https://github.com/Seldaek/monolog/releases/tag/1.0.0-RC1", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2011-06-09T00:00:00+00:00", + "title": "Laravel 1", + "href": "https://web.archive.org/web/20121025115805/http://forums.laravel.com/viewtopic.php?id=1", + "description": "Taylor Otwell creates Laravel as an attempt to provide a more advanced alternative to the CodeIgniter framework. It will go on to revolutionize the entire PHP landscape.", + "comment": "" + }, + { + "priority": 2, + "date": "2011-04-18T00:00:00+00:00", + "title": "Guzzle 1.0", + "href": "https://github.com/guzzle/guzzle3/releases/tag/v1.0.0", + "description": "The first release of the famous HTTP client for PHP.", + "comment": "" + }, + { + "priority": 3, + "date": "2011-01-28T00:00:00+00:00", + "title": "CodeIgniter 2", + "href": "https://web.archive.org/web/20110805025800/http://codeigniter.com/news/codeigniter_2.0.0_released/", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2011-01-04T00:00:00+00:00", + "title": "FuelPHP", + "href": "https://web.archive.org/web/20140717000510/https://philsturgeon.uk/blog/2011/01/introducing-fuelphp/", + "description": "The framework based on the best parts of CodeIgniter and Kohana, with some nifty features from Rails and a whole load of new ideas.", + "comment": "" + }, + { + "priority": 2, + "date": "2010-12-21T00:00:00+00:00", + "title": "Doctrine 2.0 released", + "href": "https://www.doctrine-project.org/2010/12/21/doctrine2-released.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2010-12-01T00:00:00+00:00", + "title": "FastCGI Process Manager (FPM)", + "href": "https://php-fpm.org/about/", + "description": "FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features (mostly) useful for heavily-loaded sites. It is merged into the PHP 5.3 codebase in 2010.", + "comment": "Date unknown" + }, + { + "priority": 2, + "date": "2010-11-02T00:00:00+00:00", + "title": "Slim 1", + "href": "https://github.com/slimphp/Slim/releases/tag/1.0.0", + "description": "Probably the first of the PHP micro frameworks as we know them today.", + "comment": "" + }, + { + "priority": 1, + "date": "2010-08-01T00:00:00+00:00", + "title": "PSR-0 accepted", + "href": "https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md", + "description": "After receiving namespaces, PHP finally gets proper autoloading. Before this first PSR standard was accepted, PHP files were an insane mix of includes and requires.", + "comment": "Date unknown" + }, + { + "priority": 3, + "date": "2010-07-25T00:00:00+00:00", + "title": "Unofficial PHP Anthem", + "href": "http://shiflett.org/blog/2010/php-anthem", + "description": "soundcloud.com/itsleeowen/php-anthem", + "comment": "" + }, + { + "priority": 1, + "date": "2010-05-27T00:00:00+00:00", + "title": "PhpStorm 1.0 Released", + "href": "https://web.archive.org/web/20101202152838/http://www.jetbrains.com/phpstorm/", + "description": "Previously known under its working name “Web IDE”, PhpStorm is released with support for Xdebug, PHPUnit, and Zend Framework.", + "comment": "" + }, + { + "priority": 2, + "date": "2010-03-11T00:00:00+00:00", + "title": "PHP 6 officially abandoned", + "href": "https://news-web.php.net/php.internals/47120", + "description": "After struggling for some time to find a solution to high memory usage, poor performance, and broken scripts, PHP 6 development eventually stalls. The Unicode problems make a release impossible while blocking other features from showing up in any PHP release at all.", + "comment": "" + }, + { + "priority": 1, + "date": "2009-10-01T00:00:00+00:00", + "title": "PHP-FIG", + "href": "", + "description": "People from various PHP projects meet at php|tek conference in 2009, and that’s when the idea of PHP-FIG (Framework Interoperability Group) group is born. The FIG’s recommendations, called PSRs, drastically changed the landscape of the PHP ecosystem.", + "comment": "Date unknown" + }, + { + "priority": 3, + "date": "2009-09-17T00:00:00+00:00", + "title": "Kohana 3", + "href": "https://github.com/kohana/kohana/releases/tag/3.0", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2009-06-30T00:00:00+00:00", + "title": "PHP 5.3", + "href": "https://www.php.net/releases/5_3_0.php", + "description": "Highly anticipated support for namespaces, late static binding, and anonymous functions finally make PHP a mature language. And what mature language doesn’t have a goto operator?", + "comment": "" + }, + { + "priority": 3, + "date": "2009-05-18T00:00:00+00:00", + "title": "PHP developers meeting in Chicago", + "href": "https://wiki.php.net/summits/pdmnotesmay09", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2008-12-03T00:00:00+00:00", + "title": "Yii version 1", + "href": "https://web.archive.org/web/20081007231834/http://www.yiiframework.com:80/", + "description": "The author of PRADO releases a new RAD framework. Many ideas and some code were taken from PRADO, including: ActiveRecord, i18n, l10n, etc. Yii also drew inspiration from RoR (convention over configuration, some AR features), Symfony1 (filters, plugins) and Joomla (modules, message translation).", + "comment": "" + }, + { + "priority": 2, + "date": "2008-09-01T00:00:00+00:00", + "title": "Doctrine 1.0 released", + "href": "https://www.doctrine-project.org/2008/09/01/doctrine-1-0-released.html", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2008-01-25T00:00:00+00:00", + "title": "PHP 6 Book", + "href": "https://www.amazon.com/dp/1598634712/ref=rdr_ext_tmb?creativeASIN=1598634712&linkCode=w61&imprToken=53-QXo22dxa0y6EEZCvQEA&slotNum=0", + "description": "PHP 6 was never released but the book “Fast and Easy Web Development” is still available on the internet.", + "comment": "" + }, + { + "priority": 3, + "date": "2007-08-01T00:00:00+00:00", + "title": "Facebook PHP source code leaked", + "href": "https://gist.github.com/nikcub/3833406", + "description": "A hacker finds a way to expose the PHP source code on Facebook. He retrieves two files: index.php and search.php.", + "comment": "" + }, + { + "priority": 1, + "date": "2007-07-18T00:00:00+00:00", + "title": "Xdebug 2.0", + "href": "https://derickrethans.nl/xdebug-2-released.html", + "description": "Improved stack traces, execution traces to files, code coverage analysis and much improved remote debugging support.", + "comment": "" + }, + { + "priority": 2, + "date": "2007-07-01T00:00:00+00:00", + "title": "Kohana 1", + "href": "http://kohanaframework.org/", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2007-06-14T00:00:00+00:00", + "title": "ElePHPant – the Furry PHP Mascot", + "href": "https://web.archive.org/web/20070621023556/http://www.nexen.net/elephpant.php", + "description": "Brought into the world by Damien Seguy based on Vincent Pontier’s design.", + "comment": "" + }, + { + "priority": 2, + "date": "2006-11-11T00:00:00+00:00", + "title": "PHP developers meeting in Paris", + "href": "https://derickrethans.nl/files/meeting-notes.html", + "description": "First discussion about PHP 6.", + "comment": "" + }, + { + "priority": 1, + "date": "2006-11-02T00:00:00+00:00", + "title": "PHP 5.2", + "href": "https://www.php.net/releases/5_2_0.php", + "description": "With a new memory manager for the Zend Engine and new features such as input filtering, JSON and ZIP extensions, tracking file upload progress, and date and time objects, PHP 5.2 was a big success and remained the most popular version until 2013.", + "comment": "" + }, + { + "priority": 1, + "date": "2006-03-03T00:00:00+00:00", + "title": "Zend Framework initial release", + "href": "https://web.archive.org/web/20060404214442/http://framework.zend.com/", + "description": "Zend Framework was one of the first frameworks developed as a set of reusable components. It’s goal was “extreme simplicity” and “use-at-will architecture”. Released in 2005, it helped bring PHP into the enterprise market.", + "comment": "" + }, + { + "priority": 1, + "date": "2006-02-25T00:00:00+00:00", + "title": "CodeIgniter 1", + "href": "https://web.archive.org/web/20060303085547/http://www.codeigniter.com:80/", + "description": "CodeIgniter was one of the first rapid development frameworks. Not only is it alive and popular to this day, it also inspired developers to produce many subsequent frameworks like Laravel, FuelPHP, Kohana, and Yii.", + "comment": "" + }, + { + "priority": 1, + "date": "2005-11-24T00:00:00+00:00", + "title": "PHP 5.1", + "href": "https://www.php.net/releases/5_1_0.php", + "description": "Completely rewritten date handling code with improved timezone support, PDO enabled by default, and significant performance improvements over PHP 5.0.", + "comment": "" + }, + { + "priority": 2, + "date": "2005-10-18T00:00:00+00:00", + "title": "Symfony project kicks off", + "href": "https://web.archive.org/web/20051023011952/http://www.symfony-project.com/", + "description": "Fabien Potencier makes the first import of the Symfony 1 code to the Subversion repository (see changeset).", + "comment": "" + }, + { + "priority": 1, + "date": "2005-08-10T00:00:00+00:00", + "title": "PHP 6 with unicode support initiated", + "href": "https://externals.io/message/17668", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2005-04-15T00:00:00+00:00", + "title": "CakePHP released", + "href": "https://web.archive.org/web/20050416071448/http://sputnik.pl/cake/", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "2005-03-15T00:00:00+00:00", + "title": "PRADO 2", + "href": "https://web.archive.org/web/20060322070507/http://www.xisc.com/forum/viewtopic.php?t=1044", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2004-09-13T00:00:00+00:00", + "title": "PRADO version 1", + "href": "https://web.archive.org/web/20060514124647/http://www.xisc.com/forum/viewtopic.php?t=7", + "description": "The first framework using PHP 5. Prado was inspired by Apache Tapestry, Borland Delphi, and Microsoft ASP.NET.", + "comment": "" + }, + { + "priority": 1, + "date": "2004-07-13T00:00:00+00:00", + "title": "PHP 5.0", + "href": "https://news-web.php.net/php.announce/50", + "description": "Zend Engine II, with a new object model and new extensions (SimpleXML, SOAP, MySQLi, SQLite), greatly improves streams with the ability to access low-level socket operations.", + "comment": "" + }, + { + "priority": 2, + "date": "2004-02-04T00:00:00+00:00", + "title": "Facebook.com launched as a simple, server-rendered PHP website", + "href": "https://web.archive.org/web/20050806011211/http://www.facebook.com/", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2003-12-01T00:00:00+00:00", + "title": "Dmitry Stogov Joined Zend", + "href": "", + "description": "Dmitry joins Zend and helps develop most of the core PHP subsystems during PHP 5’s life. Later, Dmitry will go on to lead the PHPNG project, which brings the speed of PHP 7 to a new level. Dmitry currently works at Zend by Perforce as a Principal Engineer and leads the development of the JIT compiler for PHP.", + "comment": "" + }, + { + "priority": 2, + "date": "2003-10-22T00:00:00+00:00", + "title": "Mojavi 1.0 ", + "href": "http://web.archive.org/web/20040520071127/http://www.mojavi.org/", + "description": "", + "comment": "???" + }, + { + "priority": 1, + "date": "2003-05-27T00:00:00+00:00", + "title": "First Release of WordPress", + "href": "https://wordpress.org/news/2003/05/wordpress-now-available/", + "description": "The most popular CMS in the world first appears as a fork of b2. It used the same file structure as its predecessor, and continued the numbering from its last release, 0.6. Major releases of WordPress are codenamed after well-known jazz musicians, starting from version 1.0. Today, WordPress is used by more than one third of all websites on the internet.", + "comment": "" + }, + { + "priority": 1, + "date": "2002-12-30T00:00:00+00:00", + "title": "PHP Look Back by Derick Rethans", + "href": "https://derickrethans.nl/php_look_back.html", + "description": "
On 11-Feb Erik was wondering if people who “keep telling me PHP is a dead end, it’s in fact a dying language..” are just making it up or not.

Yeah, well, nothing has changed. PHP’s unofficial slogan: Dying since 1995.", + "comment": "" + }, + { + "priority": 2, + "date": "2002-12-09T00:00:00+00:00", + "title": "Turck MMCache for PHP released", + "href": "http://turck-mmcache.sourceforge.net/index_old.html", + "description": "MMCache is one of the first PHP accelerators. Some ideas developed for MMCache were added to OPCache later.", + "comment": "" + }, + { + "priority": 2, + "date": "2002-11-08T00:00:00+00:00", + "title": "Phrame — the First MVC Framework in PHP", + "href": "https://web.archive.org/web/20021119091123/http://phrame.itsd.ttu.edu/", + "description": "", + "comment": "" + }, + { + "priority": 1, + "date": "2002-04-25T00:00:00+00:00", + "title": "Xdebug First Release", + "href": "https://github.com/xdebug/xdebug/releases/tag/0.6.0", + "description": "", + "comment": "" + }, + { + "priority": 2, + "date": "2002-02-04T00:00:00+00:00", + "title": "Zend Studio 2.0", + "href": "https://web.archive.org/web/20020118165820/http://zend.com/store/products/zend-studio.php", + "description": "This is the first PHP IDE and remains the de facto standard until about 2005. In 2005, folks from Zend launch the open source Eclipse PHP development tools project to move PHP further in the enterprise market.
Before 2.0 release it was known as Zend IDE.", + "comment": "" + }, + { + "priority": 2, + "date": "2001-12-01T00:00:00+00:00", + "title": "APC First Released", + "href": "", + "description": "The PHP accelerator of the pre-OPcache era.", + "comment": "Date unknown. No Link." + }, + { + "priority": 1, + "date": "2001-11-27T00:00:00+00:00", + "title": "Initial commit of PHPUnit", + "href": "http://svn.php.net/viewvc?view=revision&revision=63330", + "description": "Sebastian Bergmann starts work on the most used PHP testing framework. It was inspired by SUnit and JUnit.", + "comment": "" + }, + { + "priority": 2, + "date": "2001-04-01T00:00:00+00:00", + "title": "TYPO3 goes open source", + "href": "https://web.archive.org/web/20140428050802/http://typo3.org/about/the-history-of-typo3/", + "description": "", + "comment": "Date unknown" + }, + { + "priority": 1, + "date": "2001-03-01T00:00:00+00:00", + "title": "Smarty released", + "href": "https://web.archive.org/web/20010128152400/http://www.phpinsider.com/php/code/Smarty/docs/", + "description": "The best-known templating engine for PHP.
Rasmus realized that he had done something wrong when people started writing template engines for his template engine in his template engine.", + "comment": "Date unknown" + }, + { + "priority": 3, + "date": "2000-12-03T00:00:00+00:00", + "title": "PHP Coding Standard", + "href": "https://web.archive.org/web/20010208155733/http://utvikler.start.no/code/php_coding_standard.html", + "description": "Probably the first one.", + "comment": "" + }, + { + "priority": 4, + "date": "2000-11-01T00:00:00+00:00", + "title": "leak()", + "href": "https://web.archive.org/web/20010417064604/https://www.php.net/manual/en/function.leak.php", + "description": "Did you know that PHP had a leak() function? It was actually used to leak a specified amount of memory. It was designed to help debug memory management. But is this where all the rumors come from? 🤔", + "comment": "" + }, + { + "priority": 3, + "date": "2000-07-22T00:00:00+00:00", + "title": "First PHP conferences", + "href": "", + "description": "The first ever PHP conference is held in Japan. It is followed by a PHP conference in Germany in October, 2000, which will go on to become the International PHP Conference that is still held today.", + "comment": "" + }, + { + "priority": 2, + "date": "2000-07-01T00:00:00+00:00", + "title": "PHP Quality Assurance Initiative", + "href": "https://qa.php.net/", + "description": "A new initiative called PHP Quality assurance is started in the summer of 2000 in response to criticism that PHP releases are not being tested well enough for production environments.", + "comment": "" + }, + { + "priority": 1, + "date": "2000-05-22T00:00:00+00:00", + "title": "PHP 4.0", + "href": "https://news-web.php.net/php.announce/22", + "description": "PHP 4 comes with a brand new “Zend Engine” core developed by Andi and Zeev. In addition to greatly improved performance, PHP 4 included support for more web servers, HTTP sessions, output buffering, and several new language constructs.", + "comment": "" + }, + { + "priority": 1, + "date": "2000-05-18T00:00:00+00:00", + "title": "Initial release of Drupal", + "href": "https://github.com/drupal/drupal/releases/tag/start", + "description": "Originally written as a message board, Drupal became an open source project in 2001 and grew into one of the most popular CMS systems.", + "comment": "" + }, + { + "priority": 2, + "date": "2000-03-01T00:00:00+00:00", + "title": "PEAR Appeared", + "href": "https://web.archive.org/web/20001017231542/http://pear.php.net/", + "description": "PEAR, the PHP Extension and Application Repository (originally PHP Extension and Add-on Repository) is PHP’s version of foundation classes, and becomes one of the key ways to distribute PHP extensions among developers. PEAR was born from discussions held at the PHP Developers’ Meeting (PDM) held in January 2000 in Tel Aviv.", + "comment": "Date unknown" + }, + { + "priority": 2, + "date": "2000-01-01T00:00:00+00:00", + "title": "PHP Developers’ Meeting", + "href": "http://zsuraski.blogspot.com/2018/05/zendcon-openenterprise-2018.html#:~:text=1st%20%26%20only%20face%20to%20face%20meeting%20that%20included%20(almost)%20everyone%20who%20was%20working%20on%20PHP", + "description": "The first face-to-face meeting that includes (almost) everyone working on PHP and also the MySQL founders.
How many people can you name?", + "comment": "" + }, + { + "priority": 1, + "date": "1999-01-01T00:00:00+00:00", + "title": "Zend company founded", + "href": "https://en.wikipedia.org/wiki/Zend_(company)", + "description": "The name Zend is a combination of Suraski’s and Gutmans’ forenames, Zeev and Andi. Zend has been a source of PHP innovations and development ever since its founding. It has contributed core improvements as well as userland packages and frameworks and development environment tooling.", + "comment": "" + }, + { + "priority": 1, + "date": "1998-11-15T00:00:00+00:00", + "title": "ElePHPant Logo", + "href": "http://php.net/elephpant.php", + "description": "Vincent Pontier creates an elePHPant logo for the PHP project, and it has been the adorable mascot of the PHP language ever since.", + "comment": "" + }, + { + "priority": 1, + "date": "1998-09-09T00:00:00+00:00", + "title": "phpMyAdmin project was “born”", + "href": "https://www.phpmyadmin.net/15-years/", + "description": "Tobias Ratschiller releases version 0.9.0 of the phpMyAdmin web administration tool for MySQL. For a long time it remained one of the primary tools for accessing MySQL and MySQL-like databases.", + "comment": "" + }, + { + "priority": 1, + "date": "1998-06-06T00:00:00+00:00", + "title": "PHP 3.0", + "href": "", + "description": "PHP 3.0 was the first version that closely resembles PHP as it exists today. Zeev and Andi rewrote the interpreter and introduced a new extension API which makes it a lot easier for the community to contribute new extensions. With many new developers from around the world on board, PHP 3 was announced by the new PHP Development Team.
The language’s name changed to the recursive acronym “PHP: Hypertext Preprocessor”. At its peak, PHP 3 was installed on approximately 10% of all web servers on the Internet.", + "comment": "" + }, + { + "priority": 2, + "date": "1998-06-01T00:00:00+00:00", + "title": "PHP Logo", + "href": "https://www.php.net/download-logos.php", + "description": "By Colin Viebrock ", + "comment": "Date unknown" + }, + { + "priority": 3, + "date": "1998-05-01T00:00:00+00:00", + "title": "Netcraft Survey", + "href": "", + "description": "In 1997 and 1998, PHP/FI has a cult of several thousand users around the world. A Netcraft survey showed that as of May 1998 nearly 60,000 domains contained “PHP” in their headers, indicating that the host server had PHP installed. This number equated to approximately 1% of all domains on the Internet at the time. Despite these impressive figures, the maturation of PHP/FI was doomed by limitations; while there were several minor contributors, it was still primarily developed by an individual.", + "comment": "" + }, + { + "priority": 2, + "date": "1998-04-01T00:00:00+00:00", + "title": "First PHP books", + "href": "https://www.databazeknih.cz/knihy/php-tvorba-interaktivnich-internetovych-aplikaci-230573", + "description": "The first definitive book on PHP is ”PHP - tvorba interaktivních internetových aplikací” (PHP - Creating Interactive Internet Applications). Written in the Czech language by Jirka Kosek, it is published in April 1999. A German book authored by Egon Schmid, Christian Cartus and Richard Blume is published the following month. The first book in English, “Core PHP Programming” by Leon Atkinson, is published soon after. All these books cover PHP 3.0. There were books about PHP/FI before then.", + "comment": "" + }, + { + "priority": 1, + "date": "1997-12-01T00:00:00+00:00", + "title": "Andi Gutmans & Zeev Suraski join the project", + "href": "", + "description": "Andi Gutmans and Zeev Suraski, students at Technion, Haifa, Israel, need a backend for an eCommerce application they are developing as a university project. They find PHP/FI 2.0 to be inefficient and lacking features. In 1997 they embark on a complete rewrite of the underlying interpreter. They approach Rasmus online to discuss various aspects of his current implementation and their redevelopment of PHP.", + "comment": "Date unknown" + }, + { + "priority": 1, + "date": "1997-11-01T00:00:00+00:00", + "title": "PHP 2.0", + "href": "", + "description": "PHP/FI gets a version 2.0 release. Interestingly, however,there was only ever one single full version of PHP 2.0. When it finally graduated out of beta status in November, 1997, the underlying parsing engine was already being entirely rewritten.", + "comment": "" + }, + { + "priority": 1, + "date": "1996-04-01T00:00:00+00:00", + "title": "PHP/FI", + "href": "", + "description": "The code gets another complete makeover, and in April of 1996 Rasmus introduces PHP/FI, combining the names of previous releases. This second-generation implementation began the true evolution of PHP from a suite of tools into a programming language in its own right. It included built-in support for DBM, mSQL, and Postgres95 databases, cookies, user-defined function support, and much more.", + "comment": "" + }, + { + "priority": 1, + "date": "1995-10-01T00:00:00+00:00", + "title": "Personal Home Page Construction Kit", + "href": "", + "description": "Rasmus releases completely rewritten code. Bringing back the PHP name, it is now (briefly) named “Personal Home Page Construction Kit” and is the first release to boast what was considered at the time to be an advanced scripting interface.
The language is deliberately designed to resemble C in structure, making it easy for developers familiar with C, Perl, and similar languages to adopt.", + "comment": "" + }, + { + "priority": 1, + "date": "1995-09-01T00:00:00+00:00", + "title": "FI", + "href": "", + "description": "Rasmus expands upon PHP. For a short time he actually drops the PHP name. Now referring to the tools as FI (short for “Forms Interpreter”), the new implementation includes some basic functionality of PHP as we know it today.", + "comment": "" + }, + { + "priority": 1, + "date": "1995-06-08T00:00:00+00:00", + "title": "PHP Tools – the Birth of PHP", + "href": "https://groups.google.com/forum/#!msg/comp.infosystems.www.authoring.cgi/PyJ25gZ6z7A/M9FkTUVDfcwJ", + "description": "Rasmus releases PHP Tools to the public.", + "comment": "" + }, + { + "priority": 2, + "date": "1995-05-23T00:00:00+00:00", + "title": "MySQL released", + "href": "https://dev.mysql.com/doc/refman/8.0/en/history.html", + "description": "", + "comment": "" + }, + { + "priority": 3, + "date": "1994-05-01T00:00:00+00:00", + "title": "Why do the oldest core functions have inconsistent names?", + "href": "https://news-web.php.net/php.internals/70691", + "description": "
Back when PHP had less than 100 functions and the function hashing mechanism was strlen(). In order to get a nice hash distribution of function names across the various function name lengths names were picked specifically to make them fit into a specific length bucket.
", + "comment": "Fun fact" + }, + { + "priority": 1, + "date": "1994-01-01T00:00:00+00:00", + "title": "Rasmus Lerdorf starts working on PHP", + "href": "", + "description": "The very first incarnation of PHP is a simple set of Common Gateway Interface (CGI) binaries written in the C programming language (not Perl). Originally used for tracking visits to Rasmus Lerdorf’s online resume, he named the suite of scripts “Personal Home Page Tools,” more commonly referenced as “PHP Tools”.", + "comment": "Date unknown" + } +] diff --git a/history/timeline.php b/history/timeline.php new file mode 100644 index 0000000000..a69f1e22fa --- /dev/null +++ b/history/timeline.php @@ -0,0 +1,112 @@ + 'history.css']); + +$path = __DIR__ . '/timeline-data.json'; +$events = json_decode(file_get_contents($path), true); + +final readonly class HistoryEntry { + public function __construct( + private string $title, + private string $description, + private DateTimeImmutable $date, + private string $linkHref, + private int $priority, + ) {} + + public function renderHtml(): string + { + $html = <<<"HTML" +
+ +
+
+ +

+ $this->title +

+
+ HTML; + + if ($this->description !== '' && $this->priority !== 1) { + $html .= <<<"HTML" + + + $this->description + + HTML; + } + + $html .= <<<"HTML" + +
+ HTML; + + if ($this->description !== '' && $this->priority === 1) { + $html .= "

$this->description

"; + } + + return $html . <<<"HTML" +
+
+ HTML; + } +} + +$grouped = []; +foreach ($events as $event) { + $year = substr($event['date'], 0, 4); + $grouped[$year][] = new HistoryEntry( + $event['title'], + $event['description'], + new DateTimeImmutable($event['date']), + $event['href'], + $event['priority'], + ); +} + +$sidebarLinks = join('', array_map(fn ($year) => "
  • $year
  • ", array_keys($grouped))); +$SIDEBAR_DATA = <<<"HTML" +

    Jump to Year

    + + HTML; +?> + +

    30 years of PHP history

    +

    + Welcome to the PHP Timeline — a curated historical journey of key milestones, releases, and ideas that shaped the PHP language over the years. + Explore the highlights and contributions that helped PHP become one of the most widely used languages on the web. +

    +
    + $items) { + echo "

    $year

    "; + foreach ($items as $event) { + echo $event->renderHtml(); + } + echo "
    "; +} +?> +
    +

    Special thanks for helping us prepare the timeline go to

    + +

    Disclaimer

    +

    + The Timeline data is opensource and available on GitHub. + If you found a mistake, please feel free to create a pull-request. +

    + + true, 'sidebar' => $SIDEBAR_DATA]); diff --git a/images/i.svg b/images/i.svg new file mode 100644 index 0000000000..c6227f05da --- /dev/null +++ b/images/i.svg @@ -0,0 +1,4 @@ + + + i + diff --git a/index.php b/index.php index 42c293ae5b..5b0811c962 100644 --- a/index.php +++ b/index.php @@ -187,6 +187,7 @@ $announcements

    User Group Events

    Special Thanks

    +

    30-years of PHP history

    Social media
    diff --git a/styles/history.css b/styles/history.css new file mode 100644 index 0000000000..216e4d09f2 --- /dev/null +++ b/styles/history.css @@ -0,0 +1,153 @@ +.timeline { + margin: 2em 0; +} + +.timeline-year { + border-left: 2px solid #ccc; + padding-left: 1em; + margin-bottom: 2em; +} + +.timeline-year h2 { + font-size: 1.5em; + margin: 1em 0 0.5em; +} + +.timeline-event { + display: grid; + grid-template-columns: 3rem 1fr; + gap: 0.5rem; + margin-bottom: 0.5rem; +} + +.timeline-event aside { + color: #333333; + font-size: 0.8rem; + border-right: 2px solid steelblue; +} + +.timeline-event header { + align-items: center; + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 0 0.8rem; + justify-content: flex-start; + margin-bottom: 0.5rem; +} + +.timeline-event header:after { + border-bottom: 1px dotted; + content: " "; + display: table; + margin-top: -1px; + width: 100%; +} + +.timeline-event header a { + text-underline: none; +} + +.timeline-event header h3 { + display: inline-block; + font-size: 1em; + line-height: 1.7rem; + margin: 0; +} + +.timeline-event header h3.importance-1 { + font-size: 1.3em; +} + +.timeline-event header h3.importance-2 { +} + +.timeline-event header h3.importance-3, +.timeline-event header h3.importance-4 +{ + font-weight: 400; +} + +.timeline-event header h3:after { + display: none; +} + +.timeline-event header small { + color: #c3c3c3; +} + +.timeline-event p { + margin: 0 0 0.5rem 0; +} + +.timeline-tooltip { + cursor: help; +} + +.timeline-tooltip--text { + background-color: #333333; + border-radius: 4px; + bottom: auto; + color: #ffffff; + display: block; + left: 0.625rem; + margin-top: -1rem; + opacity: 0; + padding: 0.375rem 0.5rem; + position: absolute; + text-align: left; + transform: none; + transition: opacity 0.3s; + visibility: hidden; + white-space: normal; + width: calc(100vw - 2rem); + word-break: break-word; + z-index: 1; +} + +.timeline-tooltip--text a:link, +.timeline-tooltip--text a:visited { + color: white !important; +} + +.timeline-tooltip--text img { + width: 100%; +} + +.timeline-tooltip--text pre { + margin: 0; +} + +.timeline-tooltip:hover .timeline-tooltip--text { + opacity: 1; + visibility: visible; +} + +.timeline-thanks { + font-size: 0.875rem; +} + +@media (min-width: 768px) { + .timeline-tooltip { + position: relative; + } + + .timeline-tooltip--text { + left: 30%; + margin-top: 0; + padding: 1rem 0.5rem; + top: 100%; + transform: translateX(-20%); + width: 350px; + } + + .timeline-tooltip--text::before { + border-color: transparent transparent #333333 transparent; + border-style: solid; + border-width: 0.4375rem; + content: ""; + left: 4.35rem; + position: absolute; + top: -0.875rem; + } +} diff --git a/tests/Visual/SearchModal.spec.ts-snapshots/tests-screenshots-search-modal-chromium-darwin.png b/tests/Visual/SearchModal.spec.ts-snapshots/tests-screenshots-search-modal-chromium-darwin.png new file mode 100644 index 0000000000..3adb384226 Binary files /dev/null and b/tests/Visual/SearchModal.spec.ts-snapshots/tests-screenshots-search-modal-chromium-darwin.png differ diff --git a/tests/Visual/SmokeTest.spec.ts-snapshots/tests-screenshots-index-php-chromium.png b/tests/Visual/SmokeTest.spec.ts-snapshots/tests-screenshots-index-php-chromium.png index 5af7a45700..7b407ee4c3 100644 Binary files a/tests/Visual/SmokeTest.spec.ts-snapshots/tests-screenshots-index-php-chromium.png and b/tests/Visual/SmokeTest.spec.ts-snapshots/tests-screenshots-index-php-chromium.png differ