The Perl Foundation provides grants for work that is valuable to the Perl and Raku communities.
- If you are looking to work on a grant to help the community, take a look at this list.
- If you have suggestions for useful work (whether for the communities or for the languages), please open an issue or submit a pull request and, once approved, it will show up here.
While we try to keep this list relevant, things can easily get out of date. Before grabbing a task, check that a similar investment is not done recently.
⚠️ Disclaimer The list does not guarantee that TPF will fund any grant proposal based on them. This is still subject to a vote.
readpipe(LIST) (from @rjbs)
From the Perl todo:
system() accepts a LIST syntax (and a PROGRAM LIST syntax) to avoid running a shell. readpipe() (the function behind qx//) could be similarly extended.
Unused lexicals (from @rjbs)
From the Perl todo:
$ perl -we '$pie = 42' Name "main::pie" used only once: possible typo at -e line 1.
This does not:
$ perl -we 'my $pie = 42' Logically all lexicals used only once should warn, if the user asks for warnings. An unworked RT ticket (#5087) has been open for eleven years for this discrepancy.
pack and unpack on streams (from @tux)
unpack work on a string, which means that you have to move forward in the data-string yourself, if the full data-format is not known in advance, but depends on data seen so far.
If one could
unpack on a stream, one could
unpack the picture that is known, have the stream pointer move forward the amount of data read from the given picture, and be ready to read the next data based on a next, possibly different) picture.
Extreme “win” can be taken where the size of the data being read for a given picture is differing per architecture, like native floats.
PSGI protocol for HTTP::Tiny
Enhance HTTP::Tiny to support it communicating via PSGI. The primary use case being to assist in testing. See also LWP::Protocol::PSGI and Furl::PSGI.
Net::Google::Calendar authentication failure
This library no longer works as it uses the Calendar v2 API which Google discontinued. It needs to be updated to the new API (v3).
Module to handle OData (from Alex aka ASB)
We (the Perl community) currently do not have a CPAN module that handles OData. There seems to be an attempt to do it in OData::Client but it’s not finished yet, and I fit doesn’t get a care taker, it will never be done. Also, there is client and server parts. Let’s get both :)
Side node: Eventually, I’m too dumb to see that we don’t need one because Perl can do it out oft he box. But if this is the case, eventually, it would be a good idea to put up a grant to create a document describing how to use OData with Perl (like this one).
Update PPI for more recent constructs (from @rjbs)
Last I looked, PPI couldn’t handle much newer than Perl v5.10 or v5.12. I don’t have a comprehensive list of the stuff it can’t do, but it wouldn’t be tiny. Make it all work.
Push to have Perl support in github code navigation
Github is currently the major social network for developers and provides a good exposure for the Perl modules/code and a nice tool for helping Perl developers (both coding and CI/CD through github actions or travis ci, circle ci or whatever).
Github is experimenting/putting in place the code navigation.
Below the alert to introduce this new feature to developers :
And next a real life working example :
It is available since november 2019 (see the annoucement) and I guess it will grow as this feature is just a “must have” for developers (we have multiple code browsers in my company : bitbucket native, grok and woboq !).
The doc of github says that it is based on semantic which does not support Perl as of today.
The purpose of this grant would be to :
- Implement Perl support in semantic
- Push Github folks to enable it (first as experimental) - maybe it could be discussed even before implementation :)
It is written in haskell (and in the past Perl and Haskell folks were good friends right ? :P)
Some resources that could help Write Yourself a Scheme in 48 hours (Haskell tutorial) and a Haskell based parser for a Perl like language.
DBIx::Class re-documentation (from @ribasushi)
Fixing up the better-than-most-but-still-terrible documentation of DBIC is a ~200 person-hour undertaking, which on top of that requires someones fresh eye.
Given that DBIx::Class is a “staple-module” in the contemporary Perl ecosystem, I believe it is reasonable to expect for the TPF to “pick up the tab” if someone with the right qualifications steps up.
BountySource has a few ideas on Perl
SparrowHub is a repository of Sparrow plugins - reusable scripts for various automation tasks. Plugins are written on many languages and get run eithor by
cli or through a programmatic Raku API. Both Raku and Perl community might gain an advantage of plugins eco system easing developers life. SparrowHub could be thought as a MetaCPAN/Raku modules but with more practical approach - find a plugin and run it straight away. It’s dead easy to create new plugins and distribute them.
So a proposal is:
- Finishing SparrowHub site development ( site UI improvements, getting better DNS name, logo creation, so on )
- Finishing plugins migration to a new version of Sparrow ( see this roadmap )
- Adding new plugins are of the interest for both Raku and Perl communities. ( Some Raku/Perl related plugins could be found on SparrowHub )
The MoarVM and Rakudo CI toolchains on GitHub (using Travis CI, CircleCI, and AppVeyor) could have a number of enhancements added. Here are three things in particular:
- Code coverage: There is some automation of MoarVM coverage reports when running the NQP test suite here, but that could be expanded to include results from running the Rakudo test suite as well a Roast spectest. Additionally, Rakudo can produce coverage reports of its code, that would also make sense to automate for its test suite and a Roast spectest.
- Benchmarking: There are some benchmarks that are run every day, but the results have been broken for about two years.
- Regression tests: Blin could be run automatically (e.g., at every NQP bump, every 10 or so Rakudo commits).
Provide user documentation to the revolutionary Red ORM
Add code examples
Allow adding of notes (such as code examples) with the documentation, as is done on the PHP documentation site, e.g. PHP pcre documentation page