└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # PHP Internals: Getting Started 2 | 3 | PHP internals is a great place to get connected to a passonate and vibrant community of coders. But knowing where to start can be difficult since much of the information is locked away in "[tribal knowledge](https://en.wikipedia.org/wiki/Tribal_knowledge)". This document aims to break down the barrier of entry for getting started with the lovely PHP internals community. **PR's are welcome!** :) 4 | 5 | ## Official Process & Culture 6 | 7 | Possibly the highest barrier to entry is simply understanding "how things work" in PHP internals. 8 | 9 | ### RFC's (Request for Comments) 10 | 11 | The [RFC wiki](https://wiki.php.net/rfc) is where all the proposed changes are made to PHP. 12 | 13 | - Have an idea for PHP? [Create an RFC](https://wiki.php.net/rfc/howto)! 14 | 15 | ### Karma 16 | 17 | PHP internals has an [ACL](https://en.wikipedia.org/wiki/Access_control_list) called "karma". Depending on your level of karma, you will be permitted to update the wiki, push to the docs SVN, push to php-src, etc. 18 | 19 | - **@TODO:** Find a good resource to explain the karma system in detail. 20 | - [Requesting karma](http://php.net/git-php.php) (scroll down to "Request a Git account" section) 21 | - [Karma access control document](http://svn.php.net/viewvc/SVNROOT/global_avail?view=markup) 22 | 23 | ### Community 24 | 25 | Where the internals folks hang out. 26 | 27 | - [Subscribe to the internals mailing list](http://php.net/mailing-lists.php) 28 | - [Watch the internals mailing list from afar](https://externals.io/) 29 | - [Room 11](http://chat.stackoverflow.com/rooms/11/php) chat room 30 | - **@TODO:** Add IRC channels 31 | - [PHP Conferences](http://www.php.net/conferences/) 32 | 33 | 34 | ## Source 35 | 36 | PHP is written in C. 37 | 38 | - [php-src on GitHub](https://github.com/php/php-src) 39 | - PHP 5: [A good overview of PHP source](http://www.phpinternalsbook.com/) 40 | 41 | ### Extensions 42 | 43 | - PHP 5: [Building extensions](http://www.phpinternalsbook.com/build_system/building_extensions.html) 44 | - PHP 5: [Extending & Embedding PHP](https://www.amazon.com/Extending-Embedding-PHP-Sara-Golemon/dp/067232704X/) by Sara Golemon on writing extensions for PHP 5.x. 45 | - Sometimes learning by example is helpful. Take a look at some PR's like the [password_*() PR](https://github.com/php/php-src/pull/191/files) to see how extensions tie into source. 46 | 47 | ### Engine 48 | 49 | - PHP 7: [Virtual Machine](https://nikic.github.io/2017/04/14/PHP-7-Virtual-machine.html) 50 | - PHP 5: [Getting into the Zend Execution engine](http://jpauli.github.io/2015/02/05/zend-vm-executor.html) 51 | 52 | ### Blogs about php-src 53 | 54 | - [Julien Pauli](http://jpauli.github.io/) 55 | - [Nikita Popov](https://nikic.github.io/) 56 | 57 | ### Tools 58 | 59 | - [Grok](http://lxr.php.net/) *seems to be down right now :/* 60 | - [Alternative Grok](https://lxr.room11.org/) 61 | 62 | ## Documentation 63 | 64 | - [Official PHP Manual Contribution Guide](http://doc.php.net/tutorial/) 65 | - [Online GUI documentation editor](https://edit.php.net/) 66 | - [PhD: The PHP docs generator](http://doc.php.net/phd/docs/) 67 | - [Guide: How to contribute to PHP documentation](https://www.sammyk.me/how-to-contribute-to-php-documentation) 68 | 69 | ## Testing 70 | 71 | PHP has a black-box testing tool called [run-tests](https://github.com/php/php-src/blob/master/run-tests.php). The tests (`.phpt` files) are written in PHP so it's a great entry point for newbies to get started with PHP internals. 72 | 73 | - [Docs for writing tests](http://qa.php.net/write-test.php) 74 | - [The .phpt sections reference](http://qa.php.net/phpt_details.php) 75 | - [Code coverage website](http://gcov.php.net/) (helps you find untested code) 76 | 77 | ## Bugs 78 | 79 | The [PHP bug tracking system](https://bugs.php.net/) is where all bugs for PHP are tracked. We need help triaging bugs! 80 | 81 | - **@TODO:** Add resources for triaging & fixing bugs 82 | 83 | ## Websites: Source Code 84 | 85 | Nearly all the websites in the PHP ecosystem are open source. Send some PR's to make them better! :) 86 | 87 | - [Main website (php.net) source code](https://github.com/php/web-php) 88 | - [Bugs (bugs.php.net) source code](https://github.com/php/web-bugs) 89 | - [Wiki (wiki.php.net) source code](https://github.com/php/web-wiki) 90 | - [Testing/QA (qa.php.net) source code](https://github.com/php/web-qa) 91 | - [Code Coverage (gcov.php.net) source code](https://github.com/php/web-gcov) 92 | - [PECL website (pecl.php.net) source code](https://github.com/php/web-pecl) 93 | --------------------------------------------------------------------------------