Regrettably, Perl's many and significant contributions to the field of development methodologies have been largely overlooked by mainstream commentators. In particular, two brilliant and innovative methodologies invented by the Perl community are rarely cited in the methodology literature. Still more disturbingly, a recent survey of the forty two leading American universities showed that not a single one studies either of Perl's two breakthrough methodologies as part of their undergraduate curricula.

The methodologies in question, well-known to most Perl developers, are:

  • TDD (Tolkien Driven Development). Anyone who has browsed the Perl C sources is well aware of the boost to programmer productivity and morale gained by beginning each source file with a carefully chosen and inspirational Tolkien quote.
  • ADD (April-fools Driven Development). The simple and elegant notion behind ADD is to take an April Fools' hoax and turn it into reality. Both Parrot (April Fools Parrot) and Pugs (April Fools Haskerl) are fine examples of this groundbreaking methodology.

This, the sixth episode of the series you thought had finished, analyses the many April Fools Jokes that have been played on the Perl community over the years.

Black Perl (Larry Wall, 1990)

It has come to my attention that there is a crying need for a place for people to express both their emotional and technical natures simultaneously. Several people have sent me some items which don't fit into any newsgroup. Perhaps it's because I recently posted to both comp.lang.perl and to rec.arts.poems, but people seem to be writing poems in Perl, and they're asking me where they should post them.

-- Larry Wall requests the formation of a new comp.lang.perl.poems newsgroup

In March 1990, as evidenced by this historic rec.arts.poems sharon-esque poem and larry-esque response, Larry Wall was being interrupted by poetry readings from the next cubicle by his JPL workmate (and talented poet) Sharon Hopkins. It seems this light-hearted exchange provoked Larry into perpetrating what I believe is the first April Fools joke in Perl history, a request to form a new comp.lang.perl.poems newsgroup.

Haskerl (Will Partain, 1993)

For the disaffected Haskell programmer, we provide: regular expressions, at-your-fingertips access to UNIX features, and shorthand-laden figure-out-what-I-mean (FWIM) syntax. For the disaffected Perl programmer, we provide: lazy evaluation, referential transparency, Hindley-Milner type checking, polymorphism, a rich set of builtin data types, and (recursive) user-defined data types. We achieve this, essentially, by adding Perl-like features to Haskell.

-- Will Partain announces the new Haskerl programming language on comp.lang.functional, April 1 1993

... by the time you get done, everyone will be using Perl 5, which interprets any string within square brackets (apart from array subscripts, of course), in any of several languages, depending on the setting of the new $} magical variable. Embedded languages supported in the current prototype include Haskell, TCL, Python, Dylan, Elisp, Teco and Rexx. Support for Visual Basic is not anticipated.

-- Larry Wall's response

That this was a very clever and carefully prepared April Fools joke is evidenced by David Goblirsch being fooled into responding:

Can anyone give me an example---or a reference to an example---which shows that functional languages are "bad at I/O"? And why is Haskell perceived to be inadequate for "get-the-job-done" tasks?

Naturally, David Wakeling was delighted to clarify:

Yes, Certainly. Here at York we have a small electrical hoist in one of the Departmental stairwells which is used for lifting expensive and delicate equipment onto the upper floor of the building. As part of an experiment in real time functional programming, I wrote a Haskell program to control this hoist. It proved to be a tricky exercise: the hoist is controlled by a number of registers, and reading and writing these registers in the correct order with the correct values proved to be a royal pain. Indeed, the experiment had to be stopped after the accidental destruction of a 386-box, 16 wine glasses and a large rubber plant during a UFC visit.

Audrey Tang turned this joke into reality by initiating the Pugs project.

Parrot (Simon Cozens, 2001)

Today brought the official announcement that many of us in the Perl and Python communities had been awaiting and expecting for some time now: the culmination of the year-long collaboration between Larry Wall and Guido van Rossum, and the establishment of a period of joint development between the developers of Perl and Python.

-- Simon Cozens announces Parrot, April 1, 2001

This is probably the most celebrated April Fools joke in Perl history, brilliantly planned and executed by Simon Cozens. This joke became reality soon after when Simon launched the Parrot project.

I was especially tickled by this Parrot code sample:

# copy stdin to stdout, except for lines starting with # while left_angle_right_angle: if dollar_underscore[0] =eq= "#": continue_next; } print dollar_underscore; }

April Fools Patches to P5P

There is a long tradition of April fools patches to P5P as indicated by MJD's 1999-2002 p5p April Fools page. If you know of other classic P5P April Fools patches, please let us know.

April Fools Day at Perl Monks

The primary one I remember is from 2004 when I logged in to Perl Monks to be greeted by a bizarre photo on my home node and being told that, ack, I'd lost 15 experience points. I've super-searched for April Fools nodes as shown below. If you know of more, please let us know.

Perl April Fools Timeline

Other April Fools References

Earlier Articles in This Series

Updated References: added The ethics of humour, added Y2K sh2perl announcement, added 2006 "Larry" replaces $ with euro, added 2006 april fools PM nodes.