<?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>chris' random ramblings &#187; Mozilla</title>
	<atom:link href="http://atlee.ca/blog/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://atlee.ca/blog</link>
	<description>programming, photography, media, and anything else that strikes my fancy</description>
	<lastBuildDate>Fri, 13 Nov 2009 15:24:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>One useful script, a linux version</title>
		<link>http://atlee.ca/blog/2009/11/13/one-useful-script-a-linux-version/</link>
		<comments>http://atlee.ca/blog/2009/11/13/one-useful-script-a-linux-version/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:55:18 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=630</guid>
		<description><![CDATA[Johnathan posted links to 3 scripts he finds useful.  His sattap script looked handy, so I hacked it up for linux.  Run it to do a screen capture, and upload the image to a website you have ssh access into.  The link is printed out, and put into the clipboard.
Hope you find [...]]]></description>
			<content:encoded><![CDATA[<p>Johnathan posted links to <a href="http://blog.johnath.com/2009/11/11/three-stupid-scripts-i-find-useful/">3 scripts he finds useful</a>.  His sattap script looked handy, so I hacked it up for linux.  Run it to do a screen capture, and upload the image to a website you have ssh access into.  The link is printed out, and put into the clipboard.</p>
<p>Hope you find this useful!</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># sattap - Send a thing to a place</span>
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-e</span>
&nbsp;
<span style="color: #007800;">SCP_USER</span>=<span style="color: #ff0000;">'catlee'</span>
<span style="color: #007800;">SCP_HOST</span>=<span style="color: #ff0000;">'people.mozilla.org'</span>
<span style="color: #007800;">SCP_PATH</span>=<span style="color: #ff0000;">'~/public_html/sattap/'</span>
&nbsp;
<span style="color: #007800;">HTTP_URL</span>=<span style="color: #ff0000;">&quot;http://people.mozilla.org/~catlee/sattap/&quot;</span>
&nbsp;
<span style="color: #007800;">FILENAME</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #000000; font-weight: bold;">|</span> md5sum <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-c</span> <span style="color: #000000;">8</span><span style="color: #000000; font-weight: bold;">`</span>.png
<span style="color: #007800;">FILEPATH</span>=<span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$FILENAME</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Capturing...
import <span style="color: #007800;">$FILEPATH</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> Copying to <span style="color: #007800;">$SCP_HOST</span>
<span style="color: #c20cb9; font-weight: bold;">scp</span> <span style="color: #007800;">$FILEPATH</span> <span style="color: #800000;">${SCP_USER}</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #800000;">${SCP_HOST}</span>:<span style="color: #007800;">$SCP_PATH</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> Deleting <span style="color: #7a0874; font-weight: bold;">local</span> copy
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$FILEPATH</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$HTTP_URL</span><span style="color: #007800;">$FILENAME</span> <span style="color: #000000; font-weight: bold;">|</span> xclip <span style="color: #660033;">-selection</span> clipboard
<span style="color: #7a0874; font-weight: bold;">echo</span> Your <span style="color: #c20cb9; font-weight: bold;">file</span> should be at <span style="color: #007800;">$HTTP_URL</span><span style="color: #007800;">$FILENAME</span>, <span style="color: #c20cb9; font-weight: bold;">which</span> is also <span style="color: #000000; font-weight: bold;">in</span> your paste buffer</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/11/13/one-useful-script-a-linux-version/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What happens when you push</title>
		<link>http://atlee.ca/blog/2009/11/02/what-happens-when-you-push/</link>
		<comments>http://atlee.ca/blog/2009/11/02/what-happens-when-you-push/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:00:06 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[blitz]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=600</guid>
		<description><![CDATA[As of November 1st, when you push a change to mozilla-central, the following builds and tests get triggered:




Linux optimized build

mochitest 1/5
mochitest 2/5
mochitest 3/5
mochitest 4/5
mochitest 5/5
everythingelse
Talos
Talos nochrome
Talos jss
Talos dirty
Talos tp4
Talos cold

Linux debug build + leak tests

mochitest 1/5
mochitest 2/5
mochitest 3/5
mochitest 4/5
mochitest 5/5
everythingelse

Linux optimized + refcounting build

mochitest 1/5
mochitest 2/5
mochitest 3/5
mochitest 4/5
mochitest 5/5
everythingelse





Windows optimized build

mochitest 1/5
mochitest 2/5
mochitest 3/5
mochitest 4/5
mochitest [...]]]></description>
			<content:encoded><![CDATA[<p>As of November 1st, when you push a change to mozilla-central, the following builds and tests get triggered:</p>
<table>
<tr>
<td>
<ul>
<li>Linux optimized build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
<li>Talos</li>
<li>Talos nochrome</li>
<li>Talos jss</li>
<li>Talos dirty</li>
<li>Talos tp4</li>
<li>Talos cold</li>
</ul>
<li>Linux debug build + leak tests</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
<li>Linux optimized + refcounting build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
</ul>
</td>
<td>
<ul>
<li>Windows optimized build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
<li>XP Talos</li>
<li>XP Talos nochrome</li>
<li>XP Talos jss</li>
<li>XP Talos dirty</li>
<li>XP Talos tp4</li>
<li>Vista Talos</li>
<li>Vista Talos nochrome</li>
<li>Vista Talos jss</li>
<li>Vista Talos dirty</li>
<li>Vista Talos tp4</li>
</ul>
<li>Windows debug build + leak tests</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
<li>Windows optimized + refcounting build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
</ul>
</td>
<td>
<ul>
<li>Mac OSX optimized build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
<li>Leopard Talos</li>
<li>Leopard Talos nochrome</li>
<li>Leopard Talos jss</li>
<li>Leopard Talos dirty</li>
<li>Leopard Talos tp4</li>
<li>Leopard Talos cold</li>
</ul>
<li>Mac OSX debug build + leak tests</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
<li>Mac OSX optimized + refcounting build</li>
<ul>
<li>mochitest 1/5</li>
<li>mochitest 2/5</li>
<li>mochitest 3/5</li>
<li>mochitest 4/5</li>
<li>mochitest 5/5</li>
<li>everythingelse</li>
</ul>
</ul>
</td>
<td>
<ul>
<li>Linux 64-bit build</li>
<li>Maemo Build</li>
<ul>
<li>mochitest chrome</li>
<li>crashtest</li>
<li>mochitest 1/4</li>
<li>mochitest 2/4</li>
<li>mochitest 3/4</li>
<li>mochitest 4/4</li>
<li>reftest</li>
<li>xpcshell</li>
<li>Talos Tdhtml</li>
<li>Talos Tgfx</li>
<li>Talos Tp3</li>
<li>Talos Tp4</li>
<li>Talos Tp4 nochrome</li>
<li>Talos Ts</li>
<li>Talos Tsspider</li>
<li>Talos Tsvg</li>
<li>Talos Twinopen</li>
<li>Talos non-Tp1</li>
<li>Talos non-Tp2</li>
</ul>
<li>WinCE build</li>
<li>Windows Mobile build</li>
<li>Linux Fennec Desktop build</li>
<li>Windows Fennec Desktop build</li>
<li>Mac OSX Fennec Desktop build</li>
</ul>
</td>
</tr>
</table>
<p>That&#8217;s 111 distinct build and test jobs that get spread out across our build and tests pools.  A total of <strong>40 machine hours per checkin</strong> in our main build, test and talos pools is used, plus an additional 25 machine hours on the mobile devices!!!</p>
<p>In addition, we also do certain types of jobs on a periodic basis:</p>
<ul>
<li>Nightly builds</li>
<li>XULRunner builds</li>
<li>Shark builds</li>
<li>Code coverage runs</li>
<li>L10n repacks for 72 locales and 7 platforms (Windows, Mac OSX, Linux, Windows Fennec, Mac OSX Fennec, Linux Fennec, Maemo); that&#8217;s 504 individual repacks!</li>
</ul>
<p>In the course of collecting the data for this post, I&#8217;ve been constantly amazed at the amount of stuff that we&#8217;re doing, and the scale of the infrastructure!  The list above is just for our mozilla-central branch, and I&#8217;ve most likely missed something.  We do similar amounts of work for our other branches as well: Try, mozilla-1.9.2, mozilla-1.9.1, TraceMonkey, Electrolysis, and Places.  Things have certainly changed a lot in the past year.</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/11/02/what-happens-when-you-push/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>When do tests get run?</title>
		<link>http://atlee.ca/blog/2009/10/28/when-do-tests-get-run/</link>
		<comments>http://atlee.ca/blog/2009/10/28/when-do-tests-get-run/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 22:51:23 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[blitz]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=575</guid>
		<description><![CDATA[Continuing our RelEng Blogging Blitz, I&#8217;m going to be discussing how and when tests get triggered in our build automation systems.
We&#8217;ve got two basic classes of tests right now: unit tests, and performance tests, a.k.a. Talos.  The unit tests are run on the same pool of machines that the builds are done on, while [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing our <a href="http://atlee.ca/blog/2009/10/26/releng-blogging-blitz/">RelEng Blogging Blitz</a>, I&#8217;m going to be discussing how and when tests get triggered in our build automation systems.</p>
<p>We&#8217;ve got two basic classes of tests right now: unit tests, and performance tests, a.k.a. Talos.  The unit tests are run on the same pool of machines that the builds are done on, while the performance tests are run on a separate pool of around 100 Mac Minis.  Both kinds of tests are triggered in similar ways.</p>
<p>For refcounting (&#8221;unittest&#8221;) builds, once the compile step is complete, the binaries are packaged up with <code>make package</code>, the tests are packaged up with <code>make package-tests</code>, the symbols are packaged up with <code>make buildsymbols</code>, and then the whole lot is uploaded to stage.mozilla.org using <code>make upload</code>.  Once they&#8217;re uploaded, we have valid URLs that refer to the builds, tests, and symbols.  We then trigger the relevant unit test runs on that build.  When a slave is assigned this test run, it then downloads the build, tests, and symbols from stage and starts running the tests.</p>
<p>On mozilla-central, we&#8217;ve also recently started to run unittests on optimized and debug builds.  We&#8217;re hoping to bring this functionality to mozilla-1.9.2 once all the kinks are worked out.</p>
<p>For regular optimized builds, in addition to unittests, we also trigger performance tests on the freshly minted build.  OSX builds are currently tested on Tiger and Leopard for mozilla-1.9.1 and mozilla-1.9.2, and on Leopard only for mozilla-central and project branches. Windows builds are tested on XP and Vista, and Linux builds are tested on Ubuntu.</p>
<p>In addition to having tests triggered automatically by builds, the <a href="https://wiki.mozilla.org/ReleaseEngineering:Sheriffing">Release Engineering Sheriff</a> can re-run unittests or performance tests on request!</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/10/28/when-do-tests-get-run/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When do builds happen?</title>
		<link>http://atlee.ca/blog/2009/10/26/when-do-builds-happen/</link>
		<comments>http://atlee.ca/blog/2009/10/26/when-do-builds-happen/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 23:54:30 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[blitz]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=559</guid>
		<description><![CDATA[As part of our RelEng Blogging Blitz, I&#8217;ll give a quick overview of when and how builds get triggered on our main build infrastructure.
There are three ways builds can be triggered.
The first, and most common way, is when a developer pushes his or her changes to hg.mozilla.org.  Our systems check for new changes every [...]]]></description>
			<content:encoded><![CDATA[<p>As part of our <a href="http://atlee.ca/blog/2009/10/26/releng-blogging-blitz/">RelEng Blogging Blitz</a>, I&#8217;ll give a quick overview of when and how builds get triggered on our main build infrastructure.</p>
<p>There are three ways builds can be triggered.</p>
<p>The first, and most common way, is when a developer pushes his or her changes to hg.mozilla.org.  Our systems check for new changes every minute or so, and put new changes into a queue.  Once the tree has been quiet for 3 minutes (i.e. no changes for 3 minutes), a new build request is triggered with all queued changes.  If there is a free slave available, then a new build starts immediately, otherwise the build request is put in a queue.</p>
<p>The second way builds are triggered is via a nightly scheduler.  We start triggering builds on branches at 3:02am pacific local time (some branches are triggered at 3:32am or 4:02 am).  We run at 3:02am to avoid problems with daylight savings &lt;-&gt; standard time transitions.  In the fall there are two 2:59am&#8217;s when we go back to standard time, and in the spring transition there is no 2:59am.  The start times are staggered to avoid slamming hg.mozilla.org, or other shared resources.</p>
<p>The last way builds can be triggered is manually.  The <a href="https://wiki.mozilla.org/ReleaseEngineering:Sheriffing">Release Engineering Sheriff</a> can trigger builds on specific revisions, or rebuild past builds pretty easily, so if you need a build triggered, contact your friendly neighbourhood RelEng Sheriff!</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/10/26/when-do-builds-happen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RelEng Blogging Blitz!</title>
		<link>http://atlee.ca/blog/2009/10/26/releng-blogging-blitz/</link>
		<comments>http://atlee.ca/blog/2009/10/26/releng-blogging-blitz/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 05:00:01 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=562</guid>
		<description><![CDATA[Folks from RelEng are going to be blogging about various bits of our build, test,  and release automation infrastructure this week.
Stay tuned for more!
]]></description>
			<content:encoded><![CDATA[<p>Folks from RelEng are going to be blogging about various bits of our build, test,  and release automation infrastructure this week.</p>
<p>Stay tuned for more!</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/10/26/releng-blogging-blitz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RelEng Blogging Blitz is coming soon!</title>
		<link>http://atlee.ca/blog/2009/10/20/releng-blogging-blitz-coming-soon/</link>
		<comments>http://atlee.ca/blog/2009/10/20/releng-blogging-blitz-coming-soon/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:39:33 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=568</guid>
		<description><![CDATA[Several members of the Release Engineering team are going to be blogging next week about various bits of the build, test, and release automation infrastructure for Firefox.
If there&#8217;s something about our infrastructure you&#8217;ve always wondered about, give us a shout and we&#8217;ll do our best to explain it!
]]></description>
			<content:encoded><![CDATA[<p>Several members of the Release Engineering team are going to be blogging next week about various bits of the build, test, and release automation infrastructure for Firefox.</p>
<p>If there&#8217;s something about our infrastructure you&#8217;ve always wondered about, give us a shout and we&#8217;ll do our best to explain it!</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/10/20/releng-blogging-blitz-coming-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming changes to unittests</title>
		<link>http://atlee.ca/blog/2009/09/16/upcoming-changes-to-unittests/</link>
		<comments>http://atlee.ca/blog/2009/09/16/upcoming-changes-to-unittests/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:11:38 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[unittests]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=500</guid>
		<description><![CDATA[Since May, we&#8217;ve been running our unittest suite twice for each checkin: once for the current reference counting build + test job, and once for the packaged unittests.

Our end goal is to run unittests on our optimized and debug builds.  We would stop doing our current reference counting builds, since the debug builds also [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://atlee.ca/blog/2009/05/15/parallelizing-unittests/">Since May</a>, we&#8217;ve been running our unittest suite twice for each checkin: once for the current reference counting build + test job, and once for the packaged unittests.<br />
<img src="http://atlee.ca/blog/wp-content/uploads/the_history_of_tests.png" alt="Current way of running tests" title="Current way of running tests" width="633" height="615" class="size-full wp-image-530" /></p>
<p>Our end goal is to run unittests on our optimized and debug builds.  We would stop doing our current reference counting builds, since the debug builds also have reference counting enabled.<br />
<img src="http://atlee.ca/blog/wp-content/uploads/the_future_of_tests.png" alt="New way of running tests" title="New way of running tests" width="574" height="523" class="size-full wp-image-531" /></p>
<p>To get there requires a few intermediate steps:</p>
<ul>
<li> Turn off tests for the current build+tests unittest job.  We&#8217;re hoping to do this soon.  The tests run on the packaged builds would still be active at this point (first phase of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=507540">bug 507540</a>).</li>
<li>Turn on tests for debug builds (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=372581">bug 372581</a>).  There&#8217;s a bit of work left to do here to make sure that hung processes don&#8217;t kill the buildbot master with multi-gigabyte log files.</li>
<li>Turn on tests for optimized builds (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=486783">bug 486783</a>).  This would include nightly and release builds eventually as well, and will give us test coverage on our windows PGO builds.</li>
<li>Turn off original reference counting builds completely, along with the tests done on these builds (second phase of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=507540">bug 507540</a>).</li>
</ul>
<p>At some point we&#8217;re also going to be changing how we run mochitests, by splitting the tests up according to which directory they&#8217;re in, and then running each of the subset of tests in parallel on different machines (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=452861">bug 452861</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/09/16/upcoming-changes-to-unittests/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Welcome Martin!</title>
		<link>http://atlee.ca/blog/2009/08/16/welcome-martin/</link>
		<comments>http://atlee.ca/blog/2009/08/16/welcome-martin/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 15:03:47 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Baby]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=538</guid>
		<description><![CDATA[
Martin Joseph AtLee was born by caesarean section on Wednesday morning and weighed in at 7 pounds, 15 ounces.  The surgery went well for both Melissa and Martin.  Mel had quite a bit of blood loss later in the day on Wednesday, giving us a bit of a scare as dozens of nurses [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://atlee.ca/gallery/Martin/"><img alt="" src="http://atlee.ca/gallery/d/20264-2/dsc_7569.jpg" title="Martin" class="alignnone" width="457" height="640" /></a></p>
<p>Martin Joseph AtLee was born by caesarean section on Wednesday morning and weighed in at 7 pounds, 15 ounces.  The surgery went well for both Melissa and Martin.  Mel had quite a bit of blood loss later in the day on Wednesday, giving us a bit of a scare as dozens of nurses and doctors rushed into her room!  She recovered nicely the next day though.</p>
<p>Martin had a bit of jaundice, so he got to spend Friday night in a tanning salon!</p>
<p><a href="http://atlee.ca/gallery/Martin/dsc_7667.jpg.html"><img alt="" src="http://atlee.ca/gallery/d/20270-2/dsc_7667.jpg" title="Soaking in the rays" class="alignnone" width="640" height="423" /></a></p>
<p>Thomas has been a wonderful big brother, always wanting to hold and kiss his baby brother.</p>
<p><a href="http://atlee.ca/gallery/Martin/dsc_7598.jpg.html"><img alt="" src="http://atlee.ca/gallery/d/20279-2/dsc_7598.jpg" class="alignnone" width="640" height="425" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/08/16/welcome-martin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Baby on the way!</title>
		<link>http://atlee.ca/blog/2009/08/12/baby-on-the-way/</link>
		<comments>http://atlee.ca/blog/2009/08/12/baby-on-the-way/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 14:00:49 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Baby]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=489</guid>
		<description><![CDATA[We&#8217;re off to the hospital for the arrival of baby #2!  A name, and pictures to follow!

]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re off to the hospital for the arrival of baby #2!  A name, and pictures to follow!</p>
<p><a href="http://atlee.ca/gallery/Baby/dsc_7366.jpg.html"><img src="http://atlee.ca/gallery/d/20151-2/dsc_7366.jpg" alt="Waiting for Baby" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/08/12/baby-on-the-way/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Faster signing</title>
		<link>http://atlee.ca/blog/2009/08/04/faster-signing/</link>
		<comments>http://atlee.ca/blog/2009/08/04/faster-signing/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:34:22 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://atlee.ca/blog/?p=474</guid>
		<description><![CDATA[Once upon a time, when Mozilla released a new version of Firefox, signing all of the .exes and .dlls for all of the locales took a few hours.  As more locales were added, and the file sizes increased, this time has increased to over 8 hours to sign all the locales in a Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>Once upon a time, when Mozilla released a new version of Firefox, signing all of the .exes and .dlls for all of the locales took a few hours.  As more locales were added, and the file sizes increased, this time has increased to <strong>over 8 hours to sign all the locales in a Firefox 3.5 release</strong>.  This has been a huge bottleneck for getting new releases out the door.</p>
<p>For our most recent Firefox releases, we&#8217;ve started using some new signing infrastructure that I&#8217;ve been working on over the past few months.  There are quite a few reasons why the new infrastructure is faster:</p>
<ul>
<li><strong>Faster hardware.</strong>  We&#8217;ve moved from an aging single core system to a new quad-core 2.5 GHz machine with 4 GB of RAM.</li>
<li><strong>Concurrent signing of locales.</strong>  Since we&#8217;ve got more cores on the system, we should take advantage of them!  The new signing scripts spawn off 4 child processes, each one grabs one locale at a time to process.</li>
<li><strong>In-process compression/decompression.</strong>  Our complete.mar files use bz2 compression for every file in the archive.  The old scripts would call the &#8216;bzip2&#8242; and &#8216;bunzip2&#8242; binaries to do compression and decompression.  It&#8217;s significantly faster to do these operations in-process.</li>
<li><strong>Better caching of signed files.</strong>  The biggest win came from the simple observation that after you sign a file, and re-compress it to include in a .mar file, you should be caching the compressed version to use later.  The old scripts did cache signed files, but only the decompressed versions.  So to sign the contents of our mar files, the contents would have to be completely unpacked and decompressed, then the cache was checked, files were signed or pulled from cache as necessary, and then re-compressed again.
<p>Now, we unpack the mar file, check the cache, and only decompress / sign / re-compress any files that need signing but aren&#8217;t in the cache.  We don&#8217;t even bother decompressing files that don&#8217;t need signing, another difference from the original scripts.</p>
<p>Big thanks to Nick Thomas for having the idea for this at the <a href="http://john.jubjubs.net/2009/05/01/poetry-pragmatics-mozilla-all-hands-2009/">Mozilla All-Hands</a> in April.</li>
</ul>
<p>As a result of all of this, signing all our locales can be done in <strong>less than 15 minutes</strong> now!  See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=470146">bug 470146</a> for the gory details.</p>
<p>The main bottleneck at this point is the time it takes to transfer all of the files to the signing machine and back again.  For a 3.5 release, there&#8217;s around 3.5 GB of data to transfer back and forth, which takes on the order of 10 minutes to pull down to the signing machine, and another few minutes to push back after signing is done.</p>
]]></content:encoded>
			<wfw:commentRss>http://atlee.ca/blog/2009/08/04/faster-signing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
