<?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>2012-05-03T14:41:46Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

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

    <published>2012-05-03T14:11:09Z</published>
    <updated>2012-05-03T14:41:46Z</updated>

    <summary>This quarter, The Perl Foundation Grants Committee has three grant proposals. One of them was not funded in the last round, given to budget restrictions. Accordingly with GC rules it should be voted again in this round. Together with that, we have two new proposals. You can read their descriptions bellow, and you are invited to comment on their own posts. Your feedback is important for the Grants Committee. The received grant proposals are: Easy installation of non-CPAN dependencies by...</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="gp2012" label="GP2012" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2012q2" label="GP2012Q2" 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>This quarter, The Perl Foundation Grants Committee has three grant proposals. One of them was not funded in the last round, given to budget restrictions. Accordingly with GC rules it should be voted again in this round. Together with that, we have two new proposals. You can read their descriptions bellow, and you are invited to comment on their own posts. Your feedback is important for the Grants Committee.</p>

<p>The received grant proposals are:</p>


<ul>
<li><a href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-easy-ins.html">Easy installation of non-CPAN dependencies</a> by <em>Alexandr Ciornii</em></li>
<li><a href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-perl-mod.html">Perl module for Linked Data</a> by <em>Tope Omitola</em></li>
<li><a href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-spanish.html">Spanish Localization of the Perl Core Documentation</a> by <em>Enrique Nell</em> and <em>Joaquin Ferrero</em></li>
</ul>

]]>
        
    </content>
</entry>

<entry>
    <title>2012Q2: Grant Proposal: Spanish Localization of the Perl Core Documentation</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-spanish.html" />
    <id>tag:news.perlfoundation.org,2012://18.3012</id>

    <published>2012-05-03T14:09:29Z</published>
    <updated>2012-05-03T14:40:26Z</updated>

    <summary> Name: Enrique Nell - Language Lead Joaquin Ferrero - Tech Lead Amount Requested: USD$2,000 Synopsis Spanish is the third most commonly used language on the Internet after English and Mandarin. It is also the second most studied language and second language in international communication, after English, in the world. Currently, there are 400 million native speakers and Spanish is the official language in 21 countries. However, the number of contributions to CPAN from the Spanish-speaking community is much lower...</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="gp2012" label="GP2012" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2012q2" label="GP2012Q2" 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>

<pre><code>    Enrique Nell - Language Lead
    Joaquin Ferrero - Tech Lead</code></pre>

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

<pre><code>    USD$2,000</code></pre>

</dd>
</dl>

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

<p>Spanish is the third most commonly used language on the Internet after English and Mandarin. It is also the second most studied language and second language in international communication, after English, in the world. Currently, there are 400 million native speakers and Spanish is the official language in 21 countries. However, the number of contributions to CPAN from the Spanish-speaking community is much lower than expected, considering these figures.</p>

<p>Our goal is to translate the Perl core documentation into Spanish, in order to make it available to a wider public through the POD2::ES distribution. In this process, we are using and developing sustainable procedures that reuse previous translations and provide a quick update for each new Perl release.</p>

<p>We are requesting a grant to boost our work on POD2::ES.</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>The availability of translated Perl documentation will bring more Perl programmers to the community and will increase the number of CPAN contributions.</p>

<p>The tools and procedures developed for this project can be used to translate Perl into other languages.</p>

<p>The resulting materials (e.g., translation memories, glossaries, style guides) can be used as a starting point for related projects, like the translation of Perl books, Perl 6 docs and the documentation of CPAN modules into Spanish.</p>

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

<ul>

<li><p>Increase of the percentage of translated &amp; reviewed documents, targeting 60% of translated docs and 25% of reviewed docs (current figures are 43% translated &amp; 3% reviewed)</p>

</li>
<li><p>Documented procedures and tools that can be reused in other projects.</p>

</li>
</ul>

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

<p>At the time of this writing, the latest version of Perl 5 is Perl v5.14.2. Its documentation is comprised of 189 documents, with a global word-count of 924,435 words. This translation volume, at a typical freelance translation rate (much cheaper than that of a translation agency), would cost well over 120,000 EUR (not counting tasks like DTP, project management, etc.), and it would take approx. 2 man-year (including revision).</p>

<p>Since this is volunteer-work, it&#39;s not as fast-paced as it would be desirable (after 16 months we have reached a translation status of more than 40% of the total documentation), but it is the best you will get while waiting for a real improvement of the available machine translation technology.</p>

<p>We use Computer-Assisted Translation (i.e., translation memory) technology since the beginning of the project, having in mind project sustainability and reusability: Each time a new Perl version is released, translators update the pod files and only have to work on new/changed strings. This reuse strategy ensures that the translated documentation will follow closely the Perl English documentation as it evolves. We use the Perl version numbering for each release, to state unambiguously the correspondence of the version of the original documents and that of the translated documents.</p>

<p>After evaluating several tools, we finally decided to use OmegaT, a convenient CAT tool that is actively developed, but we also follow current industry standards (e.g. TMX, the standard translation memory format), so contributing to the project does not require using a particular tool.</p>

<p>We have split the documentation in core documents on one hand, and perldeltas &amp; readmes on the other, to give priority to the most popular documents.</p>

<p>The published POD2::ES distributions only include fully revised documents, which can be viewed using the following command:</p>

<pre><code>        perldoc -L ES &#39;document&#39;</code></pre>

<p>Translated (and unpublished) documents are available in the project&#39;s github repository: <a href="https://github.com/zipf/perldoc-es/">PerlDoc-ES at Github</a>.</p>

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

<p>Back in 2006, Joaquín Ferrero was involved in a previous effort that was later abandoned, as many other attempts for different languages. During YAPC::EU 2009 in Lisbon, Enrique Nell proposed relaunching the project. The authors of the present grant application met with the goal of launching a translation project of the Perl core documentation, and kept discussing the idea for some time.</p>

<p>The first release (5.12.3.01) of POD2::ES was published on CPAN in February 4, 2011. On July 16th of that same year, we released the first 5.14.1 version of POD2::ES, one month after the release of Perl 5.14.1, after updating the translated documents to the new Perl version. The first 5.14.2 version was released on October 6, 2011, only 10 days after the release of Perl 5.14.2. For each version upgrade, we were able to reuse easily the work done for previous versions.</p>

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

<p>Current status: 42% translated. The statistics are available in the following public Google Docs spreadsheet: <a href="https://docs.google.com/spreadsheet/ccc?key=0AkmrG_9Q4x15dC1MNWloU0lyUjhGa2NrdTVTOG5WZVE">PerlDoc-ES.Traducción</a></p>

<p>As long as new Perl versions are released, the project will be alive. For each new Perl version, the corresponding translation percentage will be higher (after the update process, of course).</p>

<p>Reaching the percentages mentioned above will take ~6 months (rough estimate).</p>

<p>Currently, we are 12 to 24 months behind the source (English) documentation, but two new members joined the team recently and we expect to increase the speed in the coming months.</p>

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

<p>Enrique Nell (aka zipf, aka @blasgordon) has a degree in Physics from Universidad Autónoma de Madrid, but has been working in the software localization industry since 1994. His main interests are natural language processing, data mining and statistics. He has contributed several modules to CPAN and regularly attends Perl events. Enrique translated Act into Spanish and he is the current maintainer of the Spanish translations of Padre and Kephra. He also contributed to Google Code-in 2011 as a mentor for translation tasks issued by The Perl Foundation.</p>

<p>Joaquín Ferrero (aka explorer) studied Software Engineering at Universidad de Valladolid. He has been using Perl since 2003, while working as a programmer in companies and public organizations. During these years he has reported bugs in several CPAN modules. He attends regularly Madrid.pm meetings. Since 2005 Joaquín is the main moderator of the PerlenEspanol.com website, a forum that provides support to the worldwide Spanish-speaking Perl community. Back in 2006 he was a member of the second attempt of translating the Perl documentation into Spanish (the perlspanish project hosted on SourceForge, now abandoned). During YAPC::EU 2009, Joaquín joined Enrique Nell&#39;s BOF to kick-off a new PerlDoc-ES project.</p>

