pear:gsoc:2009
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
pear:gsoc:2009 [2009/03/11 09:26] – used gsoc only email davidc | pear:gsoc:2009 [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 121: | Line 121: | ||
//Possible mentors: Helgi, Brett// | //Possible mentors: Helgi, Brett// | ||
- | This will involve working on Pyrus installer which is the next generation PEAR installer. | + | Pyrus is a self-contained package delivery system for PHP that takes advantage of PHP's strongest features as of PHP version |
- | PHP 5.3+, namespaces and all the goodies | + | |
- | This includes writing good chunks of the installer from scratches, write extensive unit tests, design APIs and still make it work with existing channels and packages. | + | Pyrus supports |
- | This will require very good understanding of PHP, XML and other technologies a like. | + | |
+ | * Robust, remote dependency validation and download | ||
+ | * Creation of phar/ | ||
+ | * Installation of local or remote packages and abstract package installation (as in " | ||
+ | * Redundant registries, allowing re-building corrupted installs | ||
+ | * Registries in Sqlite, Xml, and Serialized PHP format | ||
+ | * managing PEAR installations | ||
+ | * Packages that can work with or without installation to support try-before-you-buy or bundling packages in other projects | ||
+ | * Full asymmetric signed packages using OpenSSL (natively supported through the phar extension) | ||
+ | * No need to install Pyrus, run directly from the downloaded phar archive. | ||
+ | * Customizability through extensions to Pyrus | ||
+ | |||
+ | This is a major leap of functionality over the PEAR Installer, and will be a major component of the PHP Language when completed, as the PEAR installer was for earlier versions of PHP. | ||
+ | |||
+ | To develop Pyrus, you need to have the ability to work with the following technologies on a very high level: | ||
+ | |||
+ | * Subversion source repository use | ||
+ | * XML (including proficiency in XMLReader/ | ||
+ | * PHP 5 Object-Oriented getters/ | ||
+ | * PHP 5 Object-Oriented ArrayAccess interface | ||
+ | * PHP 5 Iterator interface | ||
+ | * PHP 5 SPL iterators | ||
+ | * PHP 5 exceptions and exception handling | ||
+ | * SQL and Sqlite database, in order to maintain Sqlite3 registry | ||
+ | |||
+ | You also need a basic understanding of: | ||
+ | |||
+ | * PHP Namespaces (new in PHP 5.3) | ||
+ | * PHP closures (new in PHP 5.3) | ||
+ | * PHPT testing format | ||
+ | * Testing methodologies (code coverage/ | ||
+ | * PEAR packages and the PEAR Installer | ||
+ | * Basic compilation of PECL extensions | ||
+ | |||
+ | Architecturally, | ||
+ | |||
+ | - Writing unit tests for the installer in the PHPT test format | ||
+ | - Implementing the plugin system for Pyrus | ||
+ | - Improving the command-line interface to Pyrus | ||
+ | - Ensuring Pyrus can manage an existing PEAR repository | ||
+ | - Porting PECL compilation code from the PEAR Installer to Pyrus | ||
+ | - General bugfixing/ | ||
+ | |||
+ | As of the proposal, Pyrus is at approximately 50% code coverage, and it will be much higher by the time GSoC begins | ||
+ | |||
+ | ====Deliverables==== | ||
+ | ===Midterm=== | ||
+ | We expect a working plugin system and PECL compilation to be working on unix, as well as approximately 70% code coverage | ||
+ | |||
+ | ===Final=== | ||
+ | For the final review we would expect a fully functioning installer with approximately 80% code coverage. | ||
===== PEAR CI ===== | ===== PEAR CI ===== | ||
Line 148: | Line 196: | ||
PEAR can benefit by the proof instance being retained after completion. | PEAR can benefit by the proof instance being retained after completion. | ||
+ | |||
+ | |||
+ | ===== Mail_Queue2 ===== | ||
+ | //Possible mentor: [[quipo@php.net|Lorenzo Alberton]]// | ||
+ | |||
+ | The current Mail_Queue package is suffering from a lot of shortcomings that could only be overcome by a full rewrite. | ||
+ | |||
+ | The purpose of a mail queuing system is to store the outgoing emails in a persistent location (such as a database) before they are sent, and provide convenience methods to send the emails in smaller chunks, via a cron job / scheduled task, to cope with the available resources (SMTP, MTA, network, CPU) and spread the load over a longer period of time. | ||
+ | |||
+ | ====Deliverables==== | ||
+ | ===Midterm=== | ||
+ | We would expect a basic mail queuing system capable of handling multiple recipients (Cc/Bcc), db locking to avoid concurrent access and multiple deliveries, proper error handling (mostly non-blocking, | ||
+ | The buffer/ | ||
+ | |||
+ | ===Final=== | ||
+ | For the final review we would expect a fully functioning package with support priority levels, persistent connections, | ||
+ | |||
+ | |||
+ | |||
+ | ===== MDB3 ===== | ||
+ | //Possible mentor: [[quipo@php.net|Lorenzo Alberton]]// | ||
+ | |||
+ | Rewrite the MDB2 db abstraction layer with PDO-based drivers, making full use of SPL iterators, cursor support, and getting rid of the PHP4 legacy. | ||
+ | |||
+ | PDO only offers API abstraction, | ||
+ | A DBAL takes care of abstracting data types and some features at the language level (LIMIT, SEQUENCEs, Subqueries, ...). | ||
+ | http:// | ||
+ | |||
+ | ====Deliverables==== | ||
+ | ===Midterm=== | ||
+ | We would expect a full implementation of at least two db drivers, ideally already featuring a draft implementation of a Manager and Reverse module. | ||
+ | A fairly complete test suite should be written as soon as possible to keep track of the state of each driver. | ||
+ | |||
+ | ===Final=== | ||
+ | For the final review we would expect at least three database drivers with support for DDL and DML statements, SQLSTATE codes, emulation of common functions and introspection. | ||
+ | If the underlying DBMS supports it, the driver should also be capable of handling multiple resultset. | ||
+ | A complete test suite, ideally including a mock driver, should demonstrate the support of each feature in each driver. | ||
+ | |||
+ | ===Optional Features=== | ||
+ | If the quality of the work done is up to the expectations, | ||
+ | * EXPLAIN abstraction | ||
+ | * import/ | ||
+ | * database/ | ||
+ | * support for CHECK constraints | ||
+ | |||
+ | ====Recommended Base Skills==== | ||
+ | The applicant should: | ||
+ | * have a good PHP5 knowledge (PDO, SPL) | ||
+ | * have a very good understanding of object-oriented programming | ||
+ | * have experience with at least two/three different DBMS | ||
+ | |||
+ | |||
+ |
pear/gsoc/2009.1236763600.txt.gz · Last modified: 2017/09/22 13:28 (external edit)