Guest Post: Why Perl isn't Going Away Soon (Or Ever)
Lately, the Perl language has had less buzz surrounding it than many other languages and development environments, but Perl is still a key component on the Internet. For this guest post, we asked Jeff Hobbs, Director of Engineering at ActiveState, to weigh in on the topic.
Why Perl isn't Going Away Soon (or Ever)
By Jeff Hobbs, Director of Engineering, ActiveState
Out of sight, and out of mind. Perl has taken a backseat the last few years in terms of hype, but the language is alive, well, and still holding the Internet together. With the release of Perl 5.12 a few weeks ago, it's time to take stock of and address the misconceptions around Perl.
Yes, Perl 6 is still a long way from being production-ready, by many metrics of "production-ready". We'll get to that more in a moment. However, Perl 6 development is being continued in parallel with Perl 5. Though it might not be obvious from media coverage of the open source landscape, the Perl community is still thriving, evolving, and releasing consistent improvements to Perl 5 and supporting technologies. That's really important, so let's say it again: Perl 5 development is continuing at the same time as Perl 6 development.
The Perl 5 community is moving forward at a good clip.
Look at the Perl 5.12.0 release announcement from mid-April. More than 200 contributors have poured in over 5,000 changes in the two years of Perl development since 5.10 was released. Development won't stop there, of course. The Perl development team has moved from feature-related releases to time-based releases. Perl will have monthly development releases and a yearly stable release for the Perl 5 platform.
Odds are, you didn't read about the 5.12 release outside of Ryan Paul's overview on Ars Technica. You see, Perl not being dead and just continuing business as usual doesn't make for compelling news. Also, let's admit, the Perl community has a great deal of competence in producing software, but couldn't market its way out of a soaking wet paper bag.
So, the primary failing of Perl these days is an insufficient quantity of hype and clarity regarding the future of the language. If Perl isn't being hyped at the same level as other interpreted languages being used today for enterprise applications and Web development, why is it neck-and-neck with other languages in its class?
The answers are longevity, maturity, and a rich ecosystem of development tools and modules that developers can leverage for almost any programming task. Consider the Comprehensive Perl Archive Network (CPAN). CPAN is an enormous collection of software and documentation, largely unmatched outside of the Perl community. Yes, other languages have similar repositories patterned after CPAN -- but thus far none have matched CPAN for its size and scope. CPAN continues to grow at a rapid clip.
Perl's ecosystem for consuming modules continues to evolve as well. While CPAN's collection of Perl modules is much beloved in the Perl community, and envied outside of it, CPAN.pm has (rightly) been criticized for its lack of simplicity. As powerful as CPAN is, installing modules using CPAN.pm is a little bit frustrating, particularly for developers new to the language.
Taking that to heart, Tatsuhiko Miyagawa has recently come up with cpanminus. As the name suggests, cpanminus is not quite as full-featured as CPAN.pm -- nor does it need to be. The idea is to just get the job done, quickly, and let developers get on with it. There is the Catalyst web framework that speeds up web development in a similar fashion to Ruby on Rails -- but with Perl's CPAN behind it. There's also ActivePerl which is a commercial-grade Perl distribution with a convenient package manager for easy Perl module management. The Plack webserver interface. You might notice that Perl is borrowing ideas from other languages. This another sign of a healthy community, and influence coming full circle. There's a lot of Perl in PHP and Ruby, and now the developments in those communities are coming around to Perl.
Signs of Life
One only has to look to see that Perl is still thriving. Search Google Code Search for Perl (with the lang:perl search operator) and you'll receive more than half a million results. Ruby is shy of 400,000, Python has a respectable 465,000 results. To be fair, PHP outstrips them with more than 800,000, but that only speaks to the fact that PHP is also amazingly popular.
Considering adding Perl to your list of languages? You'd be wise to do so. Perl may not be as buzzword compliant as PHP or Python, but it's every bit as relevant in the job market. Perhaps more so. A recent search for Perl jobs on Dice.com turned up 4,126 matches against PHP's 2,127. Python matched only 1,742, and .Net only 1,025. Searching LinkedIn turns up 403 results, Python 352, and .Net 439 results. Is this an authoritative metric? No, but it does demonstrate that Perl still commands attention in the job market.
Perl 6 Soldiers On
Since much of the confusion over Perl's health stems from misconceptions about Perl 6, let's address the status of Perl 6 and how it relates to Perl 5.
It's tempting to think of Perl 6 as the successor to Perl 5 in the same way that Windows 7 was the successor to Windows Vista, or PHP 5 is the successor to PHP 4. That may have originally been the intent, but a more accurate analogy is to think of Perl 6 as another sibling in the Perl family. Even when Perl 6 is "officially" released, Perl 5 may continue to be developed and enjoy a life of its own side-by-side with Perl 6.
How is Perl 6? It's moving along with regular releases of Rakudo Perl, an implementation of Perl 6 that runs on top of the Parrot virtual machine. It may not be ready to replace Perl 5 for some time, but it's continuing and should be an interesting option when ready.
Though it may not be readily apparent at first glance, Perl is healthy and growing. After a short lapse, Perl development is picking up and enthusiasm for Perl 5 is as strong as ever.
Disclosure: Jeff Hobbs is Director of Engineering at ActiveState, which offers development, management and distribution solutions for Perl.