Recently in Grants Category

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

Review the proposals below and please comment there. The Committee members will start the voting process on September 26th and the conclusion will be announced by September 30th.

For the proposals from Ingy and David, we also got the following statement from them:

Ingy döt Net and David Oswald have a number of ambitious Perl related projects that we would like to collaborate on. We think that having a pair of programmers fulfilling grants will lead to a better experience for all.

We have thought up about a dozen potential ideas, and we think 4 of them are ready to propose now. The others will come to fruition over time.

(snip)

Our ideal situation would be to continually propose 3-5 grants every 2 months, but only have 1 of them granted at a time. This is of course, up to you and based on your perception of the merit of our proposals, but hopefully we can get better and better at providing projects that really move Perl forward.

We have received the following grant application "Swim to Pod". Please leave feedback in the comments field by September 25th, 2014.

Swim to Pod

  • Name:
    • Ingy döt Net
    • David Oswald
  • Amount Requested

    USD $3000

Synopsis

Provide Swim tools that allow Perl programmers to produce elaborate Pod documention, painlessly.

Provide all the functionality of Pod in a syntax better than Markdown.

Provide 5 plugins for extending Swim in ways useful to Perl people.

Benefits to the Perl Community

Pod excels in providing a great model for documentation. That means it supports all (most of) the semantic concepts needed to write great docs. Where Pod falls down is on syntax. The syntax is so verbose that common idioms (like creating lists of lists) are often avoided because they are to hard to write.

Many Perl people use Markdown which offers simpler syntax, but lacks many of the common semantic idioms in Pod. For instance, Markdown has no ability to do 'Data Definition' lists that are so common in CPAN docs (dl/dt/dd HTML tags). Markdown is also weak in nesting semantic blocks.

This summer Ingy created Swim, after thinking about it and discussing it for 8 years. He has converted all the documentation in over 80 of his CPAN (and other language) distributions. The result is incredibly easy to write and maintain doc, all published to Pod for CPAN and GitHub rendering.

Deliverables

  1. Tested support for full Pod semantics in Swim
  2. Tools to convert Swim to Pod
    • From .swim files
    • From .pm files embedded
  3. Provide 5 new Swim plugin modules
    • Useful Perl/doc things
    • Examples to write more
  4. Module automation plugins for turning Swim to Pod
    • Dist::Zilla
    • Module::Install
  5. Pod-to-Swim conversion tool

Project Details

Here are the things that Swim currently does:

  • Supports all basic markup semantics
  • Converts to Pod, HTML, Markdown, nroff (manpages) Text, DVI, PDF and more
  • Extensible by plugins A Travis badge plugin is currently on CPAN
  • Swim is Pegex based
    • Defined by a readable (human friendly) grammar
    • Will have implementations in many languages (including JavaScript)

Inch-stones

  1. Write tests for all the semantic capabilities of Pod.
  2. Make basic swim --to=pod pass those tests.
  3. Write a Pod parsing grammar for Pod-to-Swim tool.
  4. Swim plugin module candidates:
    • Unicode escapes <U+2603> <U SNOWMAN>
    • HTML table support
    • Video embedding
    • Side-by-side comarison widget
    • Syntax highlighting code blocks
  5. Dist::Zilla plugin that transforms:
    • from: doc/My/Module.swim
    • or from: lib/My/Module.pm
    • to: lib/My/Module.pod

Project Schedule

This project will take 2 months and can be started immediately upon acceptance.

Completeness Criteria

Above modules released to CPAN with all functionality and tests in place. Passing all tests.

Bio

Ingy döt Net has created markup languages in the past including the Kwiki wiki markup and the Socialtext wiki markup. He is extremely familiar with parsing, syntax and semantics issues in this space.

David Oswald has been a Perl user for over a decade, is an author of several CPAN modules, and maintainer of more. David also runs Salt Lake Perl Mongers.

Ingy and David work well together and have decided to collaborate on a number of projects that will benefit Perl and Software Development.

Notes

This document was written entirely in Swim and converted to Pod.

See these links:

We have received the following grant application "Pegex Grammar for YAML". Please leave feedback in the comments field by September 25th, 2014.

Pegex Grammar for YAML

  • Name:
    • Ingy döt Net
    • David Oswald
  • Amount Requested

    USD $3500

Synopsis

Make YAML.pm and YAML::Tiny driven by a common formal grammar.

Benefits to the Perl Community

Perl has four major YAML implementations:

