=head1 NAME History =head1 Description Since mod_perl's inception in 1996, many things have changed, and it's interesting to look at mod_perl's evolution and related events during the time from then to now. Based on the mod_perl I file and talks with mod_perl developer's, we have here reconstructed the important steps in the development of this successful Open Source project. =head1 Beginnings The first version of mod_perl was written by Gisle Aas and released on March 25, 1996. The effort was instantly recognized by Doug MacEachern and Andreas Koenig; the former had been working on Perl embedding. They picked up the torch and brought the project we all love to what it has become today, thanks to the help of countless contributors. An extract from I (the first one): =item March 25, 1996 Initial version of mod_perl.c and perl_glue.xs by Gisle Aas Thanks for getting this started Gisle! Andreas Koenig tells us about how things happened: "It was a time when FastCGI was still considered cool. But making FastCGI work required a patched perl, since tied file handles were still in their infancy. "PHP was also around already, and was an embarrassing witness to Perl's greatest weakness for server-side programming: that embedding Perl was a pain. Although the hooks were there for embedding Perl, they were both undocumented and buggy. "Doug MacEachern first got involved by addressing these problems. He wrote documentation for embedding Perl (the C manpage) and fixed a couple of bugs. Then one day, Gisle Aas posted on perl5-porters that he had built Apache with an embedded Perl interpreter as a proof-of-concept. However, Gisle lacked the time for further work. "That announcement was like a lightening bolt for at least two guys: Doug and me. While Doug shuffled the C code, I wrote the first working I, or at least I smoothed the build process to reduce the error rate resulting from silly mistakes during installation. Doug was working on HP-UX and I was using IRIX, so Doug wrote C to generate the command line arguments for I that tie things together for embedded applications. "Early versions of mod_perl needed to be recompiled to add a single CGI application. To get over that, I invented something without a name that mapped filenames to perl package names. When Doug received it, he called it C, as noted in I: =item release 0.75a1 - July 21, 1996 added Apache::Registry module contributed by Andreas Koenig "From that moment in July 1996, we could count on a number of interested developers on the mailing list to test the nascent mod_perl. The I file mentions a few of them: Salvador Ortiz, Alan Beale, and John Detloff. Rob Hartill of IMDB fame joined us in July. (See L for more information.) In August 1996, time was ripe to let a production server run mod_perl, and PAUSE (the Perl Authors Upload Server) was the first such server. We still had to use C<$r-Eprint>, and couldn't C<"use CGI">, but we could add and remove scripts without recompiling and we were happy. Being unable to use the popular C module turned out to be a pain for us, so I wrote a complete C clone, C and hoped that Lincoln would pick up the ball once there was a working alternative implementation. Eventually, Lincoln (with the encouragement of Mike Stok) made C compatible with mod_perl starting with C 2.32, and in March 1997, C was removed from the mod_perl distribution. This was one of the most important entries into the Changes file: =item 0.95 - 03/20/97 ****************************************** *** CGI-XA/* removed from distribution *** CGI.pm-2.32 is now mod_perl compatible, and now ships with CGI::Switch and CGI::Apache. ****************************************** Can you feel the relief it was for Doug to write that? I think this was the greatest day of the whole development. One year of very tough work got the reward it deserved. After that, mod_perl started to get attention from an increasing number of users. Doug worked like mad on fixing bugs and inventing one thing after another, just as he still does today. Things started flowing and people sent in patches, so Doug got the impression that the bazaar model was beginning to work. (From Eric Raymond's essay "The Cathedral and the Bazaar," the unofficial manifesto of the Open Source movement.) I remember one day Doug got a confidential message from a Sun employee. They had made an investigation on "where the web is heading", and they had come to the conclusion that "mod_perl will have an impact on the whole Web"." =head1 Up to 1.0 The first public release after Gisle's proof-of-concept happened on May 1, 1996: release 0.50a1 of mod_perl, with a long list of changes. In 0.50a2, an alternative implementation was provided, mod_perl_fast, which became the standard in 0.83_10. Another probably important change was the possibility of using C instead of C<$r-Eprint>, greatly facilitating output generation: =item release 0.80 - September 06, 1996 [...] we now take advantage of Perl's new IO abstraction so STDIN and STDOUT are hooked up to the client. Thanks to Sven Verdoolaege for the initial patch With 0.85 came the start of the test suite! =item 0.85 added the start of a mod_perl test suite Another interesting feature was added just before 1.0: stacked handlers! =item 0.95_02 introduced experimental "stacked handlers" mechanism, allowing more than one Perl*Handler to be defined and run during each stage of the request. Perl*Handler directives can now define any number of subroutines, e.g. PerlTransHandler OneTrans TwoTrans RedTrans BlueTrans with a new method, Apache->push_handlers can add to the stack by scripts at runtime And just after that, our beloved CPerlE> sections! =item 0.95_03 [...] added config section (see httpd.conf.pl) (needs 'perl Makefile.PL PERL_SECTIONS=1') Finally, more than one year after Doug's original 0.50a1, 1.0 was released on July 28 1997: =item 1.00 - 07/28/97 It primarily began adapting to the 1.3 series of Apache. =head1 1.x development =head2 Core During 1.x development, there has generally been many bug fixes and adaptions to Apache and Perl versions, striving to remain compatible. Some parts stand out as pretty important. In v1.12, the important APACI-support was added thanks to Ralf S. Engelschall: =item 1.12 - June 14, 1998 added new (but still optional!) Apache 1.3 support via the new Apache Autoconf-style Interface (APACI): The option USE_APACI=1 triggers a new build-environment (from local apaci/) for the APACHE_SRC/src/modules/perl/ which provides a clean way (i.e. without patching anything inside APACHE_SRC, not even the Configuration file) of configuring mod_perl via a APACHE_SRC/src/modules/perl/mod_perl.config file. The complete configuration is enabled by just using the APACI command "configure --activate-module=src/modules/perl/libperl.a" [Ralf S. Engelschall ] And with new versions of Perl come new fixes to mod_perl of course. =item 1.22 - March 22, 2000 compile fixes for 5.6 + -Duse5005threads [Lincoln Stein ] But the most important happenings weren't the bug fixes in the mod_perl core, but all that happened around it. The L show an incredible boom in mod_perl deployment, which has been accompanied by the release of very interesting applications and frameworks for mod_perl. =head2 Related events Maybe even more interesting are the things happening around mod_perl, mainly concerning Perl and Apache. The reason is that this impacts as much on mod_perl users as the changes to mod_perl itself; for example, a bug fix in Perl will help a lot to someone writing Perl handlers, and a security fix in Apache is of immense benefit to I running an Apache server. I (http://www.modperl.com/), by Lincoln Stein and Doug MacEachern, for a long time considered the best resource for mod_perl programmers, was published in March 1999 by O'Reilly & Associates. While not the only book on the subject, it is still a must-have for any serious mod_perl programmer. At ApacheCon in Orlando in 1999, mod_perl officially became an Apache Software Foundation project, and Ask Bjørn Hansen, Eric Cholet and Stas Bekman were voted in as ASF members in addition to Doug MacEachern. Together they formed L. In March 2000, Perl 5.6.0 was released, bringing many new features to Perl and mod_perl programmers the world over. In October 2000, Take23 (http://www.take23.org/) was created as an alternative site for mod_perl, because of the back-and-forth discussions about re-designing the I site weren't going anywhere at that time. It collected news and articles about mod_perl and also related issues such as other interesting Apache modules. It wasn't maintained for several years, and somewhere in 2003 it has disappeared. Also in October 2000, Geoffrey Young got the idea to begin a mod_perl mailing list digest (see http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=97051473628623&w=2 and http://marc.theaimsgroup.com/?l=apache-modperl&m=97059662005378&w=2 ), which he kept up regularly (weekly, then biweekly) up until late 2001, when James G. Smith took over and has been running it since then. The I (http://www.oreilly.com/catalog/modperlpr/), by Andrew Ford, was published by O'Reilly and Associates in December 2000. It summarizes the whole mod_perl API as well as configuration directives and some other tips in an easy-to-use format. In January 2002, the I (http://www.modperlcookbook.org/), authored by Geoffrey Young, Paul Lindner and Randy Kobes, was published by Sams Publishing. It presents the mod_perl API by example, teaching a programmer all the facets of mod_perl installation, programming and configuration, and is a valuable resource to everyone. META: - mailing list creations - beginnings of new site - conferences w/ mod_perl present - when Doug and Stas funded? Stas: August 2001; end 2002 =head1 The arrival of 2.0 ... =head1 Future directions for mod_perl mod_perl has clearly shown its strength as an Open Source project and application development platform. mod_perl 2.0 has been a jump forward, but with the arrival of Perl 6 we might expect another new version of mod_perl. If the developers are still interested, that is. There has been started development on mod_parrot (http://svn.perl.org/parrot-modules/mod_parrot), but Perl 6 is far from ready, so we don't really know what will be needed. The future hold great things for us. I will quote Stas Bekman's commentary in the L: I<"He is now thinking about mod_perl 3.0's architecture, hopefully to be implemented solely with AND and OR gates, driven by the Perl 6.0 chipset for the best performance. Don't be surprised when you get offered a shiny Bluetooth mod_perl 3.0 PCI card when you shop for your new server machine."> Who knows? =head1 See Also =over =item * CPAST: Comprehensive Perl Arcana Society Tapestry, http://history.perl.org/ =item * About the Apache HTTP Server Project, http://httpd.apache.org/ABOUT_APACHE.html =item * The I manpage, containing records of all perl versions, and the I manpages relating changes in the respective versions. =back =head1 Maintainers The maintainer is the person you should contact with updates, corrections and patches. =over =item * Per Einar Ellefsen Epereinar (at) oslo.online.noE =back =head1 Authors =over =item * Per Einar Ellefsen Epereinar (at) oslo.online.noE =back Only the major authors are listed above. For contributors see the Changes file. =cut