<p>Manuel Gómez received his MS degree in Computer Science in 1991 from Universidad Politécnica de Madrid. After over 10 years of professional experience in Research and Development departments, he received a PhD in Computer Science in 2002 from Universidad Politécnica de Madrid. He is now an Associate Professor of Computer Science at Universidad de Granada. His research interests are probabilistic graphical models and decision analysis. Some of the journals where he has published his research papers are Computers and Operations Research, European Journal of Operational Research, Statistics &amp; Computing, International Journal of Approximate Reasoning, Medical Decision Making, Decision Support Systems and Omega. His teaching interests include Programming Fundamentals, Simulation Systems, Data Mining and Bayesian Networks inference algorithms.</p>
]]>
    </content>
</entry>

<entry>
    <title>2012Q2: Grant Proposal: Perl module for Linked Data</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-perl-mod.html" />
    <id>tag:news.perlfoundation.org,2012://18.3014</id>

    <published>2012-05-03T14:07:03Z</published>
    <updated>2012-05-03T14:38:59Z</updated>

    <summary> Name: Tope Omitola Kjetil Kjernsmo will assist Tope with Perl and CPAN Amount Requested: How much is your project worth? $500 Synopsis The Semantic Web community has developed a vocabulary named VoID, which is a World Wide Web Consortium Interest Group Note, a de facto standard: http://www.w3.org/TR/void/. The goal of this project is to generate such descriptions, partly automatically, partly by hand-maintained descriptions, using RDF::Trine....</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="gp2012" label="GP2012" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2012q2" label="GP2012Q2" 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>Tope Omitola</p>

<p>Kjetil Kjernsmo will assist Tope with Perl and CPAN</p>

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

<p>How much is your project worth?</p>

<p>$500</p>

</dd>
</dl>

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

<p>The Semantic Web community has developed a vocabulary named VoID, which is a World Wide Web Consortium Interest Group Note, a de facto standard: <a href="http://www.w3.org/TR/void/">http://www.w3.org/TR/void/</a>. The goal of this project is to generate such descriptions, partly automatically, partly by hand-maintained descriptions, using <a>RDF::Trine</a>.</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<p>There is an active community around Semantic Web-technologies with Perl. This community believes that generating VoID descriptions is a very important undertaking, as it is an important part of the Linked Data technology stack and should be deployable in Linked Data services. A module such as this will be highly useful for the users of Perl in web development, and is likely to drive new users to Perl as it becomes a viable alternative amongst few for deploying a comprehensive Linked Data service. Despite its importance, the Perl+RDF community has not found the manpower to write this module. The community has therefore felt that the assistance from Tope Omitola is very welcome as he is a researcher in this field and has been involved, with other researchers from the University of Southampton, with the creation of similar modules for PHP. The module will be supported by the Perl+RDF community (see <a href="http://www.perlrdf.org/">http://www.perlrdf.org/</a>) and integrated with <a>RDF::LinkedData</a>.</p>

<p>The VoID descriptions themselves can be exposed by existing modules <a>RDF::LinkedData</a> and <a>RDF::Endpoint</a> or by other systems that expose RDF.</p>

<p>Dataset publishers can use VoID descriptions for datasets&#39; maintenance, administration, and hosting.</p>

<p>Clients can use VoID descriptions to discover, query, crawl, and index datasets, navigate them, get an idea of the type of data available, and optimize queries on them.</p>

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

<p>A module named <code>RDF::Generator::Void</code>. The module has been started on Github <a href="https://github.com/tope/RDF-Generator-Void">https://github.com/tope/RDF-Generator-Void</a> by the primary proposer and has received patches from two members of the Perl+RDF community. This module will be uploaded to CPAN.</p>

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

<p>With the rise in the usage and deployment of Semantic Web, especially of Linked Data, in organisations, industries, and governments, a good service is needed that can be used to construct, automatically, service level descriptions of these Linked Data modules. This service should also be useful for Linked Data developers and maintainers to help them add additional data of these services, manually.</p>

<p>This project aims to build a Perl module <code>RDF::Generator::Void</code> that can be used to set up such services, and Perl+RDF community members are already committed to integrating this module with existing modules.</p>

<p>The module will generate the following automatically, of a dataset or a sparql endpoint using <a>RDF::Trine</a>:</p>

<dl>

<dt id="void:triples">void:triples</dt>
<dd>

<p>The total number of triples contained in the dataset.</p>

</dd>
<dt id="void:entities">void:entities</dt>
<dd>

<p>The total number of entities that are described in the dataset.</p>

</dd>
<dt id="void:classes">void:classes</dt>
<dd>

<p>The total number of distinct classes in the dataset.</p>

</dd>
<dt id="void:properties">void:properties</dt>
<dd>

<p>The total number of distinct properties in the dataset.</p>

</dd>
<dt id="void:distinctSubjects">void:distinctSubjects</dt>
<dd>

<p>The total number of distinct subjects in the dataset.</p>

</dd>
<dt id="void:distinctObjects">void:distinctObjects</dt>
<dd>

<p>The total number of distinct objects in the dataset.</p>

</dd>
<dt id="void:documents-void:subset-void:Linkset">void:documents, void:subset, void:Linkset</dt>
<dd>

<p>express the set of foreign links in a dataset.</p>

</dd>
<dt id="void:feature">void:feature</dt>
<dd>

<p>used for expressing certain technical features of a dataset, such as its supported RDF serialization formats.</p>

</dd>
<dt id="void:sparqlEndpoint-void:dataDump-void:exampleResource">void:sparqlEndpoint void:dataDump void:exampleResource</dt>
<dd>

<p>Further descriptions of the dataset.</p>

</dd>
</dl>

<p>A full VoID description also contains other properties that in most cases must be hand-maintained, i.e. in a practical application, added from a file or through configuration. We will not enumerate this properties, but the module must be able to accept such statements.</p>

<p>Furthermore, the module must have methods to prompt a regeneration of the description, both a forced update and an update that will first check if the data has changed.</p>

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

<ul>

<li><p>Learn sufficient Perl</p>

</li>
<li><p>Get an overview of the API provided by <a>RDF::Trine</a></p>

</li>
<li><p>Get an idea of what can be done with <a>Any::Moose</a></p>

</li>
<li><p>Write a set of test suites</p>

</li>
<li><p>Create a constructor that can take a <a>RDF::Trine::Model</a> as the basis of computing the description and a model to add the description to.</p>

</li>
<li><p>Add a method to use to add hand-maintained statements.</p>

</li>
<li><p>Add a method to return an <a>RDF::Trine::Model</a> with the description.</p>

</li>
<li><p>Create test data</p>

</li>
<li><p>Write more tests</p>

</li>
<li><p>Create the code to generate the description based on triple counts.</p>

</li>
<li><p>Create a method to unconditionally regenerate the description.</p>

</li>
<li><p>Create a method to regenerate the description only if the model&#39;s etag has changed.</p>

</li>
<li><p>Package the module for CPAN distribution</p>

</li>
</ul>

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

<p>How long will the project take? When can you begin work?</p>

<p>It will take 2 months. Begin work middle of 16 May 2012</p>

<p>Work will happen between other projects, so active time spent is much shorter. Learning to use Perl and auxillary tools are expected to take two weeks. Then, constructor and initial methods is expected to take one week. Writing tests is then one week. Generation of the description is the main effort and can take up to two weeks. Wrapping up and review the code is finally expected to take two weeks before release.</p>

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

<p>The module will be released to CPAN, either by the proposer or by other members of the Perl+RDF community. The completeness will be judged by the ability of the module to fulfil the goals stated in the detailed project description and by passing a test suite developed.</p>

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

<p>Who are you? What makes you the best person to work on this project?</p>

<p>Tope Omitola: Research Fellow at the University of Southampton. Experienced Semantic Web / Linked Data developer, experienced in developing semantic web dicovery services. Amongst his research interests are provenance tracking of Linked Data, which involves an extension of VoID called voidp of which he is the primary author. Has previously been involved with writing a PHP module similar to the one proposed in this project. He is new to Perl.</p>

<p>Kjetil Kjernsmo: Ph.D. Research Fellow at the University of Oslo. Has 16 years of Perl experience and several modules on CPAN. Is an active member of the Perl+RDF community and organized the first International Semantic Web with Perl hackathon in London in March 2011. Active member of Dahut.pm and deputy board member of Oslo.pm. Will help Tope get up to speed with Perl and help with packaging and the test suite.</p>
]]>
    </content>
</entry>

