<?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>Coop &#187; Mozilla</title>
	<atom:link href="http://coop.deadsquid.com/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://coop.deadsquid.com</link>
	<description>Five Different Types of Fried Cheese</description>
	<lastBuildDate>Tue, 20 Jul 2010 14:38:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Setting descriptions to avoid buildbot exceptions from doStepIf</title>
		<link>http://coop.deadsquid.com/2010/07/setting-descriptions-to-avoid-buildbot-exceptions-from-dostepif/</link>
		<comments>http://coop.deadsquid.com/2010/07/setting-descriptions-to-avoid-buildbot-exceptions-from-dostepif/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:38:29 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[0.8.0]]></category>
		<category><![CDATA[buildbot]]></category>
		<category><![CDATA[doStepIf]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=3720</guid>
		<description><![CDATA[A small caveat (and workaround) if you&#8217;re using doStepIf with buildbot: The Mozilla RelEng team recently upgraded to buildbot 0.8.0. This has allowed me to start using conditional buildbot steps by specifying the doStepIf parameter and a small helper function to check whether given properties have been set. I love it, and it opens up [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/nut.png" width="75px" title="Nut" alt="Nut" class="alignright" />A small caveat (and workaround) if you&#8217;re using doStepIf with buildbot:</p>
<p>The Mozilla RelEng team recently upgraded to <a href="http://buildbot.net/trac">buildbot</a> 0.8.0. This has allowed me to start using conditional buildbot steps by specifying the <a href="http://buildbot.net/buildbot/docs/current/reference/buildbot.process.buildstep-pysrc.html#L814">doStepIf</a> parameter and a small helper function to check whether given properties have been set. I love it, and it opens up a whole new ways of working with our builds.</p>
<p>Unfortunately, the doStepIf implementation is new-ish and <a href="http://buildbot.net/trac/ticket/837">still broken in some ways</a>. If steps are skipped, the finished() code is called without start() ever having been run, leaving you with potentially uninitialized variables. In my case, this manifests if I don&#8217;t specify a description for my conditional build step. Buildbot attempts to build a description for me by walking the properties, some of which may not be set if doStepIf is false. </p>
<p>The workaround is, of course, to always provide a description for any conditional build steps (easy), or wrap everything in a try block.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/07/setting-descriptions-to-avoid-buildbot-exceptions-from-dostepif/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reclaiming space on stage.mozilla.org &#8211; space reclaimed!</title>
		<link>http://coop.deadsquid.com/2010/07/reclaiming-space-on-stage-mozilla-org-space-reclaimed/</link>
		<comments>http://coop.deadsquid.com/2010/07/reclaiming-space-on-stage-mozilla-org-space-reclaimed/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 16:26:22 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=3553</guid>
		<description><![CDATA[I posted this followup to the newsgroups a few weeks back, but things got kinda hectic with the end of quarter and the Summit so I never circled back here. The cleanup crontabs for all products are in place on stage.mozilla.org now. We did see a little bit of bustage with the initial set of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/firefox_on_moon.png"><img src="/images/firefox_on_moon_150px.png" width="150px" title="Firefox on the moon" alt="Firefox on the moon" class="alignright" /></a>I posted <a href="http://groups.google.com/group/mozilla.dev.planning/msg/3f118a7411a21712">this followup to the newsgroups a few weeks back</a>, but things got kinda hectic with the end of quarter and <a href="http://summit.mozilla.org/">the Summit</a> so I never circled back here.</p>
<p>The cleanup crontabs for all products are in place on stage.mozilla.org now. We did see a little bit of bustage with the initial set of MAR expiry commands being improperly limited, but luckily <a href="http://home.kairo.at/blog/">KaiRo</a> didn&#8217;t lose anything irreplaceable.</p>
<p>We didn&#8217;t reclaim as much space as originally estimated because we preserved the contrib dirs largely intact. We did still manage to recover almost 350G of space across all products, bringing our %used number on stage down to 79%. It was at 95% the day before we put these crontabs in place.</p>
<p>I&#8217;ve documented the new policy in the wiki: <a href="https://wiki.mozilla.org/ReleaseEngineering:StageCleanupPolicy">ReleaseEngineering:StageCleanupPolicy</a></p>
<p>We&#8217;ll still have to grow the disk eventually, or shuffle stuff around, but at least we have *something* in place policy-wise now.</p>
<p>Thanks to everyone who weighed-in on this longstanding issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/07/reclaiming-space-on-stage-mozilla-org-space-reclaimed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make your own updates</title>
		<link>http://coop.deadsquid.com/2010/05/how-to-make-your-own-updates/</link>
		<comments>http://coop.deadsquid.com/2010/05/how-to-make-your-own-updates/#comments</comments>
		<pubDate>Fri, 21 May 2010 19:15:13 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1899</guid>
		<description><![CDATA[Another positive outcome from the recent work to generate nightly updates on the buildslaves is that we now have update generation tools that work on Linux, Mac, and Windows. There been some interest in the past from other software projects about using our update tools, but I know that getting all of the mozilla source [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apartmenttherapy.com/la/cookware/mauviel-copper-mixing-bowl-and-stand-004644"><img src="/images/copper_bowl.jpg" width="100px" class="alignright" alt="mixing bowl" title="mixing bowl" /></a>Another positive outcome from the <a href="/2010/03/timely-nightly-updates-for-mozilla-central-l10n/">recent work to generate nightly updates on the buildslaves</a> is that we now have update generation tools that work on Linux, Mac, and Windows. There been some interest in the past from other software projects about using our update tools, but I know that getting all of the mozilla source setup to build just these tools is non-trivial, especially if your software isn&#8217;t Mozilla-based to begin with. </p>
<p>I&#8217;ve packaged up the update tools for each platform from a recent mozilla-central nightly and put them under the xulrunner directory on ftp:</p>
<ul>
<li><a href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/mar-generation-tools/mar-generation-tools-linux.zip">mar-generation-tools-linux.zip</a></li>
<li><a href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/mar-generation-tools/mar-generation-tools-macosx.zip">mar-generation-tools-macosx.zip</a></li>
<li><a href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/mar-generation-tools/mar-generation-tools-win32.zip">mar-generation-tools-win32.zip</a></li>
</ul>
<p>I&#8217;ve also updated our wiki documentation about <a href="https://wiki.mozilla.org/UpdateGeneration#What_the_Makefiles_do.2C_or_How_to_make_your_own_updates">how we make our nightly updates for Firefox</a> to give people a fighting chance of figuring out how to use these tools for their own purposes.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/05/how-to-make-your-own-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reclaiming space on stage.mozilla.org</title>
		<link>http://coop.deadsquid.com/2010/05/reclaiming-space-on-stage-mozilla-org/</link>
		<comments>http://coop.deadsquid.com/2010/05/reclaiming-space-on-stage-mozilla-org/#comments</comments>
		<pubDate>Thu, 13 May 2010 02:30:07 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1876</guid>
		<description><![CDATA[For those who want to skip to my specific proposals &#8212; there are 6 &#8212; for reclaiming space on stage.mozilla.org, please skip ahead to &#8220;Redux&#8221;, but if you&#8217;re going to comment, please read the whole thing. Everyday we produce up to 17G worth of new nightly builds for Firefox across all branches. This includes all [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/firefox_on_moon.png"><img src="/images/firefox_on_moon_150px.png" width="150px" title="Firefox on the moon" alt="Firefox on the moon" class="alignright" /></a><em>For those who want to skip to my specific proposals &#8212; there are 6 &#8212; for reclaiming space on stage.mozilla.org, please skip ahead to &#8220;Redux&#8221;, but if you&#8217;re going to comment, please read the whole thing.</em></p>
<p>Everyday we produce up to 17G worth of new nightly builds for Firefox across all branches. This includes all opt+debug builds in 75+ locales, each on 4 operating systems (OSes), each on 9 different project branches. We do reclaim much of this 17G as we retire l10n builds older than 1 week, but we are still creating 1.3G of new nightly en-US builds that we need to store (essentially) indefinitely. nthomas did some cleanup recently as part of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=562261">bug 562261</a> and that has bought us some more time, but this inexorable increase will eventually overrun our disk capacity on the staging server. If we add to this disk usage by nightlies from other products which may have worse nightly hygiene habits and the expected increase in space requirements every night as we add 4 new OSes (adding Linux 64bit, Windows 64bit, OSX10.6 64bit and Android), the problem is magnified.<br />
<span id="more-1876"></span><br />
To date, our solution to this problem has been to do periodic cleanups, usually under duress like <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=562261">bug 562261</a> (which can be error-prone), or to simply buy more disk. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=342972#c33">As Justin notes</a>, while disk space may be &#8220;cheap&#8221;, it is not an infinite resource, either in terms of upfront or management cost. We need an actual policy to govern how long we keep nightlies. We can then use that policy as a baseline to frame further discussions about keeping things for longer periods in special cases.</p>
<p>The good news: there *is* space that can be reclaimed: There are two types of wins to be had here:</p>
<ol class="decimal">
<li>One-time space recovery by deleting or archiving material that is no longer useful, or that can be kept offline and spun up as required.</li>
<li>Codified policy changes for automatically expiring old content.</li>
</ol>
<p>We can tackle #1 (one-time space recovery) for Firefox by:</p>
<ol class="lower-alpha">
<li>moving no-longer-supported releases, i.e. anything prior to 3.0 (including firebird) to a true archive. This will free up about 125G of space, and will have the added benefit of not housing unsupported builds next to supported builds, making them a little more difficult for people to stumble upon.</li>
<li>deleting nightly builds older than a certain date. The Firefox nightly directories are conveniently broken down by year, so it makes it easy to see how much disk space we could reclaim by deleting old nightlies:</li>
<p>2004    16G<br />
2005    53G<br />
2006    191G<br />
2007    129G<br />
2008    177G<br />
2009    236G<br />
2010    216G (so far)
</ol>
<p>At the risk of making others&#8217; arguments for them, both previous times we attempted to come up with a stage cleanup policy (2006 &#038; 2008) the major concern raised was a need to keep builds in perpetuity to allow regression detection via binary search.</p>
<p>So I say this: I&#8217;d like to hear from developers <em>who have actually had to perform binary searches of nightlies to let me know exactly how far back in time they have had to go</em>. In the absence of any other data, I&#8217;m going to suggest we remove all nightlies prior to 2007 simply because that corresponds with the start of the hg era (March 2007).</p>
<p>Please note, that when I say &#8220;remove&#8221; in this context of this discussion, I am advocating for &#8220;delete&#8221; but understand that I may need to settle for &#8220;archive&#8221; in whatever form that makes sense to IT (slow disk/tape/???).</p>
<p>Other non-Firefox projects will need to make their own decisions as to how/when to archive older releases, but those projects could also reclaim a lot of space by deleting their older nightlies. Here are the aggregate disk usage number for nightly builds of Calendar (both Sunbird &#038; Lightning), Camino, Mozilla Suite (not even built since 2007), and XulRunner, broken down by year:</p>
<p>2001    472M<br />
2002    6.9G<br />
2003    6.7G<br />
2004    23.2G<br />
2005    57.6G<br />
2006    79G<br />
2007    106G<br />
2008    114G</p>
<p>Here are the nightly usage numbers for Thunderbird:</p>
<p>2003   108M<br />
2004   17G<br />
2005   47G<br />
2006   87G<br />
2007   88G<br />
2008   60G<br />
2009   73G<br />
2010   159G (so far)</p>
<p>Again, there are big space recovery wins to be had here, depending on far back we want our accessible, online repository of nightly builds to be.</p>
<p>In terms of policy changes to curb accumulation, I propose implementing three reforms, the first two of which come out of nthomas&#8217; work in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=562261">bug 562261</a>.</p>
<p>First, we&#8217;ll script the automatic expiry of mar files for nightly builds older than 1 month. Only the most recent complete and partial MARs are required, so this gives us a more-than-adequate buffer to detect and fix problems with the nightly update system. We have proven steps from <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=562261">bug 562261</a> that can be easily cron-ed to run weekly on weekends or other periods when the staging server is (relatively) idle. This can be done across all products.</p>
<p>Second, the RelEng team will start purging the contents of old candidates directories as part of our release process. For those who are unaware, the candidates directory lives under the nightly directory and holds all the various release files (builds, source, signatures, logs) until we green-light the release. Once the release is official, the important contents are sync-ed over to the releases/ subdir and the candidates dir becomes mostly redundant, modulo a few important logging artifacts. We&#8217;ll delete the builds for all but the two most recent candidate dirs, but will preserve the text files/logs that tell us important things like # of builds/changesets/build IDs.</p>
<p>Note that this won&#8217;t be an automated procedure: the release engineer responsible for the current release will need to go in and look at the candidates directories involved and make a judgment call as to what to delete. Sometimes the release procedure goes awry or we try something new, and it&#8217;s important to be able to keep those examples around until we&#8217;ve learned what we can from them.</p>
<p>Other projects that currently use a candidates directory for releases should also consider making this change.</p>
<p>Third, we should agree to revisit nightly storage on a yearly basis. Specifically, we should commit to taking the oldest year&#8217;s worth of nightly builds offline in January of each year, e.g. if we&#8217;re comfortable with a 3-year online repository of nightly builds, in January 2011 we would take the nightly builds for 2007 offline. As you can see from the YTD numbers for 2010, this is unlikely to actually keep up with increasing storage needs, but it is better than nothing.</p>
<h2>Redux:</h2>
<p>Here&#8217;s a brief summary of my proposals for reclaiming space on stage to make it easier for people to respond *AFTER* reading the above:</p>
<p>1) Move Firefox releases that are no longer supported (< 3.0, including firebird) to separate storage.</p>
<p>2) Remove Firefox nightlies prior to 2007, freeing 260G. These can be deleted if they're not going to be used, or archived if we think they might.</p>
<p>3) Remove nightlies for products other than Firefox prior to 2007, freeing 174G. Again, "remove" can mean either deletion or archiving.</p>
<p>4) Automate the deletion of nightly MAR files older than one month. Only the most recent MAR files are required. This would be done across all products.</p>
<p>5) Delete builds from older candidates directories after official release. This will reclaim up to 13G per build attempt per release. This will be a manual process.</p>
<p>6) For every new year going forward, remove the oldest remaining year of nightlies, e.g. for a 3-year history of nightly builds, remove nightly builds from 2007 in January 2011. This will be a manual process.</p>
<p>Feedback is appreciated, either in the newsgroups or in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=342972">bug 342972.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/05/reclaiming-space-on-stage-mozilla-org/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Timely nightly updates for mozilla-central l10n</title>
		<link>http://coop.deadsquid.com/2010/03/timely-nightly-updates-for-mozilla-central-l10n/</link>
		<comments>http://coop.deadsquid.com/2010/03/timely-nightly-updates-for-mozilla-central-l10n/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 06:46:13 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1796</guid>
		<description><![CDATA[I landed a patch last week that represents the culmination of several months worth of effort by me, but that also brings to fruition the full promise of l10n nightly updates, work that was begun by Armen almost a year ago. History and motivation For almost as long as there has been a Firefox browser, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/en-US/firefox/addon/77707"><img src="/images/stockticker.jpg" width="100px" class="alignright" alt="stock ticker" title="stock ticker"/></a>I landed a patch last week that represents the culmination of <a href="/2009/09/consequences-of-l10n-nightly-updates/">several months worth of effort by me</a>, but that also brings to fruition the full promise of l10n nightly updates, <a href="http://armenzg.blogspot.com/2009/08/updates-nightly-just-en-us.html">work that was begun by Armen almost a year ago</a>.<br />
<span id="more-1796"></span></p>
<h4>History and motivation</h4>
<p>For almost as long as there has been a Firefox browser, there has been a nightly update channel whereby bleeding edge developers could keep their browser up-to-date with the latest code changes from the past day. For lay people, imagine the security update notices you receive every month or so, but happening on a daily basis.  There are changes made every day in the Mozilla codebase &mdash; bug fixes, new features, interface changes &mdash; so it&#8217;s important for us to have a vector to get these changes into testers&#8217; hands as quickly as possible. Since the people that use these &#8220;nightly&#8221; builds are often developers or involved community members, the likelihood of us getting feedback on any code changes introduced in these builds is relatively high. </p>
<p>To minimize the download size of each nightly update for our testers, we offer what we call a &#8220;partial&#8221; update, where we provide only the accumulated binary code differences between the new nightly build and the previous one. If testers are more than one nightly update behind, we offer them a &#8220;complete&#8221; update, which is essentially just an archive of the latest nightly build packaged in a format that can be understood by the browser&#8217;s updating framework.</p>
<p>The developers and community members who use these nightly builds and updates don&#8217;t necessarily live in the U.S. or speak English as their first language, however. Armen took the first huge step towards better serving these users last year when he added <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480081">nightly update support for localized builds</a> (we call these builds l10n for short) on our core development branch, mozilla-central. For the first time ever, non-English users could get the same bleeding edge code as English speakers, but presented in their own language.</p>
<h4>Useful, but at what cost</h4>
<p>Mozilla has many different active code branches, all of which produce nightly builds for testing. Having proven its utility with the mozilla-central nightly builds, we wanted to extend the same l10n nightly update functionality to our other major branches, specifically the 1.9.2 and 1.9.1 code lines. However, after turning on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=510524">nightly updates for the 1.9.2 branch</a>, we soon discovered a bottleneck in our update process.</p>
<p>Since we first began offering nightly updates, all of our nightly updates had been generated on a single linux machine (or more recently, a single Linux <abbr title="virtual machine">VM</abbr>). This was fine when there was only one locale to worry about, English (en-US). The update for each nightly build took between 2-3 minutes to generate, so even with 4 code branches (mozilla-central, 1.9.2, 1.9.1, CVS trunk) and 3 platforms (Linux, Mac OS X, Windows), updates would only ever take about 30 minutes to generate, total, and they would rarely be blocked because builds never finish at exactly the same time. Adding localized builds into the mix threw everything into disarray.</p>
<p>Mozilla prides itself on it&#8217;s localization story, but the sheer number of available localizations (around 75 per code branch) was swamping our poor, little update generation VM. As a rough estimate:</p>
<p><code>2.5 minutes/update x 3 update platforms x 75 locales<br />
= 562.5 minutes<br />
= >9 hours to generate all the nightly updates for one code branch</code></p>
<p>When we turned on the l10n nightly updates for the 1.9.2 branch, we had to make a number of changes immediately. </p>
<p>First, we certainly couldn&#8217;t consider turning on updates for another branch or nightly update generation would simply never catch up with itself. Because it would take over 18 hours to generate all the required updates for just two branches, we prioritized the English updates (en-US) so as not to degrade the existing nightly update experience for the consumers of English builds.</p>
<p>At this point, nightly updates for some locales were not timely <em>at all</em>, e.g. the Windows nightly build for the <a href="https://wiki.mozilla.org/L10n:Teams:zh-TW">Chinese Traditional, Taiwan (zh-TW) locale</a> would wait in the queue over 12 hours <em>every day</em> before having it&#8217;s partial update generated. In the timezones where a zh-TW localized build would most likely be used, this meant the base code of the &#8220;updated&#8221; build was always out-of-date by an entire day. </p>
<p>Adding a new platform, or even a new locale, was painful in a multiplicative rather than an additive way. Also, if we ever needed to re-spin a set of nightlies (which implies a new round of nightly updates), it meant that nightly update generation wouldn&#8217;t catch up for over 24 hours.</p>
<h4>Make it right</h4>
<p><a href="http://www.codesoftly.com/2010/01/home-improvement-as-inspiration.html"><img src="/images/holmes.jpg" width="100px" class="right" alt="Mike Holmes" title="Mike Holmes"/></a>Under these conditions, the decision to parallelize update generation was easy, the only question was how. We did consider simply adding more Linux VMs to generate updates, but that would have involved writing code to manage the pending update queue across multiple machines, or at the very least introducing an dedicated update generation machine per platform. The more straightforward solution would be to use the massive parallelization already provided by our existing build slave pool.</p>
<p>The first hurdle in generating our nightly updates on the build slaves was ensuring that the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=296303">MAR</a> (<b>M</b>ozilla <b>AR</b>chive) and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=296295">binary diff</a> tools worked on platforms other than Linux (which they now do) and were built automatically for branches on which we wanted to provide nightly updates (which they are now). There were also a bunch of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=535369">build system changes</a> that needed to happen to get MAR files uploaded automatically from the build slaves. After that, it was testing, lots and *lots* of testing. Last week, we finally got out of the testing phase and were able to deploy the changes for mozilla-central.</p>
<h4>The numbers</h4>
<p>There are always trade-offs when making a change like this, but honestly this is a pretty big win. Here are some typical l10n build scenarios from last week compared to the previous week before the updates-on-slave changes were in place:</p>
<table>
<tr>
<th valign="bottom">Platform</th>
<th>Last Build Finished (before)<br />PDT</th>
<th>Last Build Finished (now)<br />PDT</th>
<th>Added time/build<br />(m)</th>
<th>Update available (before)<br />PDT</th>
<th>Update available (now)<br />PDT</th>
</tr>
<tr class="odd">
<td>Linux</td>
<td align="center">03:44</td>
<td align="center">04:22</td>
<td align="center">1.5 &#8211; 5</td>
<td align="center">18:05</td>
<td align="center">04:18</td>
</tr>
<tr>
<td>Mac OS X</td>
<td align="center">06:10</td>
<td align="center">06:24</td>
<td align="center">2.5 &#8211; 4.5</td>
<td align="center">16:55</td>
<td align="center">06:24</td>
</tr>
<tr class="odd">
<td>Windows</td>
<td align="center">05:45</td>
<td align="center">06:58</td>
<td align="center">3 &#8211; 4</td>
<td align="center">19:50</td>
<td align="center">06:58</td>
</tr>
</table>
<p>In aggregate, we&#8217;ve added a <em>maximum</em> of 5 minutes/locale (often much less) x ~75 of locales, or 375 minutes, to the total time required to build all locales for a given branch on a given platform. Given 8 build slaves per platform assigned to create l10n nightly repacks, this means that the final l10n nightly repack on any build slave will finish roughly 45 minutes later than it did before the change. The parallelization of the overall process more than compensates though, at least as far as nightly updates are concerned. For example, the zh-TW localized Windows build may finish at 07:00 PDT now instead of 0615 PDT, but it&#8217;s nightly update is also <em>immediately available at 07:00 PDT</em>.  English (en-US) builds also have their updates generated on the slaves, but since their updates were prioritized before anyway, they continue to be timely.</p>
<p>The localized builds also need to build the binary diff tool (bsdiff), but we re-use the same checkout for the tools from one l10n build to the next, so we only ever have to incur that build cost once, in the absence of a clobber. Even when we do need to rebuild bsdiff, since we also re-use the existing configuration steps and make targets that have already been run earlier in the l10n build process, the maximum time we ever spend building the bsdiff tool is about 1 min.</p>
<h4>Onward</h4>
<p>Perhaps what&#8217;s most exciting about this change are the possibilities it opens up for us, and for others.</p>
<p>Nick is already busy extending this work to provide <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=534954">nightly updates for project branches</a>. Project branches are a relatively new thing in the Mozilla world, and soon the developers working on them will be able to stay current code-wise just the same as if they were working on mozilla-central. <a href="http://home.kairo.at/blog">KaiRo</a> also tells me that he&#8217;s only a few days away from having <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=555730">nightly partial updates available for SeaMonkey</a> for the first time ever!</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/03/timely-nightly-updates-for-mozilla-central-l10n/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>On 1-on-1s</title>
		<link>http://coop.deadsquid.com/2010/03/on-1-on-1s/</link>
		<comments>http://coop.deadsquid.com/2010/03/on-1-on-1s/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 21:19:20 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1786</guid>
		<description><![CDATA[A few weeks ago, dria blogged about the format she had adopted for conducting 1-on-1 meetings with her manager. As a nascent manager myself, I had been struggling to come up with a better framework for my own meetings. I ran dria&#8217;s chosen format by Armen and he was supportive, so for the past two [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thehouseofgames.net/index.php?t=10&#038;id=296"><img src="/images/jordan_vs_bird-5.gif" width="100px" alt="Jordan vs. Bird: One on One" title="Jordan vs. Bird: One on One" class="alignright" /></a>A few weeks ago, <a href="http://www.dria.org/">dria</a> blogged about the <a href="http://www.dria.org/wordpress/archives/2010/02/25/1443/">format she had adopted for conducting 1-on-1 meetings</a> with her manager. As a nascent manager myself, I had been struggling to come up with a better framework for my own meetings. I ran dria&#8217;s chosen format by <a href="http://armenzg.blogspot.com/">Armen</a> and he was supportive, so for the past two weeks we&#8217;ve been giving it a try. </p>
<p>The new meeting format is working pretty well for us so far. Here are some of the key things I like about it:</p>
<ul>
<li>The framework makes it easy to decide when in the meeting to discuss which issues. The project-based agenda I used previously tended to encourage digression, but that&#8217;s kept to a minimum now. Certain meeting sections are pure reporting (e.g. accomplishments) and others are meant for discussion (e.g. blockers).
  </li>
<li>It puts an onus on both parties to be prepared. Armen sends his notes to me the night before so I always have a chance to prepare help/advice beforehand.</li>
<li>The video chat is great as a remotie. Armen has an office he can go in to in Toronto, but I have no such luxury. Having these meetings &#8220;face-to-face&#8221; (i.e. Skype) is a big win, at least for me. Non-verbal communication can help us move faster through the agenda at times. Conversely, it can also allow me to pick up on signs that something may be amiss. Both functions are invaluable.</li>
</ul>
<p>Our success with the format has encouraged me to push the format back up the chain: <a href="http://oduinn.com/">John</a> and I are going to try the format next week for our 1-on-1.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/03/on-1-on-1s/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GrowReviewComment</title>
		<link>http://coop.deadsquid.com/2010/02/growreviewcomment/</link>
		<comments>http://coop.deadsquid.com/2010/02/growreviewcomment/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 22:29:30 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[comment]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1780</guid>
		<description><![CDATA[This has been a pet peeve of mine for a while. Assuming you&#8217;re not editing the attachment as a comment, Bugzilla gives you a very small window in which to leave a comment when reviewing a patch: the textarea is 5 rows high and only 25 columns wide by default. I&#8217;ve found it hard to [...]]]></description>
			<content:encoded><![CDATA[<p>This has been a pet peeve of mine for a while. Assuming you&#8217;re not editing the attachment as a comment, <a href="https://bugzilla.mozilla.org/">Bugzilla</a> gives you a very small window in which to leave a comment when reviewing a patch: the textarea is 5 rows high and only 25 columns wide by default. I&#8217;ve found it hard to add coherent commentary in a box that small, and my efforts almost always come out poorly formatted because I just can&#8217;t tell how the text is wrapping.</p>
<p>I whipped up a dead-simple greasemonkey script today that increases the size of the comment box when you click on it, and then shrinks it back down again when you click elsewhere.</p>
<ul>
<li>Download: <a href="/userscripts/growreviewcomment.user.js" title="GrowReviewComment greasemonkey script for Bugzilla">GrowReviewComment</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/02/growreviewcomment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kiss the Future goodbye</title>
		<link>http://coop.deadsquid.com/2010/02/kiss-the-future-goodbye/</link>
		<comments>http://coop.deadsquid.com/2010/02/kiss-the-future-goodbye/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 23:49:49 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1761</guid>
		<description><![CDATA[Let it never be said that we don&#8217;t listen. In response to the comments on my previous entry about Tackling the Release Engineering:Future queue and a number of conversations I&#8217;ve had out-of-band over the past few months, the release engineering team has decided to do away with the Future component. We will be merging all [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.imdb.com/title/tt0088763/"><img src="/images/back_to_the_future.jpg" width="100px" class="alignright" alt="Flaming tire tracks" title="Flaming tire tracks" /></a>Let it never be said that we don&#8217;t listen.</p>
<p>In response to the comments on my previous entry about <a href="http://coop.deadsquid.com/2010/02/tackling-the-release-engineeringfuture-queue">Tackling the Release Engineering:Future queue</a> and a number of conversations I&#8217;ve had out-of-band over the past few months, the release engineering team has decided to do away with the Future component. We will be merging all of the bugs therein back into the regular Release Engineering component.</p>
<p>Aside from the simplicity inherent in having fewer components to worry about, there were three main reasons we chose to do this:<span id="more-1761"></span></p>
<ol>
<li>No other group in the company/community has an explicit &#8220;Future&#8221; component where they can hibernate bugs.</li>
<li>People outside the RelEng team find the Future component opaque, and despite reassurances to the contrary, they often just assume bugs in the Future component won&#8217;t be fixed.</li>
<li>Moving bugs between the regular Release Engineering component and the Future component makes it very hard to extract meaningful statistics about how our bugs change over time (new bug rate, fix rate, etc.). This makes it hard to change our processes based on data.</li>
</ol>
<p>What does this mean for you? Nothing, hopefully. I&#8217;m planning to move all the bugs out of the Future component on <strong>the morning (EST) of Monday, February 15th</strong>. People in North America will be on holiday, so this should be a relatively low-traffic time to make this change. My apologies in advance for the RelEng mail bomb you&#8217;ll be getting on Tuesday morning. :/</p>
<p>We will still continue to triage bugs using our three bucket approach, only the location of the third bucket will have changed. Our three buckets of bugs correspond to the following:</p>
<ol>
<li><strong>Untriaged</strong>: &#8211; state: NEW, assigned to: nobody, priority: none (&#8211;)</li>
<li><strong>Triaged, assigned</strong> &#8211; state: NEW (we&#8217;re not working on it yet) or ASSIGNED (we&#8217;re working on it), assigned to: a specific release engineer, priority: P1-3</li>
<li><strong>Triaged, unassigned</strong> (was Future) &#8211; state: NEW, assigned to: nobody, priority: P3-5</li>
</ol>
<p>In the interest of further simplification, the RelEng team will eschew the Severity field as we move forward, although we won&#8217;t change any information already contained in that field if it exists. Instead, we&#8217;ll start using the Priority field more diligently. All bugs that have been triaged will have a Priority associated with them from here on out. </p>
<p>For reference, the various Priority levels mean the following to us:</p>
<p><strong>P1</strong>: blocker, all other work on hold until this is fixed<br />
<strong>P2</strong>: being actively worked on<br />
<strong>P3</strong>: acknowledged as an issue, but not being actively worked on<br />
<strong>P4</strong>: (future) goals that are either blocked on other work, or that simply have not been started yet<br />
<strong>P5</strong>: enhancement</p>
<p>There was some concern within the RelEng team that developers might assume that bugs moved out of the Future component were now being worked on. I have faith that people will correctly interpret the implications of their bug still being assigned to nobody@mozilla.org as an indication that, no, their bug is still on the shelf.</p>
<p>Please note that this does not change the triage work that still needs to happen on these once-and-Future bugs, as described in the <a href="/2010/02/tackling-the-release-engineeringfuture-queue/">previous post</a>. We&#8217;ve already made some good headway on triage this week, though. The number of &#8220;Future&#8221; bugs is now down to 304 from a high of 343. Kudos to the people who made that happen. Let&#8217;s keep up that great work.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/02/kiss-the-future-goodbye/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tackling the Release Engineering:Future queue</title>
		<link>http://coop.deadsquid.com/2010/02/tackling-the-release-engineeringfuture-queue/</link>
		<comments>http://coop.deadsquid.com/2010/02/tackling-the-release-engineeringfuture-queue/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 21:22:27 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1714</guid>
		<description><![CDATA[The Release Engineering:Future bugzilla component alternately inspires feelings of sadness, loathing, and contempt&#8230;and that&#8217;s just within the RelEng team! I&#8217;m certain most developers first response to having their bug moved to the Future queue is, &#8220;Oh, look, my bug has fallen down a well.&#8221; Historically speaking, that may not be far from the truth. What [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iwatchsimpsonsonline.com/2009/06/watch-radio-bart.html"><img class="alignright" width="100px" alt="Bart falls down a well." src="http://i43.tinypic.com/119xehf.jpg" title="Bart falls down a well." /></a>The <a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=DUPLICATE;resolution=---;query_format=advanced;component=Release%20Engineering%3A%20Future;product=mozilla.org">Release Engineering:Future bugzilla component</a> alternately inspires feelings of sadness, loathing, and contempt&#8230;and that&#8217;s just within the RelEng team! </p>
<p>I&#8217;m certain most developers first response to having their bug moved to the Future queue is, &#8220;Oh, look, my bug has <a href="http://www.iwatchsimpsonsonline.com/2009/06/watch-radio-bart.html">fallen down a well</a>.&#8221; Historically speaking, that may not be far from the truth.<br />
<span id="more-1714"></span></p>
<h4>What goes in Future?</h4>
<p><a href="http://www.imdb.com/title/tt0088763/"><img src="/images/great_scott_400.png" width="100px" class="right" alt="Great Scott!!" title="Great Scott!!" /></a>Why does the Future component make people get punchy? For a long time, the Future component has lacked a decent description, so developers don&#8217;t know what it means when their bugs are moved there. Many have started hording their <a href="http://www.youtube.com/watch?v=I5cYgRnfFDA">gigawatts</a> in anticipation.</p>
<p>Bugzilla currently has the following small <a href="https://bugzilla.mozilla.org/describecomponents.cgi?product=mozilla.org">description of the Release Engineering:Future component</a>:</p>
<blockquote><p>&#8220;For longer term projects that have been agreed should be done, but have no immediate plans to so. These are not be part of the regular recurring triage. Advanced planning and placeholder goals for next quarter also go here.&#8221;</p></blockquote>
<p>Despite the grammatical errors, this description is mostly accurate, but what does it actually mean:</p>
<ul>
<li>Triaged bugs with no immediate owners go here.</li>
<li>Sadly, most enhancement bugs end up here unless they will make the core release process better, more streamlined, etc. quickly.</li>
<li>Bugs that are blocked on longer term projects in other groups go here until there is something for RelEng to do.</li>
<li>Advanced planning and placeholder goals for next quarter (or later) also go here. That&#8217;s pretty self-explanatory.</li>
</ul>
<p>Remember: this description is for the Future component <strong><em>ONLY</em></strong>. The RelEng team continues to pick up and work on bugs that need to get done on a daily basis.</p>
<p>I&#8217;m thinking about how to improve this description, and will get the description updated in Bugzilla once I have achieved some rough consensus. In the meantime, I&#8217;ve posted this <a href="https://wiki.mozilla.org/ReleaseEngineering:Bug_Triage">description of the Future component in the wiki</a> as an ongoing reference. </p>
<h4>The (Ever-Increasing) Numbers</h4>
<p>At the time of writing, the <a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=DUPLICATE;resolution=---;query_format=advanced;component=Release%20Engineering%3A%20Future;product=mozilla.org">Release Engineering:Future component has 343 bugs in it</a>. This number has grown steadily over the past year <em>despite</em> having more release engineers on staff, and having made a great many improvements to our release automation and our continuous integration infrastructure. </p>
<p>Our turnaround time for bugs in the Future component is also not stellar. At our urging, the <a href="http://blog.mozilla.com/metrics/">Mozilla Metrics team</a> recently started setting up a dashboard to give us various statistics on our Bugzilla usage. Bugs don&#8217;t get fixed in the Future queue, so it&#8217;s hard to make truly accurate assessments here, but there are a <em>lot</em> of aging bugs in there. According to the numbers, fully 50% of the bugs in the Future component are older than 1 month and more than 25% are older than 6 months. How this compares to other teams or areas, I can&#8217;t say, but it certainly makes me empathize with developers who feel their Future-ed bugs have gone <a href="http://en.wikipedia.org/wiki/Walkabout">walkabout</a>.</p>
<p><a href="http://www.imdb.com/title/tt0090555/"><img src="/images/crocodile_dundee_001.jpg" width="100px" alt="Crocodile Dundee" title="Crocodile Dundee" /></a>If it makes you feel better in a sadistic way, the majority of bugs filed by <em>RelEng team members</em> go directly into the Future queue. We&#8217;re not overly happy about it either. <img src='http://coop.deadsquid.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h4><a href="http://en.wikiquote.org/wiki/Serenity_%28film%29">I have a way? Is that better than a plan?</a></h4>
<p><a href="http://www.imdb.com/title/tt0379786/"><img src="/images/2005_serenity_007.jpg" width="100px" class="right" alt="Crew of Serenity on Prospect" title="Crew of Serenity on Prospect" /></a>Things are getting done, though. For example, over the past month, the number of non-Future, release engineering bugs that are actively being worked on has gone from a low water mark of 130 up to over 200 today. For comparison, over the same period, the total number of bugs in the Future queue has slowly crept up from a low of 302 to 323. Mozilla is growing along so many axes that sometimes it feels like keeping the increase in the number of Future bugs to a linear relationship rather than exponential one is an accomplishment in itself.</p>
<p>So how do we stop the increase and start wrestling the Future component back under control?</p>
<p>The first step is triage. Starting this Thursday, February 11th, the RelEng team is going to have bi-weekly triage meetings to specifically prune down the Future queue.</p>
<p>As part of the triage, we&#8217;re going to be touching every bug and updating the whiteboard field with searchable tags. Our goal here is to make it easy to find classes of bugs in the Future queue so that duplicates and overlap can be easily eliminated, and fixes can be batched as much as possible. </p>
<p>We&#8217;ll be keeping a <a href="https://wiki.mozilla.org/ReleaseEngineering:Bug_Triage#Whiteboard_tags_in_use">list of the tags we&#8217;re using in the wiki</a> in case you want to follow along.</p>
<p>There are some classes of bugs that we won&#8217;t be able to eliminate (e.g. future goals), but hopefully within a few months, we&#8217;ll have the Future queue back under control. </p>
<p>It won&#8217;t be a quick fix, but it&#8217;s one we&#8217;re committed to.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/02/tackling-the-release-engineeringfuture-queue/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>All about the RelEng sheriff, revisited</title>
		<link>http://coop.deadsquid.com/2010/02/all-about-the-releng-sheriff-revisited/</link>
		<comments>http://coop.deadsquid.com/2010/02/all-about-the-releng-sheriff-revisited/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 19:37:46 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1693</guid>
		<description><![CDATA[This is a follow-up to Ben&#8217;s blog post about the RelEng Sheriff back in October. His post described clearly what the RelEng Sheriff (and more generally, the RelEng team) can do to help developers. Since we implemented the RelEng sheriff (or &#8220;buildduty&#8221; as it is more informally called) last spring, developers have been getting better [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.co.sumner.ks.us/Sheriff/HistoryofSCSO/tabid/3023/Default.aspx"><img class="alignright" width="100px" alt="Sheriff badge" title="Sheriff badge" src="/images/SheriffBadge.jpg" /></a>This is a follow-up to <a href="http://blog.mozilla.com/bhearsum/archives/120">Ben&#8217;s blog post about the RelEng Sheriff</a> back in October. His post described clearly what the RelEng Sheriff (and more generally, the RelEng team) can do to help developers.</p>
<p>Since we implemented the RelEng sheriff (or &#8220;buildduty&#8221; as it is more informally called) last spring, developers have been getting better about using the buildduty person as the first point of contact for RelEng issues. I&#8217;d like to <em>implore</em> people to continue doing so. There are a few exceptions, of course:<br />
<span id="more-1693"></span></p>
<ul>
<li>It is outside of regular work hours and/or the designated buildduty person is not available; or,</li>
<li>you are already working on a bug with a specific release engineer.</li>
</ul>
<p>We recognize that different release engineers have different core competencies, and it may be tempting to go &#8220;straight to the source,&#8221; but please respect our process. The process is in place to limit (as much as possible) the interrupt-driven nature of release engineering work and to minimize the impact of those interrupts on ongoing projects. In many cases, the person with the expertise you need will still end up helping you (we&#8217;re all in the same IRC channels, after all), but the buildduty person is <strong><em>specifically committed to helping you</em></strong>, even if only as a thin scheduling proxy for another release engineer.</p>
<p><a href="http://blog.mozilla.com/bhearsum/archives/120">Ben&#8217;s post</a> had a good list things that RelEng can help developers with. Based on actual requests over the past few months, here are a few other services we can offer:</p>
<ul>
<li>clone a virtual machine for one-off debugging/testing: Sometimes patches work on the try server but (for whatever reason) don&#8217;t once checked in. Sometimes tests fail or are intermittently orange. If you&#8217;re seeing issues like these after landing a patch, or need access to a specific platform for short-term work, the RelEng team can clone one of our reference machines and give you access (under certain circumstances).</li>
<li>grab build/extra logs from a build machine (provided they exist). This is often useful if a try server build generates extra, non-standard output</li>
</ul>
<p>In both the above cases, the best thing to do is talk to the person on buildduty and then file a bug. </p>
<p>Conspicuously missing from Ben&#8217;s post was a list of what RelEng can&#8217;t do for you. While we can usually point you in the right direction, there are some things that we explicitly cannot do: </p>
<ul>
<li>help you debug issues with your own local builds. We&#8217;re not (necessarily) build config experts, so unless you&#8217;re running with exactly the same configuration as our build machines and don&#8217;t have any code patches applied, you&#8217;d be better served asking the talented folk in #developers or posting to the newsgroups (<a href="http://groups.google.ca/group/mozilla.dev.builds/topics">m.d.builds</a> or <a href="http://groups.google.ca/group/mozilla.dev.apps.firefox/topics">m.d.a.firefox</a>)</li>
<li>shepherd your patch through the landing process. Standard patch landing rules apply: *you* are expected to be around when you land patches. If builds/tests fail and you&#8217;re not around, your patch will likely be backed out.</li>
</ul>
<p>Need help finding the RelEng sheriff? Here&#8217;s the <a href="http://www.google.com/calendar/embed?src=aelh98g866kuc80d5nbfqo6u54%40group.calendar.google.com&#038;ctz=America/New_York">RelEng sheriff schedule</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2010/02/all-about-the-releng-sheriff-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
