Raku: Why It Hasn't Caught On

I've been watching Raku since it was still Perl 6, back when Larry Wall gave his State of the Onion talk in 2000. Fifteen years from announcement to 1.0. You can defend the timeline; they were rebuilding the language from the ground up, grammars, gradual typing, a real MOP, the whole catalog, and the result is something I genuinely enjoy writing. But anyone who pretends the wait didn't have a cost is just wrong. Pugs gave us something runnable in 2005, Rakudo Star landed in 2010 but with a real 1.0 release not shipping until Christmas 2015. By then many of the developers who would have championed it had moved on. Python, for example, had already eaten the scripting world alive. The window where anyone outside the Perl tent was paying attention closed somewhere around 2008, and nobody really noticed.

The Perl 6 name was a wound the project carried for twenty years. Every conversation about it started the same way: no, your Perl 5 scripts won't run; no, it's not an upgrade; yes, it really is a different language. The rename to Raku in October 2019 was the right call. But it should have been the call in 2010. By 2019 the confusion had already done its work. Most of the people who'd written off "Perl 6 is taking forever" never came back to check what Raku had become. Clearing the air after the room had emptied was the tiniest of victories.

Breaking compatibility with Perl 5 was, on the merits, the right design choice. You can't carry thirty years of accreted Perl idioms forward and end up with the language Raku wanted to be. But the cost was real... a Perl 5 shop with a working codebase had no migration path. Not really. Inline::Perl5 is an honorable attempt at backward compatibility, but it carries a performance tax, source filters don't survive the trip, and module support is uneven enough that you can only find out which CPAN distributions work the hard way. Any sort of natural upgrade path does't exist, so the Perl 5 shops that might have grown into Raku shops stayed on Perl 5. Which is fine, Perl 5 is still good. But it meant Raku had to recruit from a cold start instead of converting existing warmed-up developers.

By the time Raku could stand on its own, Python had won general-purpose scripting, Ruby, Go, and Java owned the parts Python didn't, and JavaScript had absorbed everything that touched a browser. Raku showed up with grammars that make every other language's regex capabilities look embarrassing, real concurrency primitives, junctions, and a metaobject protocol you can actually use. Technically it has things its competitors still don't. But features don't move adoption. Ecosystems and inertia do. The Raku module ecosystem is a thin shadow of CPAN. I've never been able to pitch it at a job and no manager will sign off on a language they can't hire for. How many developer tutorial blogs are written in Raku? None of that is the language's fault, but it is the language's problem.

The community is small and the community is good. The people who stuck around are the kind who'll patch a module the same day you file an issue. The Raku conversation on IRC, is consistently sharper than what passes for discourse in some bigger language communities. I've shipped modules to the Raku ecosystem and watched them collect single-digit downloads and zero reported issues... not because anything was wrong with them, but because there's almost nobody downstream. That's the part that wears on you. You can have a language you genuinely like, written by smart people you respect, and you still spend most of your time writing it alone.

I'm still here. I just wish there were more of us.

raku (17)