<?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>sirhc.us maxim.us &#187; laziness</title>
	<atom:link href="http://sirhc.us/tag/laziness/feed/" rel="self" type="application/rss+xml" />
	<link>http://sirhc.us</link>
	<description>the pathological prattle of a primal perl programmer</description>
	<lastBuildDate>Fri, 06 Jan 2012 05:04:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OSCON 2010: Dist::Zilla</title>
		<link>http://sirhc.us/oscon-2010-distzilla/</link>
		<comments>http://sirhc.us/oscon-2010-distzilla/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:11:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dist::Zilla]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[laziness]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=511</guid>
		<description><![CDATA[Ricardo Signes (Pobox.com) The full title of this talk is, Dist::Zilla &#8211; Maximum Overkill for CPAN Distributions. Every CPAN distribution contains a significant amount of crap. It&#8217;s infrastructure used for the distribution tools. ExtUtils::MakeMaker has been the traditional way to &#8230; <a href="http://sirhc.us/oscon-2010-distzilla/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/3189"><em>Ricardo Signes (Pobox.com)</em></a></p>
<p>The full title of this talk is, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13632">Dist::Zilla &#8211; Maximum Overkill for CPAN Distributions</a>.</p>
<p>Every CPAN distribution contains a significant amount of crap.  It&#8217;s infrastructure used for the distribution tools.</p>
<p><a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>ExtUtils::MakeMaker</tt></a> has been the traditional way to work on the infrastructure code.  By necessity, it contains a lot of legacy, which can be cumbersome to maintain.  Enter <a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>Module::Install</tt></a>, which can look in the expected places for the necessary information, such as the author name.  But, the author still must write all the boilerplate.  <a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>Module::Starter</tt></a> was written to address this, composing all the boilerplate on behalf of the author.  There is so much boilerplate that, by default, Module::Starter also provides a boilerplate test to detect it.</p>
<p>Why are we doing all of this?  How much repetitive work are we doing?</p>
<p>What can <a href="http://search.cpan.org/dist/Dist-Zilla/"><tt>Dist::Zilla</tt></a> do for us?  For starters, we can remove some files:</p>
<ul>
<li><tt>LICENSE</tt></li>
<li><tt>MANIFEST.SKIP</tt></li>
<li><tt>Makefile.PL</tt></li>
<li><tt>README</tt></li>
<li><tt>t/pod.t</tt></li>
<li><tt>t/pod-coverage.t</tt></li>
</ul>
<p>Leaving us with only our <tt>Changes</tt> file, our code, and our tests.  The non-infrastructure parts.  On top of that, <tt>Dist::Zilla</tt> does all of the boring distribution bits for us.  It only handles the <tt>make dist</tt> command.  It does not handle the <tt>make install</tt> command, which means the users who install the module don&#8217;t need all of the dependencies.</p>
<p><tt>Dist::Zilla</tt> puts all of its functionality into plugins, which will be the meat of the rest of this session.  It also uses a very simple INI-style configuration file.</p>
<p>The main command provided by the module is <tt>dzil build</tt>.  This bundles the distribution, which will contain all of the infrastructure necessary for users to install the module.  When building, it follows a simple work flow:</p>
<ol>
<li>Gather files</li>
<li>Munge files</li>
<li>Collect metadata</li>
<li>Write out</li>
</ol>
<p>There is no default configuration, but there is a <a href="http://search.cpan.org/perldoc?Dist::Zilla::PluginBundle::Basic">Basic plugin bundle</a> that will include all of the most common plugins.</p>
<p>What followed were examples of what the plugins can do.  Of course, all of them are designed to reduce cruft&mdash;the non-code, non-documentation bits that we&#8217;re forced to maintain.  The philosophy is the same one I advocate to anyone who will listen: computers are good at doing boring, repetitive tasks with derived data; why don&#8217;t we let them do more of that stuff?</p>
<p>I&#8217;ve followed <a href="http://twitter.com/rjbs">@rjbs</a> on Twitter for a while, and I&#8217;ve seen him talk about <tt>Dist::Zilla</tt>.  I&#8217;ve wanted to try it out for a while, to simplify my distributions&mdash;both for CPAN and for my day job&mdash;but I didn&#8217;t realize until this session just how awesome the tool is.  It&#8217;s a complete framework for managing Perl module distributions.  <tt>Dist::Zilla</tt> will give my <a href="http://c2.com/cgi/wiki?LazinessImpatienceHubris">Laziness</a> score a huge bump.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-distzilla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

