<?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,2010-03-22://18</id>
    <updated>2013-05-19T14:41:58Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

<entry>
    <title>Grant Application: Maintaining Perl 5</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/grant-application-maintaining.html" />
    <id>tag:news.perlfoundation.org,2013://18.3243</id>

    <published>2013-05-19T12:40:30Z</published>
    <updated>2013-05-19T14:41:58Z</updated>

    <summary>We have received the following grant application, under the Perl 5 Core Maintenance Fund, from Tony Cook. Before we vote on this proposal we would like to get feedback and endorsements from the Perl community. Please leave feedback in the comments or send email with your comments to karen at perlfoundation.org. Project Title: Maintaining Perl 5 Name: Tony Cook Synopsis Free up one of the Perl 5 core&apos;s contributors to work non-stop on making Perl 5 better. Benefits to Perl...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
    <category term="perl5coremaintenance" label="perl5 core maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>We have received the following grant application, under the <a href="http://www.perlfoundation.org/perl_5_core_maintenance_fund">Perl 5 Core Maintenance Fund</a>, from Tony Cook.</p>

<p>Before we vote on this proposal we would like to get feedback and endorsements from the Perl community. Please leave feedback in the comments or send email with your comments to karen at perlfoundation.org.</p>

<p><b>Project Title</b>: Maintaining Perl 5</p>

<p><b>Name</b>:  Tony Cook</p>

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

<p>Free up one of the Perl 5 core's contributors to work non-stop on making Perl 5 better.</p>

<p><b>Benefits to Perl 5 Core Maintenance</b></p>

<p>This grant provides the pumpking with a development resource to target as he or she wills, while still providing for more general bug fixes and other improvements to the perl core.</p>

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

<p>I propose to adopt the same model as Dave and Nicholas's successful ongoing grants.</p>

<p>Like their grants, there are intentionally no pre-defined deliverables for this project. I intend to devote around 260 hours (about 20 hours a week) over the next 3 months to work on improving the core, paid by the hour at the same below-commercial rate as Dave and Nicholas.  Some weeks I may be able to more than 20 hours, if acceptable this will consume more hours and end the grant earlier.</p>

<p>Like them, I would post a weekly summary on the p5p mailing list detailing activity for the week, allowing the grant managers and active core developers to verify that the claimed hours tally with actual activity, and thus allow early flagging of any concerns. Likewise, missing two weekly reports in a row without prior notice would be grounds for one of my grant managers to terminate this grant.</p>

<p>Exactly as Nicholas and Dave do, once per calendar month I would claim an amount equal to $50 x hours worked. I would issue a report similar to the weekly ones, but summarising the whole month. The report would need to be signed off by one of the grant managers before I get paid. Note that this means I am paid entirely in arrears.</p>

<p>At the time of my final claim, I would also produce a report summarising the activity across the whole project period.</p>

<p>Also, (the "nuclear option"), the grant managers would be allowed, at any time, to inform the board that in their opinion the project is failing, and that the <span class="caps">TPF </span>board may then, after allowing me to present my side of things, to decide whether to terminate the project at that point (i.e. to not pay me for any hours worked after I was first informed that a manager had "raised the alarm").</p>

<p>I view this grant as a proof of concept - if it goes well for everyone involved, I expect to apply to extend it.</p>

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

<p>I think that the work that I would do to improve Perl 5 would mostly fall into one of four main classes: code reviews, bug fixing, helping other contributors, and adding features - with bug fixes the most prominent and adding features the least.</p>

<p>In one major sense what I'm offering is different to Nicholas's or Dave's grant: the current pumpking would be able to assign tasks directly.</p>

<p>Ideally this would be done with some consultation with myself, so a large complex task involving parts of the core I'm unfamiliar with isn't assigned (or is assigned with reasonable expectations on time). Of course, if too many tasks are negotiated into non-existence, the grant can be terminated.</p>

<p>Some possible tasks, based on discussions over the last several months:</p>


<ul>
<li>readpipe(@list)</li>
<li>core exception objects</li>
<li>a git hook to prevent changes in the left of a merge</li>
</ul>



<p>Success metric: completion of tasks assigned.</p>

<p>Otherwise I'd work on:</p>


<ul>
<li>Reviews of patches submitted to perlbug, possibly committing them</li>
</ul>



<p>This will improve my core knowledge, and provide more timely feedback to non-committers using their time to help perl.</p>

<p>Metric: number and complexity of patches applied or commented on.</p>


<ul>
<li>Fixing bugs I select from the perl5 Request Tracker queue.</li>
</ul>



<p>While I wouldn't necessarily be working on the the harder bugs that Dave targets, this would help bring the total bug count down, and reduce the noise in the Request Tracker queue.</p>

<p>Metric: number and complexity of issues fixed.</p>


<ul>
<li>Fixing systemic issues in perl, such as the mis-use of <span class="caps">I32 </span>and <span class="caps">U32 </span>in the perl core.</li>
</ul>



<p>Metric: complexity of issue solved.</p>


<ul>
<li>Contributing to discussion on the perl5-porters mailing list.</li>
</ul>



<p>For the grant, I'm specifically not proposing to:</p>



<ol>
<li>Be a release manager.  This doesn't prevent me volunteering to act as a release manager, but that wouldn't be counted towards this grant.</li>
<li>Act as language designer - I don't feel that I'm good at this.</li>
</ol>



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

<p>I expect that I can deliver 260 hours of work in approximately 3 months.</p>

<p>I am available to start work on this project immediately.</p>

<p><b>Bio</b></p>

<p>I'm a freelance programmer living in Australia. I've been irregularly contributing to perl since 2008 and a committer since 2010. My contributions have varied from build system fixes, to <span class="caps">UTF</span>-8 handling, to portability fixes. I've been programming in C for 25 years and in perl for 20.</p>

<p><b>Endorsed By</b></p>

<p>Ricardo Signes, Nicholas Clark, <span class="caps">H.M</span>erijn Brand</p>

<p><b>Amount Requested:</b> $13,000</p>

<p><b>Suggestions for Grant Manager</b></p>

<p>Ricardo Signes, Marcus Holland-Moritz</p>]]>
        
    </content>
</entry>

<entry>
    <title>Alien::Base Grant - Report #9 (Final)</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/alienbase-grant---report-9-fin.html" />
    <id>tag:news.perlfoundation.org,2013://18.3239</id>

    <published>2013-05-08T02:00:10Z</published>
    <updated>2013-05-08T02:47:50Z</updated>

    <summary>Joel Berger wrote: Alien::Base Final Report Summary With this report I end my grant for Alien::Base. I consider it to be a reasonable success and have hope that the project will continue further. It became, as perhaps I should have expected, a larger project than anticipated; the problems were rarely the anticipated ones. In the end Alien::Base faced two major problems: (program/script) compile-time linking of the library and the localization of the built binary library on Mach (read Mac) platforms....</summary>
    <author>
        <name>Makoto Nozaki</name>
        <uri>http://facebook.com/nozaki</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><em>Joel Berger wrote:</em></p>

<h1>Alien::Base Final Report</h1>

<h2>Summary</h2>

<p>With this report I end my grant for Alien::Base.
I consider it to be a reasonable success and have hope that the project will continue further.
It became, as perhaps I should have expected, a larger project than anticipated; the problems were rarely the anticipated ones.</p>

<p>In the end Alien::Base faced two major problems: (program/script) compile-time linking of the library and the localization of the built binary library on Mach (read Mac) platforms.
The the linking problem is solved, running <code>use Alien::MyLibrary;</code> in the dependent module dynamically loads the module as expected.</p>

<p>The Mach problem should be solved, though part of the problem is that the solution must of necessity be different for proper users and CPANtesters.
Mach binaries must hard-code the path to themselves in the binary, this requires fore-knowledge of the final install location of the library.
Steps have been taken to ensure that the install location is set correctly for common (<code>perl Build.PL &amp;&amp; ./Build &amp;&amp; ./Build install</code>) use.
CPANtesters unfortunately do not run the install phase, but rather append the <code>blib</code> directory into <code>@INC</code>.
I hope that I have fixed this problem, however I have waited months and yet have seen no Mac reports on either of my test modules <a href="http://www.cpantesters.org/distro/A/Acme-Alien-DontPanic.html">Acme::Alien::DontPanic</a> and <a href="http://www.cpantesters.org/distro/A/Acme-Ford-Prefect.html">Acme::Ford::Prefect</a>; until these reports come in I cannot assess the ability of my recent work to compensate for this so-called "blib-scheme".</p>

<p>I am happy to report that I have received much interest in the project and even some patches to the code-base.
I am confident that the project will continue to progress; for my part I will continue to contribute and shepherd patches/pull-requests.
Certainly the system is still in a rather basic form, for example HTTP support is still rather fragile, but the major architecture exists and will continue to improve.</p>

<h2>Deliverables</h2>

<ul>
<li><a href="https://metacpan.org/module/Alien::Base">Alien::Base</a> is released to CPAN and is even being used by several <a href="https://metacpan.org/requires/distribution/Alien-Base?sort=[[2,1]]">early-adopter projects</a>.</li>
<li>The documentation and tests are included</li>
<li>Alien::Base::ModuleBuild can fetch, build and install libraries. By design they are localized to the current Perl installation</li>
<li>The system is perlbrew/local::lib compatible and as a result does not require root privileges </li>
<li>FTP and HTTP are supported, though both could use some polish, bundled binaries are also supported</li>
<li>Library metadata is extracted from pkgconfig data or may be generated if needed</li>
<li>Alien::GSL does NOT yet depend on Alien::Base, though a <a href="https://github.com/jberger/Alien-GSL/tree/base">branch</a> on its github development site is ready to be uploaded to PAUSE once I deem Alien::Base fully stable.</li>
</ul>

