The Grants Committee has concluded the voting of the March/April round.

Proposal in this round

ProposerRequested AmountLink to the Details
Chad 'Exodist' GranumUSD 2,000Test2 Manual

Voting Results

Test2 Manual8036 = 5 + 5 + 5 + 5 + 5 + 5 + 3 + 3

Definition of the score is found in 3.2 of the rules.


We approve Test2 Documentation grant. One of the committee members said:

"He took a very important piece in Perl and CPAN, he worked on it tirelessly without the grant, which shows how much he cares about it and how dedicated he is to it, he communicates well and elicits comments openly and frequently.

His grant is very detailed and although normally I would suggest this might be hard to accomplish, I've already seen how serious he is, so I know it's not just overreaching. It's also quite crucial and I'm happy to see the comments the community had provided on how important people view this."

Alberto Simoes agreed to become the grant manager.

Our next round will be in May. You can submit proposals now. If you want to help funding, one of the options is Amazon Smile. We appreciate all the donors which made the grant program possible. Also see the press releases for the recent major donations.

Tony Cook writes:

Approximately 57 tickets were reviewed or worked on, and 14 patches were applied.

[perl #126410] and [perl #124387] are related in that both problems are related to the same set of changes.

Between perl 5.8 and 5.16 inclusive, perl cached the CV for DESTROY in overload magic for the stash. This was four times faster than the simple method lookup previously done each time an object needed to be destroyed.

This was much faster for destruction, but meant that overload magic was created for any stash that objects were destroyed for, taking up 576 bytes (on x64) for a stash with a DESTROY method, even if it did no overloading.

Will Braswell's first report on the 2nd RPerl documentation grant follows. (The POD tables look nice.)

"As planned, I've continued work where we left on in part 1 off the Learning RPerl grant.

I've implemented a new mechanism for creating tables in POD, currently supporting 14 output formats, which I believe is significantly more than anyone else has achieved to date. (Unfortunately, PseudoPod's often-mentioned table feature is both lacking in basic features and seemingly broken at this time. Fortunately, I was able to maintain full PseudoPod compatibility by working around their table feature and directly implementing mine in it's place.)

[[[ Pod ]]]
1. pod2text
2. pod2text color
3. pod2man
4. pod2man postscript
5. pod2html
6. pod2cpanhtml
7. pod2rperlhtml

[[[ PseudoPod ]]]
8. ppod2txt
9. ppod2html
10. ppod2docbook

[[[ Docbook ]]]
11. sgmltools onehtml
12. sgml2x docbook-2-html
13. docbook2html chunks
14. docbook2html no chunks

You can see the use of tables in many of the new chapter 2 sections, starting with the Arithmetic Operators in 2.1.9.

You can see the source code of the new tables implementation in any of the sections where it is utilized in the Learning RPerl POD. You will notice there are 4 different output format groups: text (Text::ASCIITable), man (raw), html (raw), and docbook (raw). Here's a link to the shortest table (header row plus 3 body rows) in the Trigonometry Operators in 2.1.10.

As part of my work on chapter 2, I've completed the content for sections 2.1.9 through 2.1.14, and made various updates throughout other parts of chapter 2.

I've added a new section, Appendix B3, with more in-depth information about operator arity, fixity, precedence, and associativity.

I've added 2 new exercises not present in Learning Perl, ex2.6 and ex2.7, in order to provide a proper introduction to the while() loop and algorithmic equivalence:

And last but certainly not least, I've released RPerl v1.7 (Codename Tycho) including the long-awaited ability to generate stand-alone executable files, and I have updated Learning RPerl section 1.24 accordingly:


The Grants Committee has received one grant proposal for the March round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.

Review the proposal below and please comment here by April 9th, 2016. The Committee members will start the voting process following that and the conclusion will be announced by April 16th.

Test2 Manual

  • Name:

    Chad 'Exodist' Granum.

  • Amount Requested:

    USD 2,000


I am proposing to write a Test2 manual. The Test2 distribution already has very complete module documentation. The manual will build off the individual module documentation and provide very valuable integration and usage details.

Benefits to the Perl Community

Test tool development has been held back for a very long time now. Test2 should unblock a lot of areas related to testing, but only if people can figure out how to use it. This manual should make current and future test developments accessible to all perl developers.


  • Test2::Manual

    A brief introduction and table of contents.

  • Test2::Manual::Tooling

    This section will cover writing test tools. This would be a root document with several other page links.

    * The name of the manual page, and the manual layout will need to be finalized.

  • Test2::Manual::Maintenance

    This section will cover maintaining Test2 itself. This will be a root document pointing to pages that explain the internals, and how they work together.

    * The name of the manual page, and the manual layout will need to be finalized.

Project Details

Test2 is intended to be the new core of perl testing tools. Test2 itself is now on cpan, and Test::Builder will be updated to use Test2 under the hood (I have an ongoing grant for this that is near-completion). Something this important needs serious documentation.

This manual will explain how all the bits and pieces work together. The manual will target 3 specific audiences:

  • Test Tool Authors

    This section of the manual will cover people who want to write new tools or that use Test2 under the hood. This is probably the most important audience as it will be necessary if tools are going to be compatible with each other.

  • Test2 Maintainers

    This section of the manual will cover people who wish to participate in Test2 development directly. This is important to reduce the bus factor (which is very close to 1 currently).


For test authors:

  • Migrating from Test::Builder

    Conversion notes and examples for people moving from Test::Builder. This will detail how tools might have changed, what is gone, and introduce some new or replacement concepts.

  • Simple OK tool

    This is the most basic tool you can write, and is valuable for explaining the key concepts universal to all Test2 tools.

  • The Test2 API

    This covers Test2::API, and all the functionality it exposes.

  • The 'Context' object

    Explain what the context object is, why it is important, and how to use it effectively.

  • The 'Hub' object and API

    Explanation of the hub objects and how they work.

  • Custom Hubs

    How to write a hub subclass (essential for Subtest like tools).

  • Custom event types

    How to write an event.

  • Custom output formatters

    How to write an output formatter.

  • Writing IPC drivers

    How to write a custom IPC Driver.

For Test2 maintainers:

  • Component map

    Map of all Test2 components.

  • Basic building blocks

    Explanation of low-level infrastructure such as Test2::Util::HashBase.

  • How the 'Context' works

    Detailed overview of the Context object, and implementation details.

  • The hub stack

    What the hub stack is, and why it is important.

  • The IPC system internals

    How IPC works, and more importantly how it can fail.

  • Utilities

    The utilities library, and important implementation details.

  • Performance Notes

    Key information about where changes can severely impact performance.

Project Schedule

I can start as soon as the grant is approved. The work will be done on free evenings and weekends as time allows.

Completeness Criteria

The manual will be included in a Test2 release on cpan. The manual will have all expected sections, with no significant gaps or TODO sections.


My name is Chad Granum. I am known as Exodist on CPAN. I have spent several years writing Perl for work and for fun. For most of my time in Perl I've specialized in unit testing tools. Fennec is a good example of my previous work.

In January of 2014 Michael Schwern transferred the Test-Simple dist and all of its components to me. He felt I was the best person to carry the project forward. Since then I have reached out to the rest of the community to be sure I was carrying the project forward in the best interests of all.

Dave Mitchell writes:

I spent last month mainly:

  1. looking into some of the CPAN breakage associated with my recent context work that's been merged into blead;
  2. looking at a build failure with solaris, dtrace, shared library and static inline functions


1:00 [perl #127475] Bleadperl breaks Algorithm-Permute
16:01 [perl #127543] dtrace/-DDEBUGGING builds now fail on Solaris
6:07 fix build warnings and smoke failures
3:22 fixup CPAN distributions affected by context changes (Syntax-Feature-Try)
6:11 fixup CPAN distributions affected by context changes (Test-Block)
9:12 fixup CPAN distributions affected by context changes (Want)
3:30 process p5p mailbox

45:23 Total (HH::MM)

As of 2016/02/29: since the beginning of the grant:

124.1 weeks
1687.4 total hours
13.6 average hours per week

There are 312 hours left on the grant.

The Grants Committee is accepting grant proposals all the time. We evaluate them every two months and another evaluation period has come.

If you have an idea for doing some Perl work that will benefit the Perl community, consider sending a grant application. The application deadline for this round is 23:59 March 23rd UTC. We will publish the received applications, get community feedback and conclude acceptance by April 5th.

The format will be the same as the previous rounds in 2014-2016.

To apply, please read How to Write a Proposal. Rules of Operation and Running Grants List will also help you understand how the grant process works. We also got some grant ideas from the community.

We will confirm the receipt of application within 24 hours.

If you have further questions, please comment here or contact me at tpf-grants-secretary at

Since our last report on the grant to revitalise, Amalia writes that Evozon have completed work on the following:

  1. Homepage, accommodating latest blog posts (10, with the ability to load more)
  2. At this point, header is reflecting whether the user is logged in or not
  3. Ability to register to the website (regular registration, oauth & openID to be implemented in the upcoming sprint)
  4. Ability to login to the website, go to admin, see posts (admin not yet customized to match the new BPO design, user is not yet able to publish posts)
  5. Ability to switch between themes (dark or light, depending on user's preferences)
  6. Category listings
  7. Tag listing
  8. Full search functionality (posts, users, tags)
  9. Comment system (ability to comment only if logged in, if blog admin doesn't have
  10. moderation enabled, comment will be automatically displayed; if it's enabled, comment is submitted to user approval)
  11. Author profiles, listing avatars, bios, entries, blogs & pages, and RSS subscription
  12. UTC fixes
  13. UTF-8 fixes
  14. Individual blog posts

If you use the existing site, please look at the new site's staging server and let us know if you encounter problems with any of the completed features. We welcome your comments. Please treat site as an early preview, not a polished version of the final product. Several admin features are still missing & several bugs still need to be fixed.

In their next spring, Evozon plan to work on:

  1. Post formatting
  2. My profile - add functionality (ability to chance avatar, display name, email & reset password)
  3. Ability to publish posts
  4. Image formatting within posts
  5. Fix category issues
  6. Add transactional emails (upon account creation, account confirmation, password reset, comment submission, etc)
  7. Oauth & openID sign-in & registration

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at

Find recent content on the main index or look in the archives to find all content.


Recent Comments

  • Jason Ketola: We at MaxMind would very much welcome this manual. read more
  • Florian Ragwitz: I would love to see this grant happen. The typical read more
  • Joshua Keroes: I have been porting with Lance and James to read more
  • Graham Ollis: Having written a couple of Test::Stream modules (which I plan read more
  • Ron Savage: As an early adopter of Test::Stream, I know the current read more
  • Alfie John: I have been using Test2 quite a bit recently, and read more
  • Chad Granum: Oops,the part that reads 'will target 3 specific audiences' should read more
  • Dave Rolsky: I'm all for this grant. I've been working with Test2 read more
  • Makoto Nozaki: Ajmal, Not sure what you mean by "cover" but in read more
  • ether (Karen Etheridge): Tony's work on the Perl core has been great and read more
OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2