<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>The Perl Foundation</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/" />
    <link rel="self" type="application/atom+xml" href="http://news.perlfoundation.org/atom.xml" />
    <id>tag:news.perlfoundation.org,2007-09-13://18</id>
    <updated>2008-05-16T21:00:26Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.11</generator>

<entry>
    <title>TPF receives large donation in support of Perl 6 development</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/tpf_receives_large_donation_in.html" />
    <id>tag:news.perlfoundation.org,2008://18.2080</id>

    <published>2008-05-16T20:53:47Z</published>
    <updated>2008-05-16T21:00:26Z</updated>

    <summary> On May 14, 2008, The Perl Foundation received a philanthropic donation of US$200,000 from Ian Hague. Mr. Hague is a co-founder of Firebird Management LLC, a financial fund management company based in New York City. This donation was the result of extensive discussions between Mr. Hague, The Perl Foundation and a Perl community member who wishes to remain anonymous. The purpose of the donation is to support the development of Perl 6, the next generation of the Perl programming...</summary>
    <author>
        <name>Richard Dice</name>
        
    </author>
    
    <category term="tpfphilanthropydonationperl6" label="tpf philanthropy donation perl6" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>
On May 14, 2008, <a href="http://www.perlfoundation.org/">The Perl Foundation</a> received a philanthropic donation of US$200,000 from Ian Hague.  Mr. Hague is a co-founder of <a href="http://www.fbird.com/">Firebird Management <span class="caps">LLC</span></a>, a financial fund management company based in New York City.  This donation was the result of extensive discussions between Mr. Hague, The Perl Foundation and a Perl community member who wishes to remain anonymous.<br />
</p>

<p>
The purpose of the donation is to support the development of Perl 6, the next generation of the Perl programming language.  Roughly half of the funds will be used to support Perl 6 developers through grants and other means.  The balance of the funds will be used by The Perl Foundation to develop its own organizational capabilities.  This will allow The Perl Foundation to pursue additional funding opportunities to support Perl 6 development.  Mr. Hague wants his contribution to be seed funding in that effort.<br />
</p>

<p>
The Perl Foundation thanks Mr. Hague in the deepest possible terms.  This donation is unprecedented in its generosity, scope and vision, and it is precisely what was needed at this junction in the development of Perl 6.  We look forward to the greatest of successes with Perl 6, and this contribution is a key part of making that happen.  The Perl Foundation will communicate further developments with the Perl community and Mr. Hague as the pieces of this plan are executed.<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>YAPC::NA 2009 Call for Venue closing in less than a month</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/yapcna_2009_call_for_venue_clo.html" />
    <id>tag:news.perlfoundation.org,2008://18.2078</id>

    <published>2008-05-16T12:23:15Z</published>
    <updated>2008-05-16T12:31:55Z</updated>

    <summary>This is a reminder that the YAPC::NA 2009 Call for Venue will be closing in less than a month. If you plan on trying to host YAPC::NA 2009 and you haven&apos;t started on your bid, you&apos;d better get to it! The deadline for submissions this year is June 1st (as we would like to announce the 2009 venue at this year&apos;s YAPC::NA). You can get all of the details and see the Call for Venue posting on The Perl Foundation&apos;s...</summary>
    <author>
        <name>Jim Brandt</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>This is a reminder that the <span class="caps">YAPC</span>::NA 2009 <a href="http://news.perlfoundation.org/2008/03/yapcna_2009_call_for_venue.html">Call for Venue</a> will be closing in less than a month. If you plan on trying to host <span class="caps">YAPC</span>::NA 2009 and you haven't started on your bid, you'd better get to it! The deadline for submissions this year is June 1st (as we would like to announce the 2009 venue at this year's <a href="http://conferences.mongueurs.net/yn2008/"><span class="caps">YAPC</span>::NA</a>). You can get all of the details and see the <a href="http://news.perlfoundation.org/2008/03/yapcna_2009_call_for_venue.html">Call for Venue posting</a> on <a href="http://news.perlfoundation.org/">The Perl Foundation's blog</a>.</p>

<p>If you have any questions, please feel free to contact Jeremy Fluhmann (fluhmann at perlfoundation dot org).</p>]]>
        
    </content>
</entry>

<entry>
    <title>MediaWiki Syntax Parser Grant -- Aborted...</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/mediawiki_syntax_parser_grant.html" />
    <id>tag:news.perlfoundation.org,2008://18.2076</id>

    <published>2008-05-15T16:59:30Z</published>
    <updated>2008-05-15T17:46:22Z</updated>

    <summary>In July 2007, TPF granted Shlomi Fish for a Perl-Based Mediawiki Syntax Parser. Both parties have agreed to terminate this grant agreement. This will free up Shlomi to work on other projects, and allow the Perl Foundation to use the money to fund future grants....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>In July 2007, <span class="caps">TPF </span>granted Shlomi Fish for a Perl-Based Mediawiki Syntax Parser.</p>

<p>Both parties have agreed to terminate this grant agreement. This will free up<br />
Shlomi to work on other projects, and allow the Perl Foundation to use the<br />
money to fund future grants.</p>]]>
        
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposals</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposals.html" />
    <id>tag:news.perlfoundation.org,2008://18.2040</id>

    <published>2008-05-01T20:10:00Z</published>
    <updated>2008-05-10T13:46:14Z</updated>

    <summary>To this post follows a set of posts with proposals received by the Perl Foundation grants committee during the second call for grant proposals for 2008. Although not usual, the rules of the TPF GC are changing and we hope to make this a rule. Proposals are accepted during one month and after that period, they are posted for public discussion on the Internet. This is important to make GC more aware of the community interest on the project, and...</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[To this post follows a set of posts with proposals received by the Perl Foundation grants committee during the second call for grant proposals for 2008. Although not usual, the rules of the TPF GC are changing and we hope to make this a rule. Proposals are accepted during one month and after that period, they are posted for public discussion on the Internet. This is important to make GC more aware of the community interest on the project, and to help opening the grants attribution process.<br /><br />During the month of April we received the following grant proposals:<br /><ul><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_perl_6_t.html">Perl 6 Tables</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_solidify.html">Solidifying and Extending the Blog Normalize project</a></li><li><a href="http://news.perlfoundation.org/2008/05/httpsearchcpanorgdamogblognorm.html">Add Perl support to NetBeans</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_perl_on.html">Perl on a Stick</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_smop_sim.html">SMOP - Simple Meta Object Programming</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_fixing_b.html">Fixing Bugs in the Archive::Zip Perl Module</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_catalyst.html">CatalystX::Installer Application</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_the_perl.html">Perl Survey</a><br /></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_revision.html">Revision Control for all CPAN</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html">Improve POE::Component::IRC</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_dbeditor.html">DBEditor</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_extendin.html">Extending BSDPAN</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_make_loc.html">Make localtime() and gmtime() Work Past 2038</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_cpan_sta.html">CPAN Stability Project</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_testbuil.html">Test::Builder 2</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_automati.html">Automatic INSTALL generation</a></li><li><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_module_i.html">Module Installation Configuration Wizard</a><br /></li></ul>Please take some time on reading the proposals carefully and give some feedback on the relevance of the proposals.<b><br /><br />NOTE:</b> This discussion period will end May 10. Starting that date, the GC will begin the voting process. Please comment on each specific grant post or, if you want to give a broad opinion and comparison on the proposed grants, please comment this post. Thanks!<br /><br /><b>NOTE2:</b> There are five new projects submitted by Michael Schwern. Although they were received one day later they were accepted because Michael sent some emails to me asking for one more day.<br /><br /><b>NOTE3:</b> Somebody asked on a comment how these grants proposals work, and when. Please refer to the <a href="http://www.perlfoundation.org/grants_committee">Perl Foundation Grants Committee page</a>.<br /><br /><b>NOTE4:</b> Voting process started today (May 10th). We hope to have results in a week. But, please, continue commenting as you might be helping the Grants Committee deciding which proposals to fund.<br />]]>
        
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Revision Control for all of CPAN</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_revision.html" />
    <id>tag:news.perlfoundation.org,2008://18.2052</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:41:39Z</updated>

    <summary> Name: Eric Wilhelm Title: svn.cpan.org - revision control for all of CPAN Synopsis: This project will create a universally addressable Subversion space for the Perl community. It will be populated with historical and ongoing CPAN releases. Every CPAN author will be given a public version control repository, and may use a portion of it for any (reasonable) purpose. Alternate views, such as mappings for each distribution, will be handled via the http namespace....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Eric Wilhelm</li>
<li><b>Title:</b> svn.cpan.org - revision control for all of <span class="caps">CPAN</span></li>
<li><b>Synopsis:</b>  This project will create a universally addressable Subversion space  for the Perl community.  It will be populated with historical and   ongoing <span class="caps">CPAN </span>releases.  Every <span class="caps">CPAN </span>author will be given a public version control repository,   and may use a portion of it for any (reasonable) purpose.   Alternate views, such as mappings for each distribution, will be   handled via the http namespace.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Eric Wilhelm</p>

<p><b>Title:</b><br />
svn.cpan.org - revision control for all of <span class="caps">CPAN</span></p>

<p><b>Synopsis:</b></p>

<p>This project will create a universally addressable Subversion space  for the Perl community.  It will be populated with historical and  ongoing <span class="caps">CPAN </span>releases.</p>

<p>Every <span class="caps">CPAN </span>author will be given a public version control repository,  and may use a portion of it for any (reasonable) purpose.</p>

<p>Alternate views, such as mappings for each distribution, will be  handled via the http namespace.</p>


<p><b>Benefits to the Perl Community:</b></p>

<p>Preservation of History</p>

<p>A uniform set of release tags for each distribution will benefit    Perl users, <span class="caps">CPAN </span>authors, and downstream distributors (e.g. Debian)    by providing a structured system for querying changes and performing    bisection bug searches.  It will also offer convenience to the    module author or maintainer by providing rigorous and dependable    tags in cases where the original release tag history may have been    nonexistent or lost.</p>

<p>Future History</p>

<p>This system will give <span class="caps">CPAN </span>authors an easy path to start using    version control, but no action is required on their part for the    system to be useful.  They may choose to import their existing tree,    copy a tag as a starting point, or simply let the release history    continue to automatically accumulate.</p>

<p>Discoverability</p>

<p>The filesystem-like nature of Subversion and the ability to use <span class="caps">HTTP    </span>namespaces as glue provides a uniformly discoverable tree.  A proxy    configuration could allow some paths to point at external <span class="caps">SVN    </span>servers.  Even external, non-svn repositories can be found by humans    via simply placing instructions in a text file.  Formalizations may    evolve with use, such as a standard 'see_other.yml' file or other    conventions supported by client-side tools.</p>

<p>Addressability</p>

<p>Rather than downloading a tarball to examine its contents, users    will be able to fetch a single file (e.g. <span class="caps">META.</span>yml) or obtain a    directory listing directly from the svn <span class="caps">URL.</span></p>

<p>Welcoming Experimentation and Collaboration</p>

<p>Giving every <span class="caps">CPAN </span>author a subversion space provides convenience to    both new and existing authors.  It encourages them to publish code   early and often, getting feedback from the community as they go.  By    providing a common middle ground between local changes and <span class="caps">CPAN    </span>releases, new ideas are more conveniently tried and shared.</p>