<h2>Thanks</h2>

<p>I would especially like to that my ever-patient project coordinator Makoto Nozaki for his help coordinating the project, and for far longer than expected.
As the project progressed beyond its expected life, my Ph.D. Thesis and Defense took more and more of my time and so I want to thank both the Perl Foundation and the community at-large for being patient with me as well.</p>

<p>I also want to thank all of those people who have in any way encouraged or contributed to Alien::Base:</p>

<ul>
<li>Christian Walde (Mithaldu) for productive conversations about component interoperability</li>
<li>kmx for writing Alien::Tidyp from which I drew many of my initial ideas</li>
<li>David Mertens (run4flat) for productive conversations about implementation</li>
<li>Mark Nunberg (mordy, mnunberg) for graciously teaching me about rpath and dynamic loading</li>
<li>Torsten Raudssus (Getty) for productive conversations about usability</li>
<li>giatorta, alexrj, jtpalmer, rsimoes, preaction for patches/pull-requests </li>
<li>Any others I have forgotten</li>
</ul>

<h2>Closing</h2>

<p>This process has been taxing at times, but still rewarding. 
I hope that Alien::Base will be a useful part of the CPAN toolchain in the future as the Perl renaissance progresses!</p>

<p><em>Original article at <a href="http://blogs.perl.org/users/joel_berger/2013/05/alienbase-final-report.html">Joel Berger [blogs.perl.org]</a>.</em></p>

<p><em>The Grants Committee will evaluate this report and make decision on the grants payment.  Feel free to give us your inputs at the comments field.</em></p>
]]>
        

    </content>
</entry>

<entry>
    <title>2013Q2 Grant Proposals</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/2013q2-grant-proposals-1.html" />
    <id>tag:news.perlfoundation.org,2013://18.3237</id>

    <published>2013-05-04T18:50:25Z</published>
    <updated>2013-05-04T18:57:28Z</updated>

    <summary>For this quarter, TPF Grants Committee have four different proposals. Who invite the Perl Community to comment on the proposals and their relevance to the community. Please comment on each grant on their specific page. YACT - Yet Another Conference Tool by Torsten Raudssus (Getty) rpm.perl.it by Jozef Kutej Review of Perl Web Frameworks by Neil Bowers Next Release of Pinto With Key Features by Jeffrey Ryan Thalhammer...</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="gp2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>For this quarter, <span class="caps">TPF</span> Grants Committee have four different proposals. Who invite the Perl Community to comment on the proposals and their relevance to the community. Please comment on each grant on their specific page.</p>


<ul>
<li><a href="http://news.perlfoundation.org/2013/05/2013q2-gp-yact---yet-another-c.html"><span class="caps">YACT </span>- Yet Another Conference Tool</a> by <em>Torsten Raudssus (Getty)</em></li>
</ul>




<ul>
<li><a href="http://news.perlfoundation.org/2013/05/2013q2-gp-rpmperlit.html">rpm.perl.it</a> by <em>Jozef Kutej</em></li>
</ul>




<ul>
<li><a href="http://news.perlfoundation.org/2013/05/2013q2-gp-review-of-perl-web-f.html">Review of Perl Web Frameworks</a> by <em>Neil Bowers</em></li>
</ul>




<ul>
<li><a href="http://news.perlfoundation.org/2013/05/2013q2-gp-next-release-of-pint.html">Next Release of Pinto With Key Features</a> by <em>Jeffrey Ryan Thalhammer</em></li>
</ul>

]]>
        
    </content>
</entry>

<entry>
    <title>2013Q2 GP: YACT - Yet Another Conference Tool</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/2013q2-gp-yact---yet-another-c.html" />
    <id>tag:news.perlfoundation.org,2013://18.3233</id>

    <published>2013-05-04T18:47:51Z</published>
    <updated>2013-05-04T18:49:45Z</updated>

    <summary><![CDATA[ Name: Torsten Raudssus (Getty) Amount Requested: $3000 Synopsis The current Act software and their instances are an often discussed topic in the world of Perl. The migrating of those instances, and the move forward to more modern Perl solutions in the system are often discussed. Last year we were able to address and start a concept at the Quack and Hack Europe 2012, we called it YACT - Yet Another Conference Toolkit, which targets to be a &quot;in place&quot;...]]></summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="GP2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<dl>

<dt id="Name">Name:</dt>
<dd>

<p>Torsten Raudssus (Getty)</p>

</dd>
<dt id="Amount-Requested">Amount Requested:</dt>
<dd>

<p>$3000</p>

</dd>
</dl>

<h2 id="Synopsis">Synopsis</h2>

<p>The current Act software and their instances are an often discussed topic in the world of Perl. The migrating of those instances, and the move forward to more modern Perl solutions in the system are often discussed. Last year we were able to address and start a concept at the Quack and Hack Europe 2012, we called it YACT - Yet Another Conference Toolkit, which targets to be a &quot;in place&quot; replacement for the existing Act software. It accesses the same database, and (should) be usable with the same templates. It also implements the idea of using git (and so GitHub) to maintain the Act setup for a conference.</p>

<p>YACT will not replace the Act name, Act will stay as the name for the complete project/platform/service, YACT is just a specific implementation state.</p>

<p>Additionally YACT is supposed to be also a management for Perl Monger groups and so should animate people to startup a Perl Monger group &quot;instantly&quot; and get all the nice shiny fuzz to manage it. This also means that we need a more flexible theme based style for this. A better support for localization is also a very important point here.</p>

<p>The current state is a very good database setup already, but the web interface setup is not really started and no administrative tools are added yet. There is still lots of work todo. (Current state: <a>&quot;/github.com/perl-act/yact&quot; in  https:</a>)</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>The most important and most used Act instance is managed since many years, nearly alone by Maddingue (S&eacute;bastien Aperghis-Tramoni) and the French Perl Mongers, but is still suffering from the problem of integrating help easily. Alone the missing scalability disallows other system infrastructure to support the Act in a productive manner (which many many companies would I bet). We would open a new door to relieve those hard working Perl people from their stress level.</p>

<p>The new features will allow to make a more decent and more perfect conference experience. Especially with the experience of the French Perl Mongers in making events, we planned on several very important features which would give help for all event organizers in the future, like checklists or features for managing common processes inside the act itself (like setting up extra pages for extra situation like a special dinner with extra reserveration informations).</p>

<p>Also a very important point is making the experience for the user more interesting, like the idea of integrating Booking.com a bit more to make it very easy to manage the accommodation. I hope there that we will find some love from Booking.com to get all the informations we need for this :).</p>

<h2 id="Deliverables">Deliverables</h2>

<pre><code> * DBIx::Class schema of the Act DB

 * Dancer implementation of the web interface to the Act DB

 * Simple CLI application for administration of the Act instance

 * Testsuite for YACT::DB, YACT::Web and YACT::App

 * Making git the conference holding instead of SVN

 * Integrating template themes

 * Better integration of localization

 * &quot;Making a conference&quot; checklist feature

 * Support for custom hostnames and conference independent landing pages

 * Making a scalable DB setup (read only at least)</code></pre>

<h2 id="Project-Details">Project Details</h2>

<p>The implementation itself is pretty straight forward. The existing urls and endpoints will be translated over to Dancer step by step. On those transfer the required functions are added to the result classes on the DBIx::Class schema. The same goes for the development of the application. This way we have a clean and straight forward model, we also can bind to XMPP, IRC, and all other protocols to allow more interesting accessing features (IRC bot in your conference channel?).</p>

<p>The administrative tools will be made with Moo and as primitive as possible. In general we avoid to use bigger systems (so far we have no Moose in play, so why bring it in). The template engine will be staying to Template::Toolkit, but we might implement a switch for this to other templates (very optional).</p>

<p>For scalability I would consider some database experts to find a very sane simple way to get read only sharing of the database to outposts. With some simple tricks we will then drive write access to the specific central instance. A serious spreaded backup could be added here, too.</p>

<p>The templates will be heading towards bootstrap, as this is one of the most accepted concepts on this and offers by itself already themes (which will not replace that we offer totally different &quot;layout&quot; themes for this).</p>

<p>For the localization I will be using my own Locale::Simple, which is not much more than a wrapper around gettext (Oh please god, someone make a grant for fixing the xs implementation). This allows us even to make out of code from the DuckDuckGo Community Platform, where this is open source, to make an own translation platform (another grant?).</p>

<p>The optional migration process should be &quot;perfect&quot; in the way to try to link the accounts and so allow migration of all the conference informations of a person.</p>

<h2 id="Inch-stones">Inch-stones</h2>

<p>The project is really a bit bigger, then one grant might cover. Those are the Inch-Stones I see, but depending on how much work those steps cost, additional grants for those sub tasks could be made (and also given out to other people)</p>

<pre><code> * Finish up the existing YACT source code to deliver all the base features
   required for most acts (as reference I would take a German Perl
   Workshop).

 * Integrating modern template themes. For this I already have
aknowledgement
   of several organizations (shadow.cat) and private persons (Marek Suppa,
   Valentin Schmid) who want to supply results here.

 * Making administration tools for setting up acts and managing them most
easy

 * Providing a cross-conference, permanent user profile people can point to
   from their other profiles (MetaCPAN, LinkedIn, etc). Probably with
