<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Perlblogs &#187; cpan-testers</title>
	<atom:link href="http://perlblogs.com/category/cpan-testers/feed/" rel="self" type="application/rss+xml" />
	<link>http://perlblogs.com</link>
	<description>Posts from selected Perl bloggers</description>
	<lastBuildDate>Fri, 18 May 2012 19:03:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Perl QA hackathon wrapup</title>
		<link>http://www.dagolden.com/index.php/1660/perl-qa-hackathon-wrapup/</link>
		<comments>http://www.dagolden.com/index.php/1660/perl-qa-hackathon-wrapup/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 18:40:07 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[dzil]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[perl programming]]></category>
		<category><![CDATA[toolchain]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1660</guid>
		<description><![CDATA[From mid-air somewhere near Greenland... I'm on my way back from the fifth annual Perl QA Hackathon and I can't believe it's already over. I missed the last two and I'd forgotten what an awesome experience it is. tl;dr: Stuff I worked on: A new way of thinking about CPAN indexes Making CPAN.pm use a [...]]]></description>
			<content:encoded><![CDATA[<p>From mid-air somewhere near Greenland... I'm on my way back from the fifth annual Perl <a href="http://qa-hackathon.org/">QA Hackathon</a> and I can't believe it's already over.  I missed the last two and I'd forgotten what an awesome experience it is.</p>
<p><b>tl;dr:</b> Stuff I worked on:</p>
<ul>
<li>A new way of thinking about CPAN indexes</li>
<li>Making CPAN.pm use a lot less memory</li>
<li>Making CPAN.pm respect optional 'recommends' and 'suggests' prereqs</li>
<li>Adding features and fixing bugs in toolchain modules</li>
<li>Useful modules released: <a href="http://p3rl.org/CPAN%3A%3AMeta">CPAN::Meta</a>, <a href="http://p3rl.org/CPAN%3A%3AMeta%3A%3ARequirements">CPAN::Meta::Requirements</a>, <a href="http://p3rl.org/Parse%3A%3ACPAN%3A%3AMeta">Parse::CPAN::Meta</a>, <a href="http://p3rl.org/Search%3A%3ADict">Search::Dict</a>, <a href="http://p3rl.org/Tie%3A%3AHandle%3A%3AOffset">Tie::Handle::Offset</a></li>
<li>Other yak-shaving modules released: <a href="http://p3rl.org/Pod%3A%3AWordlist%3A%3Ahanekomu">Pod::Wordlist::hanekomu</a>, <a href="http://p3rl.org/Task%3A%3ABeLike%3A%3ADAGOLDEN">Task::BeLike::DAGOLDEN</a>, <a href="http://p3rl.org/CPAN%3A%3ATest%3A%3ADummy%3A%3APerl5%3A%3ARecSug">CPAN::Test::Dummy::Perl5::RecSug</a></li>
</ul>
<h2>Why I love the QA hackathon</h2>
<p>If you've been under a rock and still don't know what the QA Hackathon is: it's a sponsored conference in which <b>a small band of dedicted Perl hackers spend three days madly coding to improve the quality of the Perl experience</b> for everyone.</p>
<p>I really enjoyed the chance to meet people in person that I only know from on-line venues or rarely get to see face-to-face.  Having so many people working on so many projects in one space made it really easy to benefit serendipitously from the work of others, or to have a chance conversation spark a new way to get things done.</p>
<p>Another thing that makes the hackathon awesome is how quickly blocking issues get fixed.  Several times, someone would hit a bug in some related library, walk across the room to the person who could fix it, and it would get fixed and shipped before one could get a coffee.</p>
<p>This year, my work focused mostly on the evolution of <a href="http://p3rl.org/CPAN">CPAN.pm</a> and the CPAN toolchain.</p>
<h2>A new way of thinking about CPAN indexes</h2>
<p>On the morning of the first day, I convened an informal group of half-a-dozen CPAN client maintainers, installer maintainers and other interested parties [1] to talk about how to re-think CPAN indexing.  In particular, I wanted to separate the notion of the "index" from the "repository".  The canonical CPAN index is a <a href="http://www.cpan.org/modules/02packages.details.txt" >file</a> on CPAN that maps Perl package names ("Foo::Bar") to a path to a distribution archive file on CPAN ("DAGOLDEN/Foo-Bar-1.23.tar.gz").</p>
<p>Historically, your CPAN client mirrored the index from the same CPAN mirror used to download tarballs.  I think that's limiting in a few ways.  First, that file keeps growing as CPAN grows and it takes a while to mirror the whole file when you only need the mapping for a few modules.</p>
<p>Some CPAN clients, like <a href="http://p3rl.org/App%3A%3Acpanminus">cpanminus</a>, don't even use the package index directly, but query a web API that serves up answers from it, which is one way to separate the index from the repository.  That would be a nice feature to have in all CPAN clients.</p>
<p>That still doesn't change the model of having only <i>one</i> official index that your client knows about.  If you or your company want to manage the mapping, you've got to use various tools to modify the official index in some sort of <a href="http://p3rl.org/CPAN%3A%3AMini">minicpan</a> or <a href="https://metacpan.org/module/dpan">private CPAN repository</a> (aka "DarkPAN").  It's possible, but not user-friendly.</p>
<p>After some debate, the group agreed on a new model.  <b>A CPAN client should support an ordered list of index resolvers</b> and should query them in turn.  This means you could specify that you want an online web resolver tried first, and only then the traditional index.</p>
<p>More powerfully, you could list a local <b>overlay index</b> as the first resolver.  That would let you freeze the mapping to a particular version, or to swap in a development release that fixes a critical bug.  The overlay index would only need to list the modules you want to change, because your CPAN client will fall back to the canonical index.  You could even have an overlay index per-application or per-application-version for total control.</p>
<p>We also agreed that mapping shouldn't just be a distribution path on a CPAN mirror, but should evolve into a URL.  This would allow overlay indexes pointing to locally patched distributions, or to the BackPAN, or potentially even to source repositories (if appropriate scheme handlers were written to check out the necessary files).</p>
<p>In summary -- <strong>CPAN indexes should become an open, flexible mechanism to give users more control over how module names are mapped to the files that can provide them</strong>.</p>
<p>After reaching that agreement, Nick Perez (nperez) volunteered to start working on a common library for index resolvers (to be called CPAN::Common::Index) and to build a resolver for it that uses <a href="http://metacpan.org/">MetaCPAN</a> to provide the mapping data.</p>
<p>Meanwhile, I started work on a proof of concept for how CPAN.pm could be modified to use the new, common library instead of its traditional index lookup routines.</p>
<h2>Evolution of CPAN.pm</h2>
<p>It had been a while since I was deep in the guts of CPAN.pm, but after coming back up to speed, I tackled two big projects and found one crazy bug along the way.</p>
<h3>New CPAN indexing and reduced memory footprint</h3>
<p>A stock CPAN.pm client uses a ton of memory when the indexes are loaded — about 300 MB last time I looked.  It's bloated because it keeps a read-only copy of the indexes loaded in data structures in memory <i>and</i> also keeps a mutable object for every index entry as well.</p>
<p>Some time ago, <a href="http://p3rl.org/CPAN%3A%3ASQLite">CPAN::SQLite</a> was released to help solve that problem. It kept the indexes in a SQLite database and loaded data into memory on demand.  I decided to use that same approach for the interface to the forthcoming CPAN::Common::Index library, with the goal of being able to load all data on demand, even directly from the package index file, using only core Perl modules.</p>
<p>Here's the trick: the package index file is line-oriented and is <i>sorted</i> by package name.  Using the <a href="http://p3rl.org/Search%3A%3ADict">Search::Dict</a> core module, I was able to do a binary search as a super-fast way to look up data for a package name.</p>
<p>The wrinkle in that plan is that Search::Dict wants a filehandle and uses it to seek around in the file, but the package index has an email-style header that confuses it.  I could have copied it without the header, but that takes time and memory, too.  PAUSE could publish an identical copy without the header, but that's extra work for PAUSE and potentially confusing if they ever get out of sync.</p>
<p>Instead, I wrote <a href="http://p3rl.org/Tie%3A%3AHandle%3A%3AOffset">Tie::Handle::Offset</a> and <a href="http://p3rl.org/Tie%3A%3AHandle%3A%3ASkipHeader">Tie::Handle::SkipHeader</a> to hide the email header on a handle, so I could give that directly to Search::Dict.  Unfortunately, Search::Dict died unless stat() on the handle gave a valid response, so I patched it to fall back to an alternate method if stat() failed. <i>That</i> revealed a bug in Perl, in which stat() warns when called on tied handles, even if there is a valid filehandle to check (filed as <a href="https://rt.perl.org/rt3/Public/Bug/Display.html?id=112164">rt#112164</a>).</p>
<p>Since that bug can't get fixed until Perl 5.17 and since we need a working Search::Dict for older Perls anyway, I patched Search::Dict to avoid using stat() on handles, and asked Ricardo Signes (rjbs) to give me a green light make a dual-life release to CPAN.</p>
<p>After chasing my tail on that for a while, I finally was able to get a proof of concept of on-demand index lookup on the package index file working, saving hundreds of megabytes of memory.  It didn't use the CPAN::Common::Index library, since Nick was still writing it, but it expects the same API, so it will be easy to adapt once CPAN::Common::Index is ready (meaning that fast MetaCPAN lookups for CPAN.pm should be easy too).</p>
<p>My POC only covered the package index, but Andreas Koenig (klapperl) and Ricardo created a similarly sorted index of author data and we agreed to consider a similar approach for modlist data once we see how the package indexing works in practice.</p>
<p>I would have been happy if that was all I achieved at the hackathon but I still had some time left to get more done.</p>
<h3>CPAN.pm support for 'recommends' and 'suggests' prereqs</h3>
<p>The v2 <a href="http://p3rl.org/CPAN%3A%3AMeta%3A%3ASpec">CPAN::Meta::Spec</a> formalized dependency specifications for different phases (configure/build/test/runtime) and for different levels of dependency (requires/recommends/suggests/conflicts).  The 'recommends' level is for things that should be usually installed to make a module better except in really resource-constrained environments.  The 'suggests' level is for really optional modules that might make a module better but really aren't necessary for regular use.</p>
<p>Even though those have been specified for a while, none of the CPAN clients supported them -- meaning it was a manual job to look at the META file, see the recommends/suggest and install them yourself.  Ssually, no one bothers.</p>
<p>Since I was on a roll from the indexing work, I set up another CPAN.pm feature branch and implemented support for a 'recommends_policy' and a 'suggests_policy' to control whether those prereqs should be queued up along with the required ones.  Even better, if those optional dependencies fail for any reason, CPAN.pm won't warn about missing dependencies and simply notes them as being optional when it reports the failures after processing a command.</p>
<p>Along the way, I found and fixed a CPAN.pm edge-case bug where a module listed in both "build requires" and "runtime requires" and that has a lower prereq in "build requires" would overwrite the higher requirement in "runtime requires". (yikes!) That might explain some bizarre CPAN.pm bug reports I've seen that we could never track down, so it was an extra win.</p>
<p>Unfortunately, <a href="http://p3rl.org/ExtUtils%3A%3AMakeMaker">ExtUtils::MakeMaker</a> and <a href="http://p3rl.org/Module%3A%3ABuild">Module::Build</a> don't yet preserve 'suggests' dependencies during configuration, so this will only help with 'recommends', but fixes to the installers are in the works (Ricardo was working on EU::MM at the hackathon) and CPAN.pm will be ready whenever they are.</p>
<h2>Adding features and fixing bugs</h2>
<p><a href="http://p3rl.org/CPAN%3A%3AMeta">CPAN::Meta</a> got a tiny bit of love.  I released a version of <a href="http://p3rl.org/Parse%3A%3ACPAN%3A%3AMeta">Parse::CPAN::Meta</a> with dependencies on the latest (less-buggy) versions of <a href="http://p3rl.org/CPAN%3A%3AMeta%3A%3AYAML">CPAN::Meta::YAML</a> and <a href="http://p3rl.org/JSON%3A%3APP">JSON::PP</a>.  (I've already got CPAN Testers fail reports, so the tests apparently need some more work.).</p>
<p>Leon Timmermans (leont) added a new method to <a href="http://p3rl.org/CPAN%3A%3AMeta%3A%3ARequirements">CPAN::Meta::Requirements</a> for something he was working on, which was awesome because I wound up needing it for the CPAN.pm work only a couple hours after he sent me the pull request. Then I split out CPAN::Meta::Requirements from CPAN::Meta and released it, so CPAN.pm could depend on it without needing all of CPAN::Meta.  CPAN::Meta also got some releases for these various changes.</p>
<p>In a startling display of synchronicity, both Curtis Poe (ovid) and Lars Dɪᴇᴄᴋᴏᴡ (daxim) reported a weird Module::Build bug within about an hour of each other.  Apparently, errors in META file creation can result in existing META files being deleted, no new files being created and no error message shown about what happened.  Leon and I figured out the problem and offered some workarounds — though we ran out of time at the hackathon to fix it in Module::Build itself.</p>
<h2>Various other things I did</h2>
<p>Several people — Leon, Michael Schwern, Olivier Mengué (dolmen), Lars, me, and a few others I now forget (sorry) — got together to discuss a draft of a <a href="https://github.com/dagolden/cpan-api-buildpl/blob/master/lib/CPAN/API/BuildPL.pm">"Build.PL API" draft</a>.  It defines what CPAN clients should expect interacting with a Build.PL/Build-based installer, which opens the door to future replacements for Module::Build, like <a href="http://p3rl.org/Module%3A%3ABuild%3A%3ATiny">Module::Build::Tiny</a>.</p>
<p>Breno de Oliveira (garu) wanted to add CPAN Testers reporting to cpanminus, and along the way volunteered to write a unified, second-generation CPAN Testers client to replace the disparate behaviors of <a href="http://p3rl.org/CPAN%3A%3AReporter">CPAN::Reporter</a> and the reporting modules of <a href="http://p3rl.org/CPANPLUS">CPANPLUS</a>.  I gave a small tutorial on CPAN Testers and the Metabase backing it to Breno and others interested in the topic.</p>
<p>As a minor note, I got annoyed at some <a href="http://p3rl.org/Test%3A%3ASpelling">Test::Spelling</a> carping during all the releases I was doing, so I released a new <a href="http://p3rl.org/Pod%3A%3AWordlist%3A%3Ahanekomu">Pod::Wordlist::hanekomu</a>.  If you use <a href="http://p3rl.org/Dist%3A%3AZilla">Dist::Zilla</a> and the <a href="http://p3rl.org/Dist%3A%3AZilla%3A%3APlugin%3A%3ATest%3A%3APodSpelling">Test::PodSpelling</a> plugin, check it out!</p>
<h2>Cool things other people did</h2>
<p>Some things I didn't work on that I thought were notable:</p>
<ul>
<li>To support CPAN::Common::Index, Nick wrote <a href="http://p3rl.org/MetaCPAN%3A%3AAPI%3A%3ATiny">MetaCPAN::API::Tiny</a> — a client for querying MetaCPAN that relies only on core Perl modules, which is exactly what we need for a new CPAN.pm index resolver</li>
<li>The CPAN "package index" now updates every five minutes instead of every hour... which means other projects that rely on it, like <a href="http://metacpan.org/">MetaCPAN</a>, are even closer to real time.</li>
<li>I asked around if there was a command-line client for MetaCPAN and there wasn't.  Then Chris Nehren (apeiron) asked me what I had in mind, whipped one up, and <a href="https://github.com/apeiron/metacpan-api/tree/apeiron/metacpan-cli">submitted it</a> as an addition to the <a href="http://p3rl.org/MetaCPAN%3A%3AAPI">MetaCPAN::API</a> distribution</li>
<li>Ricardo worked on getting full support for CPAN::Meta::Spec v2 into ExtUtils::MakeMaker, including TEST_REQUIRES and ensuring all prerequisites types are preserved in MYMETA.json files</li>
<li>Ricardo also got PAUSE to save package index files into git after each update, so we no longer lose historical information</li>
<li>Peter Rabbitson (ribasushi) demonstrated a way to use git to store CPAN Testers reports to achieve massive delta compression (and make it easy for people to get copies of the raw data quickly and cheaply). I didn't have time at the hackathon to do much with it but hope to look into it more soon.</li>
<li>Late in the afternoon on Sunday, Nick used his MetaCPAN::API::Tiny client for what was dubbed "CloudPAN", a crazy April-Fools proof-of-concept to hook module loading to load missing modules directly from source on metacpan.  You'll never need to install pure-Perl modules again.  ;-)</li>
</ul>
<p>There was a lot more going on and a lot I missed, so if I omitted anyone's project, I mean no offense.  (I'll read all the hackathon blogs to catch up.)</p>
<h2>Conclusion and Acknowledgments</h2>
<p>This was my third hackathon and was just as inspiring (and productive) as the last two.  I'm excited about the evolution of CPAN.pm and hope to get my work tested further and then merged into the CPAN.pm master branch before long.</p>
<p>I have nothing but wonderful things to say about Laurent Boivin (elbeho), Philippe Bruhat (BooK) and the French Perl Mongers who organized a great event and provided wonderful hospitality, including an endless supply of food, drink and coffee machines to fuel our hacking.</p>
<p>I would also like thank the <a href="http://2012.qa-hackathon.org/qa2012/sponsors.html">hackathon sponsors</a> whose generosity made the hackathon possible and enabled me to attend.  (If you'd like to <a href="http://2012.qa-hackathon.org/qa2012/donate.html">donate</a>, it's not too late and will help support next year's QA hackathon.)</p>
<p><b>These companies and organizations support Perl.  Please support them:</b> <a href="http://www.cite-sciences.fr/fr/cite-des-sciences/">The City of Science and Industry</a>, <a href="http://www.diabolocom.com/">Diabolo.com</a>, <a href="http://www.dijkmat.nl/">Dijkmat</a>, <a href="http://duckduckgo.com/">DuckDuckGo</a>, <a href="http://dyn.com/">Dyn</a>, <a href="http://freeside.biz/freeside/">Freeside Internet Services</a>, <a href="http://www.hederatech.com/">Hedera Technology</a>, <a href="http://www.jaguar-network.com/">Jaguar Network</a>, <a href="http://www.mongueurs.net/">Mongueurs de Perl</a>, <a href="http://shadow.cat/">Shadowcat Systems Limited</a>, <a href="http://www.splio.com/">SPLIO</a>, <a href="http://www.teclib.com/en">TECLIB’</a>, <a href="http://weborama.com/2/">Weborama</a>, and <a href="http://www.perl-magazin.de/">$foo Magazine</a></p>
<p><b>These people made individual donations (you rock!):</b> Martin Evans, <a href="http://mdk.me/">Mark Keating</a>, Prakash Kailasa, Neil Bowers, 加藤 敦 (Ktat), Karen Pauley, Chad Davis, Franck Cuny, 近藤嘉雪, Tomohiro Hosaka, Syohei Yoshida, 牧 大輔 (lestrrat), and Laurent Boivin</p>
<p>Special thanks also to Torsten Raudssus (getty) and Duck Duck Go for the tee-shirt and Booking for the silly putty.  :-)</p>
<p>Finally, thank you to all my fellow hackers!  I had a great time and I hope to see you all again next year!</p>
<p>[1] CPAN index discussion group (with some people coming and going): me, Andreas Koenig, Florian Ragwitz, Michael Peters, Michael Schwern, Nick Perez, Olaf Alders, Olivier Mengué,  Ricardo Signes, Tatsuhiko Miyagawa and probably even more I don't remember.  (Please remind me if you were there and want to share the credit/blame.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1660/perl-qa-hackathon-wrapup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Will CPAN Testers keep doubling every year?</title>
		<link>http://www.dagolden.com/index.php/1478/will-cpan-testers-keep-doubling-every-year/</link>
		<comments>http://www.dagolden.com/index.php/1478/will-cpan-testers-keep-doubling-every-year/#comments</comments>
		<pubDate>Wed, 11 May 2011 02:11:36 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[metabase]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1478</guid>
		<description><![CDATA[A little over a year ago, the CPAN Testers 2.0 beta went live. The new "Metabase" server started accepting reports by web submission instead of the previous method of email-based reports. In the April CPAN Testers Summary, Barbie noted that CPAN Testers has nearly reached 12 million reports submitted. I was recently looking at some [...]]]></description>
			<content:encoded><![CDATA[<p>A little over a year ago, the CPAN Testers 2.0 beta went live.  The new "Metabase" server started accepting reports by web submission instead of the previous method of email-based reports.</p>
<p>In the <a href="http://blog.cpantesters.org/diary/111">April CPAN Testers Summary</a>, Barbie noted that CPAN Testers has nearly reached <a href="http://stats.cpantesters.org/"><strong>12 million reports</strong></a> submitted.</p>
<p>I was recently looking at some Metabase statistics and noticed that it now contains over 6.3 million reports since going live.  That means that <strong>over half of all reports were submitted by web instead of email</strong>.  It also means that CPAN Testers has nearly doubled in a year.</p>
<p>The year has not been without hiccups, as the recent <a href="http://www.dagolden.com/index.php/1468/cpan-testers-metabase-back-online/">Amazon-related outage</a> showed.  I'll be spending some time this summer addressing some deficiencies and will be encouraging people to get involved in improving the CPAN Testers clients to make it easier for more people to participate.</p>
<p>Next year, will we see 24 million reports?  Let's make it happen!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1478/will-cpan-testers-keep-doubling-every-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CPAN Testers Metabase back online</title>
		<link>http://www.dagolden.com/index.php/1468/cpan-testers-metabase-back-online/</link>
		<comments>http://www.dagolden.com/index.php/1468/cpan-testers-metabase-back-online/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 20:20:00 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[metabase]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1468</guid>
		<description><![CDATA[I'm pleased to say that after weathering Amazon's EC2 outage, I've got the CPAN Testers Metabase server back online and accepting reports. If you've been building up a backlog, please throttle your uploads. I apologize for the interruption. Over the next month or two, I'll be making some changes to make sure that CPAN Testers [...]]]></description>
			<content:encoded><![CDATA[<p>I'm pleased to say that after weathering <a href="http://www.zdnet.com/blog/btl/amazons-web-services-outage-end-of-cloud-innocence/47731">Amazon's EC2 outage</a>, I've got the CPAN Testers Metabase server back online and accepting reports.</p>
<p>If you've been building up a backlog, please throttle your uploads.</p>
<p>I apologize for the interruption. Over the next month or two, I'll be making some changes to make sure that CPAN Testers is ready for a repeat of this particular failure mode (as well as other similar failure modes).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1468/cpan-testers-metabase-back-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixed CPAN Testers reporting with LWP 6</title>
		<link>http://www.dagolden.com/index.php/1391/fixed-cpan-testers-reporting-with-lwp-6/</link>
		<comments>http://www.dagolden.com/index.php/1391/fixed-cpan-testers-reporting-with-lwp-6/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 13:19:27 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1391</guid>
		<description><![CDATA[As Barbie reported, CPAN Testers broke under LWP version 6, as this version of LWP now defaults to rejecting unverifiable SSL connection (e.g. self-signed certificates). That meant that CPAN Testers upgrading their LWP could no longer submit reports (at least via https). The quick and obvious solution was to buy an SSL certificate and that's [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://blog.cpantesters.org/diary/108">Barbie reported</a>, CPAN Testers broke under<a href="http://p3rl.org/LWP"> LWP version 6</a>, as this version of LWP now defaults to rejecting unverifiable SSL connection (e.g. self-signed certificates).  That meant that CPAN Testers upgrading their LWP could no longer submit reports (at least via https).  The quick and obvious solution was to buy an SSL certificate and that's now done.  If you visit <a href="https://metabase.cpantesters.org/">https://metabase.cpantesters.org/</a>, you can see the new certificate in action.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1391/fixed-cpan-testers-reporting-with-lwp-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to replicate a failure</title>
		<link>http://www.dagolden.com/index.php/1354/how-to-replicate-a-failure/</link>
		<comments>http://www.dagolden.com/index.php/1354/how-to-replicate-a-failure/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 05:27:14 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan]]></category>
		<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1354</guid>
		<description><![CDATA[Whenever I get a bug report or a CPAN Testers FAIL report and the issue is not obvious right away, the first thing I try to do is replicate the failure. Without it, I'm left to diagnose with hunches and release new code that I hope fixes that problem. That's not software engineering, it's software [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever I get a bug report or a <a href="http://www.cpantesters.org/">CPAN Testers</a> FAIL report and the issue is not obvious right away, the first thing I try to do is replicate the failure.  Without it, I'm left to diagnose with hunches and release new code that I hope fixes that problem.  <strong>That's not software engineering, it's software faith healing.<br />
</strong><br />
Today, I had <strong>a wonderful experience that I want to hold up as an example</strong> of what makes my life much easier.  For a while now, I've been getting <a href="http://www.cpantesters.org/cpan/report/968bcc16-3b8d-11e0-a0be-13248a2f2f5b">very bizarre FAIL reports</a> for the latest <a href="http://p3rl.org/Module%3A%3ABuild/">Module::Build</a> development releases from one particular CPAN tester, Chad Davis.  The symptom is that an outdated module is picked up in Chad's <a href="http://p3rl.org/local%3A%3Alib">local::lib</a>, even though <a href="http://p3rl.org/CPAN">CPAN.pm</a> appears to have detected (and satisfied) the missing dependency.  What is particularly weird is that Chad later reported that an explicit "test ..." of the dependency followed by "test ..." of the Module::Build development release then passes all tests.</p>
<p>My first attempts at replication failed, so after a few emails back and forth, <strong>Chad sent me detailed instructions for replication</strong>.  Here is an excerpt from his email (used with his permission):</p>
<pre class="brush: plain; title: ;">
I setup a new user, and deleted his .bashrc, leaving only the stock
Ubuntu 10.10 /etc/bash.bashrc in the environment. Then I created this
three-line ~/.bashrc :

perl5=/tmp/tmplib
lib=&quot;$perl5/lib/perl5&quot;
eval $(perl -I&quot;$lib&quot; -Mlocal::lib=&quot;$perl5&quot;)

So, the environment now resolves to:

PERL5LIB=/tmp/tmplib/lib/perl5/x86_64-linux-gnu-thread-multi:/tmp/tmplib/lib/perl5
PERL_LOCAL_LIB_ROOT=/tmp/tmplib
PERL_MB_OPT='--install_base /tmp/tmplib'
PERL_MM_OPT=INSTALL_BASE=/tmp/tmplib
</pre>
<p>Notice that Chad describes the setup in detail, and even went to the trouble of <strong>replicating it with a "clean" user</strong>.  This made it very easy to set up exactly the same situation on my development machine.</p>
<p>Next, Chad walked me through how to replicate the issue and even confirmed it on a <strong>fresh virtual machine</strong>!</p>
<pre class="brush: plain; title: ;">
Then I installed Parse::CPAN::Meta 1.42 (with CPAN 1.9402 and
local::lib 1.008), then I tested MB 0.37_04 which gave the same
errors. Then I quit the cpan shell, restart it, first do an explit
test of PCM 1.4401 before running a test of MB and all tests pass, as
before.

I also verified the same behavior on a virtual machine with a
fresh ubuntu 10.10 (with updates) and the same three-line .bashrc and
got the same behavior. I'm surprised that you cannot reproduce this.
At this point I don't believe there is anything left that is specific
to my environment.
</pre>
<p>With those clear instructions, I was able to replicate the issue.</p>
<p>Chad then took me through variations and outcomes:</p>
<pre class="brush: plain; title: ;">
I then upgraded CPAN to 1.94_65 but have the same errors on MB 0.37_04
unless I explicitly test PCM 1.4401 first.

And I have the same problems with MB version 0.37_05 as well, which
also works after an explicit test of PCM 1.4401

I tried to start working backwards a bit, MB 0.3624 is fine,
presumably because it doesn't depend on PCM.
However, MB 0.3701 fails, despite the fact that it only depends on PCM
1.42, which is the one that's installed, according to pmvers.  It
looks to be the same issue in each case: the existing PCM is not always detected.
</pre>
<p>Now I have a fact base that I can test and confirm. Finally, Chad did some further digging into the problem:</p>
<pre class="brush: plain; title: ;">
Then I looked at t/mymeta.t and traced back to CPAN::Meta and looked
at it dependencies in Makefile.PL to find that PCM 1.44 is listed both
as prereq and as a build prereq, which, being a novice, looked a bit
funny to me. Taking out the build prereq and leaving the prereq then
allowed me to test MB without errors.
</pre>
<p>And with that, I've got a decent workaround solution, as well as a hint as to what's going wrong in CPAN.pm.  I haven't <em>fixed</em> CPAN.pm yet, but with this start, it's going to be much, much easier.</p>
<p><strong>I want to thank Chad for his responsiveness and the incredible detail of his report.</strong>  I hope it can be a lesson to anyone reporting bugs or responding to questions about failure:</p>
<ol>
<li><strong>Describe your environment in detail</strong>.  If you can, replicate the error with a "clean" user or even on a clean install of the OS.</li>
<li><strong>Describe the exact steps you took to replicate the failure</strong>.  Take notes as you do it, so you can be as specific as possible.</li>
<li><strong>Describe any variations you tried</strong> that <em>did</em> work, or any workarounds you used to deal with the problem.</li>
</ol>
<p>That seems like common sense, but few bug reports or failure investigations I get are as thorough and constructive as the example above.  Thank you, Chad!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1354/how-to-replicate-a-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to find the CPAN Testers Authors FAQ</title>
		<link>http://www.dagolden.com/index.php/1348/how-to-find-the-cpan-testers-authors-faq/</link>
		<comments>http://www.dagolden.com/index.php/1348/how-to-find-the-cpan-testers-authors-faq/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 20:59:05 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1348</guid>
		<description><![CDATA[If you are a CPAN author and have ever been stumped how to get CPAN Testers to do something (or stop doing something) when testing your distribution, you should read the CPAN Author FAQ on the CPAN Testers wiki. leont pointed out on IRC that the CPAN Author FAQ is very hard to find and [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a CPAN author and have ever been stumped how to get CPAN Testers to do something (or stop doing something) when testing your distribution, you should read the <b><a href="http://wiki.cpantesters.org/wiki/CPANAuthorNotes">CPAN Author FAQ</a></b> on the <a href="http://wiki.cpantesters.org/">CPAN Testers wiki</a>.</p>
<p>leont pointed out on IRC that the <a href="http://wiki.cpantesters.org/wiki/CPANAuthorNotes">CPAN Author FAQ</a> is very hard to find and doesn't currently show up in search results, so if you would like to help out, please blog or twitter about it or something and help point some links in the right direction.  :-)</p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1348/how-to-find-the-cpan-testers-authors-faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CPAN Testers 2.0 passes the million report mark</title>
		<link>http://www.dagolden.com/index.php/1022/cpan-testers-2-0-passes-the-million-report-mark/</link>
		<comments>http://www.dagolden.com/index.php/1022/cpan-testers-2-0-passes-the-million-report-mark/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 21:45:09 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1022</guid>
		<description><![CDATA[Judging from the monitoring graph, CPAN Testers 2.0 received its millionth report in early September. This is nearly one-eighth of the 8.3 million reports contributed since the start of CPAN Testers. The CT 2.0 server has been averaging just over 14 reports submitted per minute this week. If that submission rate holds up, September will [...]]]></description>
			<content:encoded><![CDATA[<p>Judging from the monitoring graph, CPAN Testers 2.0 received its millionth report in early September.  </p>
<p><a href="http://www.dagolden.com/wp-content/uploads/2010/09/ct2-uploads-20100910.png"><img src="http://www.dagolden.com/wp-content/uploads/2010/09/ct2-uploads-20100910.png" alt="" title="CPAN Testers Uploads" width="495" height="271" class="aligncenter size-full wp-image-1023" /></a></p>
<p>This is nearly one-eighth of the 8.3 million reports contributed since the start of CPAN Testers.  </p>
<p>The CT 2.0 server has been averaging just over 14 reports submitted per minute this week.  If that submission rate holds up, September will see over 600,000 reports submitted and the total number of reports submitted will nearly double in a year's time.</p>
<p><a href="http://www.dagolden.com/wp-content/uploads/2010/09/ct2-rate-20100910.png"><img src="http://www.dagolden.com/wp-content/uploads/2010/09/ct2-rate-20100910.png" alt="" title="CPAN Testers Upload Rate" width="495" height="271" class="aligncenter size-full wp-image-1025" /></a></p>
<p>I would like to say a big thank you to all the CPAN Testers that have been patient through bumps and lumps of the launch of CT 2.0.  It looks like we're off a great start!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1022/cpan-testers-2-0-passes-the-million-report-mark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are you ready for CPAN Testers 2.0?</title>
		<link>http://www.dagolden.com/index.php/1000/are-you-ready-for-cpan-testers-2-0/</link>
		<comments>http://www.dagolden.com/index.php/1000/are-you-ready-for-cpan-testers-2-0/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 03:25:40 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=1000</guid>
		<description><![CDATA[If you haven't seen the official notice, the CPAN Testers project is migrating from using email to send reports (CPAN Testers 1.0) to using web-based submission (CPAN Testers 2.0). As of September 1, 2010, the old email list will be shut down and only web submissions will be accepted. I've just updated the "quick-start" documentation [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven't seen the <a href="http://blog.cpantesters.org/diary/87">official notice</a>, the CPAN Testers project is migrating from using email to send reports (CPAN Testers 1.0) to using web-based submission (CPAN Testers 2.0).  As of September 1, 2010, the old email list will be shut down and only web submissions will be accepted.</p>
<p>I've just updated the "quick-start" documentation on the CPAN Testers wiki: <a href="http://wiki.cpantesters.org/wiki/QuickHowToCT20">Quick HowTo for CPAN Testers 2.0</a></p>
<p>It's not perfect, but it's a lot better than it used to be.  If you are still submitting reports by email, please read and follow the instructions before the end of August.  If you have trouble, please ask for help on the cpan-testers-discuss <a href="http://wiki.cpantesters.org/wiki/MailingLists">mailing list</a> or on #cpantesters-discuss on irc.perl.org.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/1000/are-you-ready-for-cpan-testers-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My OSCON talks are online</title>
		<link>http://www.dagolden.com/index.php/920/my-oscon-talks-are-online/</link>
		<comments>http://www.dagolden.com/index.php/920/my-oscon-talks-are-online/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 02:17:08 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=920</guid>
		<description><![CDATA[I've posted my OSCON talks (one regular talk and one lightning talk) in my Talks page. But for those wanting direct links, here they are: Free QA! -- a non-technical talk about the history and social architecture choices of the CPAN Testers project Perl 5, Version 13 -- a lightning talk summarizing notable changes in [...]]]></description>
			<content:encoded><![CDATA[<p>I've posted my OSCON talks (one regular talk and one lightning talk) in my <a href="http://www.dagolden.com/index.php/talks/">Talks</a> page.  But for those wanting direct links, here they are:</p>
<ul>
<li><a href='http://www.dagolden.com/wp-content/uploads/2009/04/Free-QA-OSCON-2010.pdf'>Free QA!</a> -- a non-technical talk about the history and social architecture choices of the CPAN Testers project</li>
<li><a href="http://www.dagolden.com/wp-content/uploads/2010/07/Perl-5-Version-13.pdf">Perl 5, Version 13</a> -- a lightning talk summarizing notable changes in the Perl 5.13 development series</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/920/my-oscon-talks-are-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to join the CPAN Testers 2.0 Public Beta</title>
		<link>http://www.dagolden.com/index.php/889/how-to-join-the-cpan-testers-2-0-public-beta/</link>
		<comments>http://www.dagolden.com/index.php/889/how-to-join-the-cpan-testers-2-0-public-beta/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 03:35:30 +0000</pubDate>
		<dc:creator>dagolden</dc:creator>
				<category><![CDATA[cpan-testers]]></category>
		<category><![CDATA[ironman]]></category>
		<category><![CDATA[metabase]]></category>
		<category><![CDATA[perl programming]]></category>

		<guid isPermaLink="false">http://www.dagolden.com/?p=889</guid>
		<description><![CDATA[In case you missed the recent launch announcement, CPAN Testers 2.0 is live and the email mailing list used to submit CT 1.0 reports will be shut down around August 31, 2010. I consider this the start of the "public beta" period for CT 2.0. Most of the beta testers so far have been experienced [...]]]></description>
			<content:encoded><![CDATA[<p>In case you missed the recent <a href="http://blog.cpantesters.org/diary/83">launch announcement</a>, <strong>CPAN Testers 2.0 is live</strong> and the email mailing list used to submit CT 1.0 reports will be shut down around August 31, 2010.  I consider this the start of the "public beta" period for CT 2.0.  Most of the beta testers so far have been experienced testers, but I'm sure we'll see lots of new questions and issues to fix as more people start switching over to CT 2.0 before the deadline.</p>
<p><strong>If you are already a CPAN Tester</strong>, a "profile file" has been pre-generated for you and you should <a href="http://metabase.cpantesters.org/claimid/">submit a request</a> that it be emailed to you.  This pre-generated profile will identify your new CT 2.0 reports in a way that will make it easier to link them to the CT 1.0 old reports as those are converted.</p>
<p><strong>If you are new to CPAN Testing</strong>, you will need to generate a profile file.  Install <a href="http://search.cpan.org/perldoc?Metabase::Fact">Metabase::Fact</a> and then run the <em>metabase-profile</em> program from the command line.  It will prompt you to provide some information and output a profile file.  The first time you use this profile file to submit a report, your profile will be automatically registered on the CT 2.0 server.</p>
<p>While the CT 2.0 server has launched, the clients that submit reports are, for now, the same ones used for CT 1.0 -- either <a href="http://search.cpan.org/perldoc?CPAN::Reporter">CPAN::Reporter</a> or <a href="http://search.cpan.org/perldoc?CPANPLUS">CPANPLUS</a> (or one of the smoke frameworks written for them like <a href="http://search.cpan.org/perldoc?minismokebox">minismokebox</a> or <a href="http://search.cpan.org/perldoc?CPAN::Reporter::Smoker">CPAN::Reporter::Smoke</a>r).  The transport framework originally intended for email gets hijacked to send reports via http to CT 2.0 instead.  </p>
<p><strong>To send reports to CT 2.0</strong>, you will need to install the <a href="http://search.cpan.org/perldoc?Test::Reporter::Transport::Metabase">Test::Reporter::Transport::Metabase</a> module and then configure your client to use that transport instead of the default one.  <a href="http://wiki.cpantesters.org/wiki/GettingStarted">Instructions</a> are available on the <a href="http://wiki.cpantesters.org/">CPAN Testers Wiki</a>.  While the docs are a bit sparse as I write this, I expect they will continue to evolve and improve as more people contribute to them.  </p>
<p><strong>If you're really stuck</strong>, please check the <a href="http://wiki.cpantesters.org/wiki/CPANTesters2FAQ">FAQ</a> or ask for help on the <a href="http://lists.perl.org/list/cpan-testers-discuss.html">CPAN Testers Discuss mailing list</a>.  If you are a CPAN Tester, I highly recommend joining the list to keep up on the latest issues and solutions in the migration to CT 2.0.  If you do ask for help, please be sure to include the version number of all the relevant testing modules you're using along with your <em>perl -V</em> output.</p>
<p>Another good place to go for quick questions is the <em>#cpantesters-discuss</em> channel on irc.perl.org. </p>
<p>In other news, I'll be speaking about CPAN Testers at <a href="http://www.oscon.com/">OSCON</a> in my <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13759">Free QA!</a> talk.  If you or someone you know will be there, please check it out or recommend it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagolden.com/index.php/889/how-to-join-the-cpan-testers-2-0-public-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

