The First Twenty-Five Years

Opening Remarks
Being asked to write a piece celebrating the twenty-fifth anniversary, in essence a Silver Celebration, since the first release of the Perl Programming language was both a joy and a terror. Where would I start, what would I include, what approach should I take? It is a significant prospect as the sheer depth of history can only be matched by the breadth of influence that Perl has had over the previous quarter of a century. Then there was the inevitable consequences of having some information opinion based, common misconceptions or just not documented.1

My reaction was to think of all the elements that I knew made up the Perl Language and Community and to hold them aloft and groan as unlike Atlas I am unable to hold up the heavens.2 There was an awfully large number of diverse elements that made up the phenomena known as Perl. So what then to do?

This, therefore, is a personal journey with some elements gained from common research, I have decided to do a retrospective of the community and history, there are many things you will find familiar, hopefully some that you will find new and one or two that are established fact and good to be reminded off.

I am indebted to all the others who did a large portion of the leg work from the general nature of being members of the organisations, development, community and projects; to the specific where I have leaned heavily on the knowledge of luminaries such as Dave Cross whose excellent presentation at the London Perl Workshop forms the Year by Year Repose. I am also deeply indebted to the information contained on the many Perl sites and to the elements on Wikipedia, please see the references for more information.
All mistakes, conjecture, opinions and assorted paraphernalia are my own, where I have used material from others that may be in question it is a failure in my judgement for its inclusion and not the fault of the original author.

I would ask you to note that each section that has footnotes has then printed at the base of that section before I move on and therefore the numbering correctly re-starts each time. The Sections are: Introduction; The Community; The Events; The Code; The Written Word; Towards A Future; A Year by Year Repose; Sources.

I would also like to thank Karen Pauley for being an excellent editor and accurately questioning all the silly things I have taken out, anything silly that remains is still my responsibility.

In the Beginning...
The beginnings are rather simple, and maybe a little mundane; Larry Wall (Tim Toady) released version 1.0 to the newsgroup comp.sources.misc on the 18th December 1987 while working as a programmer at Unisys. Perl was intended, we believe, to be a Unix scripting language to make report processing easier borrowing from sh, Awk and Sed.
Perl 2 was released in 1988 and added more features and a better regular expression engine, this was followed by Perl 3 in 1989, Perl 4 in 1991 to coincide with the Camel Book, until finally we have Perl 5 in 1994. Perl 5 was a major shift in the release of version numbers which I will touch upon below. Perl 6 started its life cycle in 2000 with a different principle to other versions of Perl. It was a complete re-write of the language and would start as a language specification before a release leading to the now apocryphal 'released in time for Christmas' line.

The development of Perl 5 continued both before and alongside that of Perl 6,3 though it is interesting to note that there have been several major changes which could have been considered major version releases in previous versions of Perl. It is common these days for Perl 5 to be considered the language name with its point release being the version, hence the current version of Perl 5 is 16. Perl 5.6 was released in 2000; 5.8 was released and under constant development during 2002-08; version .10 released in 2007 for the 20th anniversary of Perl; version .12 was released in 2010, at this time Perl moved to a monthly release cycle with a yearly stable release, hence .14 was released in 2011 and .16 in 2012.

Perl 6 has influenced a number of changes, or backwards implemented as some would have it, in Perl 5 as well as having a number of implementations of its language specification such as Pugs (by Audrey Tang in Haskell), Niecza and Rakudo*. It has been a long standing source of humour that Perl 6 would be released in time for Christmas, but we didn't say which Christmas, the truth is that there are implementations of Perl 6 and the language itself is a specification that is under development. There are a number of projects, modules and libraries on CPAN that use Perl 6 and the production deployments continue to grow.

This is just the start of the journey as we now take a look at some of the many parts of the quarter century of Perl progress...

Notes[1] Then there is the inevitable variance in story by conjecture that allows us to ponder what is really truth and what is merely just recalled as being the truth.

[2] If I recall correctly he only held up the skies not the whole planet unlike that lying statue suggests.

[3] We shall have to note that there were the wilderness years when two communities arose that seemed not only divergent in focus, but also disagreeable in nature. These wilderness years coincided with the rise of languages such as PhP, Python and Ruby (though more specifically the popularity of the Rails framework).

These arguments were the inevitable consequence of the enthusiasm for each language by the active members of those communities. Today we can proudly say that we are one Perl community with two Perl languages, Perl 5 and its variants and Perl 6 with its. From the two, it is apparent that Perl 6 has pushed the envelope in regards to language design and specifications leading to implementations such as Pugs and Rakudo while also inspiring changes in Perl 5 such as Moose.

The Community