nickname
   in the URL as well, instead of meaningless number, something like:
   http://act.yapc.eu/profile/getty

 * Adding scalability features to allow it to run &quot;readable&quot; from several
   points in the world, a central write point would be still fine enough for
   the current situation (I hope YAPC::Asia agrees).</code></pre>

<p>Definitly outside this grant are those points, even tho I think there could happening by the community automatically, if the points before are reached.</p>

<pre><code> * Migrating over all features not so common in use (API, Payment, ...)

 * Migrating all non-French Perl Mongers Acts into the French Perl Mongers
Act

 * Adding new modern features (Twitter, Facebook, Flickr, Hotels, ...)</code></pre>

<h2 id="Project-Schedule">Project Schedule</h2>

<p>I want to start as soon as possible with the project, as my personal schedule allows me to take the time. I target with help of the community to finish the first Inch-stone in 3 weeks, seeing the already existing state. The additional assets like templates and the involvement into the existing administration of the main act instances might bend the process to a longer time, indepedent of the code evolvement.</p>

<p>So far the community and the French Perl Mongers are very supportive, which will help accomplish the target soon. S&eacute;bastien Aperghis-Tramoni already has a clear process plan for the migration process.</p>

<h2 id="Completeness-Criteria">Completeness Criteria</h2>

<p>There is a conference and a Perl Monger group running YACT which access the existing Act DB parallel to the other Act instance on the French Perl Monger hosting.</p>

<h2 id="Bio">Bio</h2>

<p>I&#39;m doing Perl since now around 4 years and worked over 15 years as system developer and technical leader for several agencies in PHP before that. With Perl I started to get a complete new experience of how you can integrate yourself into the community. I always loved this aspect of Perl most, and with my seat in the Marketing Committee I try to bring this experience also to the outer world. The Act system is the very important key here, because the Perl community delivers the best community driven conferences and we should concentrate on those key features of our community. I currently work mostly as contractor for DuckDuckGo which allowed me to visit many conferences in the last year, and additionally allowed me to organize 2 events on my own, the 2 Quack and Hacks, one in US, one in France together with the French Perl Mongers.</p>
]]>
    </content>
</entry>

<entry>
    <title>2013Q2 GP: rpm.perl.it</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/2013q2-gp-rpmperlit.html" />
    <id>tag:news.perlfoundation.org,2013://18.3231</id>

    <published>2013-05-04T18:45:57Z</published>
    <updated>2013-05-04T18:47:13Z</updated>

    <summary><![CDATA[ Name: Jozef Kutej Amount Requested: 2000 &euro; Synopsis Create similar page to http://deb.perl.it/ for RPM world....]]></summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="GP2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<dl>

<dt id="Name">Name:</dt>
<dd>

<p>Jozef Kutej</p>

</dd>
<dt id="Amount-Requested">Amount Requested:</dt>
<dd>

<p>2000 &euro;</p>

</dd>
</dl>

<h2 id="Synopsis">Synopsis</h2>

<p>Create similar page to http://deb.perl.it/ for RPM world.</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>For many sysadmins it&#39;s pretty common task to look for and install Perl distribution from Linux OS packages and only the rest via some CPAN shell. It would save them a lot of time if they can get this install instruction instantly via a web service.</p>

<h2 id="Deliverables">Deliverables</h2>

<p><a href="http://rpm.perl.it/">http://rpm.perl.it/</a> + RPM-PM distribution</p>

<h2 id="Project-Details">Project Details</h2>

<p>Download, index and publish list of Perl modules included in RedHat Enterprise and SUSE Linux in a similar way as <a href="http://deb.perl.it/">http://deb.perl.it/</a> does for Debian and Ubuntu.</p>

<h2 id="Inch-stones">Inch-stones</h2>

<ul>

<li><p>Learn how RPM repositories actually work to be able to index them.</p>

<p>This is main reason why I&#39;m asking for a grant from TPF, because at the moment I&#39;m not using any of RPM based Linux distribution and so have no personal interest besides curiosity about this topic.</p>

</li>
<li><p>Adapt Debian::Apt::PM code to work with different type of repositories for downloading RPMs, extracting and indexing.</p>

</li>
<li><p>Launch <a href="http://rpm.perl.it/suse/cpan-deb/">http://rpm.perl.it/suse/cpan-deb/</a></p>

</li>
<li><p>Launch <a href="http://rpm.perl.it/redhat-enterprise/cpan-deb/">http://rpm.perl.it/redhat-enterprise/cpan-deb/</a></p>

</li>
</ul>

<h2 id="Project-Schedule">Project Schedule</h2>

<p>Project it self should take pure ~2-3 weeks which means ~2-3 real life months and I can start one month after the grant will be approved.</p>

<h2 id="Completeness-Criteria">Completeness Criteria</h2>

<p>Release of new RPM::PM distribution together with <a href="http://rpm.perl.it/">http://rpm.perl.it/</a> page.</p>

<h2 id="Bio">Bio</h2>

<p>I&#39;m author of <a href="http://search.cpan.org/dist/Debian-Apt-PM/">http://search.cpan.org/dist/Debian-Apt-PM/</a> and <a href="http://deb.perl.it/">http://deb.perl.it/</a></p>

]]>
    </content>
</entry>

<entry>
    <title>2013Q2 GP: Review of Perl Web Frameworks</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/2013q2-gp-review-of-perl-web-f.html" />
    <id>tag:news.perlfoundation.org,2013://18.3229</id>

    <published>2013-05-04T18:43:28Z</published>
    <updated>2013-05-04T18:45:14Z</updated>

    <summary> Name: Neil Bowers Amount Requested: $1500 Synopsis A review of the main modern web frameworks for Perl, somewhat in the style of the other reviews I&#39;ve done: http://neilb.org/reviews/...</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="GP2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[
<dl>

<dt id="Name">Name:</dt>
<dd>

<p>Neil Bowers</p>

</dd>
<dt id="Amount-Requested">Amount Requested:</dt>
<dd>

<p>$1500</p>

</dd>
</dl>

<h2 id="Synopsis">Synopsis</h2>

<p>A review of the main modern web frameworks for Perl, somewhat in the style of the other reviews I&#39;ve done: http://neilb.org/reviews/</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>A comparison of the main web frameworks, with the same sample application available for all of them in github. This will help people make informed decisions, and hopefully encourage more people to &quot;have a go&quot; at web development with perl.</p>

<p>The public comparison will hopefully provide competition, in a constructive sense.</p>

<p>When I do the reviews I report all bugs found, and submit improvements to documentation. Where I find something to be harder in one framework than another, I&#39;ll submit that as feedback, as I work through.</p>

<h2 id="Deliverables">Deliverables</h2>

<ul>

<li><p>A review of the frameworks.</p>

</li>
<li><p>Example application for each framework, in github.</p>

</li>
<li><p>A final short report, summarising what was done, with an estimate of time spent.</p>

</li>
</ul>

<h2 id="Project-Details">Project Details</h2>

<p>I will create the same application (or as close as feasible / appropriate) in each of the frameworks. I will outline a spec, but solicit input via a blog post, to try and ensure the most useful / insightful app. My first quick outline is:</p>

<ul>

<li><p>A web app for maintaining a curated set of URLs</p>

</li>
<li><p>Users can login, either having registered, or using using something like twitter, facebook, etc</p>

</li>
<li><p>logged-in users can add new URLs, tag URLS, and give a rating</p>

</li>
</ul>

<p>My experience with doing these reviews though, is that I start with a specific task, but it grows and evolves as I work through each candidate.</p>

<p>Unlike with the other reviews I&#39;ve done to date, I plan to blog as I work on each framework, (a) to record the thoughts of a newbie, while still a newbie with each framework, (b) because I expect this to take quite a bit longer, and (c) to hopefully generate discussion and further things to try.</p>

<p>I will also try and get others to join in, so I can include comments and perspectives from multiple people. In a perfect world I&#39;d get some people joining in who have no experience, and some who have experience with one framework who try a different one. I&#39;m not going to rely on any participation to be able to complete this.</p>

<p>I don&#39;t plan to develop the app in every web framework available for Perl, just the main modern frameworks. I plan to do &quot;full&quot; coverage of Dancer, Mojolicious, Catalyst and Web::Machine; other frameworks may get added to this list, if it seems appropriate. The review will mention all frameworks.</p>

<p>With nearly every review I&#39;ve spent a long time getting to v1, but then spent a lot of time after initial publication, based on finding new modules, suggestions for further evaluation, and my continuing interest. I tried one review where I released early, then did many iterations, ending up spending just as much time.</p>

<h2 id="Inch-stones">Inch-stones</h2>

<ul>

<li><p>outline app that will be developed</p>

</li>
<li><p>blog post announcing review, soliciting participation and comments on the app</p>

</li>
<li><p>develop app for Dancer</p>

</li>
<li><p>develop app for Mojolicious</p>

</li>
<li><p>develop app for Catalyst</p>

</li>
<li><p>develop app for Web::Machine</p>

</li>
<li><p>notes on the app for OX, Mason+Poet, Web::Simple, Jifty, mod_perl, Dancer2, and others.</p>

</li>
<li><p>first draft of review</p>

</li>
<li><p>revisit each app, in the light of experience with the other frameworks, and writing the review</p>

</li>
<li><p>initial publication of review, solicit comments</p>

</li>
<li><p>update apps and review, based on comments</p>

</li>
<li><p>final report</p>

</li>
</ul>

<h2 id="Project-Schedule">Project Schedule</h2>

