Did you grow up with one or more siblings? Are you a parent with two or more kids? Then you know that siblings often fight. A lot.
Perl 6 is described as Perl 5’s little sister
That metaphor fits. They share parentage. The languages are similar in philosophy. One is more mature, the other less so. Their communities overlap.
But like siblings, they are rivals. Like an only child confronted with a new baby in the house, they now compete for attention from their shared community. They compete for scarce resources to grow – in the form of volunteers who will contribute time and treasure.
Their economic futures are both in doubt
This is what makes them not just rivals, but mortal enemies.
There are many signs that Perl 5 is in decline. Perl 5 is rarely a first language. The number of Perl 5 jobs is – at best – constant, at a time when technology jobs are booming in the wide economy. New applications are rarely written in Perl 5. This year, the Perl 5 community had to beg for talk submissions to OSCON, which grew out of The Perl Conference in the first place.
Is Perl 5 dead? Of course not. But I don’t think anyone can cite credible evidence that it’s a growth language on par with other “popular” languages. And that’s OK. There’s still value to be had in a good niche.
But now consider Perl 6. Where will it grow?
First, a postulate: given the language similarities, the people that will find it easiest to learn Perl 6 are today’s Perl 5 developers.
Now, let’s consider some scenarios:
Scenario 1: Perl 6 takes off!
With its gradual typing and natural async model, Perl 6 becomes the fastest dynamic language. People flock to it from far and wide. It becomes more popular than Rails in the day. YC startups choose it for competitive advantage.
Perl 5 devs, with their advantage in switching, flock to the new economic opportunities it offers. Companies still using Perl 5 find it even harder to find good devs than they do today, or are forced to pay up for them. Even fewer new project are started with Perl 5. The reasons for anyone to learn Perl 5 become fewer. Perl 5 lives on like COBOL, with a handful of older developers well paid to maintain a shrinking legacy code base.
Perl 6 lives and grows; Perl 5 heads quickly down the path to obsolescence.
Scenario 2: Perl 6 stalls out
Perl 6 winds up plagued by ongoing quality glitches and performance problems. Companies that already have Perl 5 developers (and that would have a competitive advantage retraining them) see no benefits from using Perl 6 for new projects.
With no job opportunities, most Perl 5 devs don’t pick up Perl 6. The pool of Perl 6 developers stays a fraction of the already small Perl 5 pool. With even Perl 5 companies not adopting Perl 6, no one else is willing to risk Perl 6 adoption for new work, reinforcing the lack of economic opportunity.
Perl 5 stays status quo, static in an industry growing exponentially; Perl 6 remains a hobby language.
Scenario 3: Perl 6 winds up marginally better than Perl 5
Perl 6 turns out to be better than Perl 5, but not so much as to attract developers from other dynamic language communities. Companies that use Perl 5 find it cheaper to retrain their existing developer pool in Perl 6 for performance improvements in new projects. Over time, more projects are in Perl 6 than Perl 5.
Perl 5 devs see the winds of change. Those who don’t want to do maintenance work forever pick up Perl 6 to stay relevant.
Perl 6 ekes out a living, stealing increasing production code share from Perl 5. Perl 5 declines moderately faster.
Zero-sum is not necessarily bad
When I say “mortal” enemies, I mean that only one is likely to survive in the long run. I can’t think of a scenario where Perl 6 grows and Perl 5 grows. I can’t even think of a plausible scenario where Perl 6 grows and Perl 5 is unaffected.
So I think it’s zero sum. If Perl 6 grows, then Perl 5 dies faster. If Perl 6 fails to thrive, then Perl 5 keeps the status quo.
Is that bad? I don’t think so. The possibility of wild success for Perl 6 should thrill Perl 5 devs, who would have an advantaged position in the new order.
For Perl 5 devs, the best case is great and the worst case seems to be status quo.
So why is there an undercurrent of hostility between the Perl 5 and Perl 6 communities? I think it’s because the worst case is actually worse.
Scenario 4: Perl 6 stalls, and drags Perl 5 down with it
Perl 6 winds up plagued by ongoing quality glitches and performance problems. Tainted by association, companies abandon Perl 5 faster as Perl 6’s failure makes Perl 5 seem that much more like a dead end. More Perl 5 monolithic apps get re-written as micro-services in trendy languages with easier deployment.
Meanwhile, prolific Perl 5 contributors to p5p and CPAN jump over to Perl 6 to try to help – either betting on Scenario #1 or just trying to save the day. Perl 5 innovation slows, re-raising the “Perl 5 is dead” meme and accelerating economic migration away from Perl 5.
If a tree falls in the forest…
I think this is the fear in the Perl 5 community. If Perl 6 fails, will it do so quietly, allowing the Perl 5 status quo to continue? Or will it suck away resources from Perl 5 and harm Perl 5’s already shaky reputation further, hastening the decline?
So I’m not surprised by tension on both sides. I think it’s natural.
Just like sibling rivalry.