They all have major incompatabilities. In the past year the #yaml channel on irc.perl.org has gotten all the right people together to resolve this. A great next step would be to make the two pure Perl implementations YAML and YAML::Tiny be grammar driven.

Pegex is a Perl 6 Rules inspired framework that greatly lowers the barriers to writing parsers. The main goal of Pegex is to make grammars for parsing a language or syntax be as human friendly as possible. Pegex is also extremely fast for pure Perl code.

By having the Load functions for YAML and YAML::Tiny be grammar driven, the following benefits would occur:

  1. Both modules would parse the same YAML exactly the same
  2. Bugs could easily be fixed for both modules in the same grammar
  3. YAML::Tiny would be tinyer
  4. YAML.pm would become faster

Deliverables

This project will provide:

  • Pegex grammar for YAML
  • YAML and YAML::Tiny parser/loaders based on the grammar
  • Common test suite proving compatability

Project Details

Pegex is four years old, and has several CPAN modules based on it. It makes language defining grammars appear crystal clear. It has undergone an optimization development phase that makes it very fast.

Recent work was done to get YAML indentation working in Pegex. This was a major hurdle. This is now a good time to make a complete YAML grammar. Since Pegex works in many languages, eventually there will be exactly compatible YAML parsers in Perl, Python, Ruby, JS, etc.

Inch-stones

  • Write a grammar for YAML in Pegex
    • Grammar will be well documented
    • Each grammar rule will be tested
  • Convert YAML to use the grammar for its loader
  • Convert YAML::Tiny to use (a subset of) the grammar for its loader
  • Both modules pass a common test suite

Project Schedule

This project will take 2-3 months and can be started immediately upon acceptance.

Completeness Criteria

Both modules released to CPAN, using the new Pegex grammar and passing the same tests. Pegex/YAML grammar published in its own GitHub repo.

Bio

Ingy döt Net invented the YAML language, is the author and maintainer of YAML and YAML::XS and is one of he people currently actively maintaining YAML::Tiny. He also is the creator of the Pegex parsing framework.

David Oswald has been a Perl user for over a decade, is an author of several CPAN modules, and maintainer of more. David also runs Salt Lake Perl Mongers.

Ingy and David work well together and have decided to collaborate on a number of projects that will benefit Perl and Software Development.

We have received the following grant application "Inline::C(PP) Module Support". Please leave feedback in the comments field by September 25th, 2014.

Inline::C(PP) Module Support

  • Name
    • Ingy döt Net
    • David Oswald
  • Amount Requested

    USD $2,000

Synopsis

Make Inline::C and Inline::CPP the best choice for writing "XS" modules.

Benefits to the Perl Community

In 2000, Inline.pm and Inline::C brought XS from "hard things possible" to "hard things simple". People with basic knowledge of Perl and C could combine the two, without having to learn the entirety of the black art of XS.

Soon after, support was added for C++, Java and ~25 other languages. Inline was consider rather successful.

The missing piece of all this is that Inline (C, C++) was never really polished to write CPAN modules; CPAN dists that would handle the compilation parts at install/build time, and then become nearly indistinguishable from plain XS modules after installation.

A common pattern has been for module programmers to start with Inline::C and then use it to learn XS, so that they can release the modules to CPAN. Often Inline::C has been used to generate the XS which is then pasted into a module distribution with a few adaptations to fit the distribution's framework. Though very successful, Inline should go further to simplify and remove the need for authors to manually work through tedious and error-prone steps.

In the summer of 2014, a number of core Inline developers came together to get Inline up to modern standards. We've decided the next big move is to polish up Inline so that it is ModuleReady™; so that it supports module authorship and distribution.

This will allow many more people to use C and C++ to make Perl modules, without ever needing to learn XS boilerplate, which is a significant barrier to entry. Those who already know XS will still be pleased to rediscover that Inline is an easy way to create XS, and that these enhancements make it a good choice as a basis for XS module distributions.

Deliverables

  • Allow compilation of inlined C code to happen during a module's build time, and then allow Inline to get out of the way to a greater degree than currently happens.
  • Make use Inline not trigger a C compile or a C source check when running installed.
  • Provide support integration for:
    • Dist::Zilla
    • Module::Install
    • ExtUtils::MakeMaker
    • Module::Build
  • Make sure that the right things happen at test and build time (vs runtime).
  • Test that all works properly with C++.
  • Provide support for C modules where the C code is not 'inlined'
    • Like YAML::XS
  • Release a few current XS modules using Inline.
    • YAML::XS
    • String::Slice

