===== Source Development ===== The source code behind PHP is managed through the versioning system SVN. There are three active branches: * PHP 5.2 (Stable) is branched as [[http://svn.php.net/viewvc/php/php-src/branches/PHP_5_2/|PHP_5_2]] * PHP 5.3 (Stable) is branched as [[http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3/|PHP_5_3]] * PHP 6.0 (Alpha) is [[http://svn.php.net/viewvc/php/php-src/trunk/|trunk]] In SVN, when checking out these modules it will also automagically include the TSRM, Zend and ZendEngine2 modules. ==== Getting the source code ==== There are two main methods for getting the latest PHP source files, either directly from SVN or by downloading a Snapshot === SVN === This is where developers actively add/modify code. A few differences from snaps: * You can write patches or commit to SVN * You can test the build tools via buildconf * Should specify the branch when checking out === Snapshots === Each branch is built around four times a day, and the snapshots system runs a few scripts in order to lesson the burden of required tools for building. A few differences from SVN: * Snaps do not require all build tools like buildconf and flex * It's easier to deal with * Can refer to a specific snap when reporting bugs ==== Building ==== Because PHP is a glue for many other libraries, often times third-party libraries are required to build it. For example, if you want to build in Postgresql support then the server doing the build requires access to PostgreSQL and its developmental (head) files. When a system uses packages or RPMs, often times this means also installing foo-dev or foo-devel packages as they contain the needed header files. The PHP configure system checks for these libraries and will inform you if they are missing. === Configuration options specific to developers === * --enable-debug : this includes extra symbols * --maintainer-zts : ... * valgrind * gdb * ... ==== Learning how to write php-src code ==== * Internals docs * Example extension * All PECL extensions (SVN) === Writing an extension === * What is PECL? * Why PECL? ===== Bugs ===== The bugs system is used to report bugs and feature requests for internals and related activities like the documentation and php.net website. * Finding open bugs * Reporting bugs * Submitting patches * Generating a back trace ===== Writing Tests ===== Writing tests means ... * A test example * Code coverage ===== Documentation ===== * How we do it * How you can do it * What is needed now * HOWTO * Determine different types of documentation * developer (internals) * extension (for a specific extension) * installation (for installing php somewhere) * general (for anything else) * the howto itself * user notes * other wiki stuff ===== Communication ===== * How to contact developers * How to contact an extension maintainer * What to do if the maintainer does not reply * Different modes of communication (mail, irc) * If nobody replies in irc, it could be because ...