Will Parrot ever truly deliver?

Earlier today I was reading an article about Parrot. Parrot is, as stated on the project’s Web site, “a virtual machine designed to efficiently compile and execute bytecode for dynamic languages. Parrot currently hosts a variety of language implementations in various stages of completion, including Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, and a .NET bytecode translator.”

So Parrot does sound like an interesting piece of technology. It’s understandable how a common runtime for scripting languages could prove beneficial. But will it ever be a platform suitable for serious, production usage? I have my doubts.

Parrot has been under active development for quite some time now. The initial 0.0.1 release was made on September 10, 2001. During 2007, we’ve seen a release every month or so. So a lot of effort has been put into Parrot over the past six years. It has surpassed one of the major stumbling blocks with many Open Source projects, in that it has managed to build at least some development momentum. Unfortunately for its supporters, Parrot has never really seemed to catch on. I think there are a number of reasons for this.

Stability is probably the first problem. I don’t mean “stability” in terms of the runtime crashing, or anything of that sort. I’m talking about “concept” stability. There has always seemed to be a relatively large amount of change between releases. While this is good, in that there are improvements being made and new ideas being implemented, this causes problems for users who want to build reliably upon Parrot. Individuals and businesses often do not, or cannot, invest the time and effort to track a continually-moving target like Parrot.

The language implementations for Parrot, while many in number, have been of limited use. Looking at the status messages of some of the most promising and practical language implementations shows why this might be the case. Such messages include:

  • “Incomplete - but all examples and test cases are working.” (Amber for Parrot)
  • “Most of the samples work.” (BASIC/compiler)
  • “Has been broken for a long time.” (BASIC/interpreter)
  • “Parser is pretty complete. Generates PIR for basic Ruby programs” (Cardinal, Ruby CVS Head 1.9 implementation)
  • “Functioning, all samples working, lacks IO routines” (Cola)
  • “Working for some simple forms. Due to some broken features, most of the bootstrapping code has been commented out.” (Common Lisp)
  • “Functioning for handcrafted test cases. Loading frozen state is currently broken. Far from complete.” (Parrot m4)
  • “This project has been abandoned. Any takers?” (Pint, an experimental PHP implementation)
  • “Passes nearly 25% of tcl’s (lightly converted) test suite, using a Test::More like harness.” (Tcl)

So while there are many interesting language implementation projects for smaller or more obscure languages that have reached further stages of completion, the ones that were most likely to be of practical use seem to be lacking. Now, this is understandable. Maintaining a suitably complete Ruby, Python, Perl or Tcl implementation is not an easy task at all! And even if it were possible to come up to speed with the existing implementations, just staying current would be a major undertaking.

The third issue is that Parrot never really seemed to get a powerful backer. Java has Sun. .NET has Microsoft. Mono has Novell. Languages like Python, Perl and Ruby have large user communities, plus numerous business and academic supporters. While Parrot does have a unique community, as a whole I don’t know if it has the resources necessary to put together and maintain an effective, usable, multi-language runtime environment.

Having followed the project for some time, I have come to realize that it may never really amount to anything of practical use. Now, that’s not to say it’s useless. Putting it together has no doubt been an enjoyable task for many of its contributors. I imagine a small number of people have found a use for it. While it would be nice if it were to grow beyond that, it’s not something I expect to happen. It just doesn’t offer what most serious users need.

4 Responses to “Will Parrot ever truly deliver?”

  1. links for 2007-09-09 at but i forgot my pen Says:

    […] Will Parrot ever truly deliver? (tags: opensource parrot programming perl) […]

  2. Responding to a Reddit comment about my Parrot article. Says:

    […] days back I wrote about Parrot, specifically the doubts I have that it will ever be suitable for production use. A link to my article was submitted to Reddit, and it generated some discussion. From that […]

  3. Why did GNUstep never really take off? Says:

    […] a month ago, I considered the factors that were holding back one open source project with much potential, Parrot. Today I will do the […]

  4. NQP highlights a serious problem with Parrot. Says:

    […] NQP brings some very interesting technical benefits, it also further shows one of the significant problems with Parrot that I identified a couple of months back. Namely, the near complete lack of design and […]

Leave a Reply

*
To protect against spam, please type the word in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word