<entry>
    <title>2012Q2: Grant Proposal: Easy installation of non-CPAN dependencies</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/05/2012q2-grant-proposal-easy-ins.html" />
    <id>tag:news.perlfoundation.org,2012://18.3010</id>

    <published>2012-05-03T14:01:28Z</published>
    <updated>2012-05-03T14:36:57Z</updated>

    <summary> Name: Alexandr Ciornii (CHORNY) Amount Requested: $2000 Synopsis Many CPAN modules depend on non-CPAN libraries (or programs). Installation of such module requires that library be installed before installing CPAN module. For beginners it is more confusing as library may be installed, but its headers may not. I&#39;d like to automate this step and install corresponding Linux package as part of module install. Currently main module of this project has codename CPAN::non, it will be renamed later after discussion in...</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="gp2012" label="GP2012" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2012q2" label="GP2012Q2" 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>Alexandr Ciornii (CHORNY)</p>

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

<p>$2000</p>

</dd>
</dl>

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

<p>Many CPAN modules depend on non-CPAN libraries (or programs). Installation of such module requires that library be installed before installing CPAN module. For beginners it is more confusing as library may be installed, but its headers may not. I&#39;d like to automate this step and install corresponding Linux package as part of module install.</p>

<p>Currently main module of this project has codename CPAN::non, it will be renamed later after discussion in module-authors mailing list.</p>
]]>
        <![CDATA[
<h2 id="Benefits-to-the-Perl-Community">Benefits to the Perl Community</h2>

<ul>

<li><p>For any user installing CPAN modules, as it will become much simpler. It is especially important when installing many modules or in case of inexpirienced user.</p>

</li>
<li><p>Module authors, because module installation will become easier and they would not need to periodically explain that users need to install non-CPAN library.</p>

</li>
<li><p>CPAN/OS porters, because dependencies will be listed more clearly, in future it may be also automated.</p>

</li>
<li><p>Package tools like Shipwright or carton can use CPAN::non to install OS packages.</p>

</li>
</ul>

<h2 id="Deliverables-to-CPAN-">Deliverables (to CPAN)</h2>

<p>New version of Linux::Distribution. XML::Parser will automatically install expat (of course if user agrees). Module for yum interaction. CPAN::non and Module::Install plugin will be released.</p>

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

<p>CPAN modules that want to get rid of this problem usually bundle libraries either directly or as Alien:: CPAN distributions. This creates several problems:</p>

<dl>

<dt id="More-work-for-authors-and-OS-package-maintainers">More work for authors and OS package maintainers</dt>
<dd>

</dd>
<dt id="Duplication">Duplication</dt>
<dd>

</dd>
<dt id="Necessity-to-update-library-if-serious-problem-is-found">Necessity to update library if serious problem is found</dt>
<dd>

</dd>
<dt id="Necessity-to-replicate-additional-patches-for-every-OS">Necessity to replicate additional patches for every OS</dt>
<dd>

</dd>
</dl>

<p>But it is easy to install such dependency with OS tools. CPAN module will have configuration file that will specify build and runtime dependencies. CPAN::non will be bundled with module, or installed using configure_requires in META.yml/json. In future OS vendors may include it into their versions of Perl.</p>

<p>CPAN::non will detect version of Linux, check if dependency and its headers are installed, find out which name has dependency and headers on this OS from configuration file, install it.</p>

<p>For yum there is no module CPAN, I plan to write module for it. Also there is no general module that would be dist-neutral, so I will write it too.</p>

<p>Module::Install plugin will be convenient as Module::Install allows automating bundling of run-time dependencies.</p>

<p>XML::Parser will be used as a first test for CPAN::non as I have comaint rights for it.</p>

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

<dl>

<dt id="Improve-tests-and-release-new-version-of-Linux::Distribution.">1. Improve tests and release new version of Linux::Distribution.</dt>
<dd>

</dd>
<dt id="Test-Linux::APT.-Write-submit-patches-if-necessary.">2. Test Linux::APT. Write/submit patches if necessary.</dt>
<dd>

</dd>
<dt id="Install-CentOS-and-Fedora.-Write-a-module-for-yum-interaction">3. Install CentOS and Fedora. Write a module for yum interaction</dt>
<dd>

</dd>
<dt id="Write-and-test-an-OS-independent-module-for-software-package-installation-apt-and-yum-">4. Write and test an OS-independent module for software package installation (apt and yum)</dt>
<dd>

</dd>
<dt id="CPAN::non---prototype">5. CPAN::non - prototype</dt>
<dd>

</dd>
<dt id="CPAN::non---write-code">6. CPAN::non - write code</dt>
<dd>

</dd>
<dt id="CPAN::non---test">7. CPAN::non - test</dt>
<dd>

</dd>
<dt id="CPAN::non---documentation">8. CPAN::non - documentation</dt>
<dd>

</dd>
<dt id="Use-it-in-XML::Parser-for-expat">9. Use it in XML::Parser for expat</dt>
<dd>

</dd>
<dt id="Module::Install-plugin">10. Module::Install plugin</dt>
<dd>

</dd>
<dt id="Blog-about-it-help-CPAN-authors-use-it-improve-main-module-if-necessary">11. Blog about it, help CPAN authors use it, improve main module if necessary</dt>
<dd>

</dd>
</dl>

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

<p>The project will take 2-3 months. I will start right after grant approval.</p>

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

<ul>

<li><p>New versions of Linux::Distribution and XML::Parser.</p>

</li>
<li><p>CPAN::non, Module::Install plugin and module for yum released.</p>

</li>
</ul>

<h2 id="Future">Future</h2>

<p>This project is a working solution, but after it will be adopted, more interesting things may be implemented, like support for FreeBSD, even Windows, support in tools for OS package generation, etc.</p>

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

<p>I maintain many CPAN modules and fixed bugs in many more. Participated in such projects as Strawberry Perl, Padre, ExtUtils::MakeMaker and others. Contributed to Module::Install. My CPAN account: <a href="http://search.cpan.org/~chorny/">http://search.cpan.org/~chorny/</a> and Ohloh: <a href="https://www.ohloh.net/accounts/chorny/positions">https://www.ohloh.net/accounts/chorny/positions</a>.</p>

<p>For 9 years I was a lead programmer of credit card payment system InterCardPro. Currently work for kariera.md.</p>
]]>
    </content>
</entry>

<entry>
    <title>Grant Accepted: Improving Devel::Cover</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/05/grant-accepted-improving-devel.html" />
    <id>tag:news.perlfoundation.org,2012://18.3008</id>

    <published>2012-05-02T03:41:34Z</published>
    <updated>2012-05-02T06:35:22Z</updated>

    <summary>I am pleased to announce that Paul Johnson&apos;s grant application, Improving Devel::Cover, has been successful. The grant will be split in two phases, the second phase starting after the completion of the first. I would like to thank everyone who provided feedback on this grant, both on our blog and during the consultation phase....</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <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>I am pleased to announce that Paul Johnson's grant application, <a href="http://news.perlfoundation.org/2012/04/grant-application-improving-de.html">Improving Devel::Cover</a>, has been successful.  The grant will be split in two phases, the second phase starting after the completion of the first.</p>

<p>I would like to thank everyone who provided feedback on this grant, both on our blog and during the consultation phase.  </p>]]>
        
    </content>
</entry>

<entry>
    <title>Grant Application:  Improving Cross compilation of Perl 5</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/05/grant-application-improving-cr.html" />
    <id>tag:news.perlfoundation.org,2012://18.3006</id>

    <published>2012-05-01T09:59:15Z</published>
    <updated>2012-05-01T10:30:33Z</updated>

    <summary>We have received the following grant application under the Perl 5 Core Maintenance Fund from Jess Robinson. 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. Name: Jess Robinson Project Title: Improving Cross compilation of Perl 5 Synopsis: Perl 5 has several scripts and tools for cross-compiling it for other platforms. These are somewhat inconsistent...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <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 Jess Robinson.</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>Name:</b> Jess Robinson</p>

<p><b>Project Title</b>: Improving Cross compilation of Perl 5</p>

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

<p>Perl 5 has several scripts and tools for cross-compiling it for other platforms. These are somewhat inconsistent and scattered across the codebase. My aim is to complete a cross-compilation target for Android, with smoker, and to prepare and document ways to add more targets without specialising for each of them.</p>

<p>The implementation goal is to allow direct cross compilation (no changes to actual Perl C-code, just using the hints system and configuration of cross-compiler paths and flags) to as many current and future platforms as possible, without needing knowledge of the build system internals. Ideally this will automate as much as possible the collection of data for the config files.  Only platforms on which we can't run arbitrary compiled C code (eg Android) should get pre-defined config files in core, and if these become unmaintained (not updated when new features are added to Configure) they should be flagged as stale.</p>

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

