<?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>Maggot Brain &#187; Mozilla</title>
	<atom:link href="http://blog.mozilla.com/axel/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/axel</link>
	<description>Free your mind and your ass will follow.</description>
	<lastBuildDate>Thu, 12 Nov 2009 16:45:18 +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>Crowdsourcing &#8230; exactly what?</title>
		<link>http://blog.mozilla.com/axel/2009/11/12/crowdsourcing-exactly-what/</link>
		<comments>http://blog.mozilla.com/axel/2009/11/12/crowdsourcing-exactly-what/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:45:18 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[crowd]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=232</guid>
		<description><![CDATA[I&#8217;ve just run across an interesting suggestion for translating &#8220;Smiley&#8221; into English. Screenshot of it would be

whereas the original (triple-licensed) translation suggestion is on l10n.mozilla.org/narro.
Another interesting aspect of crowd sourcing, box-of-chocolates style. You never know what you get.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just run across an interesting suggestion for translating &#8220;Smiley&#8221; into English. Screenshot of it would be</p>
<p><a href="http://www.flickr.com/photos/axelhecht/4098632664/" title="Crowd sourcing exactly what? by Axel Hecht, on Flickr"><img src="http://farm3.static.flickr.com/2781/4098632664_d87d4594cd.jpg" width="500" height="202" alt="Crowd sourcing exactly what?" /></a></p>
<p>whereas the original (triple-licensed) <em>translation</em> suggestion is on <a href="https://l10n.mozilla.org/narro/narro_context_suggest.php?l=en-US&#038;p=3&#038;f=0&#038;c=5784&#038;tf=1&#038;st=1&#038;s=%27Smiley%27&#038;ci=1&#038;cc=1&#038;o=-1&#038;a=0">l10n.mozilla.org/narro</a>.</p>
<p>Another interesting aspect of crowd sourcing, box-of-chocolates style. You never know what you get.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/11/12/crowdsourcing-exactly-what/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PS: l10n-merge</title>
		<link>http://blog.mozilla.com/axel/2009/11/06/ps-l10n-merge/</link>
		<comments>http://blog.mozilla.com/axel/2009/11/06/ps-l10n-merge/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 15:02:34 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[build]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=227</guid>
		<description><![CDATA[Armen just blogged about this, and as it&#8217;s constantly mentioned around l10n, I wanted to add a bit more detail to l10n-merge.
l10n-merge is originally an idea by our Japanese localizer dynamis. The current implementation used in the builds is by me, integrated as an option to compare-locales. There are spin-offs of that algorithm in the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://armenzg.blogspot.com/2009/11/firefox-release-engineering.html">Armen just blogged about this</a>, and as it&#8217;s constantly mentioned around l10n, I wanted to add a bit more detail to l10n-merge.</p>
<p>l10n-merge is originally an idea by our Japanese localizer dynamis. The current implementation used in the builds is by me, integrated as an option to compare-locales. There are spin-offs of that algorithm in the silme library, too.</p>
<p>l10n-merge attempts to solve one reason for &#8220;yellow screens of death&#8221;, i.e., XML parsing errors triggered by incomplete localizations. This is really crucial as localizations don&#8217;t just pop up by swinging magic wands, they&#8217;re incremental work, and a huge chunk of that. So in order to test your work, you need to see the strings you have in, say, Firefox, without having the other 4000 strings done yet. Other l10n-infrastructures handle this by falling back to the original language at runtime (gettext), but doing that at runtime of course has perf impact, and size. l10n-merge does the same thing at compile (repackaging) time.</p>
<p>Design goals for l10n-merge were:</p>
<ul>
<li>not mess with any source repositories</li>
<li>not do any file-io that&#8217;s not really needed</li>
</ul>
<p>Thus, in order to not mess with the source repos, l10n-merge doesn&#8217;t modify the sources inline, but creates copies of the files it touches in a separate dir. Commonly, we&#8217;re using &#8216;<code>merged</code>&#8216; in the build dir. Now, creating a full copy of everything would be tons of file io, so l10n-merge only creates copies for those files which actually need to get entities added to existing localized content. This plays together with code in JarMaker.py which is able to pick up locale chrome content from several source dirs.</p>
<p>A Firefox localization contains some 450 files, and say for the current 9 B1-to-B2 missing strings in two files, it would copy over those two files from l10n, and add the missing entities to the end. Then JarMaker is called with the right options, and for those two files, will pick them up from <code>merged</code>, the rest of the localization is gotten from l10n. For missing files, it actually looks into the en-US sources, too, so we don&#8217;t have to do anything for those. To give an example, for <code>chrome/browser/foo</code> in the <code>browser</code> &#8216;module&#8217;, it searches:</p>
<ol>
<li><code>.../merged/<span style="color:blue">browser</span>/chrome/foo</code></li>
<li><code>l10n/ab-CD/<span style="color:blue">browser</span>/chrome/foo</code></li>
<li><code>mozilla/<span style="color:blue">browser</span>/<span style="color:red">locales/en-US</span>/chrome/foo</code></li>
</ol>
<p>Now it&#8217;s time to list some pitfalls that come with l10n-merge:</p>
<ul>
<li>If you&#8217;re passing the wrong dir for mergedir, nothing breaks. All build logic breakage would come from missing files, and due to the fallback to en-US, there are no missing files.</li>
<li>l10n-merge, as compare-locales, doesn&#8217;t cover XML parsing errors inside entity values yet. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504339">Bug 504339</a> is filed, there are some tricky questions on reporting, as well as having to write an XML parser from scratch.</li>
<li>l10n-merge only appends entities, but that&#8217;s fine 95% of the time. Only counter-examples are DTDs including other DTDs.</li>
<li>People using l10n-merge need to manually maintain the merge dir. Pruning it via compare-locales is risky business if you specify the wrong path by accident, so I consider this a feature. But if you&#8217;re seeing Spanish in a French build, clobber the mergedir and build again :-)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/11/06/ps-l10n-merge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Axel loves the web</title>
		<link>http://blog.mozilla.com/axel/2009/09/22/axel-loves-the-web/</link>
		<comments>http://blog.mozilla.com/axel/2009/09/22/axel-loves-the-web/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 17:49:24 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=223</guid>
		<description><![CDATA[Good for the planet earth, I didn&#8217;t print poster number 5. I&#8217;ve put it up on people.mozilla.org, hopefully that&#8217;s serving it with a mime type that&#8217;s full of love.
Bad for planet mozilla, I did take a picture and here I&#8217;m blogging about it.

Yes, I love the web so much, you can hardly see me. But [...]]]></description>
			<content:encoded><![CDATA[<p>Good for the planet earth, I didn&#8217;t print poster number 5. I&#8217;ve put it up on <a href="http://people.mozilla.org/~axel/onewebday/">people.mozilla.org</a>, hopefully that&#8217;s serving it with a mime type that&#8217;s full of love.</p>
<p>Bad for planet mozilla, I did take <a href="http://www.flickr.com/photos/axelhecht/3945318708/">a picture</a> and here I&#8217;m blogging about it.</p>
<p><a href="http://www.flickr.com/photos/axelhecht/3945318708/"><img src="http://farm4.static.flickr.com/3463/3945318708_8ec2bcd873.jpg" alt="Axel loves the web" /></a></p>
<p>Yes, I love the web so much, you can hardly see me. But you do see real full screen on a mac, German namoroka nightly. And you the same one web on my N810 (not so current 1.9.2 nightly). And the infamous &#8220;Don&#8217;t hurt the web&#8221; shirt with that, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/09/22/axel-loves-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String freezes on 1.9.2</title>
		<link>http://blog.mozilla.com/axel/2009/09/09/string-freezes-on-1-9-2/</link>
		<comments>http://blog.mozilla.com/axel/2009/09/09/string-freezes-on-1-9-2/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 21:59:49 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=219</guid>
		<description><![CDATA[As we&#8217;re struggling with our string freezes for 1.9.2, I figured I&#8217;d put something up on planet for everyone to notice:

String freezes are one only, and done with. No &#8220;I&#8217;ll get that in the next milestone&#8221;. First string freeze is the last.
String freeze for mobile-browser and toolkit was last Friday. For mobile-browser seriously this Friday, [...]]]></description>
			<content:encoded><![CDATA[<p>As we&#8217;re struggling with our string freezes for 1.9.2, I figured I&#8217;d put something up on planet for everyone to notice:</p>
<ul>
<li>String freezes are one only, and done with. No &#8220;I&#8217;ll get that in the next milestone&#8221;. First string freeze is the last.</li>
<li>String freeze for mobile-browser and toolkit was last Friday. For mobile-browser seriously this Friday, Sept 11th. (*).</li>
<li>String freeze for Firefox 3.6 is Sept 14th.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/09/09/string-freezes-on-1-9-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hacking DTDs into Bespin</title>
		<link>http://blog.mozilla.com/axel/2009/08/20/hacking-dtds-into-bespin/</link>
		<comments>http://blog.mozilla.com/axel/2009/08/20/hacking-dtds-into-bespin/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 15:40:00 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Bespin]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=216</guid>
		<description><![CDATA[Just a quick side note, I&#8217;m hacking on a DTD mode for Bespin. The code is pretty ughly still, but the output is getting OK.

It already supports marking up errors, to a similar extent that they&#8217;re found in compare-locales these days. Better parsing for the actual values is a bigger task, in particular one that [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick side note, I&#8217;m hacking on a DTD mode for <a href="https://bespin.mozilla.com/">Bespin</a>. The code is pretty ughly still, but the output is getting OK.</p>
<p><a href="http://www.flickr.com/photos/axelhecht/3839873768/"><img src="http://farm4.static.flickr.com/3433/3839873768_32b8e2b6ec.jpg" alt="screenshot of editing a DTD in Bespin" /></a></p>
<p>It already supports marking up errors, to a similar extent that they&#8217;re found in compare-locales these days. Better parsing for the actual values is a bigger task, in particular one that should improve Bespin&#8217;s XML mode at the same time. &#8216;Cause that didn&#8217;t impress me yet.</p>
<p>Code will come in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=510579">bug 510579</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/08/20/hacking-dtds-into-bespin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>oh my eyes, but good still</title>
		<link>http://blog.mozilla.com/axel/2009/07/12/oh-my-eyes-but-good-still/</link>
		<comments>http://blog.mozilla.com/axel/2009/07/12/oh-my-eyes-but-good-still/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 21:19:18 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[buildbot]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=212</guid>
		<description><![CDATA[I&#8217;ve uploaded a snapshot of a build in progress on my test display which gives a bit better insight on what&#8217;s possible to show about a build based on the information that buildbot has, or a build database had. The important pieces here compared to tinderbox are:

Builds in progress are associated with the check-in that [...]]]></description>
			<content:encoded><![CDATA[<p><a style="float:right; margin:5px;" title="Builds for a change by Axel Hecht, on Flickr" href="http://www.flickr.com/photos/axelhecht/3713183052/"><img src="http://farm4.static.flickr.com/3619/3713183052_00243e5d33_m.jpg" alt="Builds for a change" width="240" height="121" /></a>I&#8217;ve uploaded a snapshot of a build in progress on my test display which gives a bit better insight on what&#8217;s possible to show about a build based on the information that buildbot has, or a build database had. The important pieces here compared to tinderbox are:</p>
<ul>
<li>Builds in progress are associated with the check-in that triggered the build.</li>
<li>Builds in progress show individual build steps.</li>
<li>Finished builds are displayed in compact form. In this case, all builds end with warnings, and thus come back in a shade of orange.</li>
<li>Builds not yet started that are already requested are displayed on top.</li>
</ul>
<p>I didn&#8217;t go into the detail of mentioning which builders are having pending builds. This is mostly me waiting for django 1.1 and aggregation support, but in the end it&#8217;s as simple as a GROUP BY. Nor did I try to make that display visually pretty, hell no.</p>
<p>In the context of our regular builds, it&#8217;s worthwhile mentioning what unit test and talos runs would look like, i.e., &#8220;builds&#8221; that are scheduled after the binary builds are done. Those wouldn&#8217;t show up until they&#8217;re actually scheduled, which is fair enough, as that is what&#8217;s actually happening. If a windows build fails, there won&#8217;t be unit tests nor talos builds run. You wouldn&#8217;t end up in a situation where you think you&#8217;re done and you aren&#8217;t, though. (Talos not working this way aside, that needs thought due to different masters etc.) The actual builders don&#8217;t finish until they triggered the spin-off runs, so you either see the binary build as still running, or you see the triggered runs as pending. Here, as soon as you don&#8217;t have anything running or pending and your boxens are green, you&#8217;re off the hook.</p>
<p>I also added microsummaries and RSS feeds for this view, so you can use the web to learn about your the fire you lit up.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/07/12/oh-my-eyes-but-good-still/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>150/2=73</title>
		<link>http://blog.mozilla.com/axel/2009/06/12/150273/</link>
		<comments>http://blog.mozilla.com/axel/2009/06/12/150273/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 16:51:50 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=188</guid>
		<description><![CDATA[Our brave build folks have cut the tags on Firefox 3.5 RC 1, and I figured I give a little feedback on that from the l10n side.
As RC 1 was based on new strings, we required each localization to sign-off on the status of their localization to be ready for release. We&#8217;re still doing this [...]]]></description>
			<content:encoded><![CDATA[<p>Our brave build folks have cut the tags on Firefox 3.5 RC 1, and I figured I give a little feedback on that from the l10n side.</p>
<p>As RC 1 was based on new strings, we required each localization to sign-off on the status of their localization to be ready for release. We&#8217;re still doing this by opening what we call a &#8220;opt-in thread&#8221;, a message sent to .l10n after the last l10n-impact landing to which localizers reply with a link to the revision of their localization that is good to go. Part of that communication is the message when code-freeze is planned to be, and the message that plans don&#8217;t always work out. So we&#8217;re keeping the the opt-in thread open actually up to the point where we really kick off the builds.</p>
<p>The output of that process are two files which control our release automation process, <code>shipped-locales</code> and <code>l10n-changesets</code>. For the curious, we&#8217;re tracking which locales ship on which platforms in the first, and it&#8217;s part of the code repo, and which locales ship which hg revision in the second, which is in the buildbot-configs repo.</p>
<p>The whole process lead to 150 different opt-in sourcestamps which came in by either public replies in the newsgroup, or as private mails in my inbox (or both). I pick those up, and click on some buttons on a version of the l10n dashboard running on my home machine, review the changes to previous sign-offs (yes, I do have a web interface that does comparison between two revisions in hg), and accept or reject the sign-off. If I reject, I follow up in .l10n with why I did that. That adds up to 159 posts in that thread, by 72 authors. Dependent on how imminent the release is, or seems to be, I &#8220;back up&#8221; my local data by attaching files to the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=493637">tracking bug</a>. This led to one version of <code>shipped-locales</code>, and a whopping 16 versions of <code>l10n-changesets</code>. Or, in short &#8230;
</p>
<table class="msg-table" border="0">
<tbody>
<tr>
<td class="msg-user">&lt;bhearsum|afk&gt;</td>
<td class="msg-data">Pike: when should i expect an updated l10n-changestets?</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;Pike&gt;</td>
<td class="msg-data">bhearsum: &#8230;</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;Pike&gt;</td>
<td class="msg-data">&#8230;</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;Pike&gt;</td>
<td class="msg-data">&#8230;</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;Pike&gt;</td>
<td class="msg-data">now</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;bhearsum&gt;</td>
<td class="msg-data">heh</td>
</tr>
<tr class="msg">
<td class="msg-user">&lt;bhearsum&gt;</td>
<td class="msg-data">cool!</td>
</tr>
</tbody>
</table>
<p>What&#8217;s really cool here is that we&#8217;re actually at a point where we pick up improvements to our localization up to the last minute, with tools that make us feel comfortable about that, and with a release environment that is able to digest all that noise and produce builds for 73 localizations in a matter of a few hours.</p>
<p><center><big>73</big></center></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/06/12/150273/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Running into builds, just testing</title>
		<link>http://blog.mozilla.com/axel/2009/06/10/running-into-builds-just-testing/</link>
		<comments>http://blog.mozilla.com/axel/2009/06/10/running-into-builds-just-testing/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 17:29:49 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[buildbot]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=184</guid>
		<description><![CDATA[I&#8217;ve blogged previously on how to set up a staging environment to test the l10n build system, but I didn&#8217;t go into any detail on how to actually do builds in that set up. That shall be fixed.
I&#8217;m picking you up at the point where
twistd get-pushes -n -t 1 -s l10n_site.settings
is running stable. You probably [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve blogged previously on how to <a href="http://blog.mozilla.com/axel/2009/06/01/l10n-ecosystem-in-a-fishbowl/">set up a staging environment</a> to test the l10n build system, but I didn&#8217;t go into any detail on how to actually do builds in that set up. That shall be fixed.</p>
<p>I&#8217;m picking you up at the point where</p>
<p><code>twistd get-pushes -n -t 1 -s l10n_site.settings</code></p>
<p>is running stable. You probably want to <code>tail -f twistd.log</code> to follow what it&#8217;s doing. This piece is going to watch the hg repositories in <code>stage/repos</code> and feed all the pushes to those into the db. Next is to make sure that you actually get builds.</p>
<p>The first thing you need to do is to configure the <code>l10n-master</code> to access the same database as the <code>django-site</code>. Just make sure that <code>DATABASE_*</code> settings in <code>l10n-master/settings.py</code> and <code>django-site/l10n_site/settings.py</code> match. The other setting to sync is <code>REPOSITORY_BASE</code>, which needs to match in both <code>settings.py</code>s. I suggest setting that to an empy dir next to the l10n-master. I wouldn&#8217;t use the <code>stage/repos</code> dir, mostly because I didn&#8217;t test that. Now you set up the master for buildbot, by running </p>
<p><code>buildbot create-master .</code></p>
<p>inside the l10n-master clone. Next thing is to create a <code>slave</code> dir, which is well put next to the <code>l10n-master</code>. Despite what buildbot usually likes, this slave should be on the same machine that the rest is running on.</p>
<p><code>mkdir slave<br />
buildbot create-slave slave localhost:9021 cs pwd</code></p>
<p>So much for the general setup. With the twistd daemon running to get the pushes, you can now switch on the master and the slave, by doing a <code>buildbot start .</code> in both dirs. I suggest that you keep a <code>tail -f twistd.log</code> running on the master. If you decide to set things up to track the upstream repositories, I start the master, then the slave, and if both are up fine, I start the twistd daemon for get-pushes.</p>
<p>Now let&#8217;s trigger some builds:</p>
<p>Open <code>stage/workdir/mozilla/browser/locales/en-US/file.properties</code> in your favorite editor, and do a modification. I suggest to just do a whitespace edit, or to change the value of the existing entity, as that is going to keep your localizations green. Check the change in to the working clone, and then push. The get-pushes output should show that it got a new push, and then on the next cycle, feed the push into the database. You&#8217;ll notice by the output of a hg pull showing up in the log. On the next poll on the l10n-master, builds for all 4 locales should trigger. You should see an update of four builds on <a href="http://localhost:8000/builds/waterfall">the waterfall</a>, and 4 locales on the <code>test</code> tree on the <a href="http://localhost:8000/dashboard/">local dashboard</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/06/10/running-into-builds-just-testing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>got l10n builds</title>
		<link>http://blog.mozilla.com/axel/2009/06/05/got-l10n-builds/</link>
		<comments>http://blog.mozilla.com/axel/2009/06/05/got-l10n-builds/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 10:22:40 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[build]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=180</guid>
		<description><![CDATA[&#8217;nuff said? Not even remotely.
We&#8217;ve had l10n builds as long as I&#8217;m working on l10n, actually, I got involved around the time when we started to do them upstream. They always were considerably better than each localizer doing their build at home on whatever (virus-infected) hardware they found, with help from other community members for [...]]]></description>
			<content:encoded><![CDATA[<p>&#8217;nuff said? Not even remotely.</p>
<p>We&#8217;ve had l10n builds as long as I&#8217;m working on l10n, actually, I got involved around the time when we started to do them upstream. They always were considerably better than each localizer doing their build at home on whatever (virus-infected) hardware they found, with help from other community members for the platforms they didn&#8217;t have. But at the light of day, it was more</p>
<blockquote><p>That? Yeah, I know. That&#8217;s crap.</p>
</blockquote>
<p>And I know you can hear my voice in your head right now :-).</p>
<p>Those days are gone. We&#8217;re running Firefox and Fennec builds on the releng infrastructure now for a few days that are actually sound builds made to service our l10n community. Some highlights:</p>
<ul>
<li>Builds are finished some 10 minutes after a localizer landing, on all three platforms.</li>
<li>There&#8217;s no deadlock between different locales, thanks to all l10n builds running on a pool of slaves.</li>
<li>Builds are &#8220;l10n-merged&#8221;, against the actual build that&#8217;s repackaged. Independent of missing strings or files, you have a build that can be tested.</li>
<li>No more race conditions between nightly and trunk source status.</li>
</ul>
<p>The impact of this shouldn&#8217;t be under-estimated. We are, for the first time in years, producing builds that allow a localizer to actually immediately test. Localizers can work incrementally, translate one feature, check-in, test. No worries if something landed in en-US in the meantime, or whatnot. With the new builds, I have seen various localizers coming from hundreds of missing strings to a tested build on two or three platforms in a matter of a few hours. Back in the days, that was the waiting time for the first build. The new locales all pull all-nighters to get their final bits in. They want to, and now they actually can.</p>
<p>I want to thank coop and armenzg for their great help in making this happen, aki for porting it over to fennec. Of course thanks go to joduinn and sethb, too, for bearing with the ongoing meetings we have, trying to battle the crap down. To dynamis for the initial work on l10n-merge. Also thanks to bsmedberg and Chase for the initial works on both automation and build process, and ted for the various reviews on making our build system catch up.</p>
<p>Finally, we&#8217;re not going to stop here. Armen is working on creating the necessary files to get l10n builds on a nightly update channel. Yep, you heard right, that&#8217;s where we are right now. I know that KaiRo is working on getting the goodness over to the comm-central apps. And yours truly is hacking on the dashboard together with gandalf, more on that in a different post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/06/05/got-l10n-builds/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Searching l10n</title>
		<link>http://blog.mozilla.com/axel/2009/06/02/searching-l10n/</link>
		<comments>http://blog.mozilla.com/axel/2009/06/02/searching-l10n/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 14:20:41 +0000</pubDate>
		<dc:creator>Axel Hecht</dc:creator>
				<category><![CDATA[L10n]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[dashboard]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/axel/?p=176</guid>
		<description><![CDATA[I&#8217;m contemplating adding search in l10n to the dashboard, and I figured I&#8217;d put my thoughts out for lazyweb super-review.
Things we might want to search for:

Localized strings

in a particular locale
in all locales
going into a particular app


entity names

in all of the above



As with the rest of the dashboard, I&#8217;d favour a pythonic solution. I&#8217;ve run across [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m contemplating adding search in l10n to the dashboard, and I figured I&#8217;d put my thoughts out for lazyweb super-review.</p>
<p>Things we might want to search for:</p>
<ul>
<li>Localized strings
<ul>
<li>in a particular locale</li>
<li>in all locales</li>
<li>going into a particular app</li>
</ul>
</li>
<li>entity names
<ul>
<li>in all of the above</li>
</ul>
</li>
</ul>
<p>As with the rest of the dashboard, I&#8217;d favour a pythonic solution. I&#8217;ve run across <a href="http://whoosh.ca/">Whoosh</a>, which seems to offer me what I&#8217;d need. In particular I can mark up searches in just keys or just values of our localized strings with the Schemas it offers.</p>
<p>All sounds pretty neat and contained, I&#8217;m just wondering if there&#8217;s something cool and shiny elsewhere that I&#8217;m missing, or if someone came back with &#8220;ugh, sucks&#8221; from trying Whoosh.</p>
<p>Ad-hoc design for the curious:</p>
<p>For each changeset, we&#8217;d parse the old and the new version of the file, getting a list of keys and values, and I&#8217;d create two searchable TEXT entries for all changed keys, and added entries. We&#8217;d tag that &#8220;document&#8221; with path, locale, apps, revision, branch. That way, you could search even for strings that aren&#8217;t currently in the tip, and get a versioned link to where it showed up first, and last, possibly. Given that we have a lot of data and history, I wouldn&#8217;t be surprised if that corpus would get large pretty quickly. I&#8217;d expect to not only index l10n but en-US, too. Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/axel/2009/06/02/searching-l10n/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
