What a nice party - everyone is getting warm and fuzzy about PHP at 10 years of age, and why not join in
I first encountered PHP in 1999 or 2000 while attempting to maintain server-side includes and perl code for simple scripts at the backend for http://www.chiaraquartet.net. These were not complicated scripts, simply a form mailer and some basic attempts to set up a web counter (*shudder*). However, implementing them was a real pain in the rear end. I discovered PHP in one of the early 4.0.x versions, and was amazed at the simplicity of performing the same tasks I had tried to do with Perl via CGI.
In the fall of 2000, my quartet embarked on a professional career. At the time, we were juggling requests from myriad organizations for concerts and other events, and couldn't keep things straight. After missing one event due to simply forgetting about it, I wrote a Microsoft Access-based application for keeping track of our schedule, contacts, and repertoire information. Some simple Visual Basic-based forms managed to unearth serious bugs in MS Access within the first 4 hours of programming. I ended up spending 85% of my time trying to work around the bugs in Access. It was not long after this that I realized the solution would be to port the entire thing over to a LAMP-based solution. This would also allow us to access the schedule on the road. Perfect!
Amazingly, porting the entire complex application to a web-based PHP
frontend for a mysql backend unearthed not a single bug in PHP and only
took 15 hours of development, about 1/4 of the time I had spent simply
trying to get the original application to work. Even back then, PHP
kicked Microsoft's closed-source ass.
As a part of the work on
the website, I designed a semi-generic templateable data->form
mapping system that could be used for data entry and editing (now
defunct). My father took some interest in using the work for a project
he was working on, and so I began to document the thing. This proved
to be irksome and really repetitive. A quick search for automated
tools revealed only javadoc and a few half-hearted PHP ports of
javadoc. All suffered from extreme inflexibility or lack of features.
However, the most interesting project was Josh Eichorn's phpDocumentor,
which used an actual lexer/parser to parse PHP instead of regular
expressions. Not only was the code cleaner and more readable, but it
ran much faster. I began to enhance the source to make it possible to
document the larger project I was working on. By the time we reached
phpDocumentor 1.1, interest in the project had began eliciting some
strong requests from the PEAR project to replace the unmaintained
PHPDoc code with phpDocumentor.
PEAR at this time had a
reputation for in-fighting and weird rules about coding, with not much
good code to back up the rules. However, it didn't seem to hurt
anything to continue to serve phpDocumentor through phpdoc.org as well
as through pear.php.net, so Josh and I decided it would be worth the
time.
At the time I started trying to get PEAR to install
phpDocumentor, there were a whole slew of problems. PEAR didn't even
work properly on windows, and it refused to properly package
phpDocumentor. In addition, the package.xml format requires listing
every file, but there were no automated tools for creating the file
list. On top of these problems, Archive_Tar couldn't handle file paths
longer than 100 characters, something forced by a pre-PEAR design
choice in phpDocumentor.
As a consequence of these issues, PEAR_PackageFileManager was
born from a simple script that I was using to create the package.xml
for phpDocumentor. Also around this time, I finally got annoyed enough
with PEAR's insufficiencies that I took a peek inside the installer. A
lot of the code was really difficult to read, but there were some real
gems of design and implementation that made modifying things easier.
The installation code was not among these gems, unfortunately. A
single method both downloaded and installed each package, using a few
small helper methods. In addition, dependencies were not resolved
prior to download, and automatically downloading dependencies was
impossible.
My first major contribution to the PEAR installer was the --onlyreqdeps and --alldeps switches, followed by patches to enable PEAR to function with pathnames containing spaces. Soon, however, I got really annoyed with some of the other problems in the PEAR installer, particularly the lack of pre-download dependency validation, and the limited support for applications and subpackaging. These issues gave birth to the original ideas that have led to features in PEAR 1.4.0 like optional dependency groups, and pre-download dependency validation.
Some serious fights on the pear-dev mailing list over good packages that were not accepted into PEAR due to rules rather than code quality led to the idea that became channels.
Finally, the difficulty of installing PEAR itself has led to work on PHP_Archive with Davey Shafik in the hopes that we can distribute the thing in a single file to be used even without installation at all.
My hope is that the installer features in PEAR 1.4.0 will unify the installation process for PHP users, strengthening both the quality of PHP installation and by the introduction of healthy competition, the quality of PEAR as the standard repository for PHP.
Next on the list is to clean up phpDocumentor and streamline it for php 5!
The language we all love more and more over the years turns 10. Following the example of Zak I want to thank all those brave guys and girls behind PHP. I've neither been with PHP since it's birth, nor since it's so early ours, but I've enjoyed its greatne
Tracked: Jun 07, 22:48
Ten years ago, when Rasmus Lerdorf gave birth to "Personal Home Page Tools 1.0":http://groups.google.ch/group/comp.infosystems.www.authoring.cgi/msg/cc7d43454d64d133?oe=UTF-8&output=gplain little did we know that it would grow and mature into the PHP: ...
Tracked: Jun 08, 08:48