<p>This work will remove duplicate build scripts and "specialised" code created for various cross compilation environments and either them replace with a generic version, or leave them out completely. Either way this will allow Core contributors to have a better overview of which specialised code needs to be maintained.</p>

<p><b>Deliverable Elements:</b></p>

<p>I propose to work this as a pay-as-you-go grant, similar to Nicholas and Dave. The initial request is for 200 hours at $50/hour, over 2 months. If the project proves to need less time than this, we may consider it done and end early, with the payment covering the actual number of hours worked. Alternately, if it requires more time I would be willing to work longer at the same rate to complete unfinished tasks.</p>

<p>The actual deliverables will be determined by the project, but will cover at least the delivery of a working Android cross-compilation build environment, together with a smoke environment to ensure that it continues to compile.</p>

<p>I will deliver weekly summary reports on progress via the p5p mailing list, and an end of month report summarising the whole month. I would then claim for the hours worked in that month.</p>

<p>The grant managers would be allowed at any time to inform the board that the project is failing, and the <span class="caps">TPF </span>board, after allowing me to present my side, decide to terminate the project.</p>

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

<p>I intend to spend time on the following items:</p>

<p>1. Bring my existing Android cross compiling environment and copy of Perl up to date and working. The current branch is based on perl 5.15.1, records work in progress, and uses an <span class="caps">NDK </span>two versions out of date. The branch needs rebasing and some restructuring to eliminate extraneous intermediate stages. The version of <span class="caps">NDK </span>used doesn't upgrade cleanly to newer ones. Fixing this will require trying to make the use of the <span class="caps">NDK </span>more generic and easier to configure in case of more path/binary renaming in future versions. approx 50 hours.</p>

<p>2. Set up a smoker for Android cross-compilation to ensure that the build continues to work. - 10 hours.</p>

<p>3. Refactor the working Android cross compiling approach to minimise divergence from the regular hosted build process, simplifying it as much as possible.</p>

<p>In particular:<br />
 </p>


<ul>
<li>fully exploit the fact that it now uses ./Configure -Dmksymlinks to separate the host and target build trees, which wasn't done previously.</li>
<li>use lib/buildcustomize.pl to simplify the cases where the host miniperl driving the build needs to report configuration values for the target system. </li>
<li>assume that a functional /usr/bin/perl is present when cross-compiling, and convert top level driver scripts from /bin/bash to Perl for easier maintenance and improved portability.</li>
</ul>



<p> <br />
[Flexible guess. - 30 hours]</p>

<p>4. Identify a second target platform to cross compile to, representative of a small consumer device running Linux or *BSD on a non-x86 chip, and which can be run under emulation for testing. One plausible candidate is the Raspberry Pi, an <span class="caps">ARM</span> Linux device, because developer virtual machines exist, are documented and actively maintained. Get cross compilation to this device working, using the toolchain documented in Cross/README.new, and also using the approach documented in <span class="caps">INSTALL. </span>- Unknown.</p>

<p>Refactor the cross compilation code described in the previous steps to<br />
 </p>


<ul>
<li>take advantage of the simplifications possible with -Dmksymlinks and buildcustomize.pl approaches used by the Android port</li>
<li>minimise the amount of duplication and overlap with the regular hosted build process</li>
<li>share with the Android port as much code as is practical</li>
<li>maximise maintainability</li>
<li>aim toward an approach that where possible is generic, minimising the use of pre-requisite "canned" config files. </li>
</ul>





<p>5. Document this with a "Howto cross-compile Perl" guide.</p>

<p>6. Set up a smoker for cross-compilation to the small-unix target to ensure that the build continues to work. - 10 hours.</p>

<p>7. Review the various Cross compilation scripts and tools existing today in the core code, to determine which are still required using the revised approaches above. Tidy up by removing / deprecating un-used or obsolete parts.</p>

<p><b>Stretch goals:</b></p>

<p>1. Devise and implement a way to perform an installation of the resulting build onto the target smoke platforms (using an emulator), run the perl 5 core test suite, and gather the results to report back to the current smoke system. - Unknown</p>

<p>2. Investigate ways to cross-compile <span class="caps">CPAN </span>modules, especially XS modules, and install onto the target device. Likely this would be several steps, starting with modules that don't probe the local system within their Makefile.PL, and build them as part of the main cross build. Then work to decouple building modules from building the perl core, possibly including making the cross-building setup installable on the host machine. - Unknown, estimate 25 hours.</p>

<p>I estimate that the main items 1 to 7 will take around 200 hours to complete. I will work on each item in turn (though not necessarily in the above order) and in stages to provide usable patches during the project.</p>

<p>These items were prepared with much help from Nicholas Clark, many thanks to him.</p>

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

<p>I expect to be working on this alongside other work, and realistically to be spending about half my time on it. Thus I am asking for 200 hours over 2 months.</p>

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

<p><b>Bio.:</b></p>

<p>I have worked with Perl professionally for the last 7 years, and I spend much of my spare time supporting and encouraging the use of Perl.</p>

<p>I took the Perl 5.10 changes and additions from the android-scripting repo and ported them to enable cross-compiling of Perl 5.15 for Android devices last year, this work can be seen on github: <a href="https://github.com/castaway/perl/tree/x-compile-android">https://github.com/castaway/perl/tree/x-compile-android</a>.</p>

<p><b>Endorsed by:</b> Nicholas Clark, Ricardo Signes</p>

<p><b>Amount Requested:</b> $10,000</p>]]>
        
    </content>
</entry>

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

    <published>2012-04-30T17:19:49Z</published>
    <updated>2012-04-30T17:30:09Z</updated>

    <summary>YAPC::NA 2012 in Madison, Wisconsin is just six weeks away. With this years conference upon us, it is time to plan for 2013. The call for venue is officially open! The TPF Conference Committee will be accepting bids today through June 1st 2012. What is YAPC::NA? YAPC::NA is an annual Perl-focused conference held at various locations throughout North America. The conference is a grassroots symposia on the Perl programming language promoted by The Perl Foundation. What is the &quot;Call for...</summary>
    <author>
        <name>Josh McAdams</name>
        <uri>http://www.perlcast.com</uri>
    </author>
    
        <category term="Conferences" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="yapc" label="YAPC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapc" label="yapc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapcna" label="yapc-na" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapcna" label="YAPC::NA" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p><a href="http://yapcna.org/"><span class="caps">YAPC</span>::NA 2012 in Madison, Wisconsin</a> is just six weeks away. With this years conference upon us, it is time to plan for 2013. The call for venue is officially open! The <span class="caps">TPF</span> Conference Committee will be accepting bids today through June 1st 2012.</p>

<p>What is <span class="caps">YAPC</span>::NA?</p>

<p><span class="caps">YAPC</span>::NA is an annual Perl-focused conference held at various locations throughout North America. The conference is a grassroots symposia on the Perl programming language promoted by <a href="http://perlfoundation.org/">The Perl Foundation</a>.</p>

<p>What is the "Call for Venue"?</p>

<p>Each year <a href="http://pm.org/">Perl Mongers</a> groups bid to host the conference for the upcoming year in the location of their choosing. The "Call for Venue" is The Perl Foundation's official invitation for groups to send in their bids.</p>

<p>How do you submit a bid?</p>

<p>The best place to start researching is the <a href="http://yapc.org/yapcna.html">bidding details</a> page at <a href="http://yapc.org/">yapc.org</a>. While there, you'll find links to the <a href="http://tpf.googlecode.com/svn/trunk/yapc/Bidding.pm">venue requirements</a> and the <a href="http://yapc.org/yapc-crit.txt">review criteria</a>. You can do a little more research and peek at previous bids by searching the 'yapc' tag at The Perl Foundation blog.</p>

<p>Also, feel free to post your questions to this blog post or email tpf-conferences (at) perl (dot) org. If you know a previous organizer, it might not be a bad idea to chat with he or she to get some advice and see if you are ready to host a conference.</p>

<p>If you think you'd like to submit a bid this year, let us know that you plan on getting one together by emailing tpf-conferences (at) perl (dot) org so that we know that there might be a bid coming and so that we can help you get the bid together by the deadline.</p>

