=head1 NAME

Catalyst::Manual::SuccessStories - Catalyst rocks!

=head1 DESCRIPTION

Catalyst is great, no question...

=head1 STORIES

=head2 Early Maypole -> Catalyst porting (Jesse Sheidlower)

The original version of the Oxford English Dictionary's
Science Fiction web site, now at
L<http://www.jessesword.com/sf>, was written as plain CGI
scripts. (No, it's worse than that. It was written as .shtml
pages, with the SSI shelling out to a Perl script that
generated HTML. And yes, this was written after 1996. So sue
me.) While this was mostly satisfactory at one time, as the
site grew there were very many problems introduced by this
system. I decided to upgrade it to a modern system based on
L<Maypole> and L<Template Toolkit|Template>. Among the
user-visible features added were proper paging of the result
sets, a search function, and the linking in of the OED's
massive citation database to show all the quotations collected
by the OED for each term. Back-end features included a
mod_perl based framework, an extensible OO structure, proper
templating, and the like.

After some desultory work - I have a day job - a perfectly
working Maypole-based system was ready. However, at this point
development on Catalyst was going strong, and it was clearly
the wave of the future for Perl-based MVC frameworks. Also,
I was irritated by some features of Maypole, in particular its
habit of setting up an enormous amount of structures for you
regardless of whether they were needed. Since I was trying to
optimize this application, I wasn't thrilled with the idea of
having literally dozens of unneeded database calls on every
request; it wasn't easy to switch this off without overriding
large swathes of Maypole.

So I delayed the launch of the new site to port it to
Catalyst.  This took less than a day. My initial benchmarks
showed a remarkable speed increase, in the range of 100-250%,
depending on the type of request. (For example, on my
development server, I had been getting 16 pages/second under
Maypole for a "view" page that displayed a single full record;
under Catalyst this jumped to 57 pages/second.) After a week
or so of public beta testing, I shifted the entire site to the
new system, e-mailed Slashdot, and waited for the onslaught.

When it hit Slashdot, things held up very nicely. (Some early
error pages, embarrassingly pointed out by a Slashdot poster,
were in fact caused by a lack of available MySQL connections,
for which misconfiguration the DB admin was harshly
criticized, rather than from any app-specific failings.) In
the hours after slashdotting, the app averaged about 3,000
pages/hour, each representing a dynamic database-generated
page; the total requests averaged about 30,000/hour. During
this period the perceived speed of the app was extremely
snappy. After a small bump in the first minute, the load
average on the server was less than 1.0 the whole time,
usually under .3. Other apps running on the server were also
unaffected.

The ease of use and speed of Catalyst contributed greatly
to the success of this site.

=head1 AUTHOR

Sebastian Riedel, C<sri@oook.de>
Jesse Sheidlower, C<jester@panix.com>

=head1 COPYRIGHT

This program is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.