Project Details

Inline development has resurged in #inline on irc.perl.org. The primary maintainers of Inline, Inline::C and Inline::CPP (C++) are the ones who want to make this happen.

These three modules above have already undergone considerable refactoring, modernization and bug fixing in the past 3 months, with many releases to show for it.

The goals for this grant are not conceptually hard, but require some focus. This grant will give us the time to focus. There is no reason to expect this work will take more than 2 months.

Inch-stones

  1. Identify existing (or create new) modules that use different 'XS' strategies. These will be the driving test cases.

    They should include:

    • Inlined C
    • External C
    • Currently using XS
    • Trying to ship with Inline
    • C++
  2. Adjust Inline to know about development vs build vs installed runtimes.

    There are a few strategies. Likely there will be a dependency on a small module, say Inline::Module, that knows how to DTRTs, at the right times.

  3. Facilitate making Inline and Inline::C/CPP authoring and build tools for distributions, not just runtime tools.

  4. Make sure that Inline::C and Inline::CPP work right. In particular, upgrade the grammar tests and parsing to handle many C and C++ constructs that have been found to be lacking in current parsing solutions.
  5. Release real modules to CPAN that exercise each of the new development strategies.

    Watch for results on cpantesters.

  6. Write automation helpers:

    • Dist::Zilla plugin
    • Module::Install plugin
    • Documentation for ExtUtils::MakeMaker and Module::Build
  7. Write documention for how to be an "XS" author without learning XS boilerplate.

    Likely this will include a tutorial.

Project Schedule

David and Ingy see no reason this can't be done in two months. One month for code and modules. One month for documentation and testing. We hope to work on other grants, each about 2 months, so there is good reason to get this one done, done right, and out of the way.

Completeness Criteria

Release of these modules to CPAN (with above support):

Bio

Ingy döt Net is the original creator of Inline and Inline::C. His primary focus in Perl is to bring the "hard" things into the hands of beginners.

David Oswald has been maintaining Inline::CPP for four years, and is the only person to have made releases on Inline::CPP since 2003.

Ingy and David work well together and have decided to collaborate on a number of big projects that benefit Perl and Software Development. Inline was the obvious first choice.

We have received the following grant application "IO::All Redux". Please leave feedback in the comments field by September 25th, 2014.

IO::All Redux

  • Name
    • Ingy döt Net
    • David Oswald
  • Amount Requested

    USD $3,000

Synopsis

Rewrite IO::All to match the needs of 10 years experience.

Benefits to the Perl Community

IO::All is a Perl module that attempts to make all Input/Output operations in Perl, as simple, normal, and uniform as possible. IO::All has been in existence since 2004. It is useful and somewhat extensible, but has a number of inconsistencies, flaws and misgivings.

The proposal is the refactor and/or rewrite the IO::All code to become the perfect way to encode almost all of Perl IO needs. In other words:

  • All things are done safely
  • Unicode issues are all handled correctly
  • Options have the proper scope (lexicalpackageobject)
  • Can be used safely in production
  • Stays simple for 1-liners (small needs)
  • Internals are all plugin based rather than semi-hardcoded
  • Defaults are sane
  • Mo(o(se)) compatible OO
  • Weirder stuff like operator overloads need not be turned on explicitly

Deliverables

Using the Alt module strategy, we deliver an Alt-IO-All-Redux dist that installs a new IO::All. This is tested in beta until deemed safe to release properly as the new IO-All dist.

Current IO::All plugins are revised to the new strategy.

Project Details

See:

Inch-stones

  • Create Alt-IO-All-Redux dist so that new code can be used and tested by the community immediately
  • Write tests for new behaviors
  • Refactor the code to match the new design
  • Port current IO::All extension modules to new design
  • Get people on #io-all IRC channel and beyond to test the rewrite
  • Release as IO-All when deemed ready

Project Schedule

This project will take 2 months and can be started immediately upon acceptance.

Completeness Criteria

Alt-IO-All-Redux passes all tests, is vetted by the community and is released to CPAN as the new IO-All dist.

Bio

Ingy döt Net wrote IO::All in 2004. Of his many CPAN modules, it is probably one of the 3 most popular.

David Oswald has been a Perl user for over a decade, is an author of several CPAN modules, and maintainer of more. David also runs Salt Lake Perl Mongers.

Ingy and David work well together and have decided to collaborate on a number of projects that will benefit Perl and Software Development.