<p>After your done and have your bid together, just email it to tpf-conferences (at) perl (dot) org. Remember, the deadline is June 1st 2012.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Work on the Perl 6 Tablets Continues</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/04/work-on-the-perl-6-tablets-con.html" />
    <id>tag:news.perlfoundation.org,2012://18.3002</id>

    <published>2012-04-29T07:30:21Z</published>
    <updated>2012-04-29T07:47:23Z</updated>

    <summary>Work continues on TPF&apos;s Perl 6 Tablets grant: tablets 2 to 4 have progressed, covering Perl 6&apos;s basic syntax, variables and operators.</summary>
    <author>
        <name>Tom Hukins</name>
        
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="grants" label="grants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl 6" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://news.perlfoundation.org/">
        <![CDATA[<p>It's over a year since my <a href="http://news.perlfoundation.org/2010/11/perl-6-tablets-first-progress.html">last update</a> here on Herbert Breunung's <a href="http://tablets.perl6.org/">Perl 6 Tablets</a>.</p>

<p>Work continues on this project, however, and tablets 2 to 4 on Perl 6's <a href="http://tablets.perl6.org/tablet-2-basic-syntax.html">basic syntax</a>, <a href="http://tablets.perl6.org/tablet-3-variables.html">variables</a> and <a href="http://tablets.perl6.org/tablet-4-operators.html">operators</a> have progressed.</p>

<p>The tablets have moved to their own site at <a href="http://tablets.perl6.org/">http://tablets.perl6.org/</a> so please use this new address when referencing them.  Herbert has written <a href="http://blogs.perl.org/users/lichtkind/2012/04/a-real-grant-report.html">three</a> <a href="http://blogs.perl.org/users/lichtkind/2012/04/perl-6-tablets-what-happened-this-week.html">blog</a> <a href="http://blogs.perl.org/users/lichtkind/2012/04/how-perl-documentation-could-look-like.html">posts</a> about his recent work.  His <a href="http://blogs.perl.org/users/lichtkind/">perl blog</a> will keep us updated with his further progress.  As always, I'm sure he would appreciate your feedback.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Alien::Base Grant - Report #2</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/04/alienbase-grant---report-2.html" />
    <id>tag:news.perlfoundation.org,2012://18.3000</id>

    <published>2012-04-25T02:00:00Z</published>
    <updated>2012-04-25T02:14:19Z</updated>

    <summary>Joel Berger wrote: After last month&apos;s breakneck development pace, I knew this month wouldn&apos;t be as gratifying, and indeed it turned into quite a slog. This month involved lots of little bug fixes, posting dev releases to CPAN, then waiting for test results from CPANtesters. As a side note, there are a larger number of reports coming from Solaris and BSD than I would have expected. Sadly one of the bugs that still hasn&apos;t been sorted out is this recurring...</summary>
    <author>
        <name>Makoto Nozaki</name>
        <uri>http://facebook.com/nozaki</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><em>Joel Berger wrote:</em></p>

<p>After <a href="http://blogs.perl.org/users/joel_berger/2012/03/alienbase-perl-foundation-grant-report-month-1.html">last month's</a> breakneck development pace, I knew this month wouldn't be as gratifying, and indeed it turned into quite a slog. </p>

<p>This month involved lots of little bug fixes, posting dev releases to CPAN, then waiting for test results from CPANtesters. As a side note, there are a larger number of reports coming from Solaris and BSD than I would have expected. Sadly one of the bugs that still hasn't been sorted out is this recurring Solaris bug when changing working directory. It would appear that I am going to have to find a Solaris box or VirtualBox appliance, since waiting for test results for every fix attempt would take far too long.</p>

<p>I do have some nice things to report. I have received help from fellow WindyCity.pm member David Mertens and new contributor JT Palmer this month, so thanks guys! Next I have just pushed a new dev release which (again) changes the mechanism of dynamic loading; this one more reliant on DynaLoader's facilities rather than munging ENV variables. This seems to be more platform independent, or I should say, as platform independent as p5p has written into it. I have much faith in them! Preliminary results seem promising. David had been having problems with a candidate Alien:: module that he is writing and this release seems to have fixed it. I hope to see Darwin and Win32 start passing too (gasp).</p>

<p>With that said, I am still targeting more documentation and a basic testing framework before a 0.001 alpha release. Seems like I'm always saying this, but I hope this will be coming shortly.</p>

<p>Fork Alien::Base on <a href="https://github.com/jberger/Alien-Base">Github</a> and note that the 0.000_009 dev release is still contained in the <a href="https://github.com/jberger/Alien-Base/tree/dlopen"><code>dlopen</code></a> branch. I will merge it once the tests seem to bear it out.</p>

<p><em>Original article at <a href="http://blogs.perl.org/users/joel_berger/2012/04/alienbase-perl-foundation-grant-report-month-2.html">Joel Berger [blogs.perl.org]</a>.</em></p>
]]>
        

    </content>
</entry>