It is a widely held belief1 that Perl has one of the best, if not the best, communities in the Open Source world. It is certainly true that it is a long established community and one that can be very rewarding to be a member.

From the very early days of the language there was a strong move towards 'grassroots' or natural community development. Before Perl had reached a point release between 1987-88 we had seen the first JAPH (Just Another Perl Hacker) snippet run wild across the newsgroups and that was likely the start of many programmers need to be identified as having Perl skills.

In those early days the majority of communication was conducted on newsgroups, in particular the now famous comp.lang.perl where Perl pioneers such as Randal Schwartz, Tom Christiansen, Len Wiseman, Steve Simmons and Marion Hakanson (see: https://groups.google.com/forum/?hl=en&fromgroups#!forum/comp.lang.perl) along with Larry Wall, met and discussed Perl issues.

The first O'Reilly Perl conference was not until 1997 in San Jose, California, a decade since the language was first released and three years after Perl 5 was birthed to the world. At that conference many of the people who had been communicating simply with lines of text met face to face and realised that wasn't such a bad idea. Following this conference the very first Perl Monger group, the New York Perl Mongers was formed by brian d foy and other members of the New York Perlers which was quickly followed by a group in Boston.

Perl Mongers
The O'Reilly Perl Conference would eventually mutate into the OSCON conference which still runs in Portland each July. The Perl Mongers grew to one hundred groups in its first year as recorded at the second O'Reilly Perl Conference and now has more than one hundred and fifty groups.

The original idea was that Perl Monger group names would be based on the name of a geographical location, hence we have London.pm, Boston.pm etc. A pun was used for the .pm as this is an extension for a Perl file and also an acronym of Perl Mongers. Today a number of other groups are also part of the Perl Monger family, there is Dahut.pm named for a mythical beast and refers to a non-geographical group of organisers/members; there is Les Mongueurs du Perl (The Mongers of Perl) which is taken by a collection of French groups who organise events such as the French Perl Workshop, Perl QA Hackathon and OSDC (Open Source Developers Conference); in the community we also have drinkers.pm a group dedicated to the consumption of sweet liquor and LGBT.pm (who might also be known as Equality.pm) which was started by @techpractical to reflect the broad nature of our diverse community.

Many of the Perl Mongers groups organise technical presentations and social meetings. These meetings act as a good way to pass information on latest developments in Perl or on the broader technical world and jobs markets, we also use the community resource jobs.perl.org for the same reason.

The Perl Community have always organised themselves into running a variety of local events, from regular Perl meetings, hackathons, training sessions, workshops and even the yearly YAPCs (Yet Another Perl Conference). Conferences are usually hosted by a local group who bids for the privilege, some groups have run more than one event and many have run more than one in a single year.

White Camel
Such is the importance of community that Perl has its own awards that are handed to community members who have made a significant contribution to the state of Perl and the community. This award was initiated by the Perl Mongers and O'Reilly & Associates at the Perl Conference in 1999 and has been awarded yearly since then, the scheme is managed by brian d foy.

Perl Monks
The Perl Mongers have always been more of a social endeavour focussing on the meeting in the real world of like minded individuals to share and express their thoughts and converse2, but since late 1999 there has been a location for the technically curious.
If you have a question about Perl and wish to progress along a path of almost devout following then you can enter the Monastery of Perl and join the Perl Monks.3 The Perl Monks website, FAQ and posts are intended to be a user-focussed resource of information, in many ways it is almost a CPAN for documentation. The site predates many of the more social systems that have become popular in recent years but contains a vast store of collected knowledge and experience to help new initiates upon their path to understanding.

The Organisations
There are a number of organisations in the Perl Community4 which seems confusing to those who are uninitiated with the vast complexity of a global community with diverse aims and needs. There are legal matters of dealing with different countries, the focus of the organisation, such is the vast range of different elements to the Perl world one organisation would have quite a split in attention.

The largest of these organisations are The Perl Foundation, YAPC Europe Foundation, Japanese Perl Association and The Enlightened Perl Organisation. These groups can be seen as complementary, not contradictory, groups with overlapping areas of focus and differing duties.

The Perl Foundation
In 1999 Kevin Lenzo formed the organisation Yet Another Society (YAS) to help to organise the Perl conferences in North America. This organisation would eventually become known as the Perl Foundation. The original premise of the Perl Foundation was to help run the grassroots events in the Perl Community for North America, and to help the conference organisers with banking and organisation.

Over the last decade the focus of the Perl Foundation has shifted and grown so that along with helping to fund, organise and support North American Perl conferences it has evolved to handle grants and bounties for extending, amending and evolving both Perl 5 and Perl 6 throughout the world.

The Perl Foundation has also secured the rights for the Perl logo, artistic licence 2.0 and trademarks, the Onion and the name Perl when used in conjunction are a Trademark in many countries. It has helped the JPA overturn a trademark case in Japan which would have had potential issues for Perl.

Today, under the steady guidance of the current President, Karen Pauley, the Perl Foundation has become deeply involved with the worldwide Perl community. The Perl Foundation has extended its mission to improve and evolve Perl and to promote and support community. There are committees to handle marketing, grants, funding and the recent Perl Advocacy committee to work in the community.

The Perl Foundation is run entirely by volunteers who give up their time simply to help support the greater community, they are also proud to embrace diversity and the evolution of the community, the Perl Foundation survives solely from the generous sponsorship, donations and fund raising.

YAPC Europe FoundationYEF was formed in 2003 with the mission to help promote and support the growing YAPC::Europe. YEF was a desire to offer the same support and services to the European Conference scene that TPF was founded for in the United States.YEF provide a framework to help organise many of the yearly conferences in Europe as well as supporting the other European events such as hackathons. YEF survives on donations and like TPF is staffed entirely by volunteers.

Japanese Perl Association
The JPA was founded to help organise the yearly YAPC::Asia which has been held for many years in Tokyo due to the concentration of organisers and the need for a centrally accessible location. YAPC::Asia is currently the world's largest Perl conference with over 600 atendees.

In recent years the JPA has also fought, and won, an important battle for the control of the name Perl in Japan with the help of the Perl Foundation

Enlightened Perl Organisation
The EPO was formed in March 2008 to celebrate and encourage the shift from what was perceived as a Renaissance in Perl to a more Modern Perl for the twenty-first century. Since the release of Perl 5.8 there was a shift in thinking for Perl 5 and a recognition that it was a language in its own right sharing a common root with Perl 6 but having a separate identity. The EPO was formed to further promote and support this evolving situation and community.

Unlike the three other organisations the EPO does not support any one specific conference or agenda but rather lends its support and business services to a range of them, from the Perl QA Hackathon, the London Perl Workshop, YAPC::Brazil and YAPC::Europe.

The EPO also runs a number of initiatives and projects for the broader community such as the Send-a-Newbie initiative whose aim is to give financial aid in sending people new to a Perl conference to a major event; the support of CPAN Testers with the raising of funds and handling of costs; supporting grants for development and sponsoring diverse elements such as logo competitions.

The EPO is a membership organisation and gains funds from membership, donation and sponsorship. It hopes to promote the tighter cohesion between business and community and to further enhance this union. It is staffed entirely by volunteers.

The Logos
A retrospective of the Perl World has to make some mention of the many logos of the Perl Community. Once again this is a rather eclectic list, there are many logos that were omitted such as logos for CPAN Testers, DBIx::Clagass, Catalyst, Dancer and Mojolicious in an effort to tell a slice of the story from the most visible elements.

The Camel
The first logo that can be said to be used in conjunction with Perl is the Camel. This was the logo that O'Reilly decided to use for the Programming Perl book and became synonymous in the early days with the Perl Community. The Camel is owned by O'Reilly, but they allow the Perl Community to use it on its associated community sites and projects.

There have been a few variants on the Camel logo such as the one used to show the 'Programming Republic of Perl' a 90s construct, to its usage as a symbol of community excellence in the White Camel awards.

Many community groups and individuals have their own Camel, Castaway and brian d foy both have a personal soft camel, as do the Italian Perl Mongers, London.pm (Amelia), EPO (Niles), Orlando Perl Mongers and others.

The Onion
The logo of the Perl Foundation, and a trademark when used in conjunction with Perl, the Onion is now recognised as a semi-official symbol for the Perl community. The TPF did not seek to supplant the use of the Camel but merely give an official image that the community could call its own. Since the TPF is a community managed organisation the logo is therefore protected for community uses which is granted to a wide number of groups and initiatives.

Camelia
In creating the logo for Perl 6 Larry Wall drew inspiration from the people he always intended to target. Larry would love to see a new generation of programmers in our world, he would love to see a new generation of inventors, his aim was to be friendly and encouraging and with her bright colours Camelia certainly addresses those concerns.

There is also for me an interesting parable in the choice of a butterfly for Perl 6 as the butterfly is an example of a morphic creature. The butterfly has passed through an intermediary, chrysalis, phase and changes from an earth bound crawling insect into a beautiful creature of flight. What better metaphor for the creation of a language from one base system into something else?

The Raptor
I have written before, see note 5 below, how we came to use the image of the Raptor, or more correctly the Velociraptor,5 as a logo for Perl 5. The main use is to signify the two different communities and languages. As with Perl 6 where the use of Camelia is not enforced, the use of the Velociraptor is the choice of the individual.

The current Raptor was created after a conversation between several people on the EPO irc channel, the two most relevant being myself and Sebastian Riedel, a popular image was created after that conversation by Sebastian and is available for use with a CC licence on Github.6

CPAN and MetaCPAN
For many years there has been a CPAN logo that reminded the visitor of libraries of knowledge contained in a single location. In the early days of MetaCPAN they used a variant of the same logo but in 2011 a competition, sponsored by the EPO, was held to find a new logo for MetaCPAN with the eventual winner being used for the whole of the project from this date.

Many of the logos used by projects, communities and libraries in the Perl community are created by the members of that group, they are identifying marks and in the case of some are used to great effect. A particular favourite and relative newcomer is the logo used by Cluj.pm for their meetings and events.

Notes[1] Certainly it is widely held in the Perl community and when I have personally spoken to people who have attended a variety of language conferences they applaud the general spirit of the Perl community.

[3] There is a high level of insightful jest, punning and complementary mockery in the religious overtones used by the denizens of the Perl Monks, none of it is intended to be offensive.

[4] Leading me to make witticisms such as why have only one organisation when a dozen can do the same job.

[5] http://mdk.per.ly/2011/03/02/evolution-of-the-velociraptor/

[6] https://github.com/kraih/perl-raptor

The Events

Yet Another Perl Conference (YAPC)
In 1987, ten years since the release of Perl 1.0, a group of aspiring Perl programmers gathered together and held the very first event of the Perl world, the first Perl Conference (TPC). Within a single year of that event they had changed the whole nature of the Perl world in both the number of groups, contributors and social structures that were formed.

These early conferences were held in conjunction with O'Reilly media who would, in 1999, take this event and transform it into the Open Source Conference (OSCON).
In the same year, 1999, the first ever Yet Another Perl Conference (YAPC) was held in the United States. The community had grown to hold its own large events. In 2000 Europe joined the fray and held its first YAPC. Since then we have held yearly ::EU and ::NA events; we were joined by an Asia conference which is currently the world's largest Perl event; a conference in South America which evolved into the ::Brasil YAPC and the yearly YAPC::Russia.

For 2013-14 there are plans to hold a conference in Australia,1 ::Australia/::Oz(?), and even plans to attempt a YAPC/Workshop in India and perhaps even Africa.

Workshops
A Perl Workshop often indicates a smaller event to the YAPC and is held on only one or two days, it may also be country or language specific. The first ever was held in Germany in 1999. Since then a number of countries, including the United Kingdom who hold the largest Perl workshop with the LPW attracting close to 250 guests each year for one day, hold Perl workshops.

There have been a number of Perl workshops, some return annually to the same location, others move around a region and are hosted by different user groups. To date we have had workshops such as the:2

German Perl Workshop

Nordic Perl Workshop

London Perl Workshop

French Perl Workshop

Frozen Perl

Orlando Perl Workshop

Israel Perl Workshop

Korean Perl Workshop

Baltimore Perl Workshop

Italian Perl Workshop

Kiev Perl Workshop

Russian Perl Workshop

Portuguese Perl Workshop

Pitsburgh Perl Workshop

The coming year should reflect the growing number of Perl Workshops with the possibility of events being held in new regions.

Other Events
Perl has been a proud member and participant in a number of other events that are both specific to our community and a part of the larger community of Open Source. With local and international events such as: the UKUUG/F/LOSS Spring and Autumn Conferences in the United Kingdom, the Dynamic Languages Conference in the United Kingdom, the Open Source Developers Conference in France, OSCON in America and FOSDEM in Belgium.

Perl has also, since 2008, held the Quality Assurance Hackathon in a different country each year to gather many of the luminaries of the Perl QA world who gather and create new standards and work on projects relating to QA in Perl.

In 2012 we also saw the first ever Quack and Hack Hackathon sponsored by DuckDuckGo, the Moving to Moose Hackathon, and the Perl Reunification Summit held by Djikmat.

Perl has also participated in both the Google Summer of Code and Google Code-In that are held in the spring and autumn respectively.

Notes[1] There was a Perl conference as a part of the OSDC in Australia, but to my knowledge no stand alone event similar to a YAPC.

[2] A comprehensive list was hard to compile due to there being more than one system of hosting events and some being singular occurrences. I apologise for any omissions and ask that they be noted in the comments for future inclusion and reference.

The Code

With a period of twenty-five years, thousands of contributors and an eco-system that encourages participation and sharing it is inevitable that there would be a number of projects, libraries, modules and scripts that have collected and sometimes evolved.1 Before the advent of Perl 5 the resources for collecting these scripts were few and far between, and one or two have fallen into legend and are now taken out by wizened Perlers around a flickering light where the Tales of Terror are shared and Matt's Script Archive2 comes into its own magnificent glory. In these Enlightened days it is easy to mock those early pioneers and to smile fondly at some of the erroneous efforts, but they were the only resource of their time and they were formative in the evolution.

CPAN
With the release of Perl 5 in 1994 a new boundary was made between the code of the past, Perl 4, and that of the future. This was complemented by the creation of Perl's largest resource the mighty Comprehensive Perl Archive Network. CPAN is the largest archive of its type and has been emulated in other scripting languages to varying degrees of success. It is a resource where code authors can request an account, Pause Account, and then upload or contribute to code that is in the archive. CPAN predates GitHub by many years and was the model for how one joined a project by being awarded a commit-bit, or co-maint of a module or script.

The evolution of CPAN has brought us to the modern day where we have MetaCPAN, a web service and API for accessing the archive that is CPAN and for working within it. We also have CPANPLUS and CPANM which are abridged version of the complete archive. Many companies complete their own DarkPAN, a personal version for use in-house and there is also the vast BackPAN which contains scripts and libraries that may not be compatible.

The great advantage of the CPAN was that we were suddenly able to run distributed projects across multiple contributors, timezones and countries. No longer would we need a single archive of scripts maintained by the author of the original project, we could share, contribute, manage, and even surrender our work to other people. This allowed many projects to grow, in fact it facilitated a thriving community of contributors. CPAN is also a tool for installing modules and libraries and managing your own Perl with, if required, custom dependencies and versions.

CPAN has spawned an entire section of itself called the Acme namespace, an area where the code that is left there may be a prototype, a test, an early attempt to solve an issue, a throwaway hack that others might use or just a bit of fun. To view the whole of CPAN visually you can use the Map of CPAN3 which allows you to pan and zoom around the archive as if it were a geographical location, it has also spawned a video showing how the map has changed and evolved over time.4

Perl 5 Porters
With the release of Perl 5 we also saw the creation of a new sub-group of programmers in the Perl community, the P5P or Perl 5 Porters. This group was originally responsible for porting from Perl 4 to Perl 5 and since then they have managed the releases, code quality, evolution and management of the Perl 5 Core. From amongst their ranks they elect a PumpKing, a single person responsible for directing the group and development, in essence a chair of the board.

The current Perl 5 PumpKing is Ricardo Signes who has guided Perl 5 through a significant period where we come to terms with the evolving nature of a written release schedule and forward plan for the evolution of the core. The previous PumpKing was Jesse Vincent who managed the core through its period of change from general releases when the code was 'ready' to a schedule of releases, development, deprecation; these two have changed the manner in which both the development of the Perl Core and the manner of releases are managed, streamlining the process, making it efficient and providing us with a recognised plan for continuing development and forward progress while understanding the need for careful management of backwards compatibility.

Strawberry Perl
The first release of Perl for the Mac appeared in 1992, and with the advent of OSX it has been a part of every Mac release,5 but we had to wait until 2007 for a CPAN available version of Perl for Windows. Strawberry Perl was a response to the need for a OS Licenced version of Windows Perl.6

The project has brought the ethos of CPAN, Perl and F/LOSS to a traditionally closed architecture and continues to be evolved with each new version of Perl. The maintainers do their best to make the latest version of Perl available on Windows at almost the same time that it is released to Unix based systems.

It should be noted that these days Strawberry Perl usually comes bundled with Padre an IDE that is developed in Perl and suitable for using in a multiple of environments. Padre has a strong following amongst many developers who like to use a powerful IDE of this type, and is a good default for those developing in a Windows environment.

Perl 6
In the year 2000 there was a movement to create a new version of Perl. Instead of it being an evolution of existing code the plan was to formulate a list of what was required in the language and what was not required, from that a language specification would be created and this would be the template for implementations of that specification. This was the Perl 6 project.

Since then we have seen twelve years of continuous research, development, implementation and release of code and practices from the Perl 6 team. The work undergone on this project so far has inspired a number of releases, including the currently popular Rakudo* project.

There is no full specification-complete version of Perl 6 released to the world, and it has been a source of some jest that we have waited so long. This is however underselling the important work already carried out and the fact that many of the practices, methods and code has been back-ported to the Perl 5 core. There are many modules and libraries written in Perl 6 and some authors have ported their Perl 5 work to the language.

Moose
One of the largest projects, and changes to Perl 5 inspired by the work on Perl 6 has been the creation of the Moose postmodern object system. Moose borrows heavily from Perl 6 along with CLOS (Lisp), Smalltalk, Java, Beta, OCAML, Ruby etc. And uses them in a thoroughly Perl 5 manner.

Moose extends the Perl 5 object system in order to make object orientated programming easier, allowing programmers to think more about the task they need to perform and less about the mechanics of how to achieve that task. Moose has now been incorporated into a number of projects and its use in Perl 5 re-defines to many the maturity of Perl 5 Object Orientated programming.

The Well-Known Projects
In the early days of web frameworks, that used MVC (Model-View-Controller), Perl had a number of projects. Some popular libraries were Mason (an MVC framework) and Class DBI for work with the databases, there was also Template Toolkit for designing re-usable view elements. These were often used in conjunction with custom, client specific, cgi frameworks to create a vast number of business models and systems.

These systems, and they are still used to this day, led to a range of younger projects as a new generation of programmers appeared on the scene. The first widely popular framework was Catalyst, now considered the largest of the Perl frameworks, its strength lies in the vast number of modules and elements already written for it allowing almost every eventuality to be considered. Catalyst has been followed by the popular frameworks of Dancer and Mojolicious.

Dancer seems ideal for completing and controlling multiple sites and systems and has gained a following with people wishing to move away from cgi while leveraging the best elements of CPAN.

The original author of Catalyst created a new framework, Mojolicious, which is designed to be dependency free. Mojolicious is a out-of-the-box solution to web development, rather than using CPAN it comes almost complete with many of the essential elements in the core of the system. Mojolicious seems designed to allow the rollout of a project and a complete solution for systems.

But What About...
So we arrive at the contention, at this point Perl people will be tearing their hair out and screaming abuse in my general direction,7 as I come to conclude this section without mentioning their favourite Perl tool. Which is the issue, Perl has so many good tools and it has a culture that not only celebrates sharing and contributing but in learning.

One of the major habits in the Perl community is learning from other languages, we are inspired by and cautious of the way other languages work and implement. This is most evident when Perl gurus like Miyagawa look at WSGI and create PSGI or Matt S. Trout who looked at the way other languages did remote server management over ssh and decided that Perl could have Tak or his playing with the parser that created Devel::Declare. Perl is not re-inventing the wheel, more it looks at what works and what doesn't work and decides to implement it in a Perlish manner and hopefully a more code complete way.

There were a number of projects I could have spoken about here, I could have given some time to how Plack has revolutionised how our code is deployed to servers, or spoken about dependency management using Carton. I could have discussed www::mechanize and its importance in Perl being used as language-of-choice for web page automation, I never mentioned Web::Simple, Rose::DB, Web::Graphite, POE, Distzilla, the .Net, www or xml namespaces, or a hundred other influential modules that have shaped our world.

The strength of Perl is the huge ecosystem that has evolved with it, we have seen efforts to control and understand that ecology with the creation of CPAN, MetaCPAN etc. The challenge for the coming years is the aggregation and understanding of this vast resource, MetaCPAN makes a start on how we can access the resource in a modern fashion, but we are only just beginning to see how we can present this information.

Notes[1] But which of these would I have to focus on in a twenty-five year retrospective? Whichever I include may seem contentious and those that I exclude just as much an issue. Tracing the formative projects, code and changes would be a grand task and I would be the first to encourage it to be done, but not within the confines of this retrospective.8

[2] For accuracy I should note that I played a little with history for the essence of this paragraph, the Year by Year Repose will confirm that Matt's Script Archive appeared in the same year as CPAN.

[3] Map of CPAN: http://mapofcpan.org/#/

[4] Video of the Map of CPAN: http://vimeo.com/51893508

[5] Though there are some issues to do with which version is used.

[6] To my knowledge before Strawberry Perl gave us a functioning and complete Windows installable version of Perl one had to use Cygwin or Active State to have Perl on Windows.

[7] perhaps they might even burn an effigy of me.

[8] It's not as if people wont be coming after me for missing out Perl Golf or Perl Poetry.

Code Completeness

I have mentioned that the Perl community and ecosystem varies from other languages in some ways, or more likely evolved earlier due to its maturity. One of the major differences is in the testing culture, this is not to suggest that other languages do not have such a culture, but that they do not have a culture like the one in Perl.

The testing culture of Perl has led to a vast range of modules and systems that help programmers to develop competent code that is feature rich but also complete in its quality. To begin we created the Test Anything Protocol (TAP) which by its name suggests that testing is prevalent, many projects are not prototyped in code but defined in tests, we also use methods such as test-driven deployment.

CPAN Testers
In 1998 Graham Barr and Chris Nandor conceived the system that is CPAN Testers. This important group takes every module uploaded to CPAN and runs it against every operating system and version of Perl that it will be deployed against, this generates a report of any issues which is automatically reported to the author of the module. This system is repeated to ensure that any changes or evolutions in code are accounted for. This is a high degree of quality control that produces hundreds of thousands of reports each month, there are currently over 26 million reports.

CPAN Testers is maintained like most projects in the Perl world by volunteers and donations from the companies who use its vital statistics.

CPAN testers is complemented by Perl Brew which is a project that allows you to run multiple versions of Perl on the same install of an operating system allowing a variable code environment for developers.

Code Veracity
There is a suspicion that has been inherited from the early days of Perl that the community is populated by random hackers who spew out illegible scripts to solve single issues. This is heightened by people referring to Perl as duct tape or the glue of the internet and has led through some poor examples and low quality programming to a reputation that the language does not deserve.

Much of this suspicion comes from the powerful TIMTOWTDI (There Is More That One Way To Do It, Tim Toady) which allows a wider variety of answers to the same question. In the community we also use variants of BCINABT (Because Consistency Is Not A Bad Thing, bicarbonate) to suggest that although one can do almost anything doesn't mean one should and that there are generally agreed ways of doing something.

To this end we have elements such as 'use strict' and 'use warnings' which can be placed at the beginning of a Perl file to prevent random hackery. We also have many modules that help the neophyte, to the grand master, program. Modules such as the mighty Devel::Cover, and TAP::Harness, which allow you to verify your code, along with Perl Critic, Perl Tidy which will aid you in building compliant code. Much of this work has been inspired by, and conforms to the sublime Perl Best Practices by Damian Conway and to the general need to keep consistency of quality while allowing freedom of implementation.

Veracity is also a by-word for the standards ensured by the Perl 5 Porters. For a number of years David Mitchell has been working on fixing existing bugs in the Perl 5 Core, after a very successful year of fundraising by the Perl Foundation in 2011 on the Perl 5 Core Maintenance Fund he was joined by Nicholas Clark. Between them these two, along with the many volunteers who work without specific grants, have been improving the standard and quality of the code in the Perl 5 Core.

Code Quality
Verifying code quality; a mature attitude to testing while planning, developing and deploying systems; a suite of tools to help with ensuring best practices and internal project standards; these elements have gifted the Perl community with a respect for code quality. This led to the start of a yearly conference that focuses on Quality Assurance. The QA Hackathon (Perl) was started in Oslo in 2008 and has been held in a different country for each year since then. The focus of the event is to gather some of the finest developers in the Perl community to one location to discuss, develop and plan improvements to code quality over the coming year. In 2013 it will once again return to the United Kingdom.

Perl has always relied on code quality and veracity, it is why we have a fondness for ensuring good backwards compatibility. Because of the many years of development and deployment of sometimes critical systems there is a culture of ensuring that the latest code is as compliant with existing code as is possible. This is not always possible, but the work that is done is by turn surprising and amazing.

The Written Word

The very first documentation for Perl was back in 1987/88 with the creation of the original man perl for use on Unix systems. Like any software project the quality of this document has improved and varied over the many years of Perl evolution. From an early age Perl attracted books teaching you how to get the best from the language. The very first book, Programming Perl, the now legendary Camel book was printed in 1991 (further editions in 1996, 2000 and 2012), it was followed by books such as Learning Perl in 1993 (with editions in 1997, 2001, 2005, 2008 and 2011), Beginning Perl (first version in 2000, 2004 and 2010), the less well known but respected Perl Cookbook in 1998 (second edition in 2003), the seminal Higher Order Perl in 2005 and in that year we also were graced with Damian Conway's Perl Best Practices, the Modern Perl in 2011 (with a second edition in 2012) and this year a new Beginning Perl (2012) by Curtis 'ovid' Poe.

There are many other books that have become well known in the Perl world. One of particular note for me and those developing web frameworks, and in particular using Catalyst as a solution, was the Definitive Guide to Catalyst, Kieren Diemet & Matt S. Trout (with others). this book not only demonstrated how to use Catalyst but gave a good grounding in how to develop, deploy and manage applications for modern usage.
However the wealth of Perl material is not just contained within published books, the projects themselves often have their own manuals, FAQs, Wikis, Advent Calendars and guides. Famously Perl runs several advent calendars each year and has the websites such as Learn Perl,1 the Perl FAQs,2 and Perl Doc.3

Over the many years of evolution we have also seen publications such as the Perl Journal arise, this was joined by the German publication $foo Magazin, these are complemented by initiatives such as Perl News, the idiosyncratic Perl Weekly, blogs.perl.org, and the Ironman Competition and aggregated blog site.

With many Perl programmers answering questions on sites such as Slashdot, on Facebook groups such as Perl Programers - MetaCPAN - CPAN; on LinkedIn in Perl Mongers - Perl and Perl Foundation, twitter, irc on Perl's own IRC server irc.perl.org - as well as freenode #perl, and in the long standing gateway to Perl knowledge the Perl Monks the supplementary knowledge to slot between references and articles is massive. To complete this there are many user groups such as the Perl Mongers who maintain mailing lists and meetings to further share the written information.

[1] http://learn.perl.org/

[2] http://learn.perl.org/faq/

[3] http://perldoc.perl.org/

Towards A Future

Had anyone asked Larry Wall on December 18th 1987, 'hey, Larry, what do you see in the next twenty-five years for Perl?' I doubt his reply would have been accurate, my thoughts would be along the lines of 'hell, I wasn't planning on using it much after I leave this job, why would I be using it in a new century?'. Now we could ask Larry what he actually would have said, but like the witty backronyms for Perl itself we probably couldn't trust him to be serious with us.

So what does the future hold for Perl? Well I don't have a crystal ball but I cannot see the language fading from usage in the next quarter century, the truth of the matter is that even though there are languages that can do some of the things that Perl does, some of them do some things better, others do things Perl wasn't designed for, there is no language that has been designed to do the things that Perl is very good at doing. No language in the current scripting languages seems to have the flexibility, maturity and extensibility of Perl. The main power of Perl has always been its ability to quickly adapt, and be adapted, to suit purposes. It has been referred to as glue, as tape, as a Swiss Army Knife with a chainsaw attachment, as a command line processing language. The truth is that it is all of these and more.

The power of Perl is that it does not limit your expectations, it doesn't control your involvement, to some this is a scary prospect, to those who understand that there are protocols and methods for controlling and throttling that power Perl becomes a set of tools and the toolbox that holds them.

Perl will continue to evolve as a number of implementations of the same language, I would imagine we have many years of Perl 5 evolution still to come and at the same time we will see an implementation of the Perl 6 specification. But I would also hazard that the Perl 6 developers will add and evolve their specification and move onwards as this is not a community that is used to standing still.

The greatest challenges we will face for Perl is a shifting end-user base that will become more reliant on devices that are feature focussed but crippled in application choice, the rise in mobile devices will continue and Perl will need to evolve to work with that. A better challenge for us to face would be the integration with electronically aware, and connected devices and systems, the apocryphal internet of things, in this Perl could be a powerful tool. I also believe that the more we see a divergence of language uses in the other scripting languages the more they will face issues in their core designs, issues that Perl avoids due to its malleable nature, what some believe is the crippling factor for Perl is likely to be its saving grace as it has the power and flexibility to cope with the shifting goalposts of an increasingly technologically reliant world.

The Changing Community
For the community itself we face a number of challenges, statistically we seem to be generally an ageing body who are predominantly white, male, and often bearded.1 Without having a full statistical package of a number of varying communities over a period of years I cannot say if we are a part of or separate to a trend that may be prevalent in the industry itself. Certainly in my experience there have been slight, and I do mean slight, changes in the participation at the conferences I have managed.
There is a balance between attracting a wider mix of people into our community, making it an attractive, safe and profitable place for them to grow and forcing a change that may not be supportable. These are questions that we will seek to address in the future as we attempt to evolve our community along with our language, to be more welcoming, accepting and tolerant of people, it should be natural to embrace diversity.
To this end the Perl Foundation have taken the bold step of creating a Advocacy Committee to do work in the Perl Community led by the widely respected Yaakov Sloman. In the coming years he will be working hard to grow and evolve our community to match the maturity and strength of our language.

A Chance to Meet and Greet Each Other
An element that has grown each year that I have been a member of the Perl community is the number of organised events by region. These are the hackathons, workshops and technical meetings. In the past year we have seen a rise of people wishing to hold conferences in countries where there has never been one. YAPC Europe will next year be held in Kiev, and as previously mentioned a number of new workshops and conferences will be held in Asia, and Australia.

Also growing is the number of commits to CPAN and the number of programmers with a Pause Identity, as the statistics on CPAN have attested, and after a few years of slow growth Perl is once again rising on many of the indexes that track jobs, development and usage.

To the next 25 years...
So as we celebrate the start of the 26th Year of Perl with its 25th Anniversary I hope you will be cheered by the wealth of the Perl World. The future for Perl seems to be full of challenges, surprises, evolution and, hopefully even more growth and diversity. See you at the 50th Birthday.1

Notes[1] Only one thing is certain, in twenty-five years time they are going to have to pay me to write another of these.

A Year by Year Repose

It is with grateful thanks to Dave Cross that I print here a list of the changes and developments he has recorded for the last twenty-five years of Perl. Like my own list it is not comprehensive, but it does contain many elements that were significant in the history of our language.

The following is the short list of sources, and resources, I used to fact check and create the article, like the piece itself it is in no way comprehensive and I will accept any corrections, revisions or additions and take all responsibility for inaccuracies or omissions.