<p>To be honest, I don&#39;t really know how much effort this will take, but expect something in the range of 80 to 200 hours. So far every review has taken a lot longer than expected, for varying reasons.</p>

<p>I expect this time to be spread over 2 to 3 months. Even if I <i>could</i> compress the schedule, I don&#39;t want to, as I want to maximise the likelihood of third-party contribution, even if just via blog comments.</p>

<p>I expect to rewrite the apps a number of times, as I gain in experience, and get feedback on the early versions. Part of the goal is to record this evolution.</p>

<h2 id="Completeness-Criteria">Completeness Criteria</h2>

<p>The review will be published, and announced on blogs.perl.org, as I&#39;ve done with all the others.</p>

<p>The example apps will be in github. Possible improvements to documentation for some or all of the frameworks.</p>

<h2 id="Bio">Bio</h2>

<p>I&#39;ve been developing with Perl since 1992, but had a 10-year patch in the middle in management, when I just wrote scripts to help out others, or for relaxation.</p>

<p>I&#39;ve so far written 10 reviews of CPAN modules.</p>

<p>I&#39;ve written web apps using mod_perl, but haven&#39;t worked with any of the web frameworks.</p>

<p>I&#39;m self-employed, boot-strapping a business with a co-founder. This will largely be done on my own time, but I&#39;ll probably be flexible on the definition of that.</p>

]]>
    </content>
</entry>