<p>Enabling Innovation</p>

<p>The normalized <span class="caps">HTTP </span>namespace and historical data can act as a    foundation for many new tools and techniques.  It is hoped that the    system also creates new ways to search, new alpha-release channels    for cpan clients and testers, a structured base for documentation    patches, and enables various other interesting possibilities for the    Perl community's infrastructure.</p>

<p><b>Deliverables:</b></p>


<ol>
<li> Per-author repositories containing a historical record of package releases in "<del><span class="caps">CPAN</span></del>/$dist/tags/" directories.</li>
<li> Tools for automated, ongoing imports of new releases.</li>
<li>  Apache/etc configuration files.</li>
<li>Experiments/notes for future <span class="caps">HTTP </span>namespace tricks.</li>
<li> Documentation.</li>
<li>  "Burn-in" monitoring, hosting, and administration.</li>
</ol>




<p><b>Project Details:</b></p>

<p>One Repository Per Author</p>

<p>Previous attempts tried to fit the entire <span class="caps">CPAN </span>into one repository.    It "fits", but the import must be monolithic and the ongoing    administration and maintenance seems unwieldy.  The repository would    be roughly 4GB at over 100k revisions.  This layout would be easily    abused (accidentally or not) by requesting the full log or checkout.    Further, any corruption (via corrupt bytes or the need to scrub a    malicious checkin) would require a long dump/load and possibly    extended downtime for all authors.</p>

<p>By breaking repositories at the natural "author boundary", most of    the linearity of history and "diff compression" benefit is    preserved.  This scheme also allows for partitioning across multiple    servers should the request load ever warrant it.  The drawbacks of    monolithic import and unwieldy size are traded for some complexity    in cross-author issues.</p>

<p>The use of a single <span class="caps">HTTP </span>namespace will gloss over these issues for    most users.  Others may need to understand the boundaries (e.g.    "http://svn.cpan.org/E/EW/EWILHELM/..." where the repository is    at "EWILHELM" and the rest is in the httpd config.)  But I believe    that such issues will be minimal and, if necessary, can be handled    by client-side tools (which are outside the scope of this proposal.)</p>

<p>Ordered, Tagged Imports from Backpan</p>

<p>The import process mainly involves organizing the tarballs and    unpacking them in sequence with some svn actions.  Early experiments    show this to be I/O bound and suggest that it might yield well to    some light clustering.  The latest rethink based on per-author    repositories helps here.</p>

<p>The initial import scheme has had a few dry-runs, but needs to be    taught how to deal with more tarball oddities.  It should also be    more modularized and needs automated tests.</p>

<p>The import will use author id to identify the source of each    tarball.  Handling of multi-author distributions is still an open    question, but such packages will either be merged based on the    "02package.details" index or left to be addressed later.</p>

<p>It appears that the fsfs svn data can be hacked to enter the tarball    timestamp as the commit date.  If this does not work or there is not    a better way, the tarball date will simply go in the commit message.</p>

<p>Iterations and Test Cases</p>

<p>The details of the import may require a few passes through the    entire data set to get all of the kinks out of the procedure and get    everything to look right.  The initial version bailed after 17    hours, and a full load-in was estimated at 36 hours by extrapolating    from that.  The first task with the import tool is therefore to    break the process into logged and restartable pieces so that trouble    spots can be incrementally addressed while the run-through    continues.</p>

<p>The troublesome packages and edge cases will lead to changes in the    code, either being punted as unsupported conditions or fixes to the    algorithm.  In either situation, the edge cases will be collected    into a list (or hash) for feeding the test suite.</p>

<p>Once all of the trouble spots in the backpan of packages have been    addressed, the import may need to be run through one full pass to    ensure that any changes to the layout have been consistently applied    throughout the repositories.</p>

<p>Ongoing Imports</p>

<p>This will share some policy and procedure code with the initial    import tools, but will have a different control flow (triggered    rather than batch) and needs logging/etc suitable for unattended    runs.</p>

<p><span class="caps">HTTP</span> Namespace Experiments/Notes</p>

<p>Configuring per-dist views based on the module index should be    relatively straightforward.  Adding to such views in a running    server might not be particularly elegant, but a 'graceful' restart    should suffice.  I plan to implement at least this one view and    explore other possibilities.  The main goal with this portion is to    prove the namespace concept and whet the imagination of the    community.</p>

<p>Documentation</p>

<p><span class="caps">POD</span>/HTML documentation about the system and common use-cases will be    provided.  This will include an explanation of the access policy and    recommended directory layout. Administrative/interface tools and <span class="caps">API</span>s will be documented in <span class="caps">POD.</span></p>

<p>Hosting and Maintenance</p>

<p>Initial hosting will be provided by me, though in the event of    excessive traffic, I may have to throttle the bandwidth or restrict    access to humans who request it.  If such issues arise, the project    will be a definite success and should easily find a permanent home    with adequate bandwidth.</p>

<p>Publishing Results</p>

<p>The code, notes, and documentation will be available throughout the    project in the following repository and I will blog weekly updates    to use.perl.org.</p>

<p>http://scratchcomputing.com/svn4cpan</p>

<p><b>Project Schedule:</b></p>

<p>Estimated time:  8-10 weeks</p>

<p>Schedule: Starting around June 1, 2008</p>


<ul>
<li>week 1:  rework import tool into distributable/restartable scheme      svn name&amp;date features      run import, log trouble spots</li>
<li>week 2:       workaround or skip troublesome tarballs</li>
<li> week 3,4:      full, clean import ,     setup pause watch/fetch/import,      solicit feedback</li>
<li>week 5:      documentation,      automated tests</li>
<li>   week 6-8:      monitor usage and triage automatic setup      experiment with mod_proxy configurations and 'views'</li>
</ul>



<p>The schedule is more heavily loaded to the front because the main  import will take a large chunk of concentrated work mixed with long  run times and because <span class="caps">CPAN </span>is a moving target.  I plan to work on the  project 3-4 full days per week until the automatic imports are  running.  At that point, the gap between the history and "today"  cannot grow and interruptions are not penalized by extended run times.<br />
 <br />
The final weeks are at a slower pace to allow for communication  latency.  The documentation will be driven by feedback and questions  from the community.  The triage and monitoring will be about one hour  per day.</p>

<p>By funding this proposal, <span class="caps">TPF </span>will be allowing me to focus my  development in large enough chunks to get ahead of the continually  growing import task.  In smaller increments of work, the run time  overwhelms the free time per day and development gets postponed.</p>


<p><b>License:</b></p>

<p>All modules and utilities will be published under the Perl "GPL 2 /  Artistic 1" license.</p>


<p><b>Acknowledgements:</b></p>

<p>Michael Schwern helped formulate the initial idea and has provided  feedback and realism.  Jesse Vincent had a basic version of an import  tool and several helpful suggestions.  Various members of the Portland  Perl Mongers and the Perl community at large have provided useful  encouragement and additional feedback, and chromatic says I can quote  him as saying "I'm looking forward to it."</p>

<p>Scott Kveton, former director of <span class="caps">OSU'</span>s Open Source Lab did pledge  hosting and bandwidth almost two years ago.  It is possible that the  <span class="caps">OSL </span>is still willing to host this.</p>


<p><b>Bio:</b><br />
I am the author of several <span class="caps">CPAN </span>modules, and a contributor to projects  which include Module::Build, Test::Harness, Jifty, Moose, <span class="caps">PAR, </span>and  Inline.  I am also an active participant in several areas of the Perl  community including wxPerl, parrot, perl-qa, and module-authors.<br />
 <br />
As president of the Portland Perl Mongers, I have organized monthly  meetings (often with a speaker) for the past two years.  I frequently  give perl-related talks at pdx.pm, the local Linux group, and <span class="caps">OSCON.</span><br />
 <br />
For Google's SoC 2008, I organized the community volunteers, submitted  the org application and will be administering the <span class="caps">TPF'</span>s 6 projects  throughout the summer.</p>

<p>I was the architect and main developer for the dotReader open source  book reader, founder of the VectorSection open source graphics format  converter, and developer of the Perl-based imaging system responsible  for A. Zahner Co's fabrication and installation of the patterned  copper cladding on the deYoung museum in San Francisco.</p>


<p><b>Amount/Resources Requested:</b><br />
$3000.00</p>

