Introduction

Parrot is a language-neutral virtual machine for dynamic languages, such as Ruby, Python, PHP, and Perl. It hosts a powerful suite of compiler tools tailored to dynamic languages and a next generation regular expression engine. Its architecture is fundamentally different than existing virtual machines such as the JVM or CLR, with notable advances including a register-based system rather than stack-based, and employing continuations as the core means of flow control.

The name "Parrot" was inspired by Monty Python's Parrot sketch. It started with an April Fools' Day joke in 2001. Simon Cozens published an article titled "Programming Parrot", with a fictional interview between Guido van Rossum and Larry Wall detailing their plans to merge Python and Perl into a new language called Parrot (http://www.perl.com/pub/a/2001/04/01/parrot.htm).

Parrot Resources

The starting point for all things related to Parrot is the main website http://www.parrot.org. Many additional resources are listed there, as well as recent news and information about the project and foundation.

Documentation

Parrot includes extensive documentation in the distribution. The full documentation for the latest release is available online at http://docs.parrot.org.

Mailing Lists

The primary mailing list for Parrot is parrot-dev@lists.parrot.org. If you're interested in getting involved in development, you may also want to follow the parrot-commits and parrot-tickets lists. Information on all the Parrot mailing lists and subscription forms for each is available at http://lists.parrot.org/mailman/listinfo.

The archives for parrot-dev are also available on Google Groups at http://groups.google.com/group/parrot-dev and via NNTP at nntp://news.gmane.org/gmane.comp.compilers.parrot.devel.

IRC

Parrot developers and users congregate on IRC at #parrot on the irc://irc.parrot.org server. It's a good place to get real-time answers to questions or see how things are progressing.

Issue Tracking & Wiki

Parrot's issue tracking is handled by a Trac site at https://trac.parrot.org. In addition to submitting new tickets and tracking the status of existing tickets, this site includes a wiki used in project development, a source code browser, and the project roadmap.

Parrot Development

First released in September 2001, Parrot hit 1.0 in March 2009. The Parrot project makes releases on the third Tuesday of each month. Two releases a year are "supported" releases intended for production use, while the other ten releases are development releases. The supported releases happen in January and July.

Development proceeds at a steady pace with bugs reported and fixed, patches submitted and applied, and features discussed and implemented. Activity tends to spike when a release is approaching to close tickets, fix bugs, clean up documentation, and prepare the supporting files for the release. Immediately after a release is generally a flurry of branch merges, feature additions, or removal of deprecated features, since the week after the release allows the maximum time for testing before the next release. Releases also encourage feedback as casual users and testers get their hands on the newest version.

The Parrot Team

Parrot is developed by a group of volunteers, broken down into several distinct roles, which people assume according to their skills and interests.

Architect
The architect has primary responsibility for setting the overall direction of the project, facilitating team communication, and explaining and evaluating architectural issues. The architect makes design decisions and documents them in Parrot Design Documents, and oversees design and documentation work delegated to other members of the team to provide a coherent vision across the project. The architect also works with the release managers to develop and maintain the release schedule. Allison Randal currently leads the Parrot project as chief architect.
Release Managers
Release managers have responsibility for executing a product release according to the release schedule. Parrot has multiple release managers who rotate the responsibility for each monthly release. The release managers develop and maintain the release schedule jointly with the project architect.
Metacommitter
Metacommitters manage commit access to the Parrot repository. Once a contributor is selected for commit access, a metacommitter performs the necessary magic to give the new committer access to the SVN repository and the bugtracker. The architect is a metacommitter, but other team members also hold this role.
Committer
Contributors who submit numerous, high-quality patches may be considered to become a committer. Committers have commit access to the full Parrot repository, but often specialize on particular parts of the project. Committer categories are described below. Contributors may be considered for commit access either by being nominated by another committer, or by requesting it.
Core Developer
Core developers develop and maintain core subsystems such as the I/O subsystem, the exceptions system, or the concurrency scheduler.
Compiler Developer
Compiler developers develop and maintain one or more Parrot front-end compilers such as IMCC, PIRC, PGE and TGE.
High-Level Language Developer
Developers who work on any of the high-level languages that target Parrot—such as Lua, Perl, PHP, Python, Ruby, or Tcl—are high-level language developers. Some example languages are located in the Parrot repository, but most are hosted independently. A full list of languages is maintained at https://trac.parrot.org/parrot/wiki/Languages.
Build Manager
Build managers maintain and extend configuration and build subsystems. They review smoke reports and attempt to extend platform support.
Tester
Developing, maintaining, and extending test suite coverage and testing tool are the key tasks for the testers. Testers are also responsible for testing goals, including complete coverage of core components on targeted platforms.
Patch Monsters
Hackers and developers submit patches to Parrot every day, and it takes a keen eye and a steady hand to review and apply them all. Patch monsters, as they are affectionately known, are in charge of checking patches for conformance with coding standards and desirability of features.
Cage Cleaners
The cage cleaners ensure that coding standards are followed, that documentation is complete and accurate, that all tests are functioning properly, and that there are plenty of coding examples for new users to learn from. A class of tickets in the issue tracking system has been created especially for use by this group. This position encompasses tasks that run the gamut from entry-level to advanced, and is a good entry point for new users who want to get more familiar with Parrot internals.
General Contributor
Contributors are volunteers who write code or documentation patches, take part in email or online conversations, or contribute to the project in other important ways. All volunteer contributions are appreciated.

Licensing

The intellectual property for Parrot is held by the Parrot Foundation, a non-profit organization formed to support the Parrot development community. It is licensed under the Artistic License 2.0, allowing free use in commercial and open source/free software contexts.