<?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>Fri, 12 Mar 2010 21:19:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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>0</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 of [...]]]></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 goes [...]]]></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 about [...]]]></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>
		<item>
		<title>Nomenclature</title>
		<link>http://coop.deadsquid.com/2009/10/nomenclature/</link>
		<comments>http://coop.deadsquid.com/2009/10/nomenclature/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 15:03:34 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1661</guid>
		<description><![CDATA[Recognizing some existing internal group dynamics and the need for the entire Mozilla release engineering (RelEng) team to grow in a more sustainable manner, we recently started an internal reorganization of the RelEng group. John will likely blog about the new structure of the group at some point, but I&#8217;ll relate the bits that are [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=JLO1YIWQuXE"><img src="/images/bruce_lee_vs_chuck_norris.jpg" width="100px" class="alignright" alt="Bruce Lee vs. Chuck Norris" title="Bruce Lee vs. Chuck Norris"/></a>Recognizing some existing internal group dynamics and the need for the entire Mozilla release engineering (RelEng) team to grow in a more sustainable manner, we recently started an internal reorganization of the RelEng group. <a href="http://oduinn.com/">John will likely blog</a> about the new structure of the group at some point, but I&#8217;ll relate the bits that are pertinent to me.<br />
<span id="more-1661"></span><br />
<a href="http://armenzg.blogspot.com/">Armen</a> and I have been working together on projects for about a year now, and that&#8217;s been working out pretty well, so we&#8217;ve formalized that arrangement. Armen will begin &#8220;officially&#8221; reporting to me immediately, and we&#8217;ll be looking to hire some more teammates to fill out our sub-group of about 4 people.</p>
<p>Our focus will remain the same: look for large-ish sections of RelEng-related project work, whether existing or new, and drive them to completion. Some things we&#8217;ve worked on previously include <a href="http://blog.mozilla.com/axel/2009/06/05/got-l10n-builds/">properly integrating l10n builds into our buildbot infrastructure</a>, and <a href="http://armenzg.blogspot.com/2009/08/updates-nightly-just-en-us.html">enabling nightly updates for localized builds</a>. We are currently working on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511967">standardizing on one set of update tools</a> and getting <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=519684">localized builds put together for mobile</a>.</p>
<p>John has affectionately dubbed our sub-group &#8220;Big Chunks&#8221; in reference to the scope of work we take on. That&#8217;s a <em>terrible</em> name, and that&#8217;s where you come in. I&#8217;m soliciting alternate naming ideas for our new group. The leading candidate so far was proposed by Armen: &#8220;Chunk Norris&#8221;. I have faith in the collective wisdom of the internet to come up with something better (perhaps not even referencing &#8220;chunks&#8221; at all) or at the very least to entertain me with your attempts.</p>
<p>And&#8230;.GO!</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2009/10/nomenclature/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>No problems</title>
		<link>http://coop.deadsquid.com/2009/10/no-problems/</link>
		<comments>http://coop.deadsquid.com/2009/10/no-problems/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 15:05:03 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1642</guid>
		<description><![CDATA[The Mozilla release engineering (RelEng) team has grown substantially over the past two years. Some members of the team have certain domain-specific focuses (e.g. talos, mobile), but one of our primary team goals has been to get our release automation to the point where anyone on our team can handle a release. Given the emerging [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/aussiegall/360422572/"><img src="http://farm1.static.flickr.com/155/360422572_fd052703d4_t.jpg" alt="Off the rails" title="Off the rails" width="100px" class="alignright" /></a>The Mozilla release engineering (RelEng) team has grown substantially over the past two years. Some members of the team have certain domain-specific focuses (e.g. talos, mobile), but one of our primary team goals has been to get our release automation to the point where anyone on our team can handle a release. Given the emerging branch picture for Mozilla code where we might see simultaneous releases on 3+ code branches (a.k.a release-apalooza), this is becoming increasingly important.</p>
<p>I&#8217;ve done my share of releases over the past few quarters, and until the current release (3.5.4, still in progress as of writing), I <em>would</em> have said that I understood the process pretty well.<br />
<span id="more-1642"></span><br />
The RelEng team has a convention when documenting our release procedures. When a given step completes successfully, we mark it with &#8216;No problems&#8217; in the build notes. The problem with &#8216;No problems&#8217; is that it isn&#8217;t instructive.</p>
<p>The current 3.5.4 release, for which I&#8217;m responsible on the RelEng side, has been about as far from &#8216;No problems&#8217; as I can reasonably imagine. The <a href="https://wiki.mozilla.org/Releases/Firefox_3.5.4/BuildNotes">in-progress build notes are available here</a> for the rubberneckers and/or morbidly curious. We&#8217;ve had respins, we&#8217;ve had aborted betas, we&#8217;ve had <a href="https://wiki.mozilla.org/Releases/Firefox_3.5.4/BuildNotes#Tag_3">automation interrupted at the very first step by tagging collisions</a>, we&#8217;ve had single-locale rebuilds. I&#8217;ve cursed each and every one of these things as they&#8217;ve happened, but I&#8217;ve muddled through them with the help of others on my team. In the process, I&#8217;ve learned far more about the underlying processes than I ever would have if our release automation had simply chugged along to completion.</p>
<p>It turns out what I understood about our release procedure was how to follow a recipe. As long as I didn&#8217;t run out of ingredients and had all the right pots and pans, the recipe came out just as expected. Fortunately (and yes, I am going to say fortunately here because that&#8217;s the whole point), this current release has enabled me to ad-lib in the release kitchen a lot more when things are not perfect. Now if only I could find the release automation equivalent of bacon so I can <a href="/2004/02/freds-dead-baby-freds-dead/">declare culinary victory</a> much earlier in the release process&#8230;but perhaps that&#8217;s where this metaphor breaks down.</p>
<p>Don&#8217;t get me wrong, every time I do a release, I&#8217;ll still be praying to anyone that will listen for build steps to complete with &#8216;No problems,&#8217; but I no longer fear the occasional and inevitable problems that will crop up in a system of this complexity.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2009/10/no-problems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Consequences of l10n nightly updates</title>
		<link>http://coop.deadsquid.com/2009/09/consequences-of-l10n-nightly-updates/</link>
		<comments>http://coop.deadsquid.com/2009/09/consequences-of-l10n-nightly-updates/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 01:56:13 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1541</guid>
		<description><![CDATA[The roll-out of nightly l10n updates has been&#8230;bumpy.﻿﻿﻿﻿ The primary user-visible symptom of this has been that nightly updates for en-US have sometimes been delayed by many hours when compared to when they would have been generated previously.
I hesitate to say that these consequences were unforeseen, but rather that we were initially unsure how/if the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.destructoid.com/the-ten-most-meaningful-videogame-quotes-of-all-time-64837.phtml"><img src="http://bulk.destructoid.com/ul/64837-the-ten-most-meaningful-videogame-quotes-of-all-time/unforeseen-550x.jpg" alt="Unforeseen consequences" width="100px" class="alignright" /></a>The roll-out of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=449828">nightly l10n updates</a> has been&#8230;bumpy.﻿﻿﻿﻿ The primary user-visible symptom of this has been that nightly updates for en-US have sometimes been delayed by many hours when compared to when they would have been generated previously.</p>
<p>I hesitate to say that these consequences were unforeseen, but rather that we were initially unsure how/if the various systems we use to generate, store and serve updates would even cope when they had to deal with more than one locale.<br />
<span id="more-1541"></span><br />
We started by <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502612">setting up a nightly update system in our release engineering staging environment</a>, something that was long overdue anyway. Unfortunately, while this allowed us to test the functionality of our code changes, it didn&#8217;t allow us to test at anywhere near the scale we run at in our production environment. The staging update server was easily able to keep up with the trickle of new builds and mars coming in from a small pool of staging slaves.</p>
<p>Of course, when we moved from staging to production, having a single virtual machine (VM) producing updates for all locales across all branches quickly proved to be a formidable bottleneck. We started by only generating nightly updates for en-US and all locales on mozilla-central. We then started generating and serving updates for the new 1.9.2 branch shortly after it was created. At that point, we had to pause and take a good hard look at the time it was taking our single update VM to generate all the partial updates we were expecting of it. </p>
<p>Instead of only 9 partial updates per day (3 active code branches x 3 platforms, en-US only), we were now expecting the system to generate >400 partial updates (2 code branches with l10n nightly updates enabled x 3 platforms x ~70 locales) per day. Each update takes between 1 and 2 minutes to generate, so in a worst-case scenario, it could take up to 14 hours to create all the partial updates. If we had added another branch at that point, we might well have had gotten into a cycle where we never caught up with pending updates!</p>
<p>The nightly update generation script/cronjob had a few flaws that quickly became evident under the new load. </p>
<p>First, the script processed all pending updates in a single go when kicked off via cron. All the new builds that have been created since the last attempt are synced to the VM and then update generation commences. Any new builds that are created while the current iteration of the script is running have to wait until the entire current batch is finished and the crontab entry fires again. </p>
<p>Second, there was no prioritization of builds within the update generation script. Generally, it was first-in-first-out (FIFO) but it also depended on the vagaries of how the internal hash was created. This meant that en-US updates no longer occurred immediately, but whenever they happened to enter the queue. This turned out to be especially bad for Windows, our most popular platform. </p>
<p>Due to the increased cycle time due to profile-guided optimization (PGO), nightly builds on Windows often finish after 7am PDT. Unfortunately, all our l10n nightly repacks were scheduled to start at 7am PDT. This caused a few unfortunate problems. Sometimes l10n nightly repacks would repack the Windows build from the previous day, since the current nightly was still in progress. New l10n builds from other platforms would also often enter the queue for nightly update generation before the new en-US builds for Windows were ready. Windows nightly updates sometimes did not get processed until late in the afternoon! This was a serious regression for nightly testers.</p>
<p>A couple of quick fixes were available. Armen added some code to the nightly update generation script to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511901">sort the pending update graph so that any pending en-US updates in the current batch would always be processed first</a>. I also changed the way <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=469364">l10n nightly builds were being created so that they are triggered as soon as the corresponding base en-US nightly is finished building</a>. This allowed builds to enter the nightly update generation queue sooner (well, on Linux and Mac at least), but also fixed the longstanding problem on Windows of sometimes creating l10n repacks using the build from the previous day.  Together, these changes sped up the entire nightly update generation process by about 2 hours in aggregate. They also allowed us to get nightly updates for en-US on Windows out before noon PDT. This is acceptable in the interim, but not ideal.</p>
<p>The timing is fortuitous though, since I had already planned to tackle <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=410806">other</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=444050">aspects</a> of the nightly update generation system over the next few weeks. It is a natural extension of that work to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511967">change nightly update generation from a cronjob happening on a single VM to build step that happens on the build slave at the end of each nightly build</a>. We already have this parallelism setup, so why not use it?</p>
<p>For any nightly testers out there, hopefully you can bear with us for a little while. We&#8217;ve greatly swelled your (potential) numbers by opening up nightly updates to the l10n community, but it will be a few more weeks until things are back to normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2009/09/consequences-of-l10n-nightly-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nightly updates for localized builds on mozilla-central</title>
		<link>http://coop.deadsquid.com/2009/08/nightly-updates-for-localized-builds-on-mozilla-central/</link>
		<comments>http://coop.deadsquid.com/2009/08/nightly-updates-for-localized-builds-on-mozilla-central/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 21:22:45 +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=1500</guid>
		<description><![CDATA[We&#8217;ve reached another milestone in our ongoing effort to elevate localized (l10n) builds to first class citizens within the Mozilla release engineering framework. 
Last week, Armen flipped the configuration switch to turn on nightly updates for l10n builds on mozilla-central. After a few downtime-related hiccups last week that tanked nightly builds across the board, this [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve reached another milestone in our <a href="/2009/06/lots-of-small-steps-add-up-to-big-changes/">ongoing effort to elevate localized (l10n) builds to first class citizens within the Mozilla release engineering framework</a>. </p>
<p>Last week, <a href="http://armenzg.blogspot.com/2009/08/updates-nightly-just-en-us.html">Armen flipped the configuration switch</a> to turn on nightly updates for l10n builds on mozilla-central. After a few downtime-related hiccups last week that tanked nightly builds across the board, this morning we were finally able to serve partial updates to l10n nightly users on all platforms.</p>
<p>This is another huge step forward. Nightly testers who use localized builds no longer have to download an entirely new localized browser every day, but can instead rely on the Firefox update service to automatically download a much smaller binary partial update for them. Aside from allowing us to make sure l10n nightly testers are always testing the most recent code and string changes, this may also allow us to recruit a new batch of nightly l10n testers who were previously worried about the bandwidth involved in helping us test on an ongoing basis.</p>
<p>Over the coming weeks we&#8217;re hoping to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=510524">enable l10n nightly updates on the newly-cut 1.92 branch</a> as well. We are dealing with many more builds passing through the staging server to the update generation machinery now, so there&#8217;s some housekeeping to be done first to make sure  that no builds, mars, or snippets are piling up in dark dusty corners anywhere.</p>
<p>Thanks to Armen for daring to touch the update code at all, to Nick for his update support, and to Axel for his tireless l10n work.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2009/08/nightly-updates-for-localized-builds-on-mozilla-central/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Prevent missing files in your hg commit</title>
		<link>http://coop.deadsquid.com/2009/07/prevent-missing-files-in-your-hg-commit/</link>
		<comments>http://coop.deadsquid.com/2009/07/prevent-missing-files-in-your-hg-commit/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 21:46:58 +0000</pubDate>
		<dc:creator>Coop</dc:creator>
				<category><![CDATA[Build/Release]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[hgignore]]></category>
		<category><![CDATA[hgrc]]></category>

		<guid isPermaLink="false">http://coop.deadsquid.com/?p=1463</guid>
		<description><![CDATA[The Mozilla RelEng team was having one of our patented digressional discussions in IRC yesterday when we got around to the subject of hg irritations. My personal annoyance was that I frequently need to check-in patches for other people who don&#8217;t have commit access, but I don&#8217;t always remember to check before pushing to make [...]]]></description>
			<content:encoded><![CDATA[<p>The Mozilla RelEng team was having one of our patented digressional discussions in IRC yesterday when we got around to the subject of hg irritations. My personal annoyance was that I frequently need to check-in patches for other people who don&#8217;t have commit access, but I don&#8217;t always remember to check before pushing to make sure I didn&#8217;t miss adding any new files created by the patch. </p>
<p>Because <a href="http://blog.mozilla.com/ted/">Ted</a> is more about solving problems than bitching about them, he suggested I write a hook to prevent myself from missing files. Here it is:</p>
<blockquote><p>
<code>[hooks]<br />
precommit = hg status | (! grep '^?')</code></p></blockquote>
<p>Add that to your .hgrc file (and setup some good global <a href="http://www.selenic.com/mercurial/hgignore.5.html">hgignore</a> rules) and you&#8217;re golden.</p>
]]></content:encoded>
			<wfw:commentRss>http://coop.deadsquid.com/2009/07/prevent-missing-files-in-your-hg-commit/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