<p><span class="caps">DNS CNAME </span>entry for svn.cpan.org</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Fixing Bugs in the Archive::Zip Perl Module</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_fixing_b.html" />
    <id>tag:news.perlfoundation.org,2008://18.2046</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:38:13Z</updated>

    <summary> Name: Alan Haggai Alavi Title: Fixing Bugs in the Archive::Zip Perl Module Synopsis: Perl programs often need to manipulate .zip files. Archive::Zip (http://search.cpan.org/dist/Archive-Zip/) is a Perl module that allows a Perl program to manage Zip archive files without calling an external utility. The Archive::Zip module, however, has some bugs which prevent it from generating fully-portable .zip files, that are handled correctly by all .zip file readers and manipulators. The project&apos;s main aim is to address the outstanding bug reports...</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Alan Haggai Alavi</li>
<li><b>Title:</b> Fixing Bugs in the Archive::Zip Perl Module</li>
<li><b>Synopsis:</b> Perl programs often need to manipulate .zip files. Archive::Zip (http://search.cpan.org/dist/Archive-Zip/) is a Perl module that allows a Perl program to manage Zip archive files without calling an external utility. The Archive::Zip module, however, has some bugs which prevent it from generating fully-portable .zip files, that are handled correctly by all .zip file readers and manipulators. The project's main aim is to address the outstanding bug reports (http://rt.cpan.org/Public/Dist/Display.html?Name=Archive-Zip), by using pyconstruct (http://pyconstruct.wikispaces.com/), which is a flexible framework for defining dissectors for binary formats in a declarative way.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Alan Haggai Alavi</p>

<p><b>Title:</b><br />
Fixing Bugs in the Archive::Zip Perl Module</p>

<p><b>Synopsis:</b><br />
Perl programs often need to manipulate .zip files. Archive::Zip (http://search.cpan.org/dist/Archive-Zip/) is a Perl module that allows a Perl program to manage Zip archive files without calling an external utility.</p>

<p>The Archive::Zip module, however, has some bugs which prevent it from generating fully-portable .zip files, that are handled correctly by all .zip file readers and manipulators. The project's main aim is to address the outstanding bug reports (http://rt.cpan.org/Public/Dist/Display.html?Name=Archive-Zip), by using<br />
pyconstruct (http://pyconstruct.wikispaces.com/), which is a flexible framework for defining dissectors for binary formats in a declarative way.</p>

<p><b>Deliverables:</b><br />
A version of Archive::Zip Perl module that will manipulate .zip files and a re-usable .zip file deconstructor.</p>

<p><b>Project Details:</b><br />
Archive::Zip is a Perl module that allows a program to create, manipulate, read and write Zip archive files without calling an external utility. This programmatic approach is more robust than other approaches of calling external utilities, as their output is not easily parsable.</p>

<p>The aim of the project is to fix the existing Archive::Zip module. I will use the pyconstruct tool to compare the structure of .zip files produced by Archive::Zip with those produced by other utilities. pyconstruct will be used for the dissection. It is a generic analyser for file formats and protocols based on the concept of defining data structures in a declarative manner, rather than procedural code. Once I build the .zip file dissector, I will be able to compare Archive::Zip's outputs with those of other .zip archivers. Then I will be able to understand what Archive::Zip is doing wrong, and how to improve it.</p>

<p>The Archive::Zip Perl module will not depend on pyconstruct for its operation. pyconstruct will be used only for the comparison of binary .zip files.</p>

<p>Some of the currently outstanding bugs that will be fixed are:<br />
* #22933: Properly extract symbolic links (http://rt.cpan.org/Public/Bug/Display.html?id=22933)<br />
* #19502: Incomplete file (http://rt.cpan.org/Public/Bug/Display.html?id=19502)</p>

<p>Reproducing bugs is the major issue that can occur during the project. If I am not able to reproduce a bug, I will contact the bug reporter and get more details on how the bug had occurred.</p>

<p>In case of a setback, that is, inherent problem in Archive::Zip that cannot be solved, I will be able to deliver a .zip file parser in Perl. This parser will dump verbose information which will enable users to understand why certain .zip files are not fully-portable. This<br />
knowledge will help in creating a new Zip archive module which solves the inherent problems of Archive::Zip Perl module.</p>

<p><b>Project Schedule:</b><br />
The project will take 3 months. I can begin work immediately.</p>

<p><b>Bio:</b><br />
I am doing my final year in Computer Science and Engineering at College of Engineering Chengannur, Kerala, India ( http://cec.ihrd.ac.in ). I am a member of the college website team. At college, I am the <span class="caps">FLOSS</span> Cell Chairman and have conducted classes and seminars on Free Software at my college as well as a nearby school. I am an active participant of technical events at college. I program in C/C++, <span class="caps">PHP,</span> Visual Basic and build web-sites for fun and profit. It has been a year and a half since I have fully converted to the <span class="caps">GNU</span>/Linux Operating System. At one period, I wrote some articles on <span class="caps">GNU</span>/Linux (http://slashmedia.wordpress.com). While having neglected doing that recently, I hope to revive that site soon. Currently I am maintaining a personal website at: http://drchost.com/~haggai/.</p>

<p>I have recently become interested in Perl. I have done a Webmin clone in Perl as part of college project. It helped me understand some basic Perl. I use the Vim editor for all programming.</p>

<p><b>Amount Requested:</b><br />
$1,500.</p>

<p><b>Notes:</b><br />
I have the approval of Archive::Zip Perl module maintainers: Adam Kennedy and Shlomi Fish.</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - CatalystX::Installer</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_catalyst.html" />
    <id>tag:news.perlfoundation.org,2008://18.2048</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:39:11Z</updated>

    <summary> Name: Paul Cain Title: CatalystX::Installer - A generic GUI deployment for catalyst applications Synopsis: Create a web application that provides a cross-platform generic GUI for setting up Catalyst applications. There is no command line version of this program since anyone who wants to use the command line can just edit the configuration files directly....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Paul Cain</li>
<li><b>Title:</b> CatalystX::Installer - A generic <span class="caps">GUI </span>deployment for catalyst applications</li>
<li><b>Synopsis:</b> Create a web application that provides a cross-platform generic <span class="caps">GUI </span>for setting up Catalyst applications. There is no command line version of this program since anyone who wants to use the command line can just edit the configuration files directly.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Paul Cain</p>

<p><b>Title:</b><br />
CatalystX::Installer - A generic <span class="caps">GUI </span>deployment for catalyst applications</p>

<p><b>Synopsis:</b><br />
Create a web application that provides a cross-platform generic <span class="caps">GUI </span>for setting up Catalyst applications. There is no command line version of this program since anyone who wants to use the command line can just edit the configuration files directly.</p>

<p><b>Benefits to the Perl Community:</b><br />
Anyone who wants a friendly <span class="caps">GUI </span>with which they can easily setup, test, and automatically configure their catalyst applications will benefit from this project. The target user base for this application is people who would like to simplify and automate the installation of Catalyst applications onto their web servers. Currently, there is no accepted framework for providing <span class="caps">GUI </span>installers for catalyst applications; this module intends to provide a generic <span class="caps">GUI </span>for common web application use-cases, and a basis for extension where required. There is no command line version of this program since anyone who wants to use the command line can just edit the configuration files directly. I think this program could be classified as a new approach that is also an aggregation of existing tools and ideas.</p>

<p><b>Deliverables:</b><br />
I plan to deliver a completed Perl module, called CatalystX::Installer, that provides a generic <span class="caps">GUI </span>for the deployment of Catalyst applications.</p>

<p><b>Project Details:</b><br />
For CatalystX::Installer, the Movable Type setup wizard is used as an inspiration for its design. The main new idea of this approach is that the program will provide a generic <span class="caps">GUI </span>that works with most common use-cases for Catalyst applications, and provides a framework for extension for specialist use-cases.</p>

<p>This approach frees the Catalyst developers from having to design a setup wizard for their application(with the possible exception of some special cases) while also freeing the user from the hassle of having to use a different(or no) install wizard for each Catalyst application that he or she installs.</p>

<p>The solution involves either:</p>

<p><b>1)</b> Adding the file script/myapp_setup.pl to the template for Catalyst<br />
programs. For example:   '$ catalyst MyApp' That command would create all of the files that it currently creates, plus 'script/myapp_setup.pl'.</p>

<p><b>2)</b>  Having the installer script running seperately such as: '$ catalyst MyApp; $ cd MyApp; $ catalystx-installer [options]'  Where '$ catalystx-installer [options]'creates script/myapp_setup.pl and handles any special options. The file would contain a stand-alone server similar to script/myapp_server.pl. The administrator could then connect to this server and use the <span class="caps">GUI </span>to apply the configuration information(such as database info, fastcgi information, mod_perl, server address, login information, language, etc) when the application is installed on a server. The application developer could also customize this based on the requirements of his or her application. I would create a set of <span class="caps">API</span>s that wrap around <span class="caps">HTML</span>::FormFu to make this process as simple as possible. For example, if the developer wanted to add an entry to get the preferred type of configuration file(YAML, <span class="caps">INI, XML, </span>etc), he or she could add some code similar to this to 'cscript/myapp_setup.pl'.</p>

<p>my $preferred_config_type=CatalystX::Installer::Forms::SelectionList-&gt;new();<br />
$preferred_config_type-&gt;add({<br />
'YAML' =&gt; "YAML",<br />
'INI' =&gt; 'Windows <span class="caps">INI</span> File',<br />
'XML' =&gt; 'XML',<br />
});</p>

<p>This would allow the developer to easily customize the installer for his or her applications. A link to 'cscript/myapp_setup.pl' can be placed into the root directory during make dist.</p>

<p>When the user(server administrator) downloads the applications, she first extracts it, switches to directory, and then types the command:</p>

<p>$ perl myapp_setup.pl</p>

<p>It then starts by checking Makefile.PL to verify that all of the dependencies are installed. If all dependencies are not met, it asks the user if he or she wants to automatically install the <span class="caps">CPAN </span>dependencies, and also warns about any missing non-CPAN dependencies<br />
that cannot be installed. Next, it verifies that the program runs correctly by doing the tests. After that, it runs make install. When make install completes, it will prompt the user to either enter a password or use a randomly generated password with which the <span class="caps">GUI </span>setup can be accessed(the user can change the password in the <span class="caps">GUI </span>setup).</p>

<p>The user can then access this server either from the local machine or a remote one, as long as they are using web browser capable of entering information into web forms. The password exists to prevent unauthorized access to myapp_setup.pl, it is stored in an encrypted location, and it is required for all subsequent runnings of myapp_setup.pl. The connection will also be encrypted with <span class="caps">SSL</span>/TLS in order to assure the safety of all data sent. When the <span class="caps">GUI </span>setup is complete, it will ask the user if they want the setup program to create a script that can be used to automatically enter the data that they just entered into the <span class="caps">GUI </span>setup program. This allows a user to clone a setup for multiple systems and of course a password is still required. Also, the script, if created, will only be readable by the user who created it.</p>

<p>CatalystX::Installer can be used for more than just installation; it can also be used to reconfigure an application that has already been installed. For example, if the user were to run myapp_setup.pl again, they could change the options they set up the first time. myapp_setup.pl would then save a backup copy of the original config file(s), and create new ones with the new options.</p>

<p>There are of course some uncertainties for this application. One of the main foreseeable problems for this application will be making the <span class="caps">GUI </span>generic enough where works for all programs, but not so generic that user or developer(s) needs to do a lot of customizations in order to satisfactorily setup the program.  I plan on doing some surveys on the Catalyst mailing list to see exactly what options people want myapp_setup.pl to have by default.</p>

<p><b>Project Schedule:</b></p>


<ul>
<li>May 10 - Gather community feedback about what they want in the the module</li>
</ul>




<ul>
<li>May 17 - Feedback gathered \u2013 Begin designing class heirarchy charts, flowcharts, and other planning materials</li>
</ul>




<ul>
<li>June 1 - Project Begins by starting coding on all necessary <span class="caps">API</span>s for both the base program and user extensions</li>
</ul>




<ul>
<li>Monday, June 18 - <span class="caps">API</span>s are functional - Begin programming myapp_setup.pl to perform its necessary functions and fixing any unforeseen problems in the <span class="caps">API</span>s</li>
</ul>




<ul>
<li>Monday, July 7 - Beta 1 released - All features exist now in the program; program will be distributed to any willing victims for testing</li>
</ul>




<ul>
<li>Monday, July 21 - Beta 2 released - mainly just bug fixes</li>
</ul>




<ul>
<li>Monday, August 4th - Release Candidate 1 released</li>
</ul>




<ul>
<li>August 11 - Release Candidate 2 released - This release may be skipped if no show-stopping bugs are found in <span class="caps">RC1</span></li>
</ul>




<ul>
<li>August 18 - Project goes gold</li>
</ul>



<p><b>Bio:</b><br />
My name is Paul Cain. I am 18 years old and I am a Freshman(sophomore by the time summer starts) and I go to Kansas State University at Salina, where I have a 4.0 <span class="caps">GPA.</span></p>

<p>I have been programming in Perl for about 2.5 years and I have read several books on programming in Perl. Of those books, Perl Best Practices was my favorite. I've been using Linux since 2004, although right now I do most of my work on Windows Vista with ActivePerl and Strawberry Perl.</p>

<p>For development tools, I started out using Activestate's ActivePerl as my Perl interpreter, but more recently I have been using Strawberry Perl due to its superior <span class="caps">CPAN </span>compatibility. I've also used standard Perl installation on various Linux distributions over the years. When coding Perl, I usually use a text editor with syntax highlighting such as Notepad++, Kate, or Gedit. However, the larger my code gets, the harder it is to manage with a simple text editor, especially when to code reaches 1000+ lines. I plan to switch to an <span class="caps">IDE </span>with a class browser, automated debugger, and other tools that will make the code easier to manage. Finally, I use dual-17 inch monitors in order to increase my productivity.</p>

<p>Generally I try to stay close to the coding standards set forth in Perl Best Practices because they provide a logical way to code that can be easily duplicated among multiple developers. For this particular project, I think that an Object-Oriented method of program design would probably be the best design method due to the size, complexity, and type of the program.</p>

<p>Most of the Perl programs I write are pretty short, but the largest program I've written was a personal project that ended up being about 1800 lines of code, much of which was for the <span class="caps">GUI </span>behavior. This particular program particular will most likely be larger than that, but I plan to use well-designed classes and strict adherence to Perl Best Practice's coding standards in order to keep my code cleaning, readable and easy to manage.</p>

<p><b>Amount Requested:</b><br />
$3000</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - The Perl Survey</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_the_perl.html" />
    <id>tag:news.perlfoundation.org,2008://18.2050</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:40:07Z</updated>

    <summary> Name: Kieren Diment Project Title: The Perl Survey - From &quot;Pilot&quot; to Production Synopsis: In 2007 Kirrily Robert organised and administered the Perl survey (http://perlsurvey.org) to provide a snapshot of the Perl community. In particular she made significant effort to recruit as many people as possible, resulting in a sample size of around 4500 responses. While an excellent start for a design for a survey instrument, it can be improved in a number of ways....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Kieren Diment</li>
<li><b>Project Title:</b> The Perl Survey - From "Pilot" to Production</li>
<li><b>Synopsis:</b>  In 2007 Kirrily Robert organised and administered the Perl survey (http://perlsurvey.org) to provide a snapshot of the Perl community. In particular she made significant effort to recruit as many people as possible, resulting in a sample size of around 4500 responses. While an excellent start for a design for a survey instrument, it can be improved in a number of ways. </li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Kieren Diment</p>

<p><b>Project Title:</b><br />
The Perl Survey - From "Pilot" to Production</p>

<p><b>Synopsis:</b><br />
In 2007 Kirrily Robert organised and administered the Perl survey (http://perlsurvey.org) to provide a snapshot of the Perl community. In particular she made significant effort to recruit as many people as possible, resulting in a sample size of around 4500 responses. </p>

<p>While an excellent start for a design for a survey instrument, it can be improved in a number of ways.  These are:</p>


<ol>
<li> Removal of as many open-ended questions as possible by recoding into closed categories.</li>
<li> Improvement on existing analyses.  A couple of interesting visualisations aside, existing analyses consist of descriptive statistics.  A more sophisticated statistical analysis would be useful in order to establish links between different variables - for example looking at programmer seniority or community seniority versus platform and programming knowledge.</li>
<li>The rich demographic data would very useful, if complimented by an attitude survey.  This way more links can be made between individual's demographic profiles, and what they think of issues relating to Perl and the community surrounding it.  I propose to rerun the perl Survey in February 2009 with this included.  This will track changes to the community, and provide useful measurements of community attitudes.</li>
</ol>



<p><b>Benefits to the Perl Community:</b><br />
Over the past few years, with the rise of other dynamic languages, Perl has often been described as having an "image problem" - misconceptions about the, readability, maintainability and general "hackishness" of perl code are commonplace.  A more complete implementation and analysis of the Perl survey should help dispel some of this image problem, and provide a greater insight into the structure of the community.  Although the Perl community is internally cohesive, there seems to be a problem with external communication.</p>

<p>Based on the aphorism 'know thyself' and the provision of high quality data analysis, this project should be seen partly as an attempt to move the discussion on within the community, and partly as a resource for people and companies that use or want to use Perl.</p>

<p><b>Deliverables:</b></p>


<ul>
<li>Converting the original Perl survey into a low friction replicable instrument, which can be re-administered periodically to track the   state of the community (codename: "The Perl Barometer"). </li>
<li>Scripted inferential statistical analysis for the existing Perl  survey data, and for analysis of future runs of the survey.</li>
<li>A written report extending the "official" report (available at  http://xrl.us/bjp5z), as well as regular use.perl.org blog posts  outlining progress (at http://use.perl.org/~singingfish)   </li>
<li>A better understanding of the community's attitudes towards the Perl  language.</li>
<li>A framework with which to assess people external to the community's  attitude to Perl.</li>
<li>I will deliver a paper on the this work at the Open Source  Developers Conference (OSDC.au) in Sydney Australia in December 2008  (audio and/or video and slides uploaded to the web)</li>
<li>Leading a discussion group on Perl and the community at <span class="caps">YAPC</span>::EU in  August 2008 and <span class="caps">OSDC.</span>au in December 2008 (the latter is a  multilanguage conference with a strong Perl presence).</li>
<li>Public svn or git repository for all work performed on this grant.</li>
</ul>




<p><b>Project Details:</b><br />
Stage 1.  Cleaning up of the perl survey data file.</p>

<p>A number of questions are represented in the Data::PerlSurvey2007 datafile as arrays.  So for example the 'Programming Languages Known' hash key contains an array listing all the programming languages checked by that individual.  From a statistical point of view this leads to a data file that is difficult to analyse.  The correct practice is to create a dummy variable for every option that could exist.  Again in terms if the 'Programming Languages Known' question, this means that for every individual, the language should be stored in a hash key rather than an array, and the value of the key should be 1 if the language is known to the respondent, and 0 if not.  There is also significant extra work in folding the 780 responses in "Other programming languages known" back into the main "Programming languages known" before dummy variable coding.  Unfortunately these responses will need to be processed manually so this stage is labour intensive.</p>

<p>While there are no other obvious problems with the data file other than this, experience suggests that smaller issues will occur.  These should be much less significant than the problem with the "other programming languages" question.</p>

<p>Stage 2.  Detailed statistical analysis</p>

<p>Once the data file is cleaned, we can then code each variable into the appropriate statistical data type (i.e. continuous, ordinal, nominal or boolean) in preparation for a more detailed analysis.  The open source statistical software R (http://r-project.org) will be used for this analysis, and the scripts to generate the analysis will be documented and stored in a public version control repository.</p>

<p>The first step in a serious statistical analysis of the Perl survey data is to assess the best data reduction procedure to use.  Two likely candidates are cluster analysis and multidimensional scaling. This work can be time-consuming due to the need to select and evaluate the performance of a variety of distance functions and clustering algorithms.  This is worthwhile with the current data set, as there is a large sample of high quality data.  This means that we have considerable statistical power.  An examination of some of the demographic variables (including measurements of Perl community involvement) and examination of relationships between these and any<br />
patterns found, are likely to prove interesting.  So we can see how language preferences differ between "old-timers" and newer programmers, level of <span class="caps">CPAN </span>contribution and other community involvement.</p>

<p>This detailed analysis will lead to a much better understanding of the structure of the survey, and this in turn will lead to refinements of the questionnaire based on the data. Which leads to step three - refinement and extension of the existing survey.</p>

<p>Stage 3. Refinement of questionnaire</p>

<p>Once we have a clear picture of the structure of the Perl community, we can then refine the existing questions.  For example, from my point of view, there are missing questions about the proportion of work time spent on programming and related tasks.  Discussion with the community will reveal others, and the data reduction process from stage two will<br />
also reveal other useful lines of questioning for future surveys.  The job then is to find the shortest questionnaire for maximum benefit. </p>

<p>Stage 4.  Development of Attitude Survey and/or Q methodology.</p>

<p>Attitude surveys are frequently used in social science to understand individuals and communities better.  With careful design, these can be useful instruments with which to better profile the community.  We propose to develop the questionnaire by analysis of the existing corpus of text in mailing lists and on the web with an intelligent<br />
search strategy, and to read and code (tag with themes) relevant parts of this corpus.  The second activity is to run discussions in person. I hope to obtain funding from elsewhere to enable me to travel to <span class="caps">YAPC</span>::EU in august to run a discussion session on the community, based on prior analysis of publicly available sources.  Failing this, I will<br />
be able to organise a session on <span class="caps">IRC </span>(including an attempt to recruit people who aren't <span class="caps">IRC </span>regulars, possibly with the help of <span class="caps">CGI</span>::IRC or similar).  I will also run a second group at the Open Source Developers Conference in Sydney, Australia in December where Will also present a paper on the Perl community.  This will have the advantage<br />
that this is a multi-language conference where the local Perl community is well represented.  Looking at external overlapping groups in conjunction with the in-group will provide useful extra information for framing an attitude survey.  Experience suggests that this process should result in a well targeted 5 minute attitude survey.</p>

<p>I also mentioned using Q methodology.  This is another clustering technique where participants rate a reasonably large number of statements on a continuum (actually a quasi-normal distribution - see the <span class="caps">CPAN </span>module for Statistics::QMethod::QuasiNormalDist for more details).  Following this, correlation matrix between individuals is calculated and subject to principal components analysis and orthogonal rotation.  This procedure results in quantifiable clusters of points of view, and the structure of subjective opinions.  The decision whether to use this method really rests on the results of text analysis and group discussions, and depends on the nature of the<br />
issues brought up in discussion.</p>

<p>Stage 5. The Perl Survey 2009</p>

<p>We would plan to run the second Perl Survey in April 2009 on hosting donated by Shadowcat Systems.  Data analysis after this should be straightforward and quick based on the pilot work done on the first survey.  There are a number of options for delivery of the survey.  I may ask Strategic Data  in Melbourne, Australia for a donation of their services, use the existing code that Kirrly Robert wrote, or use the survey management software which I am currently writing as part of another project.  My own code is meant to be a generic solution to survey delivery, with ease of administration and encouragement of good psychometric practice, which I hope to be able to release under<br />
an open source licence.</p>

<p>I'd anticipate that the survey should be run at 18 month to two year intervals following this.</p>

<p><b>Project Schedule:</b></p>

<p>Stages 1 and 2 Immediate to July 2008</p>

<p>Cleanup and statistical analysis of 2007 Perl survey results.  Plan to release report on analysis for July in order to provide basis for stage 3.</p>

<p>Stage 3, August 2008 to December 2008</p>

<p>Discussion groups and interviews, particularly at <span class="caps">YAPC</span>::EU and <span class="caps">OSDC.</span>au.  Qualitative analysis of this data for reporting, and incorporation into attitude survey.</p>

<p>Stage 4, September 2008 - January 2008</p>

<p>Analysis of interview/discussion data, and development of attitude survey and/or Q sort.</p>

<p>Stage 5.  Run the second Perl survey through February 2009, with reporting and analysis ready by April 2009.  </p>

<p><b>Biography:</b></p>

<p>I have been using Perl for research data management, visualisation, analysis and collection since 2002.  In 2006 I became involved in the Catalyst project, and am currently the documentation manager.  I was editor-in-chief for the 2006 and 2007 Catalyst Advent calendars and I was closely involved in the development of the Catalyst tutorial. </p>

<p>I have ten years experience of questionnaire design and analysis in health care and management research settings.  I have tutored statistics at undergraduate and postgraduate level to students in science, psychology, medicine and marketing.  A selection of my publications (with full text) are available at: http://xrl.us/bjwd7<br />
(this does not include current publications in review,  pre-2003 articles, and some conference papers). </p>

<p>I am currently trying to develop a substantial research project on open source communities, project viability and aspects of commercialisation.  This is an extension of the work that I was involved with on Australian cross-sector <span class="caps">R&amp;D </span>organisations from 2003 to 2005.  The Perl survey is related to, but separate from my larger research programme.</p>

<p><b>Amount Requested:</b><br />
$3000</p>

<p><b>Notes:</b><br />
I have been given maintainership of this project by it's originator. The <span class="caps">IRC </span>transcript is below:<br />
  <br />
00:52 <del>!</del> Skud [n=Skud@nat02.sfo1.metaweb.com] has joined #perlnet<br />
00:52 &lt; Skud&gt; hihi<br />
00:56 &lt; kd_the_realone&gt; hey Skud <br />
00:57 &lt; kd_the_realone&gt; Skud: I'm applying for a tpf grant to do some significant work on the perl survey<br />
00:57 &lt; kd_the_realone&gt; really I just need either your blessing to be doing this, or for you to hand me maintainership of the project<br />
01:04 &lt; Skud&gt; hi kd<br />
01:04 &lt; Skud&gt; kd: yes, please do it<br />
01:04 &lt; Skud&gt; i will happily hand you maintainership <br />
01:04 &lt; Skud&gt; was going to look for someone to take over anyway</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Improve POE::Component::IRC</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html" />
    <id>tag:news.perlfoundation.org,2008://18.2054</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:42:56Z</updated>

    <summary> Author: Hinrik Örn Sigurðsson Title: Improve POE::Component::IRC Synopsis: I will improve POE::Component::IRC1 by overhauling its test suite, adding more features, fixing bugs and writing more documentation....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Author:</b> Hinrik Örn Sigurðsson</li>
<li><b>Title:</b> Improve <span class="caps">POE</span>::Component::IRC</li>
<li><b>Synopsis:</b> I will improve <span class="caps">POE</span>::Component::IRC<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn1">1</a></sup> by overhauling its test suite, adding more features, fixing bugs and writing more documentation.</li>
</ul>

]]>
        <![CDATA[<p><b><span class="caps">AUTHOR</span>:</b><br />
Hinrik Örn Sigurðsson</p>

<p><b><span class="caps">NAME</span>:</b><br />
Improve <span class="caps">POE</span>::Component::IRC</p>

<p><b><span class="caps">SYNOPSIS</span>:</b><br />
I will improve <span class="caps">POE</span>::Component::IRC<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn1">1</a></sup> by overhauling its test suite, adding more features, fixing bugs and writing more documentation.</p>

<p><b><span class="caps">BENEFITS</span>:</b><br />
PoCo::IRC is the most modern <span class="caps">IRC </span>client module for Perl out there. It is used for many applications, mostly <span class="caps">IRC </span>bots. Users will greatly benefit from better test coverage, added features, and bug fixes. New users will also benefit from better documentation.</p>

<p><b><span class="caps">DELIVERABLES</span>:</b></p>


<ul>
<li>Make PoCo::IRC send periodic events reporting on the progress of <span class="caps">DCC </span>file transfers.</li>
<li>Add an option to <span class="caps">POE</span>::Component::IRC's constructor to specify maximum upload/download speed of <span class="caps">DCC </span>file transfers.</li>
<li>Get test coverage up to at least 65% (from ~39%).</li>
<li>A rich(er) cookbook<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn2">2</a></sup> of example programs showing off PoCo::IRC's features. I will write at least the recipes titled 'MegaHal', 'Reload' and 'Gtk2'.</li>
</ul>



<p><b><span class="caps">DETAILS</span>:</b><br />
PoCo::IRC currently does not report any progress on <span class="caps">DCC </span>file transfers (except for success and failure). One way to implement that would be to send a <span class="caps">POE </span>event periodically, after every sent/received chunk of <span class="caps">DCC </span>data. Registering for this event will allow a <span class="caps">GUI </span>client to update a progress bar for example.</p>

<p>Bandwidth throttling of <span class="caps">DCC </span>transfers is missing as well. This might be done by subclassing <span class="caps">POE</span>::Wheel::ReadWrite to add rate limiting capabilities. If I manage to do that in a very general way, I will put that code into a separate module to make it easy to use with other <span class="caps">POE</span>-based code, or patch <span class="caps">POE</span>::Wheel::ReadWrite. I will have the rate limit be a configurable value passed to <span class="caps">POE</span>::Component::IRC's constructor, as with the <span class="caps">DCC </span>ports.</p>

<p>PoCo::IRC does not have sufficient test coverage in my opinion. Devel::Cover reports a total of ~39% coverage. I will add to and improve the test suite, to discover possible bugs to fix and further ensure code quality. I'm aiming for at least 65% coverage.</p>

<p>PoCo::IRC has been criticized for being a little hard to use at first due to unclear documentation. I recently started writing the PoCo::IRC Cookbook, which provides working example programs with documentation. It currently lists 11 recipes, of which 4 have been written. I will complete at least 3 of the unwritten recipes (or new ones).</p>

<p>In the event that I fail to accomplish some of my objectives, effort on any other objectives will not have been wasted as they do not depend on each other. </p>

<p><b><span class="caps">SCHEDULE</span>:</b></p>

<p>Weeks 1 &amp; 2</p>


<ul>
<li>Read up on how it would be best to throttle bandwidth of <span class="caps">TCP </span>connections in <span class="caps">POE</span>-based code. Study <span class="caps">POE</span>::Wheel::ReadWrite's source, etc.</li>
<li>Get intimately familiar with the <span class="caps">DCC </span>spec and how other clients implement it.</li>
<li>Work on the <span class="caps">DCC</span>-related stuff. Implement throttling and progress reports at the very least.</li>
</ul>



<p>Weeks 3 &amp; 4</p>


<ul>
<li>If needed, review the <span class="caps">DCC </span>code and add some final touches.</li>
<li>Improve the <span class="caps">DCC</span>-related tests.</li>
<li>Write at least the 3 Cookbook recipes mentioned in <span class="caps">DELIVERABLES.</span></li>
</ul>



<p>Weeks 5, 6 &amp; 7</p>


<ul>
<li>Improve/add to existing documentation where needed.</li>
<li>Read more about available tools and good practices in the area of testing.</li>
<li>Clean up/comment/reorganize existing test files where needed.</li>
<li>Write missing tests. Get coverage up to at least 65%. Test, test, test!</li>
</ul>




<p><b><span class="caps">BIO</span>:</b><br />
I am a 22 year-old student from Iceland. I have been refactoring, fixing bugs and adding features to PoCo::IRC for the last couple of months<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn3">3</a></sup>, during the course of writing an <span class="caps">IRC </span>bouncer<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn4">4</a></sup> based on it. I am now one of PoCo::IRC's co-maintainers. I have not been very involved with other open source projects aside from occasional patches and bug reports to various pieces of software that I use. I have a very good grasp of Perl and feel confident that I will be able to do everything I have listed in this proposal.</p>

<p>As for development tools, I usually go for vim or gedit for code writing, then the command line and perl(1) for the rest. Computing power is graciously provided by my trusty old Dell Inspiron 8600 laptop. Perl is my favorite programming language (so far), in large part due to its "postmodern" nature<sup class="footnote"><a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_improve.html#fn5">5</a></sup>. I've read quite a few books about Perl, my favorite being the Camel book, closely followed by <span class="caps">MJD'</span>s Higher-Order Perl.</p>

<p><b><span class="caps">AMOUNT REQUESTED</span>:</b><br />
$2,000.</p>


<p><b><span class="caps">REFERENCES</span>:</b></p>


<ol>
<li>http://search.cpan.org/dist/POE-Component-IRC</li>
<li>http://search.cpan.org/dist/POE-Component-IRC/lib/POE/Component/IRC/Cookbook.pm</li>
<li>http://search.cpan.org/src/BINGOS/POE-Component-IRC-5.72/Changes</li>
<li>http://search.cpan.org/dist/App-Bondage</li>
<li>http://www.wall.org/~larry/pm.html</li>
</ol>

]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - DBEditor</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_dbeditor.html" />
    <id>tag:news.perlfoundation.org,2008://18.2056</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:44:10Z</updated>

    <summary> Name: Grant Grueninger Project Title: DBEditor Synopsis: DBEditor implements a CGI-based database editor. It allows you to very quickly implement a basic table editor by simply stating table data in configuration files (tools are provided to create the configuration files from your existing tables SQL schema)....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Grant Grueninger</li>
<li><b>Project Title:</b> <span class="caps">DBE</span>ditor</li>
<li><b>Synopsis:</b> <span class="caps">DBE</span>ditor implements a <span class="caps">CGI</span>-based database editor. It allows you to very quickly implement a basic table editor by simply stating table data in configuration files (tools are provided to create the configuration files from your existing tables <span class="caps">SQL </span>schema).</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Grant Grueninger</p>

<p><b>Project Title:</b><br />
<span class="caps">DBE</span>ditor</p>

<p><b>Synopsis:</b><br />
<span class="caps">DBE</span>ditor implements a <span class="caps">CGI</span>-based database editor. It allows you to very quickly implement a basic table editor by simply stating table data in configuration files (tools are provided to create the configuration files from your existing tables <span class="caps">SQL </span>schema).</p>

<p>Set up your database config info:<br />
mv db_template cgi-bin/db_lib<br />
vi db_lib/dbconfig.pl # Edit database connection settings<br />
vi nav_lib.pl # Optional: Customize your nav bar, add links to many tables, etc</p>

<p>Set up an editor for your "contacts" table:<br />
cp -rp template cgi-bin/contacts # template contains edit_items wrapper, config.pl, plugins.pl<br />
vi cgi-bin/contacts/config.pl # Edit table schema </p>

<p>Point browser at:<br />
http://www.yourdomain.com/cgi-bin/contacts/edit_items</p>

<p>You can then quickly add functionality using plugins (provided as subroutines in plugins.pl), for example:</p>


<ul>
<li>Turn text <span class="caps">URL</span>s into <span class="caps">HTML </span>links</li>
<li>Process text output</li>
<li>Verify input</li>
<li>most other things you'd want to do in a web app.</li>
</ul>



<p>It is easy to add more "plugin points" in <span class="caps">DBE</span>ditor for future needs.</p>

<p><b>Benefits to the Perl Community:</b><br />
<span class="caps">DBE</span>ditor provides an extremely simple and fast foundation for a web application. Setup and learning curve is <strong>much</strong> faster than Catalyst (about 1 hour for a new user to get a simple table editor running), and it's simpler and more stable than Jifty (DBEditor has been around longer and specializes in editing database tables). It provides the means to set up a simple web app to edit a database that can be easily expanded into a more robust application.</p>

<p><b>Deliverables:</b><br />
Review and re-write existing code in <span class="caps">DBE</span>ditor.pm to: </p>


<ul>
<li>Make it an object oriented module.</li>
<li>Have clean, secure code.</li>
<li>Work under <span class="caps">CGI </span>or mod_perl implementations</li>
<li>Be "taint safe"</li>
</ul>



<p>Complete the existing documentation:</p>


<ul>
<li>Add Quick start instructions for new users</li>
<li>Add Full setup instructions for new users</li>
<li>Review and clarify existing documentation</li>
</ul>



<p><b>Project Details:</b><br />
<span class="caps">DBE</span>ditor was originally written as a set of <span class="caps">CGI </span>scripts. A copy of an "edit_items" script had to be placed in each directory and had accompanying config and plugins files. The main script code was then moved into a perl module and the "edit_items" script replaced by a wrapper that contains: "use <span class="caps">DBE</span>ditor; &amp;process();".</p>

<p>The module is functional and in use in several web sites I maintain. However, the code and documentation is not "clean" enough for me to release to <span class="caps">CPAN.</span> It also needs to be made into a true OO module to be compatible with mod_perl. These are tasks I'd like to do, but I haven't had sufficient motivation since the module functions suitably for my needs. Given the module's evolution, these are not minor changes. The code will need to be completely reviewed and revised, and proper documentation will need to be written so that new users can utilize the module easily.</p>

<p><b>Project Schedule:</b><br />
Based on my current workload, I would be able to deliver within 1 month and begin work within 1-2 weeks of grant approval. </p>

<p><b>Bio:</b><br />
I have been programming perl since the early 90's, and have been programming in general since the late 70's (when I was 8). My father owns a computer company in what's now called "Silicon Valley", so I grew up around computers. In 1996 I wrote a web-based project management system that I use to this day in my consulting work. I have also authored several <span class="caps">CPAN </span>modules including <span class="caps">WWW</span>::Myspace, <span class="caps">WWW</span>::CDBaby, and <span class="caps">WWW</span>::Sitebase to help musicians promote themselves online and access their CD sales data.</p>

<p><b>Amount Requested:</b><br />
$2500</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Extending BSDPAN</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_extendin.html" />
    <id>tag:news.perlfoundation.org,2008://18.2058</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-01T20:45:05Z</updated>

    <summary> Name: Colin Smith Title: Extending BSDPAN Synopsis: Refactor the BSDPAN module into a generic and extensible solution for bridging CPAN with UNIX packaging systems....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Colin Smith</li>
<li><b>Title:</b> Extending <span class="caps">BSDPAN</span></li>
<li><b>Synopsis:</b> Refactor the <span class="caps">BSDPAN </span>module into a generic and extensible solution for bridging <span class="caps">CPAN </span>with <span class="caps">UNIX </span>packaging systems.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Colin Smith</p>

<p><b>Title:</b><br />
Extending <span class="caps">BSDPAN</span></p>

<p><b>Synopsis:</b><br />
Refactor the <span class="caps">BSDPAN </span>module into a generic and extensible solution for bridging <span class="caps">CPAN </span>with <span class="caps">UNIX </span>packaging systems.</p>

<p><b>Benefits to the Perl Community:</b><br />
The wealth of freely available code <span class="caps">CPAN </span>represents is one of the Perl language's greatest strengths. Tighter integration of this resource with a given operating system's native packaging system would give Perl a unique advantage over Ruby, Python, etc. while making it more accessible (and maintainable) to users.</p>

<p><b>Deliverables:</b></p>


<ul>
<li>refactored and fully-documented version of the <span class="caps">BSDPAN </span>module</li>
<li>dependency tracking across all operating systems</li>
<li>Module::Build support</li>
<li>OpenBSD support</li>
<li>more robust FreeBSD support (esp. rewrite of Packlist.pm)</li>
<li>time permitting, support for pkgsrc and at least one Linux package system</li>
<li>time permitting, explore options for <span class="caps">BSDPAN </span>integration without a customized Perl build (for existing systems)</li>
</ul>



<p><b>Project Details:</b><br />
<span class="caps">BSDPAN </span>was conceived (and written) as a glue module for interfacing <span class="caps">CPAN </span>module installation with the FreeBSD operating system's native package database. Blurring the distinction between <span class="caps">CPAN </span>and the FreeBSD `ports tree' in this fashion offers several advantages: modules honor environment variables such as $PREFIX automatically, and the user can query and manipulate them as they would any other software package.</p>

<p>I propose to expand <span class="caps">BSDPAN </span>into a more generic solution for bridging the gap between <span class="caps">CPAN </span>and the myriad of packaging systems in use today. This would include fleshing out <span class="caps">BSDPAN'</span>s nearly nonexistent body of documentation, factoring out FreeBSD-specific code to a submodule accessed through a consistent interface, and adding support for<br />
Module::Build.</p>

<p><b>Project Schedule:</b><br />
Expected timeline: Approximately three months, or the duration of my summer holiday, whichever comes first. Work will begin the week of May 26th (firm date to be decided upon receipt of finals schedule).</p>

<p><b>Bio:</b><br />
I've worked with Perl in some capacity for a little over eight months, and have dabbled in projects such as Catalyst and <span class="caps">POE.</span> I have significant prior experience in this problem domain, having the pfSense project's package system virtually from scratch several years ago. This system, written in <span class="caps">PHP, </span>``wrapped'' FreeBSD package files for integration with a pfSense firewall's online administration interface, logging, remote administration tools, etc.</p>

<p><b>Amount Requested:</b><br />
My work as funded by this grant would constitute at least some part of my summer employment, and as such I feel proposing an hourly wage rather than set milestones would be most prudent. Assuming an average of 15 hours of work per week at $15 per hour, two months of work could be funded for $1800.</p>

<p><b>Notes:</b><br />
Anton Berezin, <span class="caps">BSDPAN'</span>s maintainer, was contacted over <span class="caps">IRC </span>and gave his consent for the project.</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Make localtime() and gmtime() Work Past 2038</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_make_loc.html" />
    <id>tag:news.perlfoundation.org,2008://18.2060</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-03T10:18:19Z</updated>

    <summary> Name: Michael G Schwern Project Title: Make localtime() and gmtime() Work Past 2038 Synopsis: Prevent the Y2038 bug from effecting Perl users. This means make localtime() and gmtime() work for times beyond 2038. Do this regardless of the state of the system C libraries. A working solution, in C, already exists. This grant is to finish the portability issues, write additional tests and change perl to use the repaired C library....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Michael G Schwern</li>
<li><b>Project Title:</b> Make localtime() and gmtime() Work Past 2038</li>
<li><b>Synopsis:</b> Prevent the <span class="caps">Y2038 </span>bug from effecting Perl users. This means make localtime() and gmtime() work for times beyond 2038. Do this regardless of the state of the system C libraries. A working solution, in C, already exists. This grant is to finish the portability issues, write additional tests and change perl to use the repaired C library.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Michael G Schwern</p>

<p><b>Project Title:</b><br />
Make localtime() and gmtime() Work Past 2038</p>

<p><b>Synopsis:</b><br />
Prevent the <span class="caps">Y2038 </span>bug from effecting Perl users. This means make localtime() and gmtime() work for times beyond 2038. Do this regardless of the state of the system C libraries.</p>

<p>A working solution, in C, already exists. This grant is to finish the portability issues, write additional tests and change perl to use the repaired C library.</p>


<p><b>Benefits to the Perl Community:</b><br />
Outlined here in detail. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-02/msg00040.html</p>


<ul>
<li>Many applications and modules make use of gmtime() and localtime() directly or indirectly to display dates or do date math.</li>
<li>Many applications have to work on dates 30 years or more in the future. </li>
<li>The problem will only get worse with time.</li>
<li>The C time libraries are being very slow to fix this well known problem.</li>
<li>Not everyone can just upgrade to 64 bit hardware.</li>
<li>Even DateTime is effected by this when it works with Unix timestamps.</li>
</ul>



<p>Perl has traditionally shielded programmers from the limitations of C. The idea that time ends at 2038 is a ridiculous notion to anyone but a Unix C programmer. When localtime() returns the wrong date programmers will blame Perl, not C, resulting in another ding against Perl.</p>

<p>We can instead turn this into a PR win for Perl. Similar to the publicity for being one of the safest <span class="caps">Y2K </span>languages, Perl can be one of the first <span class="caps">Y2038 </span>safe languages.</p>

<p><b>Deliverables:</b><br />
64 bit localtime/gmtime</p>


<ul>
<li>Write C versions of localtime() and gmtime() which work with times beyond 2038 regardless of the limits of the system C libraries.</li>
<li>Test for negative times.</li>
<li>If it can be made to work, make it work.</li>
<li>If not, provide a proper error message.</li>
<li>Fix any performance issues so the process is O(1) (currently parts of the code are O(n)).</li>
<li>Make gmtime64_r() properly report an <span class="caps">EOVERFLOW </span>error when the year is too large to be held by tm.tm_year.</li>
<li>Fix any portability issues. [See http://svn.schwern.org/svn/y2038/README.txt]</li>
</ul>



<p>Provide a patch for Perl which...</p>


<ul>
<li>Adapts these libraries for perl and change pp_gmtime() and pp_localtime() to use them.</li>
<li>Add additional tests to localtime(), gmtime() and related core modules (Time::Local) for beyond 2038.</li>
<li>Ensure cross-platform compatibility including any necessary Configure probing.</li>
<li>Use the existing system libraries should they be 64 bit clean.</li>
<li>Works with bleadperl.</li>
<li>Works with 5.10.</li>
<li>[BONUS] Backport to 5.8.</li>
</ul>



<p><b>Project Details:</b><br />
Perl will have to bundle it's own 64 bit clean localtime() and gmtime() implementations.</p>

<p>There is one OS specific component to localtime() which will need to be duplicated or gotten by other means and that is how to adjust for the current time zone. The scalar value of localtime() and gmtime() is not effected by locales. This problem has been solved. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-02/msg00259.html</p>

<p>The usual sorts of system compatibility problems will need to be resolved. A discussion of the issues has been started here. Much of the information is already gathered by Configure. Andy Dougherty has said he'll work on the rest. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-02/msg00277.html</p>

<p>localtime() and gmtime() will still be limited by the size of Perl scalars. For 32 bit systems this means NV limits which is about 2**47 or about 4 million years in the future. With 64 bit integer scalars it should be able to go all the way out to the limit of a signed long long or 2**63 which is something like 300 billion years. However, since we're still using the 32 bit tm struct and tm.tm_year is a signed int so the practical limit on 32 bit systems is about 2 billion years in the future which I'm happy with.</p>

<p>Permission has been gotten from the original author of the 64 bit localtime code to use and modify it in Perl without a binary attribution clause.</p>

<p><b>Project Schedule</b><br />
I will be available to work on the project after June 20th (post <span class="caps">YAPC</span>::NA).</p>

<p>The first, speculative phase is already complete. This involved writing the 64 bit clean localtime/gmtime C functions which work on 32 bit machines and shoving it into the perl core.</p>


<ul>
<li>Write a 64 bit localtime/gmtime which works on 32 bit machines. [COMPLETE See http://svn.schwern.org/svn/y2038/]</li>
<li>First cut patch adapting pp_gmtime() and pp_localtime() [COMPLETE]</li>
</ul>



<p>Second phase is cleanup of the patch with perl to make it play nice with Configure and not leak memory, etc. This will require the assistance of p5p and those who know Configure, perl and C.</p>


<ul>
<li>Make the patch play nice with Configure.</li>
<li>Fix any known and revealed cross-platform issues.</li>
<li>Fix any known and revealed bugs.</li>
<li>Extend existing core time tests to check for dates beyond 2038 and fix any revealed bugs.</li>
</ul>



<p>At this point it works well enough to be shipped in bleapderl. This is a long back and forth process requiring lots of input from many people on many different machines. A lot of time will be spent waiting for feedback. It is anticipated this will take at least one<br />
month, probably two.</p>


<p>Third phase is to improve the C functions.</p>


<ul>
<li>Test for negative times.</li>
<li>If it can be made to work, make it work.</li>
<li>If not, provide a proper error message.</li>
<li>Fix any performance issues so the process is O(1) (currently parts of the code are O(n)).</li>
<li>Make gmtime64_r() properly report an <span class="caps">EOVERFLOW </span>error when the year is too large to be held by tm.tm_year.</li>
</ul>



<p>These parts are relatively straight forward and should be solved in two weeks. They can be done in paralell with the 2nd phase.</p>

<p>Finally, backport into 5.10 and 5.8. This should be trivial.</p>

<p>The project is considered complete when maintperl contains a 64 bit localtime.</p>

<p>The earliest date for completion is July 26th. Latest is August 18th. It is not a coincidence that these correspond with the end of <span class="caps">OSCON </span>and <span class="caps">YAPC</span>::Europe. They provide opportunities to get some intense hacking done on any hanging issues that might be holding up the process.</p>

<p><b>Bio</b><br />
Although my C skills are far from ideal for solving this problem, I seem to be the guy who cared enough about this problem to push it through and write a complete implementation. I work as an independent contractor and will be working half time for the summer in anticipation of working on grant work.</p>

<p>Andy Dougherty and Jan Dubois have expressed interest. Andy knows Configure and Jan knows cross-platform porting. </p>

<p><b>Amount Requested:</b><br />
Total: $1500</p>

<p>$1000 for myself to write tests, preliminary perl core code patches and ensure the remaining deliverables get finished.</p>

<p>Because my expertise is not up to snuff in some places, I would request another $500 to be dispersed to folks helping out, mostly with the Configure and porting issues and necessary cleanup, to ensure the work gets done. Should this money not be necessary it will be returned.</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - CPAN Stability Project</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_cpan_sta.html" />
    <id>tag:news.perlfoundation.org,2008://18.2062</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-03T10:27:46Z</updated>

    <summary> Name: Michael G Schwern Project Title: CPAN Stability Project Synopsis: The CPAN Stability Project is intended to improve the usability of CPAN over long term use by providing a way to choose between safe releases vs newest releases as well as to better guarantee that upgrading will not break anything. It draws heavily on Debian&apos;s release management and tiers (unstable, testing, stable)....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Michael G Schwern</li>
<li><b>Project Title:</b> <span class="caps">CPAN</span> Stability Project</li>
<li><b>Synopsis:</b> The <span class="caps">CPAN</span> Stability Project is intended to improve the usability of <span class="caps">CPAN </span>over long term use by providing a way to choose between safe releases vs newest releases as well as to better guarantee that upgrading will not break anything. It draws heavily on Debian's release management and tiers (unstable, testing, stable).</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Michael G Schwern</p>

<p><b>Project Title:</b><br />
<span class="caps">CPAN</span> Stability Project</p>

<p><b>Synopsis:</b><br />
The <span class="caps">CPAN</span> Stability Project is intended to improve the usability of <span class="caps">CPAN </span>over long term use by providing a way to choose between safe releases vs newest releases as well as to better guarantee that upgrading will not break anything. It draws heavily on Debian's release management and tiers (unstable, testing, stable).</p>

<p>This is a combination largely of known problems and previously proposed solutions into one overarching vision of stability with flexibility by adding...</p>


<ul>
<li>Multiple module indexes spanning from most stable to most recent.</li>
<li>The ability to test a module's dependents before upgrading.</li>
<li>Metadata about the types of changes in a release.</li>
<li>Backwards compatibility information about a release.</li>
</ul>



<p><b>Benefits to the Perl Community</b><br />
The intent is to allow everyone to safely and automatically keep their <span class="caps">CPAN </span>modules up to date.</p>

<p><span class="caps">CPAN </span>is Perl's greatest asset, but it is not used widly enough because there is only one way to keep up to date on <span class="caps">CPAN </span>and that is to install the latest version. This is a crap shoot, and for large dependency chains there's a very good chance something has broken today. The <span class="caps">CPAN</span> Dependency Checker illustrates the problem. http://cpandeps.cantrell.org.uk/</p>

<p>This will allow large-scale <span class="caps">CPAN </span>users to feel and be safe when using <span class="caps">CPAN </span>modules while still keeping up to date, while still allowing those who value rapid development to get the latest versions and servicing everyone in between.</p>

<p>The <span class="caps">CPAN</span> Stability Project eases the "dependency hell" problem of a broken dependency bringing an install or upgrade to a halt.</p>


<p><b>Deliverables</b><br />
The project is split up into four major pieces, Testing Dependents, Indexing and Release Metadata. Please see the wiki page under Project Details for details of each component.</p>

<p>The deliverables have all been specified as use cases describing what new abilities will be available, rather than how it will be done. This is so the implementation can evolve without having to renegociate the grant, and so in the end the Perl Community gets their intended benefits.</p>


<p><em>Testing Dependents</em></p>

<p>Given a <span class="caps">CPAN </span>release, a user must be able to...</p>


<ul>
<li>Determine what distributions depend on this release.</li>
<li>Of those, determine which are installed.</li>
<li>Aquire those dependent releases with their tests.</li>
<li>Run the dependent's tests against the new release</li>
</ul>



<p>without installing the new release.</p>


<ul>
<li>Determine if the dependent's tests pass or fail.</li>
<li>Configure a <span class="caps">CPAN </span>shell to perform this process automatically.</li>
</ul>



<p>It is intended that these additions be available inside a <span class="caps">CPAN </span>shell, but initially they will be written independently to rapidly prototype the problem.</p>

<p>Though it will attempt to work without it, this phase will operate best with a local database of installed releases and one may be developed during the process.</p>

<p>This phase will likely depend on the Complete Index.</p>


<p><em>Release Metadata</em></p>

<p>The ability for release authors to document, via <span class="caps">META.</span>yml...</p>


<ul>
<li>The list of what has changed in this release, in a general sense.
<ul>
<li>Documentation, Tests, Security, Features, etc...</li>
</ul>
</li>
<li>The intended highest stability tier of this release.</li>
<li>The oldest release with which the release intends to maintain compatibilty.</li>
</ul>



<p>The ability for the indexer to...</p>


<ul>
<li>Use the release's intended stability tier to determine how the release is indexed.</li>
</ul>



<p>The ability for the user to...</p>


<ul>
<li>Determine if upgrading to the release will break compatbility with installed dependents.
<ul>
<li>Have a <span class="caps">CPAN </span>shell make that determination automatically</li>
</ul>
</li>
<li>[BONUS] Declare to the <span class="caps">CPAN </span>shell what releases they want to remain compatible with.</li>
</ul>



<p>It is intended that these additions be added to the <span class="caps">META.</span>yml specification, but initially they can be added as 3rd party defined keys using the provisions for this in the <span class="caps">META.</span>yml spec.</p>

<p>It is intended that Module::Build and ExtUtils::MakeMaker have the ability to emit these new keys. If not, Module::Build users have the ability to add their own <span class="caps">META.</span>yml keys and it is intended that MakeMaker gain this ability soon.</p>

<p>This phase is largely independent of the other phases.</p>

<p><em>Complete Index</em><br />
The ability for an indexer to create and updated...</p>


<ul>
<li>A "Complete" index mapping a module and version to a release.
<ul>
<li>Tie in the ability to get deleted releases from BackPAN mirrors.</li>
<li>[BONUS] A remote service to query the Complete index</li>
</ul>
</li>
</ul>



<p>The ability for a user to...</p>


<ul>
<li>Install a particular release using the Complete index via a <span class="caps">CPAN </span>shell</li>
</ul>




<p><em>Tiered Indexing</em><br />
The ability to generate and keep up to date...</p>


<ul>
<li>Tiered release indexes
<ul>
<li>Experimental</li>
<li>Unstable</li>
<li>Testing</li>
<li>Stable</li>
<li>Old Stable</li>
</ul>
</li>
<li>A compatible 02packages.details.txt index.</li>
</ul>



<p>The ability for an indexer to...</p>


<ul>
<li>Place a release in its starting tier.
<ul>
<li>Experimental starts in Experimental.</li>
<li>Unstable starts in Unstable.</li>
<li>Testing starts in Testing.</li>
<li>Stable starts in Testing.</li>
<li>Untagged <span class="caps">X.Y </span>is handled as Stable.</li>
<li>Untagged <span class="caps">X.Y</span>_Z is handled as Unstable.</li>
</ul>
</li>
<li>Move a release to another tier.</li>
<li>Progress releases from Testing to Stable after a waiting period.</li>
<li>Progress Stable releases to Old Stable when a new Stable release appears.</li>
<li>Remove old Old Stable releases when new Old Stable releases come in.</li>
</ul>



<p>The ability for release authors to...</p>


<ul>
<li>Declare the intended stability tier for their release.</li>
<li>Change the intended stability for a release.
<ul>
<li>For example, change from Stable to Testing if a release fails tests.</li>
</ul>
</li>
</ul>



<p>The ability for a user to...</p>


<ul>
<li>Configure a <span class="caps">CPAN </span>shell to draw from a particular index.</li>
<li>[BONUS] Have the <span class="caps">CPAN </span>shell try a more stable index if their intended fails.</li>
</ul>



<p>It is intended that this all coordiante with <span class="caps">PAUSE.</span> Because of the complexity and age of the <span class="caps">PAUSE </span>code, it is intended that initial implementation will be with a new, prototype indexer. Should coordination with <span class="caps">PAUSE </span>not prove feasible, for whatever reason, or should it prove complex enough that it endangers holding up the project, the prototype indexer can be put into production independent of <span class="caps">PAUSE.</span> It would publish new indexes indepenently, but still remain in sync with <span class="caps">PAUSE.</span> Users and <span class="caps">CPAN </span>clients could use these independent indexes to talk with existing <span class="caps">CPAN </span>mirrors.</p>

<p>This phase can operate independently of the other phases. Without the Release Metadata all releases are simply considered Untagged.</p>


<p><b>Project Details</b></p>

<p>Details of the project can be found here. http://www.perlfoundation.org/perl5/index.cgi?cpan_stability_project</p>

<p>This project is a combination of several smaller, related grants. ambs advised that I should combine them. If the project is too large it can be split back into the smaller stages.</p>

<p>This project works best when coordinated with...</p>


<ul>
<li><span class="caps">CPAN.</span>pm</li>
<li><span class="caps">CPANPLUS</span></li>
<li><span class="caps">PAUSE</span></li>
<li>ExtUtils::MakeMaker</li>
<li>Module::Build</li>
<li>The <span class="caps">META.</span>yml spec</li>
</ul>



<p><b>Project Schedule</b><br />
I will be available to work on this project after June 20th.</p>

<p>Scheduling for this project is difficult as adapting <span class="caps">PAUSE </span>and the <span class="caps">CPAN </span>shells can throw the whole thing off. The independent prototypes can be scheduled with more certainty.</p>

<p>In the interest of getting this grant in before the 2008 Q2 deadline, I must leave off a schedule.</p>


<p><b>Bio:</b><br />
Michael G Schwern will be doing the primary work. He has been programming Perl for over 12 years. He has written, maintained or been heavily involved in all parts of the <span class="caps">CPAN </span>module installation process. As maintainer of Test::More and ExtUtils::MakeMaker, at the very root of the <span class="caps">CPAN </span>dependency tree, he is acutely aware of the problems involved in keeping <span class="caps">CPAN </span>stable. He is currently working as an independent contractor. His work schedule for the summer is open in anticipation of being awarded this grant.</p>

<p>It is intended that the project coordinate with...</p>


<ul>
<li>Andreas König for <span class="caps">CPAN </span>shell suport and <span class="caps">PAUSE </span>and <span class="caps">CPAN </span>indexing changes.</li>
<li>Ken Williams for approval of <span class="caps">META.</span>yml and Module::Build changes.</li>
<li>Jos Boumans for <span class="caps">CPANPLUS </span>support.</li>
<li>Adam Kennedy for advice on dependent testing.</li>
<li>David Golden and rjbs for <span class="caps">CPAN</span> Testers advice.</li>
</ul>



<p><b>Amount Requested</b></p>

<p>$9000</p>

<p>Is this amount is too large for this round of grants, the project can be split back into the following pieces...</p>

<p>Complete Index: $2000</p>

<p>Dependent Testing<br />
* w/Complete Index: $4000<br />
* Tiered Indexing: $4000</p>

<p>Release Metadata: $1000</p>

<p>Additionally, as this project would be of great interest to any Enterprise level <span class="caps">CPAN </span>users, it is possible that several companies could be found to match the <span class="caps">TPF'</span>s funding.</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Test::Builder 2</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_testbuil.html" />
    <id>tag:news.perlfoundation.org,2008://18.2064</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-03T10:33:34Z</updated>

    <summary> Name: Michael G Schwern Project Title: Test::Builder2 Synopsis: Write a new, incompatible version of Test::Builder (in a new namespace) to improve the architecture and support desired features which Test::Builder does not or cannot. Make sure that both Test::Builder and Test::Builder2 based testing modules can work together....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Michael G Schwern</li>
<li><b>Project Title:</b> Test::Builder2</li>
<li><b>Synopsis:</b> Write a new, incompatible version of Test::Builder (in a new namespace) to improve the architecture and support desired features which Test::Builder does not or cannot. Make sure that both Test::Builder and Test::Builder2 based testing modules can work together.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Michael G Schwern</p>

<p><b>Project Title:</b><br />
Test::Builder2</p>

<p><b>Synopsis:</b><br />
Write a new, incompatible version of Test::Builder (in a new namespace) to improve the architecture and support desired features which Test::Builder does not or cannot. Make sure that both Test::Builder and Test::Builder2 based testing modules can work together.</p>


<p><b>Benefits to the Perl Community:</b><br />
Test::Builder underpins 80% of the tests on <span class="caps">CPAN. </span>http://www.nntp.perl.org/group/perl.qa/2008/01/msg10172.html</p>

<p>Its limitations become everyone's limitations. It's done a very good job adapting the last six years, and testing has become more sophisticated in that time, but age and backwards compatibility holds things back. There are a number of desired features which Test::Builder cannot support, such as end-of-test actions, without radically altering how tests are built.</p>

<p>Another desire is to make Test::Builder "subclassable" to override its behaviors. This is currently not possible and a simple subclass is unsafe. A more sophisticated system will be necessary and requires some careful thought.</p>


<p><b>Deliverables</b></p>


<ul>
<li>Split up the Test::Builder object into an aggregate of objects.</li>
<li>Split up global shared Test resources into individual objects</li>
<li>The test counter</li>
<li>The output filehandles</li>
<li>The plan</li>
<li>...</li>
<li>Split up localizable behaviors into objects</li>
</ul>




<ul>
<li>Allow individual test modules to locally override Test::Builder2 behaviors</li>
</ul>




<ul>
<li>Allow test modules to globally override Test::Builder2 behaviors</li>
<li>How the plan works</li>
</ul>




<ul>
<li>Allow hooks for global beginning and end of test functions.</li>
<li>Ensure multiple hooks "stack"</li>
<li>die on fail</li>
<li>debug on fail</li>
<li>...</li>
</ul>




<ul>
<li>Hooks for global beginning and end of test actions</li>
<li>Example: A safer Test::NoWarnings</li>
<li>Example: Don't cleanup intermediate files on failure so they can be debugged</li>
</ul>




<ul>
<li>Allow for test output other than <span class="caps">TAP</span></li>
</ul>




<ul>
<li>Allow another Test::Builder-like module to work in the same process as Test::Builder (for example, sharing the counter).</li>
</ul>




<ul>
<li>Rewrite Test::Builder in terms of Test::Builder2.</li>
</ul>




<p><b>Project Details</b></p>

<p>Much can be learned from chromatic's Perl 6 implementation of Test::Builder.</p>

<p>Because this would be an incompatible <span class="caps">API </span>change, it would have to go into a new namespace. Probably Test::Builder2.</p>

<p>There's a good chance much of the changes having to do with turning Test::Builder2 into an aggregate will be able to be backported to Test::Builder. Some are necessary, such as sharing single plan, output and test counter objects.</p>


<p><b>Project Schedule</b><br />
I will be availble to work on this project after June 20th.</p>

<p>There are three major stages...</p>


<ul>
<li>Test::Builder2 alpha release</li>
<li>Test::Builder2 stable release</li>
<li>Test::Builder ported to Test::Builder2</li>
</ul>



<p>Much of the work on Test::Builder2 will be figuring out what people want to do with it and what the <span class="caps">API </span>will be. The code itself is not that hard. An alpha release can be coded quickly to begin getting feedback and have the <span class="caps">API </span>worked with.</p>

<p>Stabilizing the <span class="caps">API </span>and feature set will require a long iterative feedback process with test module authors and many alpha releases and much discussion. This is necessary so as not to wall off the Test::Builder2 <span class="caps">API </span>into supporting a bad design decision. As such, there is a long period built into the schedule before the first stable release.</p>

<p>Porting Test::Builder to Test::Builder2 is the final declaration that Test::Builder2 is stable and usable. This effectively "throws the switch" moving <span class="caps">CPAN </span>over to Test::Builder2.</p>


<ul>
<li>First alpha release: Two weeks from the start</li>
<li>Feature complete alpha release: One month after first alpha.</li>
<li>First stable release: At least two months after complete alpha.</li>
<li>Feature complete stable release: At least one month after first stable.</li>
<li>Test::Builder -&gt; Test::Builder2: At least one month after first stable.</li>
</ul>



<p>If the project starts June 20th, the "at best" schedule is...</p>


<ul>
<li>First alpha release: Beginning of July</li>
<li>Feature complete alpha: Beginning of August</li>
<li>First stable: Beginning of October</li>
<li>Feature complete stable: Beginning of November</li>
<li>Test::Builder -&gt; Test::Builder2: Beginning of November</li>
</ul>



<p>I must reiterate, most of the time in the schedule is to gain feedback, form use cases and allow the <span class="caps">API </span>to gel.</p>


<p><b>Bio</b><br />
I wrote Test::More and maintain Test::Builder. I've been at the center of Perl testing for the last six or seven years.</p>

<p>I work as an independent contractor and have cleared my summer schedule to be able to provide at least 20 hours of work a week on <span class="caps">TPF </span>grants.</p>


<p><b>Amount Requested</b><br />
$3000</p>]]>
    </content>
</entry>

<entry>
    <title>2008Q2 Grant Proposal - Automatic INSTALL generation</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_automati.html" />
    <id>tag:news.perlfoundation.org,2008://18.2066</id>

    <published>2008-05-01T20:00:01Z</published>
    <updated>2008-05-03T10:38:13Z</updated>

    <summary> Name: Michael G Schwern Project Title: Automatic INSTALL.txt generation Synopsis: Write a module which can automatically generate Perl module installation instructions. Integrate into Module::Build and ExtUtils::MakeMaker....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gp2008q2" label="GP2008Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<ul>
<li><b>Name:</b> Michael G Schwern</li>
<li><b>Project Title:</b> Automatic <span class="caps">INSTALL.</span>txt generation</li>
<li><b>Synopsis:</b> Write a module which can automatically generate Perl module installation instructions. Integrate into Module::Build and ExtUtils::MakeMaker.</li>
</ul>

]]>
        <![CDATA[<p><b>Name:</b><br />
Michael G Schwern</p>

<p><b>Project Title:</b><br />
Automatic <span class="caps">INSTALL.</span>txt generation</p>

<p><b>Synopsis:</b><br />
Write a module which can automatically generate Perl module installation instructions. Integrate into Module::Build and ExtUtils::MakeMaker.</p>

<p><b>Benefits to the Perl Community</b><br />
Most Perl modules come without module installation instructions. At most they might include the "make" mantra. Figuring out how to install a module, its prerequisites and how to get it to install into a different location than the system directory can be daunting to a newbie.</p>

<p>By making the generation of an accurate <span class="caps">INSTALL.</span>txt for modules simple and easy for authors, more modules will include installation instructions and Perl modules will be easier to install.</p>

<p>This makes <span class="caps">CPAN </span>modules more accessable, helping with a user through the first ten minutes of trying to use <span class="caps">CPAN </span>modules.</p>

<p><b>Deliverables</b><br />
First stage is to write a prototype module which can do the following...</p>


<ul>
<li>Write a module which, when run inside a distribution directory, can write a file containing...</li>
<li>The appropriate basic make or Build instructions.</li>
<li>Instructions for installing into the user's home directory</li>
<li>Include reference to <span class="caps">PERL5LIB </span>and "use lib"</li>
<li>Necessary module prerequisites</li>
<li>If a C compiler is necessary</li>
<li>If make is necessary</li>
<li>Minimum version of perl (if specified)</li>
<li>Contact and bug tracking information (if available)</li>
</ul>



<p>Then add support for this to MakeMaker and Module::Build.</p>


<ul>
<li>Add a create_install() option to Module::Build similar to create_readme().</li>
<li>Add a <span class="caps">CREATE</span>_INSTALL option to MakeMaker.</li>
</ul>



<p><span class="caps">NOTE</span>: It may be easier to skip the independent module and simply code it as part of Module::Build and then port to MakeMaker. This is because a lot of the information which the prototype will have to probe for may already be known by Module::Build.</p>


<p><b>Project Details</b><br />
Many moons ago I wrote a program to do this called mod2readme. http://schwern.org/~schwern/src/mod2readme</p>

<p><b>Project Schedule</b><br />
I am available to begin work after June 20th. This is a straightforward, low risk project using technologies I know well.</p>


<ul>
<li>First alpha release: Two weeks after start.</li>
<li>Stable integration with Module::Build: Two weeks after first alpha.</li>
<li>Stable integration with MakeMaker: One month after first alpha.</li>
</ul>



<p>Everything takes longer with MakeMaker.</p>

<p>If the project starts June 20th, then the schedule looks like this:</p>


<ul>
<li>First alpha release: Beginning of July</li>
<li>Stable integration with Module::Build: Mid July</li>
<li>Stable integration with MakeMaker: Mid August</li>
</ul>




<p>The project is considered complete when the deliverables have been integrated into Module::Build's and MakeMaker's trunk.</p>


<p><b>Bio</b><br />
I maintain ExtUtils::MakeMaker and have worked extensively on Module::Build. I think about usability problems in perl.</p>


<p><b>Amount Requested</b><br />
$500</p>]]>
    </content>
</entry>

</feed>