<entry>
    <title>Cooking Perl with Chef - Grant Report #2</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/04/cooking-perl-with-chef---grant-1.html" />
    <id>tag:news.perlfoundation.org,2012://18.2998</id>

    <published>2012-04-23T01:41:46Z</published>
    <updated>2012-04-23T01:48:02Z</updated>

    <summary><![CDATA[David Golden reported: Current progress Three of the eight deliverables are complete: Publish a Chef cookbook for Perl interpreter deployment Publish a Chef cookbook for CPAN module deployment Publish a Chef cookbook for Plack application deployment These have been uploaded to the Opscode Community Cookbooks site in two separate cookbook distributions: perlbrew The perlbrew cookbook satisfies deliverables #1 and #2. It provides several &quot;lightweight resource providers&quot; (LWRPs -- a Chef term) that use perlbrew to deliver various automation capabilities: perlbrew_perl...]]></summary>
    <author>
        <name>Alan Haggai Alavi</name>
        <uri>http://alanhaggai.org/</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><em>David Golden reported:</em></p>

<blockquote>
  <p><b>Current progress</b></p>
  
  <p>Three of the eight deliverables are complete:</p>
  
  <ol>
    <li>Publish a Chef cookbook for Perl interpreter deployment</li>
    <li>Publish a Chef cookbook for CPAN module deployment</li>
    <li>Publish a Chef cookbook for Plack application deployment</li>
  </ol>
  
  <p>These have been uploaded to the Opscode Community Cookbooks site in two
  separate cookbook distributions:</p>
  
  <p><strong>perlbrew</strong></p>
  
  The <a href="http://community.opscode.com/cookbooks/perlbrew" target="_blank">perlbrew cookbook</a>
  satisfies deliverables #1 and #2.  It provides several
  &quot;lightweight resource providers&quot; (LWRPs -- a Chef term) that use
  <a href="https://metacpan.org/module/perlbrew" target="_blank">perlbrew</a> to
  deliver various automation capabilities:
  
  <ul>
    <li>perlbrew_perl -- installs a perl from source to a user-configurable directory (by default, &quot;/opt/perlbrew/perls/&quot;)</li>
    <li>perlbrew_lib -- establishes a local::lib style directory for use with a particular perlbrew perl</li>
    <li>perlbrew_cpanm -- installs CPAN modules into a perlbrew perl or local::lib</li>
    <li>perlbrew_run -- runs arbitrary bash commands in the context of a particular perlbrew perl or local::lib</li>
  </ul>
  
  <p>
  For example, this snippet of ruby could be used in a recipe to install a perl, configure
  a library, install some CPAN modules to the library, and then run a perl command using that
  perl and library:
  </p>
  
  <p><code><pre>
  include_recipe &#39;perlbrew&#39;</p>

<p>perlbrew_lib &#39;perl-5.8.9@xdg&#39;</p>

<p>perlbrew_cpanm &quot;Stuff we need&quot; do
    perlbrew &#39;perl-5.8.9@xdg&#39;
    modules [&#39;Data::UUID::MT&#39;, &#39;Data::GUID::Any&#39;]
  end</p>

<p>perlbrew<em>run &quot;print a UUID&quot; do
    perlbrew &#39;perl-5.8.9@xdg&#39;
    command &quot;perl -MData::GUID::Any -le &#39;print Data::GUID::Any::guid</em>as_<WBR>string&#39;&quot;
  end
</pre></code></p>
  
  <p><strong>carton</strong></p>
  
  <p>The <a href="http://community.opscode.com/cookbooks/carton" target="_blank">carton cookbook</a>
  satisfies deliverable #3.  It provides an LWRP called &#39;carton_app&#39; that uses
  <a href="https://metacpan.org/module/carton" target="_blank">carton</a> to install application-specific
  dependencies into a application-local directory and then sets up the application as a system service using
  <a href="http://smarden.org/runit/" target="_blank">runit</a>.
  </p>
  
  <p>
  For example, this snippet of ruby could be used in a recipe to launch a
  carton-based application from a deployment directory.  Note that most of the
  application-specific attributes are parameterized using Chef&#39;s &#39;node&#39; data
  structure for each deployment node, making it easy to change how the
  application is deployed to different servers:
  </p>
  
  <p><code><pre>
  include_recipe &#39;carton&#39;</p>

<p>carton<em>app &quot;hello-world&quot; do
    perlbrew node[&#39;hello-world&#39;][&#39;perl</em><WBR>version&#39;]
    command &quot;starman -p #{node[&#39;hello-world&#39;][&#39;port&#39;]} app.psgi&quot;
    cwd node[&#39;hello-world&#39;][&#39;deploy_<WBR>dir&#39;]
    user node[&#39;hello-world&#39;][&#39;user&#39;]
    group node[&#39;hello-world&#39;][&#39;group&#39;]
  end</p>

<p>carton_app &quot;hello-world&quot; do
    action :start
  end
</pre></code></p>
  
  <p><b>Current work and next steps</b></p>
  
  <p>
  I have started refactoring the initial draft of <a href="https://metacpan.org/module/pantry" target="_blank">pantry</a> to make it easier to
  configure nodes without requiring users to edit JSON directly (deliverable #4).
  This will let me streamline the tutorials and help users following the tutorial
  to avoid introducing JSON errors and getting stuck.
  </p>
  
  <p>
  Next month I expect to finish and publish the hello-world tutorial (deliverable #5) 
  and have a (rough) draft of the &quot;real world&quot; tutorial (deliverable #6).
  </p>
  
  <p>
  I was pleased to hear that my OSCON proposal was accepted and my <a href="http://www.oscon.com/oscon2012/public/schedule/detail/23885" target="_blank">Cooking Perl with Chef talk</a>
  will be on Thursday, July 19.  That presentation will
  satisfy deliverable #7 (though I may deliver a draft early as a test run).  If
  I find out that my OSCON session will be videotaped, I&#39;ll use that as the
  video tutorial (deliverable #8).  If not, I&#39;ll prepare a separate screen cast.
  (I may do both and use the short screencast as part of the talk to avoid the
  risk of a live demo.)
  </p>
</blockquote>
]]>
        

    </content>
</entry>

<entry>
    <title>YAPC::NA Is Quickly Approaching</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/04/yapcna-is-quickly-approaching.html" />
    <id>tag:news.perlfoundation.org,2012://18.2996</id>

    <published>2012-04-17T06:33:07Z</published>
    <updated>2012-04-17T06:40:44Z</updated>

    <summary>The North American &quot;Yet Another Perl Conference&quot; starts June 13th. Registration is open. All of the workshops have already sold out, but there are still tickets available for the general conference and the spouses program. Also, if you want to a reserve a hotel room at the YAPC::NA 2012 conference facilities then you need to do so now. Reservations close on May 1. See you at YAPC::NA!...</summary>
    <author>
        <name>Josh McAdams</name>
        <uri>http://www.perlcast.com</uri>
    </author>
    
        <category term="Conferences" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="yapc" label="yapc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapcna" label="yapc-na" 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" starts June 13th. <a href="http://act.yapcna.org/2012/purchase">Registration</a> is open. All of the workshops have already sold out, but there are still tickets available for the general conference and the spouses program.</p>

<p>Also, if you want to a <a href="http://blog.yapcna.org/post/16909963700/conference-hotel-registration-open">reserve a hotel</a> room at the <a href="http://www.yapcna.org/"><span class="caps">YAPC</span>::NA 2012</a> conference facilities then you need to do so now. Reservations close on May 1.</p>

<p>See you at <span class="caps">YAPC</span>::NA!</p>]]>
        
    </content>
</entry>

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

    <published>2012-04-12T07:34:27Z</published>
    <updated>2012-04-12T08:41:40Z</updated>

    <summary>Nicholas Clark writes: A short report this month as less work got done, due to illness and disruption. The single largest item of the month was spent getting my head around the state of cross compilation. Mostly this was figuring out the history and state of various cross compilation approaches in the core codebase, to help Jess Robinson refine a potential TPF grant application for cross compilation (particularly to Android). At the time of writing most of this is still...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <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>A short report this month as less work got done, due to illness and disruption.</p>

<p>The single largest item of the month was spent getting my head around the state of cross compilation. Mostly this was figuring out the history and state of various cross compilation approaches in the core codebase, to help Jess Robinson refine a potential <span class="caps">TPF </span>grant application for cross compilation (particularly to Android). At the time of writing most of this is still groundwork (and intangible), such as studying her x-compile-android work at <a href="https://github.com/castaway/perl">https://github.com/castaway/perl</a> and the various existing *nix cross-compilation approaches in the core, but hopefully it should soon materialise into the actual published grant application, approval, and then visible code and progress. We think we can see an approach to take that has a good chance of working out long term, by being as simple as possible within the existing build setup.</p>

<p>I also diagnosed the likely cause of File::Glob failures we're seeing on some HP-UX machines. It looks like another C compiler bug handling bool. Pesky new fangled <span class="caps">C99 </span>and its complex new features. 12 years is clearly not long enough for compiler writers to be sure to have all the bugs squished. However, I've not had time to investigate further and be confident that my initial "top of my head" fix is the best long term plan, so this build failure is not yet resolved.</p>

<p>I spent some time starting to prune the core's todo list. Historically, the core's list of todos was recorded in the perltodo man page. This really isn't the best place for it, as installing snapshot that becomes increasingly out of date isn't that useful to anyone. So the 5.15.9 is the end of an era in this respect. The todo list is now in Porting/todo.pod, and the man page replaced with a small placeholder that points the reader to the git repository for the current version. Currently the version in blead is unchanged, but in a branch I've culled about 10% of the todos, those that are either done, mostly done, or no longer relevant. There are still a few to be updated where we have a better idea of how to do it, and the document needs restructuring to make it easier to spot appropriate "starter" tasks.</p>

<p>Whilst looking at some older bugs I needed to build various <span class="caps">CPAN </span>modules on OpenBSD against older versions of perl. Bootstrapping (older) <span class="caps">CPAN </span>didn't turn out be as easy it could have been, partly thanks to command line tools somehow managing to double gzip tarballs. The following approach might be useful to others in a similar situation on a recalcitrant setup:</p>

<p>1) manually get a tarball of the current <span class="caps">CPAN.</span>pm onto the machine and unpack it</p>

<p>2) Run its Makefile.PL. For now, don't worry about the missing pre-requisites warnings. Build it. (Run tests.) Install it.</p>

<p>3) Run the newly installed cpan client on the checked out tarball, as 'cpan .' If you need proxies for <span class="caps">HTTP </span>and <span class="caps">FTP, </span>set <span class="caps">HTTP</span>_PROXY and <span class="caps">FTP</span>_PROXY appropriately in your environment. Configure the <span class="caps">CPAN </span>client as prompted. This will fetch the missing pre-requisites, build and install them.</p>

<p>This approach is far more likely to succeed than trying to get the older version's installed cpan client to get a new <span class="caps">CPAN.</span>pm, as the older version doesn't incorporate the bug fixes and work arounds for awkward command line tools.</p>

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

<p>16 hex digits refer to commits in http://perl5.git.perl.org/perl.git<br />
RT #... is a bug in https://rt.perl.org/rt3/<br />
<span class="caps">CPAN </span>#... is a bug in https://rt.cpan.org/Public/<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<br />
ID <span class="caps">YYYYMMDD.</span>### is an bug number in the old bug system. The RT # is given afterwards.*</p>

<table><tr><td>Hours</td><td>Activity</td></tr><tr><td>0.75</td><td>5bec93bead1c1056 regression</td></tr><tr><td>0.75</td><td>HP-UX build failure</td></tr><tr><td>1.75</td><td>ID 20010303.010 (#5956)</td></tr><tr><td>0.25</td><td>ID 20010929.014 (#7765)</td></tr><tr><td>0.50</td><td>RT #111462</td></tr><tr><td>0.50</td><td>RT #26001</td></tr><tr><td>1.00</td><td>RT #36309</td></tr><tr><td>1.25</td><td>RT #53200</td></tr><tr><td>0.50</td><td>RT #55550</td></tr><tr><td>0.25</td><td>RT #75780</td></tr><tr><td>0.50</td><td>RT #79960</td></tr><tr><td>1.50</td><td>Testing on OpenBSD</td></tr><tr><td>3.25</td><td>cflags.SH</td></tr><tr><td>0.50</td><td>checking accuracy of git tags</td></tr><tr><td>22.00</td><td>cross compilation</td></tr><tr><td>0.75</td><td>feature.pm</td></tr><tr><td>0.50</td><td>is_lvalue_sub</td></tr><tr><td>6.25</td><td>minor changes for 5.15.9</td></tr><tr><td>3.75</td><td>process, scalability, mentoring</td></tr><tr><td>6.75</td><td>pruning the todo list</td></tr><tr><td></td><td>pruning the todo list, Pod::HTML</td></tr><tr><td>17.75</td><td>reading/responding to list mail</td></tr><tr><td>1.75</td><td>smoke-me branches</td></tr><tr><td>0.25</td><td>smoke-me/linestr_sv</td></tr></table>

<p><b>73.00 hours total</b><br />

* One can convert old system numbers to RT ticket numbers using the form at
<br />
<a href="https://rt.perl.org/perlbug/"> https://rt.perl.org/perlbug/</a> The old system numbers are mostly a historical curiosity, but they can be useful when searching git logs and the mailing list archives.</p>]]>
        
    </content>
</entry>

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

    <published>2012-04-11T10:34:55Z</published>
    <updated>2012-04-11T11:03:03Z</updated>

    <summary>Nicholas Clark writes: Sorry for the delay in this report - I&apos;ve been ill, been away, been ill while away, and generally disrupted, and I wasn&apos;t the only one ill in the house. Fortunately everyone is well again, and the backlog of other tasks is considerably reduced. Zombie undead global backref destruction panics strike again. I don&apos;t know what it is with these critters, but another variant turned up, in almost the same place, and triggered by almost the same...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <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>Sorry for the delay in this report - I've been ill, been away, been ill while away, and generally disrupted, and I wasn't the only one ill in the house.  Fortunately everyone is well again, and the backlog of other tasks is considerably reduced.</p>

<p>Zombie undead global backref destruction panics strike <strong>again</strong>. I don't know what it is with these critters, but another variant turned up, in almost the same place, and triggered by almost the same code. I <strong>think</strong> that this is the last one, simply because this was the third and final branch of the backref code, and now it's been diagnosed and fixed.</p>

<p>In this case, the problem is that it's possible for the the last (strong) reference to the target [tsv in the code in Perl_sv_del_backref()] to have become freed <strong>before</strong> the last thing holding a weak reference. If both survive longer than the backreferences array (the previous cause of problems), then when the referent's reference count drops to 0 and it is freed, it's not able to chase the backreferences, so those backreferences aren't <span class="caps">NULL</span>ed.</p>

<p>For example, a CV holds a weak reference to its stash. If both the CV and the stash survive longer than the backreferences array, and the CV gets picked for the <acronym title="">SvBREAK</acronym> treatment first, <strong>and</strong> it turns out that the stash is only being kept alive because of an our variable in the pad of the <span class="caps">CV, </span>then midway during CV destruction the stash gets freed, but <acronym title="">CvSTASH</acronym> isn't set to <span class="caps">NULL.</span> It ends up pointing to the freed <span class="caps">HV.</span> Hence that pointer is chased into Perl_sv_del_backref(), but because it's pointing to a freed HV the relevant magic structure was no longer there to be found, a <span class="caps">NULL </span>pointer was assigned to a local variable. Subsequent code panicked because it thought that could never happen, at least not without a bug. Except, as the investigation showed, it could happen quite legitimately in exactly this scenario. During global destruction, all bets are off.</p>

<p>I don't believe that "better" destruction ordering is going to help here - during global destruction there's always going to be the chance that something goes out of order. We've tried to make it foolproof before, and it only resulted in evolutionary pressure on fools. Which made us look foolish for our hubris. :-(</p>

<p>I think that the reason that all these critters are shuffling towards us*now*, despite being in code that's quite long lived, is because since 5.14.0 Dave has re-worked the SV destruction code. Previously it would recurse into data structures, which had the unpleasant side effect of blowing the C stack when it tried to do too much at once. [Crash and burn - not good] Dave has made much of that code iterative now, which avoids the crashing. [Generally this is seen as progress :-)] However, it's changed the destruction order, and I think in some cases that is exposing long-latent bugs elsewhere in the code that destruction calls, particularly during global destruction.</p>

<p>Another signficant activity in February week was diagnosing and resolving ticket #37033. The low bug number reveals that this is quite a long standing bug, related to the parser leaving file handles open in some cases. The background is that the perl interpreter is either passed a filename, or if none is passed defaults to reading from <span class="caps">STDIN.</span> If reading from <span class="caps">STDIN, </span>the interpreter should not close it, as it did not open it (and implicitly closing <span class="caps">STDIN </span>out from underneath a program is bad). But any file handle the interpreter opened (internally, as a side effect of doing its job) should be closed.</p>

<p>The problem was the the check for close-or-not used to be simply "is this filehandle <span class="caps">STDIN</span>?"</p>

<p>The troubles arise from the interaction of the definition of <span class="caps">STDIN </span>with the <span class="caps">POSIX </span>semantics of open. "is this <span class="caps">STDIN</span>?" is pretty much "is this file handle open on file descriptor 0?". open gives you the lowest unused file descriptor. So if the user program closes <span class="caps">STDIN, </span>then the next file handle that is opened meets the "is this <span class="caps">STDIN</span>?" test. And the parser was mistaking this for the situation where it had defaulted to reading the program from <span class="caps">STDIN </span>because no filename was passed in, so it was leaving the file handle open. Of course, this is a leak. However, it was also starting to show up as visibly buggy behaviour in code that manipulated <span class="caps">STDIN </span>- close <span class="caps">STDIN, </span>do some "innocent" calculation, (re)open <span class="caps">STDIN, </span>only it's not on file descriptor 0 now - what's wrong?</p>

<p>What changed? Karl's work in improving Unicode semantics means that several ops now need look up certain Unicode properties in some cases. If these aren't cached yet, there's a call back into the parser as part of the loading routines. And if that call into the parser happened while <span class="caps">STDIN </span>was closed, oh dear, come close time the parser used to thing that had been defaulting to reading from <span class="caps">STDIN, </span>and left the handle open.</p>

<p>The parser now explicitly tracks what it opened, and hence closes everything correctly.</p>

<p>A side effect of tracking all this down was that I started to look at the code in perl.c that handles the parsing of the command line options and the initialisation they trigger, along with the the handling of the "script file name", the "-e" option and the default to <span class="caps">STDIN.</span> Some of the cleanup has been committed to blead and will be in 5.16.0. Other parts are in the branches nicholas/RT37033-followup and smoke-me/kick-FAKE_BIT_BUCKET However it remains a work in progress - right now perl needs to open /dev/null as part of -e handling, because of assumptions in the parser. However, I think I can see roughly how to make a small change to the source filter code that would permit -e to avoid needing to open any file handle.</p>

<p>installhtml also forced it way onto my plate again in February. This was mysteriously passing its tests on George Greer's Win32 setup that smokes "smoke-me" branches, and yet failing one test on George Greer's Win32 setup that smokes blead. Same operating system, same code, same everything, so why isn't it the same result?  After quite a lot of head scratching, code chasing (you are in a twisty maze of abstraction layers, all alike), it turns out that the problem is that on one <span class="caps">VM, </span>the smoker is configured to smoke at a pathname D:\path\to\smoker and on the other VM its configured to smoke at d:\path\to\smoker. That difference is <strong>almost</strong> irrelevant, because filenames on Win32 are* case preserving, case insensitive, and most things aren't concerned with which name a file has, merely whether they can open (or delete) it.</p>

<p>However, Pod::Html has an explicit white-box test for its caching. That test needs to be sure that the right pathnames are in the cache index. And it turns out that the pathnames written to the cache are canonicalised by File::Spec, whilst the expectation list built by the test is not. And that whilst files and directories on Win32 are case preserving, and hence unchanged on canonicalisation, <strong>drive letters</strong> are canonicalised to upper case. Yay.</p>

<p>I wonder what useful stuff gets displaced from my brain by this obscure knowledge? I'm sure I used to be able to remember the lyrics to American Pie... :-(</p>

<p>To finish the month, I finished a chunk of work related to a regression introduced by commit 6634bb9d0ed117be. A side effect of the improvements in that change was a small regression in how code such as this would deparse:</p>

<blockquote><p>use 5.10.0;<br />
say "Perl rules";</p></blockquote>

<p>It should deparse as C<say> - instead it started to be deparsed as C<CORE::say>. Of course nothing in life (or at least in perl 5) is simple, as verifying that this is fixed turned out to be something the B::Deparse tests couldn't actually do - they were structured in such a way that they effectively ran with an implicit C<use 5.10.0> at the top level. So first the B::Deparse test infrastructure had to be refactored to remove that, and tests that were relying on it fixed.</p>

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

<p>16 hex digits refer to commits in http://perl5.git.perl.org/perl.git<br />
RT #... is a bug in https://rt.perl.org/rt3/<br />
<span class="caps">CPAN </span>#... is a bug in https://rt.cpan.org/Public/<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>2.00</td><td>-e</td></tr><tr><td>7.25</td><td>B::Deparse <span class="caps">CORE</span>::say regression</td></tr><tr><td>1.00</td><td>B::Deparse refactoring</td></tr><tr><td>0.25</td><td><span class="caps">CPAN </span>#71139</td></tr><tr><td>0.50</td><td>Data::Dumper</td></tr><tr><td>0.50</td><td>ExtUtils::MakeMaker::MM_Unix::perldepend</td></tr><tr><td>4.25</td><td><span class="caps">POSIX</span>::strptime</td></tr><tr><td>8.25</td><td>Pod::Functions</td></tr><tr><td></td><td>Pod::Functions (and then Carp-related pre-req fail)</td></tr><tr><td>2.00</td><td>Pod::Html</td></tr><tr><td>0.75</td><td>RT #109726</td></tr><tr><td>0.75</td><td>RT #109828</td></tr><tr><td>0.50</td><td>RT #110078</td></tr><tr><td>0.50</td><td>RT #110248</td></tr><tr><td>0.25</td><td>RT #110736</td></tr><tr><td>1.00</td><td>RT #27392</td></tr><tr><td>0.50</td><td>RT #36459</td></tr><tr><td>11.25</td><td>RT #37033</td></tr><tr><td></td><td>RT #37033 related tidy up</td></tr><tr><td></td><td>RT #37033, RT #111070</td></tr><tr><td>0.50</td><td>RT #61754</td></tr><tr><td>1.00</td><td>SVf and <span class="caps">HEK</span>f</td></tr><tr><td>8.50</td><td>another backref panic</td></tr><tr><td>1.50</td><td>arrays</td></tr><tr><td>2.25</td><td>bisect.pl</td></tr><tr><td></td><td>bisect.pl (usability improvements)</td></tr><tr><td>2.50</td><td>clang warnings</td></tr><tr><td>3.00</td><td>continue</td></tr><tr><td>0.50</td><td>cross compiling</td></tr><tr><td>0.25</td><td>defined @::array</td></tr><tr><td>0.50</td><td>defined and exists</td></tr><tr><td>1.00</td><td>euid</td></tr><tr><td>2.25</td><td>feature.pm</td></tr><tr><td>4.75</td><td>installhtml</td></tr><tr><td>2.00</td><td>lib/Pod/t/eol.t</td></tr><tr><td>3.25</td><td>perl.c init functions</td></tr><tr><td>5.00</td><td>perlfunc</td></tr><tr><td>8.25</td><td>process, scalability, mentoring</td></tr><tr><td>46.25</td><td>reading/responding to list mail</td></tr><tr><td>0.75</td><td>redhat-mini-onion</td></tr><tr><td>0.25</td><td>smoke failure</td></tr><tr><td>0.50</td><td>t/porting/pending-author.t</td></tr><tr><td>2.00</td><td>t/run/*.t</td></tr><tr><td>1.25</td><td>version 0.96</td></tr></table>

<p><b>139.50 hours total</b></p>




*generally. My understanding is that NTFS can be case sensitive, and can do hardlinks, but that most Win32 code would have kittens if it were run with these settings. Likewise, *nix can quite happily mount case insensitive file systems, and that's going to be breaking some code too...
]]>
        
    </content>
</entry>

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

    <published>2012-04-10T06:51:36Z</published>
    <updated>2012-04-10T06:59:34Z</updated>

    <summary>Dave Mitchell writes: As per my grant conditions, here is a report for the March period. Spent the month successfully bringing run-time regex code blocks into the new way of doing things. My previous work on this had handled the cases where the code appears within a literal regex, e.g. /ab(?{})/; $r = qr/xy(?{})/; /z$r/; In all the above cases, the code block is parsed and compiled by the perl parser at the same time as the surrounding code is...</summary>
    <author>
        <name>Karen</name>
        <uri>http://martian.org/karen</uri>
    </author>
    
        <category term="Grants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <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>As per my grant conditions, here is a report for the March period.</p>

<p>Spent the month successfully bringing run-time regex code blocks into the new way of doing things.</p>

<p>My previous work on this had handled the cases where the code appears within a literal regex, e.g.</p>

<blockquote><p>/ab(?{})/;<br />
$r = qr/xy(?{})/;<br />
 /z$r/;</p></blockquote>

<p>In all the above cases, the code block is parsed and compiled by the perl parser at the same time as the surrounding code is compiled; the compiled blocks are then retained and passed to the regex engine when the pattern is compiled, and preserved when for example a qr is interpolated within another pattern, as above.</p>

<p>My changes this month extend this to run-time patterns, e.g.</p>

<blockquote><p>use re 'eval';<br />
my $code = '(?{})'; /$code/;<br />
$foo =~ '(?{})'; # this is a string literal, not a regex literal</p></blockquote>

<p>It does this by making a copy of the pattern string, but with any literal code blocks blanked out and \ and ' escaped; it then calls eval_sv() on an SV containing the string <br />
qr'pattern with \\,\' escapes and literal (?{}) blanked out' then any compiled code blocks are extracted from the qr and added to the pool of code blocks (e.g. from literal code blocks already compiled).</p>

<p>Having reached this point, it means I could then remove all the old-style re_eval compiling code in the core, including the hated sv_compile_2op() function, and considerably simplifying S_doeval().</p>

<p>There are three more things I still need to do: the main one is to fix the way code blocks are invoked, chiefly to give them a proper entry on the context stack so that things like die,next,and caller don't crash, but also to make recursion work properly. The other two things are to do a big list of miscellaneous fixes and tweaks that I've been noting as I go along; and finally, to check that all the tickets attached to the meta-ticket have in fact been fixed by these changes.</p>

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

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

<blockquote><p>108.4 weeks<br />
1139.9 total hours<br />
10.5 average hours per week</p></blockquote>

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

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

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

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

<blockquote><p>0:00 diagnosing bugs<br />
69:10 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>69:10 Total</b></p></blockquote>

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

<blockquote><p>1 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>1 Total</b></p></blockquote>

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

<blockquote><p>67:40 [perl #34161] <span class="caps">METABUG </span>- (?{...}) and (??{...}) regexp issues<br />
1:30 [perl #111974] 5.15.9 breaks Glib</p></blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>2012Q2: Call for Grant Proposals</title>
    <link rel="alternate" type="text/html" href="http://news.perlfoundation.org/2012/04/2012q1-cal.html" />
    <id>tag:news.perlfoundation.org,2012://18.2988</id>

    <published>2012-04-04T20:25:10Z</published>
    <updated>2012-04-05T21:05:39Z</updated>

    <summary>It is that time of the year, again, and here follows the usual message. I am sorry for not being more creative :) The Perl Foundation is looking at giving some grants ranging from $500 to $2000 in May 2012. You don&apos;t have to have a large, complex, or lengthy project. You don&apos;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...</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="gp2012" label="GP2012" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gp2012q2" label="GP2012Q2" 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>It is that time of the year, again, and here follows the usual message. I am sorry for not being more creative :)</p>

<p>The Perl Foundation is looking at giving some grants ranging from $500 to <strong>$2000</strong> in May 2012.</p>

<p>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>Do 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.</p>

<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>

</feed>