We have received the following grant application "Nile - Visual Web App Framework Separating Code From Design Multi Lingual And Multi Theme". Please leave feedback in the comments field by September 25th, 2014.

Nile - Visual Web App Framework Separating Code From Design Multi Lingual And Multi Theme

  • Name:

    Ahmed Amin Elsheshtawy

  • Amount Requested:

    USD 10,000

Synopsis

The main idea in this framework is to separate all the html design, text, and layout from programming with easy interface like Android.

The framework uses html templates for the design with special xml tags for inserting the dynamic output into the templates.

All the application text is separated in language files in xml format supporting multi lingual applications for easy translating and modifying all the text. The framework supports SEO links and routing in many ways.

The framework build on Modern Perl using Moose for easy interface.

The entire framework uses object oriented style for a unified and clean interface like working with Java.

Benefits to the Perl Community

This framework will highly reduce the development time of a powerful and modern web application in Perl as you can build a full working modern web application with routed URL, template driven multi lingual database driven in few lines of code like Android.

Deliverables

I am working on this project "Nile" framework over a year and I already released it on cpan.org or github in alpha versions:

https://metacpan.org/pod/Nile

https://github.com/mewsoft/Nile

Project Details

The main idea of the project has been released as a module on cpan and github.

Some of the main features of the framework:

Separate coding from design

Multi lingual applications

Multi theme applications

SEO URL friendly

Routing

Plugin based

Full OO style

Shared application context

Modern Moose based

Helper classes for files, pagination, request, response, XML, database, Serialization, Router, Dispatcher, Language, Logs.

Helper classes for shared Config (XML based files), Settings (database based), Vars.

Views class for easy working with dynamic templates.

Applications can be build with inline actions routing for quick applications or routed to plugins.

Still I have a lots of ideas to be implemented and modifications based on developers and community feedback.

Inch-stones

The first alpha version has been released.

Subsequent alpha versions is being released everyday.

New sub modules are being added every while.

New ideas added everyday.

Beta versions will start after main API is been stable.

Final versions will be within one year of working full time.

Considering feedback from the Perl communities and Developers.

Keep working on developing the framework and maintaining it.

Project Schedule

I already started on this project over a year now and work full time on it and I will keep working on it for a long time as it is expected to be a great support for the Perl developers and the Perl community.

The first stable release for production I expect to be within six months working full time.

Completeness Criteria

The framework alpha version is released on cpan https://metacpan.org/pod/Nile and work on it will continue forever by receiving feedback and feature requests from all the developers all over the world. Until version 1.00 the API will be unstable.

Bio

My short resume is located here online: http://cv.mewsoft.com/CV.pdf

I am working with Perl since 1998 as a self-hired for my online personal business at http://www.mewsoft.com as a developer for Auction software, classifieds software, pay per click/impression software, forums, etc. for my own business.

I have also a RHCSA and RHCE training and have a good experience with Linux and *nix systems and server issues.

I also I just started Java and Mobile Applications.

Tony Cook has requested an extension of $20,000 for his Maintaining Perl 5 grant. This grant has been running successfully since July 2013. The requested extension would allow Tony to devote another 400 hours to the project. The funds for this extension would come from the Perl 5 Core Maintenance Fund.

As well as posting reports on the p5p mailing list Tony provides detailed monthly reports, the most recent of which can be found in the following blog posts:

August 2014
July 2014
June 2014

Before we make a decision on this extension we would like to have a period of community consultation that will last for seven days. Please leave feedback in the comments or, if you prefer, email your comments to karen at perlfoundation.org.

About TPF

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

Recent Comments

  • Ingy: Makoto, Thanks for bringing this up. I think it's in read more
  • Makoto Nozaki: Dear Ingy, It was brought up in the Grants Committee read more
  • Smylers: Please support the Inline::C proposal. Many people want to do read more
  • Ahmed Elsheshtawy: Hello Neil, First please read my reply to "Dan Wright" read more
  • Ahmed Elsheshtawy: Hello Dan, You are absolutely reading my brain and saying read more
  • Dan Wright: Perl has a lot of web frameworks. What Perl really read more
  • Matthew Horsfall (alh): Please continue this grant. Tony's work is awesome. read more
  • Neil Bowers: Hi Ahmed, First: I'm happy to see more grant applications, read more
  • Ingy: While there might be some preference to use JSON over read more
  • Ingy: Thanks for the feedback! We also think this proposal is read more

About this Archive

This page is an archive of recent entries in the Grants category.

Conferences is the previous category.

GSoC is the next category.

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

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.38