Raku: Why It Hasn't Caught On
In the vast realm of modern programming languages, some rise to prominence while others remain forever in the shadows. Raku, initially named Perl 6, is one such language that, despite its powerful features, has failed to gather a developer base large enough to cause the language to become mainstream. Here's my take on why Raku has failed to catch on, based on personal experience, observation, and lots of waiting.
Never-Ending Development
Raku's development history is an epic tale that stretched on for far too long. The language started its journey in 2000 but didn't see an official 1.0 release until 2015. Fifteen years is an eternity in the software world. During this time, the excitement and anticipation dwindled, leaving many Perl 5 developers disillusioned. By the time Raku did arrive, Perl 5 interest and usage had slowed while other scripting languages rose to great popularity. Perl 5 experienced stagnation with many fewer releases during the early years of Raku development.
Raku's extended development and late 1.0 release turned out to be too little, too late in the big picture of available scripting languages.
The Name Game Misstep
The initial branding as Perl 6 was a major misstep. Perl 5 users were expecting an upgrade, but what we eventually got was a completely new and different language. And then Raku's re-branding came too late to fix the confusion. I remember the frustration and disappointment among Perl developers on IRC who had strong feelings, on both sides of the rename debate. In my opinion, the name change should have happened much earlier, to clear up misconceptions and manage expectations properly.
Compatibility Conundrum
Raku's lack of backward compatibility with Perl 5 turned out to be a significant barrier. As a long-time Perl 4 and 5 developer, I found the idea of having to rewrite extensive codebases to switch to Raku very unappealing. The incompatibility was a deal-breaker for many, myself included, who didn't see the value in converting any existing Perl 5 codebases to Raku, especially not anything running in production. Not to mention, something like "Apache mod_raku" still does not exist.
Inline::Perl5, a seemingly dead project, is an often suggested method for running Perl 5 code under Raku. I can tell you from experience that it has many downsides. Despite its robustness, there are many severe limitations to be aware of:
- Source Filters: Modules that rely on source filters are not compatible because these filters are designed to process Perl 5 syntax specifically.
- Low-Level Modules: Modules in the Devel:: namespace and others that perform low-level operations may not work as expected.
- Introspection: Modules that depend heavily on introspection may require additional work to function correctly with Inline::Perl5.
- Performance Overhead: Since Inline::Perl5 involves embedding a Perl 5 interpreter within a Raku program, there can be non-trivial performance overhead, especially for intensive tasks.
- Compatibility Testing: Not all Perl 5 modules are guaranteed to work and many never will. Compatibility is on a trial and error, case-by-case basis.
Unimportant in the Shadows of Competition
Raku boasts some advanced features, indeed, but its appeal remains niche. By the time Raku was ready for prime time, languages like Python, Ruby, and JavaScript had already established themselves as the go-to choices for developers looking for powerful scripting languages. These other programming languages had huge, vibrant communities, extensive libraries, and industry backing. Raku, despite it now being some 9 years since its 1.0 release, remains an underdog trying to compete with well-entrenched giants. It's hard to justify adopting a new language when others already do the job well enough, and have massive ecosystems to support them.
The Community Factor
A language's success hinges on its community, and Raku's community is dedicated, but tiny. Compared to other languages there are fewer resources, libraries, and frameworks, making Raku a much less attractive option to developers starting new projects. I wrote several Raku modules and zero of them sparked any sort of community interaction or visible usage. Interest in Raku is low, on most every front.
Not Much Hope
Despite these challenges, I'd love to see Raku gain more traction and become mainstream (not having a near-zero number of available jobs), but it's 2024 and I just don't have much hope that will ever happen.