Matthew Wilson has requested a $10,000 grant to embed Perl 5 in a potential new VM for Rakudo. While this comes from Ian Hague's Perl 6 Development Grant and not TPF's general fund, the grant process is still under the purview of the Perl Foundation.
I've been thinking about this grant since its announcement. It raises several questions about the purposes of TPF grants in general. In my mind, all grant applications should answer one question:
What's the desired practical effect of funding this work?
Some grants answer that question with ease. For example, Dave Rolsky's work to write Moose documentation produced a large manual which turned Moose from an esoteric project into something people could actually use without having hacked on it. Similarly, Paul Johnson's grant to work on Devel::Cover has fixed several longstanding bugs and added quite a few desirable features. (Even though Devel::NYTProf was sponsored by the New York Times and not TPF, its success reinforces the argument that practical sponsorships and grants have a greater chance of, well, success.) Funding Nicholas Clark, Dave Mitchell, and Tony Cook to maintain Perl 5 has closed a lot of bugs, improved performance, and cleaned up a lot of code. Perl 5.18 exists at its current level of high quality due in no small part to these three and their grants.
I should add a caveat here. The suite of projects under the "Perl 6" umbrella have always been research and development. Even though that may not have been the initial intent of the project (and certainly not the intent of all of the developers who've come and gone), there's never been a serious and sustained effort to turn any of those projects into a product suitable for general use. (I can imagine howls of protest over this statement, but I'd need evidence if more than a couple of handfuls of people who've ever used any of these projects as products to consider that it's even possible, let alone a priority.)
Investing in research and development is the opposite of eating your seed corn. It may be what saves your business or project from slow and creeping irrelevance. Certainly the ubiquity and quality of the CPAN and its infrastructure has done more to sustain and expand Perl 5 than almost anything else. (Look, you don't get Moose or Mouse or Moo without the CPAN. Sure, maybe if Perl 5 hadn't borrowed Python's terrible, barely-there object system and had devised something that worked much better, Perl 5 wouldn't have needed Moose, but a lot of worse for a long time gave us a lot more better.)
Yet research and development doesn't always pay off, and you can't always judge its long term success in a short time period. Back in 2000, Perl QA didn't know Test::Builder would take off like it has now. It was just a fun little hack Schwern and I came up with. There are probably a dozen other hacks I perpetrated back in that time that never went anywhere.
Hence my question about the purpose of these grants. I see risks in Matthew's proposal:
- What if MoarVM can't run Rakudo effectively?
- What if the project takes an order of magnitude more time or effort than estimated?
- What if supporting that last 5% of XS modules is difficult, and that lack renders a significant portion of the CPAN unusable?
- What if Rakudo needs another two, five, or ten years to become a usable product?
- What if Perl 5.20 or 5.22 makes a breaking change that the project can't support?
I'm not saying these are likely, but that they're possible. They're not the most pressing question, though:
When will people be able to take advantage of this project in practical ways?
Even if Perl 5 were usable from MoarVM today, I still think it would take years before Rakudo on MoarVM were a usable product for general purposes. Even if that's an optimistic two years instead of five, how is the group overseeing Hague grants to judge the success of the project without waiting two to five years to see if the research has paid off?
Maybe my criterion is too strict. Maybe grants shouldn't be solely for people and projects who and which have demonstrated practical applicability to a measurable quantity of users. (Maybe all of the Hague grants should be considered as funds for research and development that may never have any practical applicability.) Maybe it's sufficient that only half of the awarded grants have a practical benefit. (Maybe 3/4 should, or maybe 25% should. I don't know what's the right ratio.)
I don't know how I'd vote if I were in the TPF group overseeing this proposal. In a hypothetical world with a working P6, I see tremendous value in Perl 5 interoperability. (Goodness knows I embedded Parrot in Perl 5 and then in Ruby several years ago, just to be able to use its grammar engine.) In the real world of 2013 now, however, I can't quite convince myself that Rakudo or MoarVM (and especially Rakudo on MoarVM) are close enough to being real products that anyone can predict what's practical.
Update: A previous version of this article implied that TPF's Grant Committee oversees Hague grants. Private correspondence from a Grant Committee member corrected me that the GC does not oversee these grants.