<entry>
    <title>2013Q2 GP: Next Release of Pinto With Key Features</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/05/2013q2-gp-next-release-of-pint.html" />
    <id>tag:news.perlfoundation.org,2013://18.3227</id>

    <published>2013-05-04T18:38:40Z</published>
    <updated>2013-05-04T18:42:04Z</updated>

    <summary> Name: Jeffrey Ryan Thalhammer Amount Requested: $3000.00 Synopsis Pinto is a turnkey solution for constructing and managing local CPAN-like repositories of Perl modules. This purpose of this grant proposal is to obtain funding for development of the next release of Pinto, which will include specific features described below. The Pinto project is less than 2 years old, but it has already gained a modest user base and is potentially relevant to a wide audience within the Perl community (i.e....</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="GP2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="Grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<dl>

<dt id="Name">Name:</dt>
<dd>

<p>Jeffrey Ryan Thalhammer</p>

</dd>
<dt id="Amount-Requested">Amount Requested:</dt>
<dd>

<p>$3000.00</p>

</dd>
</dl>

<h2 id="Synopsis">Synopsis</h2>

<p><a href="http://metacpan.org/module/Pinto">Pinto</a> is a turnkey solution for constructing and managing local CPAN-like repositories of Perl modules. This purpose of this grant proposal is to obtain funding for development of the next release of Pinto, which will include specific features described below.</p>

<p>The Pinto project is less than 2 years old, but it has already gained a modest user base and is potentially relevant to a wide audience within the Perl community (i.e. anyone that uses CPAN module). Funding development on Pinto will help the Perl community by providing them with better tools for managing their CPAN modules.</p>]]>
        <![CDATA[<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>The CPAN ecosystem is one of the most valuable assets of the Perl Community. However, it is not stable because authors can freely add or remove modules. As a result, end-users cannot rely on the public CPAN to provide a consistent set of Perl module dependencies from one day to the next. Sudden &quot;breakage&quot; of dependencies is a common frustration among Perl users.</p>

<p>Furthermore, the inner workings of CPAN itself (i.e. PAUSE) are not readily accessible. The code is arcane, has minimal testing, and can&#39;t be installed in the usual fashion. So despite its enormous value to the Perl Community, the CPAN infrastructure is largely unusable to those wishing to locally distribute their own private modules using the standard Perl toolchain.</p>

<p>Pinto solves both of these problems with a complete, robust, and extensible application. Pinto users can easily create local CPAN-like repositories that are stable and will yield the exact same modules every time. Pinto also duplicates the indexing functionality of PAUSE, so they can use these repositories to locally distribute their private modules as well. Pinto even provides novel tools for managing upgrades to dependent modules.</p>

<p>These capabilities are beneficial to the Perl Community because:</p>

<ul>

<li><p>They make it safer to incorporate more CPAN modules into their work, thereby encouraging more use (and reuse) of CPAN modules.</p>

</li>
<li><p>They reduce the risk of breakage from upgrading CPAN modules, thereby enabling more frequent upgrades.</p>

</li>
<li><p>They facilitate sharing of private Perl modules within an organization, thereby promoting the growth of Perl.</p>

</li>
</ul>

<p>For more details about Pinto, see the &quot;More About Pinto&quot; section below.</p>

<h2 id="Deliverables">Deliverables</h2>

<p>The deliverable will be a release of Pinto (and possibly other attendant modules) that support the features described below in the &quot;Project Details&quot; section. All software will be released under the same terms as Perl itself and delivered via the CPAN.</p>
<h2 id="Deliverables">Deliverables</h2>

<p>The deliverable will be a release of Pinto (and possibly other attendant modules) that support the features described below in the &quot;Project Details&quot; section. All software will be released under the same terms as Perl itself and delivered via the CPAN.</p>

<h2 id="Project-Details">Project Details</h2>

<p>This proposal covers the addition of two key features to Pinto:</p>

<dl>

<dt id="Repository-Migration-Mechanism">Repository Migration Mechanism</dt>
<dd>

<p>Pinto will continue to evolve and future versions will undoubtedly introduce non-compatible changes. To grow and maintain its user base, Pinto needs a way to migrate existing repositories into a format that is compatible with future versions of Pinto. This migration may involve changes to the internal database schema as well as changes to file formats and directory structures.</p>

<p>To be clear, the migration mechanism will only work for Pinto repositories created with the *next* release of Pinto or later. It will not work for Pinto repositories that exist right now. Currently, Pinto repositories are not versioned which makes them much more difficult to migrate. It is not impossible, but that is outside the scope of this proposal.</p>

</dd>
<dt id="Version-Control-Mechanism">Version Control Mechanism</dt>
<dd>

<p>One of Pinto&#39;s most powerful features is an integrated versioning system. This allows users to &quot;branch&quot; and &quot;merge&quot; the indexes in their repository in a manner similar to version control systems like Git and Subversion. This allows users to upgrade modules in an isolated, audited, and reversible way, thereby reducing risks from changes and increasing visibility into the evolution of their dependency stack.</p>

<p>Pinto&#39;s current implementation of the version control mechanism is incomplete and does not scale well. I&#39;ll be finishing &amp; enhancing the version control mechanism by either extending the built-in system it already has, or replacing it with an external VCS that is accessed through language bindings (e.g. Alien::SVN or Git::Raw).</p>

</dd>
</dl>

<h2 id="Inch-stones">Inch-stones</h2>

<p>For feature 1 (Schema Migration Mechanism)</p>

<ul>

<li><p>Evaluate existing solutions for database schema migration.</p>

</li>
<li><p>Create or integrate database schema versioning and migration management code.</p>

</li>
<li><p>Create hooks for managing migration of non-database assets (e.g files, directories).</p>

</li>
<li><p>Implement and document command-line interface to migration hooks in App::Pinto.</p>

</li>
</ul>

<p>For feature 2 (Version Control Mechanism)</p>

<ul>

<li><p>Identify the key VCS features that are required (e.g. commit, branch, merge, log, diff).</p>

</li>
<li><p>Evaluate suitability of existing version control systems (notably libgit2).</p>

</li>
<li><p>Implement or integrate each of the aforementioned key VCS features in the Pinto core.</p>

</li>
<li><p>Implement and document command-line interfaces to those functions in App::Pinto.</p>

</li>
</ul>

<h2 id="Project-Schedule">Project Schedule</h2>

<p>The features outlined in this proposal are estimated to take 3 to 4 person-weeks of effort. However, the release may include additional work that is not covered in this proposal, so it may take longer to actually complete. I&#39;m available to start the work immediately and can commit about 20 hours per week to the project. I expect completion within 9 to 12 calendar weeks.</p>

<p>Both features covered by this proposal can be developed concurrently. I&#39;ll be reporting progress via bi-weekly updates to blogs.perl.org.</p>

<h2 id="Completeness-Criteria">Completeness Criteria</h2>

<p>Completeness can be evaluated when Pinto is released to the CPAN. The final implementation of the features outlined in this proposal will be described in the Changes file that accompanies the release. The details of the features can be further verified via the automated test cases that will also accompany the release.</p>

<h2 id="Prior-Art">Prior Art</h2>

<p>Pinto is not the only tool in this space. CPAN::Mini, CPAN::Site, OrePAN, MyCPAN and others all have features that overlap with Pinto. They are all good tools that fit a particular niche. However, none of them are quite as robust and comprehensive as Pinto. For example, no other tool supports creating a single repository with multiple indexes like Pinto does. Also, Pinto is the only tool that is designed specifically to support team development and concurrent users.</p>

<h2 id="More-About-Pinto">More About Pinto</h2>

<dl>

<dt id="My-presentation-on-Pinto-at-YAPC::NA-2012">My presentation on Pinto at YAPC::NA 2012:</dt>
<dd>

<p>https://www.youtube.com/watch?v=oaBBVZFhJUk</p>

</dd>
<dt id="A-brief-survey-of-Pintos-purpose-and-components">A brief survey of Pinto&#39;s purpose and components:</dt>
<dd>

<p>https://metacpan.org/module/THALJEF/Pinto-Common-0.064/lib/Pinto/Manual/Introduction.pod</p>

</dd>
<dt id="The-tutorial-Ive-written-for-Pinto">The tutorial I&#39;ve written for Pinto:</dt>
<dd>

<p>https://metacpan.org/module/THALJEF/Pinto-Common-0.064/lib/Pinto/Manual/Tutorial.pod</p>

</dd>
</dl>

<h2 id="Bio">Bio</h2>

<p>I&#39;ve been developing software (primarily in Perl) for more than 12 years. I am active in the Perl Community and have presented at YAPC and various Perl Monger meetings. I&#39;m best known as the creator of <a href="http://metacpan.org/module/Perl::Critic">Perl::Critic</a>, the widely used static analyzer for Perl. I&#39;m also the creator of Pinto, which was originally funded by Genentech in October of 2011. I have continued to work on Pinto ever since then.</p>]]>
    </content>
</entry>

<entry>
    <title>YAPC::NA Call for Sponsors</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/04/yapcna-call-for-sponsors.html" />
    <id>tag:news.perlfoundation.org,2013://18.3217</id>

    <published>2013-04-23T00:00:00Z</published>
    <updated>2013-05-11T11:52:47Z</updated>

    <summary>The North American Yet Another Perl Conference is still seeking a few more sponsors to help make YAPC a success this year. Benefits of being a sponsor include increasing your brand awareness, recruitment, and giving back to a language that give you so much. There are many different levels of sponsorship with various perks available. So, please become a sponsor today....</summary>
    <author>
        <name>Dan Wright</name>
        <uri>http://www.dwright.org</uri>
    </author>
    
    <category term="sponsorship" label="sponsorship" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapc" label="yapc" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>The North American Yet Another Perl Conference is still seeking a few more sponsors to help make <span class="caps">YAPC </span>a success this year.    <a href="http://www.yapcna.org/yn2013/sponsorship.html">Benefits of being a sponsor</a> include increasing your brand awareness, recruitment, and giving back to a language that give you so much.    There are many different <a href="http://www.yapcna.org/yn2013/levels-of-sponsorship.html">levels of sponsorship</a> with various perks available.   So, please <a href="http://www.yapcna.org/yn2013/become-a-sponsor.html">become a sponsor</a> today.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Outreach Program for Women Moves Forward with €1000 Pledge</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/04/1000-euros-pledged-to-outreach.html" />
    <id>tag:news.perlfoundation.org,2013://18.3223</id>

    <published>2013-04-22T16:23:31Z</published>
    <updated>2013-04-25T22:31:37Z</updated>

    <summary>TPF is looking for contributions to the Outreach Program for Women and I am pleased to announce that Renée Bäcker has started us off with a pledge of 1000 Euros. Together with existing funding this gets us one intern so far in the first round, and a opening for the second. Now we need additional generous donations to keep this rolling. If you would like to donate to this program please contact karen [at] perlfoundation.org Applications for the program are...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
    <category term="outreachprogramforwomen" label="outreach program for women" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><span class="caps">TPF </span>is looking for contributions to the Outreach Program for Women and I am pleased to announce that Renée Bäcker has started us off with a pledge of 1000 Euros.  Together with existing funding this gets us one intern so far in the first round, and a opening for the second.  Now we need additional generous donations to keep this rolling.  If you would like to donate to this program please contact karen [at] perlfoundation.org</p>

<p>Applications for the program are due by May 1st, which will be here soon.  The program requires that applicants have contributed to the project they will work on prior to their application.  If you are are interested in an internship, and don't already have a Perl project you are working on, take a look at the <a href="http://www.perlfoundation.org/outreach_program_for_women">list of projects</a> and pick one.  Contact the mentor listed, and get started now.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Fixing Perl5 Core Bugs: Report for Month 37</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/04/fixing-perl5-core-bugs-report-30.html" />
    <id>tag:news.perlfoundation.org,2013://18.3221</id>

    <published>2013-04-22T13:29:57Z</published>
    <updated>2013-04-22T13:35:47Z</updated>

    <summary><![CDATA[Dave Mitchell writes: This month I mainly worked on one of the 5.18 blocker tickets; in this case how overload::constant qr =&gt; sub { ...} interacts with "constant" regexes such as qr/foo/ and qr/foo(?{bar})/ if the sub replaces constant strings like "foo" with an overloaded object. It turns out this was something I hadn't anticipated in my re_eval reworking, and my code didn't handle it at all well. I'm now about 3/4 the way to fixing it. Over the last...]]></summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
    <category term="perl5coremaintenance" label="perl5 core maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><em>Dave Mitchell writes:</em></p>

<p>This month I mainly worked on one of the 5.18 blocker tickets; in this case how</p>

<blockquote><p>overload::constant qr =&gt; sub { ...}</p></blockquote>

<p>interacts with "constant" regexes such as qr/foo/ and qr/foo(?{bar})/ if the sub replaces constant strings like "foo" with an overloaded object. It turns out this was something I hadn't anticipated in my re_eval reworking, and my code didn't handle it at all well. I'm now about 3/4 the way to fixing it.</p>

<p>Over the last month I have averaged 6.5 hours per week</p>

<p>As of 2013/03/31: since the beginning of the grant:</p>

<blockquote><p>160.0 weeks<br />
1618.8 total hours<br />
10.1 average hours per week</p></blockquote>

<p>There are 82 hours left on the grant.</p>

<p>Report for period 2013/03/01 to 2013/03/31 inclusive</p>

<p><b>Summary</b></p>

<p>Effort (HH::MM):</p>

<blockquote><p>15:00 diagnosing bugs<br />
11:17 fixing bugs<br />
1:00 reviewing other people's bug fixes<br />
0:00 reviewing ticket histories<br />
0:00 review the ticket queue (triage)<br />
-----<br />
<b>27:17 Total</b></p></blockquote>

<p><b>Numbers of tickets closed:</b></p>

<blockquote><p>5 tickets closed that have been worked on<br />
0 tickets closed related to bugs that have been fixed<br />
0 tickets closed that were reviewed but not worked on (triage)<br />
 -----<br />
<b>5 Total</b></p></blockquote>

<p><b>Short Detail</b></p>

<p>0:25 [perl #115004] perl 5.17.x can't use @var in regexp, but only $var<br />
1:10 [perl #116569] Re: 5.17.7 breaks rules of assignment<br />
0:30 [perl #116821] B::Deparse warnings during build of 5.17.9<br />
18:17 [perl #116823] Regexp::Grammars broken since 5.17.1<br />
0:30 [perl #117095] Undefined `state` $file_handle when using `$file_handle if 0`<br />
0:10 [perl #117107] [Bug] IO::Socket::INET opens random port<br />
2:55 [perl #117135] v5.17.9-80-g9f351b4 breaks <span class="caps">SARTAK</span>/Path-Dispatcher-1.04.tar.gz<br />
1:40 [perl #117205] Infinite regex-engine loop with (??{})<br />
0:30 [perl #117265] [PATCH] e213661 no warnings 'safesyscalls', fatal nul checks<br />
0:30 [perl #117273] [PATCH] e4f39c0 binary safety when dumping svs and ops<br />
0:40 [perl #117305] <span class="caps">ISO</span> C forbids braced-groups within expressions (cv.h, inline.h in 5.17.9)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Improving Perl 5: Grant Report for Month 17</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/04/improving-perl-5-grant-report-14.html" />
    <id>tag:news.perlfoundation.org,2013://18.3219</id>

    <published>2013-04-22T10:14:44Z</published>
    <updated>2013-04-22T11:25:33Z</updated>

    <summary>Nicholas Clark writes: As per my grant conditions, here is a report for the February period. The first significant thing I worked on in February was a detailed review of Peter Martini&apos;s work towards an API for subroutine signatures. In particular, I wondered how much of the existing call checker hooks they could use. In turn, I wondered whether the call checker hooks were robust against some of the torture tests I&apos;d suggested for signatures... Your signatures code needs some...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
    <category term="perl5coremaintenance" label="perl5 core maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><em>Nicholas Clark writes:</em></p>

<p>As per my grant conditions, here is a report for the February period.</p>

<p>The first significant thing I worked on in February was a detailed review of Peter Martini's work towards an <span class="caps">API </span>for subroutine signatures. In particular, I wondered how much of the existing call checker hooks they could use. In turn, I wondered whether the call checker hooks were robust against some of the torture tests I'd suggested for signatures...</p>

<blockquote><p>Your signatures code needs some evil test cases. I suspect fun things involving various combination of threads, string evals and closures would stress it.</p></blockquote>

<blockquote><p>So starting with simple things like</p></blockquote>

<blockquote><p>*) calling a function with signatures from a subthread.<br />
*) creating a function within a string eval</p></blockquote>

<blockquote><p>then build up to</p></blockquote>

<blockquote><p>*) creating a function within a string eval within subthread<br />
*) creating functions in a child thread, spawning a grandchild thread, child thread exists, grandchild thread runs (returning results to first thread)</p></blockquote>

<blockquote><p>the intent being to ensure that data structures are cloned properly, and by using an intermediate child thread that goes away, ensure that no pointers dangle into the freed up memory of their parent.</p></blockquote>

<p>For both, the implementation will be similar in how it interacts with closures and with ithreads. Closures are implemented by run-time cloning of the compiled subroutine. Spawning an ithread is also a runtime clone.</p>

<p>So I had a good look at the call checker code. There had been bugs related to closures, but this had been discovered and fixed later on, although not all possibilities were tested yet, so I added some tests.</p>

<p>Sadly I concluded that the call checker code only offers half the hooks that signatures need. The call checker runs entirely at compile time, whereas a key part of the proposed signatures <span class="caps">API </span>is to add a hook at runtime, which is run instead of the code that creates @_ (and all the overhead associated, not just creation, but all the explicit ops run by the user's code to unpack @_ back into lexicals). So it's not the solution here.</p>

<p>However, the real fun started soon after thanks to Yves persisting in investigating what he felt was a problem with the hashing implementation in the stable releases. A few days after I wrote my previous monthly report, he sent perl5-security-report@perl.org a short list of lowercase <span class="caps">ASCII </span>strings which when used as keys for a hash would exhaust memory, without the rehashing mechanism ever kicking in. The rehashing mechanism was meant to protect against attacks - this attack exploits a flaw in its implementation, and was announced as <span class="caps">CVE</span>-2013-1667.</p>

<p>I'm still not in a position to say everything, as 5 weeks later not all vendors have shipped updates. However, the fix an its commit message have been public for 3 weeks now, so it's safe to repeat what they reveal.</p>

<p>To be clear - I'll use the term "hash" or "hashes" for the Perl associative array, named with % and implemented as a hash table, and use "hash function" for the many-to-one function that converts a string to a fixed-size numeric value, a value which is needed to implement a hash table.</p>

<p>Hashes are implemented as a power-of-two sized array of linked lists of hash entries. The array holds the linked list heads, and the array entries are often referred to as "buckets". If the hash is working well, the linked lists are short. To keep the lists short requires that the hash is "split" periodically as elements are inserted, doubling the size of the array, reassigning list entries to new positions, and hopefully causing the entries to be spread across more positions, shortening the lists.</p>

<p>The implementation flaw was that a hash split could be triggered if a linked list became "too long". "Too long" was deemed to be 15 - much longer than the 0 to 3 entries of a well behaved hash, and we thought that this would only happen if a program was being purposefully attacked with crafted malicious data. This seemed like a good idea at the time (9.5 years ago), as it meant that an attack would be deflected more quickly (after 15 entries). Previously the split condition was that the number of keys was greater than the array size - ie that the mean chain length was about to exceed 1.0. This is reasonable for a well behaved hash, but would mean that malicious data where all keys in the hash used the same chain would not be detected until the chain had become as long as the size of the array, potentially meaning unhappy O(n) behaviour instead of amortised O(1) for quite a while as the hash grew.</p>

<p>All this went unnoticed for 9.5 years, until Yves tried to test the build by changing hv.h to use a pathologically bad hashing function - return the same constant whatever the string. He (and I) would expect that this would be slow - after all it's invoking an O(n) linked-list walk for every lookup, and loops over keys will go from O(n) to O(n²), but given enough <span class="caps">CPU </span>time we would expect it to complete. However, it doesn't. It crashes. It was this unexpected crash that caused him to think that something was wrong, and keep investigating.</p>

<p>What he discovered was that triggering a hsplit due to long chain length allows an attacker to create a carefully chosen set of keys which can cause the hash to use 2 * (2**32) * sizeof(void *) bytes of <span class="caps">RAM.</span> This will exhaust the address space of a 32 bit process, and potentially chew 32Gb on a 64 bit system. (However, the copying or even swapping this causes tends to be what actually makes the machine unhappy.) The flaw means that the size of the array becomes massively larger than the number of keys.</p>

<p>Eliminating this check, and only inspecting chain length after a normal hsplit() prevents the attack entirely, and makes such attacks relatively benign. (ie we've returned to the pre-2003 test of total keys &gt; array size)</p>

<p>It turns out that a miss is as good as a mile - we got part of the memory exhaustion  problem identified back then in 2003, as this comment shows:</p>

<blockquote><p>/* Use the old <acronym title="hv">HvKEYS</acronym> &gt; <acronym title="hv">HvMAX</acronym> condition to limit bucket splits on a rehashed hash, as we're not going to split it again, and if someone is lucky (evil) enough to get all the keys in one list they could exhaust our memory as we repeatedly double the number of buckets on every entry. Linear search feels a less worse thing to do.  */</p></blockquote>

<p>Whilst the problem is real (and the keys he generated easily demonstrated that "that's a nice 32Gb server - shame if anything were to happen to it"), I couldn't see how <strong>it</strong> was the cause of the build failure. Once the rehashing mechanism kicks in, the only split test is (as above) the old (and new) keys &gt; array test, so with what I shall term a "chocolate teapot hash" function*, rehashing should trigger for any hash when its 15th keys is inserted, and after that hash splitting should not be subject to "attack" - the array will only grow when the number of keys exceeds the array size.</p>

<p>So I tried to replicate his build of a maint release with the "chocolate teapot hash". It chugged away merrily for more than a day, then failed because a process ran out of <span class="caps">RAM.</span> Which, upon re-running with the debugger attached was revealed to be a hash containing about 20 keys, but wanting to have an array with 2**28 entries. Which isn't supposed to happen.</p>

<p>It turns out that there was a second problem with the "long chain" mechanism for triggering a hash split and potential rehashing. This is also solved by published patch addressing <span class="caps">CVE</span>-2013-1667. Unlike the other attack, which requires a reasonable understanding of the internals plus several days <span class="caps">CPU </span>time to reproduce a set of attack keys, this one is can easily be reproduced as a local proof-of-concept from the text description alone, by re-using code from one of the regression tests. So as several vendors are still leaving their customers exposed, I'm loathe to describe it at this time, other than to say that requires hash re-use (so is harder to exploit), and it is fixed.</p>

<p>Working round this one problem in my maint build with the "chocolate teapot hash" completed, but the tests failed, with <span class="caps">SEGV</span>s. This was because some of <span class="caps">MRO </span>code assumes that all hashes are using the shared string table. (When the rehashing mechanism kicks in, the hash stops using the shared string table. This is part of what makes rehashing less efficient.) Once I was confident that the problem wasn't caused by hash bugs themselves, I figured that this wasn't worth dealing with. But I see it as more evidence that the rehashing approach is a bodge, rather than a robust solution.</p>

<p>So I turned back to blead (which has full randomised hashes all the time, no rehashing, and everything able to use the shared string table), and tried building it with the "chocolate teapot hash" function. The build eventually completes. After an even longer time, the tests pass. This is good.</p>

<p>I then reviewed the branch Yves had pushed with his proposed hash changes to protect against hash key discovery. As-was, it added another member to <span class="caps">XPVHV, </span>the structure used for every hash. As Perl 5 only has one hashes type, it's used for symbol tables, (most) objects, and, well, hashes, as in associative arrays storing user data, accessed by keys. Increase <span class="caps">XPVHV </span>and (nearly) every object gets bigger, which isn't ideal if the increase is only needed for iterating the hash. (Most code doesn't poke into objects in order to iterate over their attributes.)</p>

<p>So I looked to find a way to move the member into the on-demand allocated structure which holds iterator state. This revealed some fun - there are actually two functions for "splitting" a hash. A static function, S_hsplit(), which doubles the size of the array, only used by hash key insertion code, and an <span class="caps">API </span>function, Perl_hv_ksplit(), which can grow the hash array to "any" size requested (which is rounded up to the next power of two). The former makes simplifying assumptions because it knows that it is always only doubling, whereas the latter can not, as it needs to be able to multiply the array size by any power of two.</p>

<p>It's not clear why there are two functions. S_hsplit() dates back to 5.000. Perl_hv_ksplit() was added in September 1996. Archives exist for Perl5-Porters from 1996, but the patch from back then was actually a reworking of an earlier patch. Unfortunately <strong>that</strong> patch, and any subsequent discussion, was sent to the list before beginning of recorded time (21st August 1995), so it's a bit of a mystery as to why it duplicated code.</p>

<p>Fortunately, with a bit of massaging, it turned out to be relatively easy to refactor the two functions so that their implementations converged. This was helped by S_hsplit() being a static function, so I had complete control over both its callers, and was able to push some work out to them. (Actually, most usefully, just to one of them. As that work wasn't needed for the other call path. Eliminating work is the only sure form of optimisation.) When I got them close enough, I was able to replace the guts of Perl_hv_ksplit() with a call to S_split(), and the fork was healed.</p>

<p>Once it smoked clean, I merged this change back to blead, as it was independent of the other changes. With the change made, it became a lot easier to fix the original problem of moving the structure member, and Yves subsequently incorporated a variant of my suggested changes into his branch.</p>

<p>Nothing do to with hashing, Brian Fraser wondered something about a function in the tokeniser. The answer wasn't obvious...</p>

<p>Each of the core's C source code files start with a quote from Lord of the Rings. Many are right on the money. toke.c's is:</p>

<blockquote><p> *  'It all comes from here, the stench and the peril.'    --Frodo</p></blockquote>

<p>This is quite apt, as toke.c is 12127 lines of near-impenetrable magic. Chaim Frenkel's summary is well known:</p>

<blockquote><p>Perl's grammar can not be reduced to <span class="caps">BNF.</span> The work of parsing perl is distributed between yacc, the lexer, smoke and mirrors.</p></blockquote>

<p>Larry recently offered a more quantitative evaluation:</p>

<blockquote><p>of the four or five ways a compiler can cheat, Perl 5 uses about eight of them</p></blockquote>

<p><a href="http://irclog.perlgeek.de/perl6/2013-01-10#i_6318090">http://irclog.perlgeek.de/perl6/2013-01-10#i_6318090</a></p>

<p>So the question was concerning the static function S_force_word() in toke.c, which has a fifth argument `allow_initial_tick`, which seemed to be redundant. The function is documented, and the arguments are described as follows:</p>



<ul>
<li>  Arguments:</li>
<li>  char *start : buffer position (must be within PL_linestr)</li>
<li>  int token   : PL_next* will be this type of bare word (e.g., <span class="caps">METHOD,WORD</span>)</li>
<li>  int check_keyword : if true, Perl checks to make sure the word isn't</li>
<li>  a keyword (do this if the word is a label, e.g. goto <span class="caps">FOO</span>)</li>
<li>  int allow_pack : if true, : characters will also be allowed (require,</li>
<li>  use, etc. do this)</li>
<li>  int allow_initial_tick : used by the "sub" lexer only.</li>
</ul>



<p>The function goes back a long way, with various changes to it and its callers as the result of bug fixes, but these days most of those call sites that had passed <span class="caps">TRUE </span>as the fifth argument had been further refactored to avoid calling it. So it seemed that the fifth argument it wasn't needed - ie it was safe to assume that it was always <span class="caps">FALSE.</span> Note, there's no way whatsoever from any of the documentation to work out whether this is the case. Although all the individual authors of this code are believed still to be alive and responsive to e-mail, previous attempts at asking simpler questions about code written years or decades ago have always resulted in polite replies to the effect of "I no longer remember". Which really isn't surprising.</p>

<p>Hence, trying to get any better understanding of how pretty much any part of the parser works requires carrying out an investigation like the one I'm about to describe.</p>

<p>So, for starters, there's the obvious first step - what happens if I change the code and do a full clean build and run the tests? Nothing fails. That hints that it might be redundant, but you never can be sure...</p>

<p>Digging around the previous historical versions where S_force_word() had been changed didn't real anything. Even the changes where that parameter has been renamed or code relating to it altered only confirmed that there had been bugs, but the changes fixed those bugs.</p>

<p>The approach that paid off was observing that until 2012 there were two other call sites passing <span class="caps">TRUE </span>to the function. So I built the version of blead just before they were refactored, and tried using <span class="caps">FALSE </span>instead. With that change, this code stops parsing:</p>

<pre><code>    $ ./miniperl -e &quot;sub 'foo {warn qq{ok}}; &amp;'foo&quot;</code></pre>

<p>That suggests that the argument in question is something to do with disambiguating whether a ' is the start of a single quoted string, or a leading package separator (ie the Perl 4 way of saying ::foo)</p>

<p>With that knowledge, and a bit of trial and error, I was able to figure out that the code in question is needed to parse this correctly:</p>

<pre><code>    $ ./perl -e 'sub one {};' -e &quot;format 'one =&quot; -e 'One!' \
             -e. -e '$~ = &quot;one&quot;; write'
    One!</code></pre>

<p>If you change the <span class="caps">TRUE </span>to <span class="caps">FALSE, </span>this happens:</p>

<pre><code>    $ ./perl -e 'sub one {};' -e &quot;format 'one =&quot; -e 'One!' \
             -e. -e '$~ = &quot;one&quot;; write'
    Undefined format &quot;one&quot; called at -e line 5.</code></pre>

<p>(the parsing of 'format ::one =' is unaffected)</p>

<p>So, finally</p>



<ul>
<li>a) we know what the code was for</li>
<li>b) we know how to write a test case</li>
<li>c) we can refactor the code to eliminate that argument (Brian Fraser had spotted that the tokeniser has already done the necessary work about a dozen lines earlier, with the result stored in a different variable)</li>
</ul>




<p>But that was about 12 hours work to figure out 1 argument to 1 function in toke.c. There are 97 functions in toke.c, most have multiple arguments, and the mean function length is double that of S_force_word(). The interactions are staggeringly complex. Roughly 0.1% down, 99.9% to go.</p>

<p>The final significant thing I worked on this month was Unicode code point lookup by name. Perl 5 can convert from name to code point using the "\N{}" escape, which is implemented by automatically loading the charnames pragma. Using /usr/bin/time it's easy to see that loading charnames increases memory use considerably. Compare:</p>

<pre><code>    $ /usr/bin/time -v ./perl -Ilib -le 'print &quot;Hello world\n&quot;'
    Hello world</code></pre>

<pre><code>            Maximum resident set size (kbytes): 6976</code></pre>

<pre><code>    $ /usr/bin/time -v ./perl -Ilib -le 'print &quot;Hello\N{SPACE}world\n&quot;'
          Hello world</code></pre>

<pre><code>Maximum resident set size (kbytes): 30672</code></pre>

<p>Trying to get some idea of where that extra 23 meg came from:</p>

<pre><code>$ /usr/bin/time -v ./perl -Ilib -le ''
            Maximum resident set size (kbytes): 6432</code></pre>

<pre><code>$ /usr/bin/time -v ./perl -Ilib -le 'use strict; use warnings'
            Maximum resident set size (kbytes): 10016</code></pre>

<pre><code>$ /usr/bin/time -v ./perl -Ilib -le 'use charnames &quot;:full&quot;'
            Maximum resident set size (kbytes): 24144</code></pre>

<pre><code>    $ /usr/bin/time -v ./perl -Ilib -le 'use charnames &quot;:full&quot;; print charnames::vianame(&quot;SPACE&quot;)'
    32
bc.             Maximum resident set size (kbytes): 30736</code></pre>

<p>Just loading strict and warnings allocates another 4M. (Note, "Hello world" was .5M, so nothing is free.) Loading charnames allocates another 14M, and using it allocates a further 6M, presumably as various caches start to get filled.</p>

<p>But all these requests are for things that are already known, just not in a very convenient format for a fast lookup. The main Unicode Data file is 24430 lines, and doesn't include 4 large ranges of <span class="caps">CJK </span>unified ideographs, a large range of algorithmically named Hangul syllables, and about 500 aliases. Moreover, any Perl hash you build of this (or the subset that you are interested in), is allocated at runtime, from memory that isn't even going to be shared between threads, let alone between processes.</p>

<p>Karl and I have wondered whether it would be possible to encode the names as a trie structure, with lookup code written in C. The lookup data would be unmodified at runtime, so could be compiled by the C compiler into the constant data section of the executable (or shared library), which will be shared at least between threads, and on *nix (at least) between all processes. So I've made a start at looking at this. By the end of the week my code had reached the point where I have Perl code to parse all the files, and generate suitable data structures, along with Perl code written in a C style which can correctly look up any code point by name, except the <span class="caps">CJK </span>ideographs and Hangul names. Which is pleasing.</p>

<p>A more detailed breakdown summarised from the weekly reports. In these:</p>

<p>16 hex digits refer to commits in <a href="http://perl5.git.perl.org/perl.git">http://perl5.git.perl.org/perl.gi</a><br />
RT #... is a bug in <a href="https://rt.perl.org/rt3/">https://rt.perl.org/rt3/</a><br />
<span class="caps">CPAN </span>#... is a bug in <a href="https://rt.cpan.org/Public/">https://rt.cpan.org/Public/</a><br />
<span class="caps">BBC </span>is "bleadperl breaks <span class="caps">CPAN</span>" - Andreas König's test reports for <span class="caps">CPAN </span>modules</p>

<table><tr><td>Hours</td><td>Activity</td></tr><tr><td>11.75</td><td>'foo special case</td></tr><tr><td>0.50</td><td>Android</td></tr><tr><td>0.50</td><td>Devel::PPPort/my $_</td></tr><tr><td></td><td><span class="caps">MAD</span></td></tr><tr><td>1.75</td><td><span class="caps">MVS</span></td></tr><tr><td>24.00</td><td><span class="caps">PERL</span>_HASH</td></tr><tr><td></td><td><span class="caps">PERL</span>_HASH "crap" hash</td></tr><tr><td></td><td><span class="caps">PERL</span>_HASH "crap" hash (there is an assumption that <span class="caps">MRO </span>stays shared)</td></tr><tr><td></td><td><span class="caps">PERL</span>_HASH hashes</td></tr><tr><td></td><td><span class="caps">PERL</span>_HASH hashes -- Use the old <acronym title="hv">HvKEYS</acronym> &gt; <acronym title="hv">HvMAX</acronym> condition</td></tr><tr><td></td><td><span class="caps">PERL</span>_HASH hashes. Aha. rehash/off/on/off/on/off</td></tr><tr><td>0.50</td><td>PL_interp_size_5_18_0</td></tr><tr><td>7.25</td><td>PL_sv_objcount</td></tr><tr><td>1.75</td><td>RT #109828</td></tr><tr><td>0.25</td><td>RT #113620</td></tr><tr><td>0.25</td><td>RT #116362</td></tr><tr><td>0.25</td><td>RT #116615</td></tr><tr><td>2.50</td><td>RT #116639</td></tr><tr><td>0.25</td><td>RT #116789</td></tr><tr><td>0.25</td><td>RT #116795</td></tr><tr><td>0.75</td><td>RT #116833</td></tr><tr><td>0.25</td><td>RT #116839</td></tr><tr><td>0.75</td><td>RT #116899</td></tr><tr><td>0.75</td><td>RT #116943</td></tr><tr><td>0.50</td><td>RT #116989</td></tr><tr><td>0.25</td><td>RT #59802</td></tr><tr><td>0.50</td><td>SvOK</td></tr><tr><td>9.00</td><td>Unicode Names</td></tr><tr><td>0.75</td><td>WinCE</td></tr><tr><td>0.25</td><td>abolish <span class="caps">STRANGE</span>_MALLOC</td></tr><tr><td>1.25</td><td>android</td></tr><tr><td>0.50</td><td>benchmarking regressions</td></tr><tr><td>5.75</td><td>hv_ksplit/hsplit merge</td></tr><tr><td>2.00</td><td>inversion lists</td></tr><tr><td>0.25</td><td>investigating security tickets</td></tr><tr><td>0.25</td><td>lexical $_</td></tr><tr><td>3.25</td><td>pahole on the interpreter struct</td></tr><tr><td>0.25</td><td>parallel tests</td></tr><tr><td>5.50</td><td>process, scalability, mentoring</td></tr><tr><td>39.50</td><td>reading/responding to list mail</td></tr><tr><td>3.50</td><td>regcomp/setjmp</td></tr><tr><td>18.00</td><td>signatures</td></tr><tr><td></td><td>signatures (call checker)</td></tr><tr><td>2.50</td><td>struct re_save_state</td></tr><tr><td>0.25</td><td>warnings.pm</td></tr><tr><td>4.75</td><td>yves/hv_h_split</td></tr></table>

<p><b>153.00 hours total</b></p>




* For public reporting purposes it's a "chocolate teapot hash". I used a terser term myself in private.
]]>
        
    </content>
</entry>

<entry>
    <title>Perl 5 Grant Completion</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/04/perl-5-grant-completion.html" />
    <id>tag:news.perlfoundation.org,2013://18.3215</id>

    <published>2013-04-17T13:45:11Z</published>
    <updated>2013-04-17T15:06:38Z</updated>

    <summary>Ricardo Signes&apos; Perl QA Hackathon grant has been successfully completed and closed. Details regarding the grant may be found on his blog. Please consider making a donation of any amount to help support projects such as this. Details regarding the Perl 5 Core Maintenance Fund may be found on The Perl Foundation&apos;s web site....</summary>
    <author>
        <name>Dan Wright</name>
        <uri>http://www.dwright.org</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>Ricardo Signes' <a href="http://news.perlfoundation.org/2013/02/perl-5-grant-application-trave-1.html">Perl QA Hackathon</a> grant has been successfully completed and closed.    Details regarding the grant may be found on <a href="http://rjbs.manxome.org/rubric/entry/1992">his blog</a>.</p>

<p>Please consider <a href="https://secure.donor.com/pf012/give">making a donation of any amount</a> to help support projects such as this.  Details regarding the Perl 5 Core Maintenance Fund may be found on <a href="http://www.perlfoundation.org/perl_5_core_maintenance_fund">The Perl Foundation's web site</a>.   </p>]]>
        
    </content>
</entry>

<entry>
    <title>2013Q2 Call for Grant Proposals</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/03/2013q2-call-for-grant-proposal.html" />
    <id>tag:news.perlfoundation.org,2013://18.3213</id>

    <published>2013-03-31T14:57:36Z</published>
    <updated>2013-03-31T15:05:18Z</updated>

    <summary>As you might have noticed, TPF has been grating money for some big tasks, like funding Nicholas Clark or Dave Mitchel work on Perl 5. Nevertheless, TPF has a Grants Committee with its own budget (although not a big one), to give grants for smaller projects, ranging from $500 to $3000. With this amount we do not expect to fund full-time work, but instead, use it as an incentive to complete some specific task. Therefore, you don&apos;t have to have...</summary>
    <author>
        <name>Alberto Simões</name>
        <uri>http://null.perl-hackers.net/</uri>
    </author>
    
    <category term="gp2013" label="GP2013" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2013q2" label="GP2013Q2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>As you might have noticed, <span class="caps">TPF </span>has been grating money for some big tasks, like funding Nicholas Clark or Dave Mitchel work on Perl 5. Nevertheless, <span class="caps">TPF </span>has a Grants Committee with its own budget (although not a big one), to give grants for smaller projects, ranging from $500 to $3000.</p>

<p>With this amount we do not expect to fund full-time work, but instead, use it as an incentive to complete some specific task. Therefore, you don't have to have a large, complex, or lengthy project. You don't even have to be a Perl master or guru. If you have a good idea and the means and ability to accomplish it, we want to hear from you!</p>

<p>If you have something that could benefit the Perl community but just need that little extra help, submit a grant proposal until the end of April. You would like to have the money, you have the knowledge, but do not know what do propose? Ask around and you will probably get some ideas. Some Perl pumpkins might post some ideas as comments on this post.</p>]]>
        <![CDATA[<p>As a general rule, a properly formatted grant proposal is more likely to be approved if it meets the following criteria</p>


<ul>
<li>It has widespread benefit to the Perl community or a large segment of it.</li>
<li>We have reasons to believe that you can accomplish your goals.</li>
<li>We can afford it (please, respect the limits or your proposal should be rejected immediately).</li>
</ul>



<p>To submit a proposal see the guidelines at <a href="http://www.perlfoundation.org/how_to_write_a_proposal">http://www.perlfoundation.org/how_to_write_a_proposal</a> and <span class="caps">TPF</span> GC current rules of operation at <a href="http://www.perlfoundation.org/rules_of_operation">http://www.perlfoundation.org/rules_of_operation</a>. Then send your proposal to tpf-proposals@perl-foundation.org. Your submission should be properly formatted accordingly with our <span class="caps">POD </span>template.</p>

<p>Proposals will be made available publicly (on this blog) for public discussion, as was done in the previous rounds. If your proposal should not be made public,<br />
please make this clear in your proposal and provide a reason.</p>]]>
    </content>
</entry>

<entry>
    <title>Outreach Program for Women</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/03/outreach-program-for-women.html" />
    <id>tag:news.perlfoundation.org,2013://18.3211</id>

    <published>2013-03-27T06:36:21Z</published>
    <updated>2013-03-27T06:57:13Z</updated>

    <summary>I am pleased to announce that we will be taking part in the next round of the Free and Open Source Outreach Program for Women. This successful program was started in 2006 by the GNOME Foundation to encourage women to participate in the FOSS community. This round of the program is open to women looking for internships between June and September of 2013. Full details of the eligibility requirements can be found on the program website. We are looking for...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="OPW" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>I am pleased to announce that we will be taking part in the next round of the <a href="https://live.gnome.org/OutreachProgramForWomen">Free and Open Source Outreach Program for Women.</a>  This successful program was started in 2006 by the <span class="caps">GNOME</span> Foundation to encourage women to participate in the <span class="caps">FOSS </span>community.  </p>

<p>This round of the program is open to women looking for internships between June and September of 2013.  Full details of the eligibility requirements can be found on the <a href="https://live.gnome.org/OutreachProgramForWomen">program website</a>. </p>

<p>We are looking for mentors and project ideas for the interns and also help with the coordination of this project.  If you are interested in helping out in any way please contact karen [at] perlfoundation.org</p>

<p>At present we have the funding for one intern.  If you or your company would be interested in sponsoring this project so that more interns could be funded please contact karen [at]  perlfoundation.org</p>]]>
        
    </content>
</entry>

<entry>
    <title>Fixing Perl5 Core Bugs: Report for Months 35 &amp; 36</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2013/03/fixing-perl5-core-bugs-report-29.html" />
    <id>tag:news.perlfoundation.org,2013://18.3209</id>

    <published>2013-03-25T02:52:14Z</published>
    <updated>2013-03-25T02:58:40Z</updated>

    <summary>Dave Mitchell writes: Got out of the habit of fixing bugs for the last couple of months. Spent most of the time that I was able to devote to perl mainly doing other stuff; in particular, pumpkining the 5.14.4 security release, and trying to keep up-to-date with my p5p inbox, which seems to be a full-time job these days. Hopefully I&apos;ll be able to put lots of effort into working on 5.18 blocker bugs for the rest of March. Over...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
    <category term="perl5coremaintenance" label="perl5 core maintenance" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><em>Dave Mitchell writes:</em></p>

<p>Got out of the habit of fixing bugs for the last couple of months. Spent most of the time that I was able to devote to perl mainly doing other stuff; in particular, pumpkining the 5.14.4 security release, and trying to keep up-to-date with my p5p inbox, which seems to be a full-time job these days.</p>

<p>Hopefully I'll be able to put lots of effort into working on 5.18 blocker bugs for the rest of March.</p>

<p>Over the last 2 months I have averaged 0.5 hours per week</p>

<p>As of 2013/02/28: since the beginning of the grant:</p>

<blockquote><p>155.6 weeks<br />
1590.8 total hours<br />
10.2 average hours per week</p></blockquote>

<p>There are 109 hours left on the grant.</p>

<p>Report for period 2013/01/01 to 2013/02/28 inclusive</p>

<p><b>Summary</b></p>

<p>Effort (HH::MM):</p>

<blockquote><p>3:00 diagnosing bugs<br />
1:15 fixing bugs<br />
0:00 reviewing other people's bug fixes<br />
0:00 reviewing ticket histories<br />
0:00 review the ticket queue (triage)<br />
-----<br />
<b>4:15 Total</b></p></blockquote>

<p><b>Numbers of tickets closed:</b></p>

<blockquote><p>2 tickets closed that have been worked on<br />
0 tickets closed related to bugs that have been fixed<br />
0 tickets closed that were reviewed but not worked on (triage)<br />
-----<br />
<b>2 Total</b></p></blockquote>


<p><b>Short Detail</b></p>

<blockquote><p>2:30 [perl #115080] m?? doesn't only once match on -Duseithreads<br />
0:20 [perl #116326] <span class="caps">COW</span>: big slowdown in simple? pattern matches<br />
1:25 [perl #116621] Reading from <span class="caps">STDIN </span>fails if <span class="caps">SIGCHLD </span>handler is set</p></blockquote>]]>
        
    </content>
</entry>

</feed>
