The new Perl 5 core release schedule raises some interesting questions for Perl module authors. In the past, major version releases of Perl were unpredictable. There were approximately two years from 5.005 to 5.6.0, then another two years to 5.8.0. After that, it took a whopping five years til 5.10.0, and then about 2.5 years til 5.12.0.
However, that’s all about to change. The Perl 5 core developers have moved to a timeboxed release plan, and there will be a new major version of Perl once per year. Surprisingly, this doesn’t seem to mean that each release has fewer changes. Instead, the fact that you can do work on the Perl core and see it released on a predictable schedule seems to have invigorated Perl core development. Perl 5.14 will have a lot of interesting new features.
In the past, I’ve supported 2-3 major releases of Perl for my modules. For a long time, that meant 5.6.x, 5.8.x, and 5.10.x. Since there was such a long gap from 5.8.0 to 5.10.0, I started dropping support for 5.6.x before 5.12.0 came out, and I didn’t hear too much kicking and screaming.
But with once-per-year major version updates, supporting only 2-3 major Perl versions may be a problem. Perl’s newly invigorated release schedule clashes with the support schedules of enterprise Linux distributions like RHEL in a big way. RHEL 5 was released in early 2007, and will be supported until 2014. RHEL 5.5 is still using Perl 5.8.8. RHEL 6, due out some time in 2011, will upgrade to Perl 5.10.1, meaning Red Hat is committing to supporting that Perl version until 2018, long after the Perl core developers have stopped supporting it.
What’s a module author like myself to do?
The Moose core team discussed this recently, and we had some tentative conclusions.
First, dropping support for 5.8.x is a special case, because 5.8.x was the newest major version of Perl for a really long time (five years), longer than other major version of Perl. That means 5.8.x was the only Perl available in every major Linux distro (and probably BSD too) until very recently.
We probably want to wait until all the major distros have shipped with Perl > 5.8.x before we drop support for it. Debian and Ubuntu are already on 5.10, and RHEL 6 should be out soon. OpenSUSE lists 5.12.1 (wow, good job, OpenSUSE), it looks like FreeBSD has also moved to 5.10.1. We’re making progress on the “drop 5.8.x” front. It seems reasonable to drop support for 5.8.x sometime in 2011 or 2012.
Since dropping 5.8.x support is a really big deal, we’ll probably want to make a big deal out of it for Moose too, possibly doing at the same time as we bump Moose’s major version number. We also want to have plenty of lead time, at least 6-12 months.
It seems unlikely that any future version of Perl 5 will ever get as solidly entrenched as 5.8.x. Given that Perl 5 is releasing a new major version each year, we can hope that end users will become more accustomed to upgrading their Perl 5 core installs on a regular basis. Realistically, I think distros and end users will probably end up skipping at least one major version between upgrades.
The Perl core team is only “committed” (I use this word loosely) to providing critical security patches for three years worth of Perl releases. In the future, that means 3 major versions of Perl at a time. That’s probably a good guideline for module authors too.
Module authors, especially authors of widely used modules, should start thinking about this soon. Perl 5.14 should be out in early 2011, making it the second major version on the new release schedule. Once 5.16 comes out in 2012, I think we’ll officially be in a new era of Perl 5. I hope that Moose and other major Perl modules will have a clearly defined policy for Perl version support before 5.16 comes out.