<?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>Mozilla Web Development</title>
	<atom:link href="http://blog.mozilla.com/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/webdev</link>
	<description>Everybody Likes Ninjas</description>
	<lastBuildDate>Sat, 21 Nov 2009 05:50:58 +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>Mozilla Launches Facebook Security Quiz</title>
		<link>http://blog.mozilla.com/webdev/2009/11/20/mozilla-launches-facebook-security-quiz/</link>
		<comments>http://blog.mozilla.com/webdev/2009/11/20/mozilla-launches-facebook-security-quiz/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 05:50:58 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=789</guid>
		<description><![CDATA[
Are you up for the challenge?
This week Mozilla launched the security quiz on Facebook.  We encourage you to take the quiz and see how much you know about web security!
Similar to our plugin checker, the security quiz is a part of our larger effort to raise awareness about web security.
Help us spread the word [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.mozilla.com/webdev/files/2009/11/Picture-2.png"><img src="http://blog.mozilla.com/webdev/files/2009/11/Picture-2-300x89.png" alt="Picture 2" title="Picture 2" width="300" height="89" class="alignright size-medium wp-image-792" /></a></p>
<p>Are you up for the challenge?</p>
<p>This week Mozilla launched the <a href="http://apps.facebook.com/mozillasecurityquiz">security quiz</a> on Facebook.  We encourage you to take the quiz and see how much you know about web security!</p>
<p>Similar to our <a href="http://www.mozilla.com/en-US/plugincheck/">plugin checker</a>, the security quiz is a part of our larger effort to raise awareness about web security.</p>
<p>Help us spread the word and make the web safer for everyone.  And don&#8217;t forget to <a href="http://www.mozilla.com/en-US/plugincheck/">check your plugins</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/11/20/mozilla-launches-facebook-security-quiz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMO Changes for 2010</title>
		<link>http://blog.mozilla.com/webdev/2009/11/18/amo-changes-for-2010/</link>
		<comments>http://blog.mozilla.com/webdev/2009/11/18/amo-changes-for-2010/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:54:07 +0000</pubDate>
		<dc:creator>rdoherty</dc:creator>
				<category><![CDATA[AMO]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=786</guid>
		<description><![CDATA[Yesterday Wil Clouser wrote up a blog post detailing infrastructure changes for addons.mozilla.org in 2010.
Notable changes are:

Migrating from CakePHP to Django
Moving from SVN to Git
Continuous integration
Faster deployment
Processing data offline
Improved documentation

Take a look, it&#8217;s a good overview of the technical challenges of managing a large and complex website at an enormous scale.
]]></description>
			<content:encoded><![CDATA[<p>Yesterday <a href="http://micropipes.com/blog/">Wil Clouser</a> wrote up a blog post detailing <a href="http://micropipes.com/blog/2009/11/17/amo-development-changes-in-2010/">infrastructure changes for addons.mozilla.org in 2010</a>.</p>
<p>Notable changes are:</p>
<ul>
<li>Migrating from CakePHP to Django</li>
<li>Moving from SVN to Git</li>
<li>Continuous integration</li>
<li>Faster deployment</li>
<li>Processing data offline</li>
<li>Improved documentation</li>
</ul>
<p>Take a look, it&#8217;s a good overview of the technical challenges of managing a large and complex website at an enormous scale.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/11/18/amo-changes-for-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin Checker Launched</title>
		<link>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/</link>
		<comments>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 22:28:05 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Mozilla.com]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=731</guid>
		<description><![CDATA[Today we launched a Plugin Checker to help people find and update their plugins.

Why is this important to you?

Crashes are the number one concern for Firefox users, and we are listening.
At least 30% of all Firefox crashes are caused by third-party plugins.
Many major security vulnerabilities exploit out of date plugins.

Why is this important to Mozilla?
Increasing [...]]]></description>
			<content:encoded><![CDATA[<p>Today we launched a <a href="http://www.mozilla.com/en-US/plugincheck/">Plugin Checker</a> to help people find and update their plugins.</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/nurse.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/nurse.png" alt="smiling nurse" width="226" height="215" class="alignright size-full wp-image-754" /></a></p>
<h2>Why is this important to you?</h2>
<ul>
<li>Crashes are the number one concern for Firefox users, and we are listening.</li>
<li>At least 30% of all Firefox crashes are caused by third-party plugins.</li>
<li>Many major security vulnerabilities exploit out of date plugins.</li>
</ul>
<h2>Why is this important to Mozilla?</h2>
<p>Increasing awareness about plugins makes the web better, and that&#8217;s <a href="http://www.mozilla.org/about/manifesto">our mission</a>.</p>
<ul>
<li>We want the web to be safer.</li>
<li>We want the web to be less crashy.</li>
<li>We want to help everyone &#8212; not just Firefox users &#8212; to address the plugin problem. (though admittedly it doesn&#8217;t fully work with all browsers yet, it will)</li>
</ul>
<h2>What did we do?</h2>
<p>The plugin checker has three components:</p>
<ul>
<li>The Server: <a href="https://wiki.mozilla.org/PFS2">Plugin Finder Service (PFS2)</a></li>
<li>The Javascript: <a href="http://github.com/ozten/Perfidies-of-the-Web/tree">Perfides</a></li>
<li>The Web Page: <a href="http://www.mozilla.com/en-US/plugincheck/">mozilla.com</a></li>
</ul>
<p> The end result is actually pretty simple &#8212; and that&#8217;s how it needs to be.  Here&#8217;s your plugins, and here&#8217;s their statuses:</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/flash_quicktime.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/flash_quicktime.png" alt="flash_quicktime" title="Example showing Flash and Quicktime plugin statuses"  width="660" height="159" class="aligncenter size-full wp-image-732" /></a></p>
<p>Putting it all together, we reach a workflow similar to the graph below.  Our goal is to query a central database that contains plugin information and inform users about the status of their plugins.  This was built so it could be used to support Firefox directly in the future.</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/pfs-workflow.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/pfs-workflow.png" alt="pfs-workflow" title="this shows that the web service can power both a web front-end or an integrated client service" width="537" height="574" class="aligncenter size-full wp-image-740" /></a></p>
<h2>What will happen next?</h2>
<p>The three components above are a good start, but together we can do more.</p>
<ul>
<li><a href="http://theunfocused.net/2009/10/06/firefox-3-6-knows-when-your-plugins-are-out-of-date/">Integrate this experience with the Firefox client</a>.  Firefox will identify vulnerable plugins and help you update them.</li>
<li>Create a self-service panel for vendors to update their plugin info as new releases come out.</li>
<li>Create an open directory for all plugin information (sort of like <a href="http://plugindoc.mozdev.org/">Plugindoc</a> but dynamic)</li>
<li>Evangelize plugin detection via an embeddable widget &#8212; get it out on Wordpress, etc.</li>
<li>Integrate with our <a href="http://crash-stats.mozilla.com/">crash reporting system</a> so we have a report card/dashboard for which plugins are most crashy</li>
</ul>
<h2>How can you help?</h2>
<p>This entire project is open source.  You can work on any of these components to help contribute to the effort:</p>
<ul>
<li><a href="http://svn.mozilla.org/projects/pfs2/trunk/">View the server code for PFS2</a></li>
<li><a href="http://github.com/ozten/Perfidies-of-the-Web">View the client code for Perfides</a></li>
<li><a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Websites&#038;component=www.mozilla.com">File a bug if you find one</a></li>
<li><a href="http://spreadsheets.google.com/viewform?formkey=dGpKQkNuNkNQNjF4RW1FT08yRHRqMWc6MA..">Tell us about plugins we don&#8217;t know about</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>New PluginCheck Page Needs Your Help</title>
		<link>http://blog.mozilla.com/webdev/2009/10/02/upyourplug-needs-your-help/</link>
		<comments>http://blog.mozilla.com/webdev/2009/10/02/upyourplug-needs-your-help/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 23:42:57 +0000</pubDate>
		<dc:creator>ozten</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=662</guid>
		<description><![CDATA[Following up on the Flash Detection on the What&#8217;s New page, we are developing an upgrade to the Plugin Finder Service (PFS2).
We could use your help! Please hit our testing server&#8217;s Plugin Check. We will be able to capture information about plugins and help fill-out the PFS2 database. See an issue? Look through current bugs [...]]]></description>
			<content:encoded><![CDATA[<p>Following up on the <a href="http://en-us.www.mozilla.com/en-US/firefox/3.5.3/whatsnew/">Flash Detection</a> on the What&#8217;s New page, we are developing an upgrade to the Plugin Finder Service (<a href="https://wiki.mozilla.org/PFS2">PFS2</a>).</p>
<p>We could use your help! Please hit our testing server&#8217;s <a href="http://www-trunk.stage.mozilla.com/en-US/plugincheck/">Plugin Check</a>. We will be able to capture information about plugins and help fill-out the PFS2 database. See an issue? Look through <a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&#038;short_desc_type=allwordssubstr&#038;short_desc=&#038;product=addons.mozilla.org&#038;component=Plugins&#038;long_desc_type=substring&#038;long_desc=&#038;bug_file_loc_type=allwordssubstr&#038;bug_file_loc=&#038;status_whiteboard_type=allwordssubstr&#038;status_whiteboard=&#038;keywords_type=allwords&#038;keywords=&#038;bug_status=UNCONFIRMED&#038;bug_status=NEW&#038;bug_status=ASSIGNED&#038;bug_status=REOPENED&#038;bug_status=RESOLVED&#038;bug_status=VERIFIED&#038;bug_status=CLOSED&#038;resolution=FIXED&#038;resolution=INVALID&#038;resolution=WONTFIX&#038;resolution=DUPLICATE&#038;resolution=WORKSFORME&#038;resolution=INCOMPLETE&#038;resolution=EXPIRED&#038;resolution=MOVED&#038;resolution=---&#038;emailassigned_to1=1&#038;emailtype1=exact&#038;email1=&#038;emailassigned_to2=1&#038;emailreporter2=1&#038;emailqa_contact2=1&#038;emailtype2=exact&#038;email2=&#038;bugidtype=include&#038;bug_id=&#038;votes=&#038;chfieldfrom=&#038;chfieldto=Now&#038;chfieldvalue=&#038;cmdtype=doit&#038;order=Reuse+same+sort+as+last+time&#038;field0-0-0=noop&#038;type0-0-0=noop&#038;value0-0-0=">current bugs</a> and leave feedback in <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=addons.mozilla.org&amp;component=Plugins">Bugzilla</a>.<br />
<div id="attachment_700" class="wp-caption alignnone" style="width: 670px"><img src="http://blog.mozilla.com/webdev/files/2009/10/Plugin-Detection.jpg" alt="Screenshot of plugin detection" title="Plugin-Detection" width="660" height="446" class="size-full wp-image-700" /><p class="wp-caption-text">Screenshot of plugin detection</p></div><br />
If you&#8217;re a Plugin Vendor, please put the version of your plugin into the name or description field of your plugin. For example, since they don&#8217;t expose this information, the following very popular plugins cannot have their minor versions accurately detected in Firefox with JavaScript alone:</p>
<ul>
<li>Adobe Acrobat</li>
<li>Windows Media Player Plug-in</li>
<li>RealPlayer (on Mac only, Windows exposes version information)</li>
</ul>
<p>Some plugins don&#8217;t expose a good version number in the description, but can be detected by instantiating the plugin. We&#8217;re using <a href="http://www.pinlady.net/PluginDetect/">Eric Gerds&#8217; PluginDetect</a> for this type of plugin.</p>
<p>On the other hand, kudos go to Microsoft&#8217;s Silverlight team for the following information: name=&#8221;Silverlight Plug-In&#8221; <strong>description=&#8221;3.0.40818.0&#8243;</strong>. That&#8217;s exactly what we need to identify when a Plugin has fallen out of date.  If a vulnerability is discovered and published against 3.0.40818.0, we can alert the user to pick up the newest version.</p>
<p>It&#8217;s very fast and easy for us to detect your release version, when the proper information is provided by the plugin. Doing so is a win for you and your users. We&#8217;ll be encouraging Firefox users to keep their plugins updated to the latest and greatest. This means better distribution and lower support costs for you. We&#8217;re contacting many vendors right now to make this happen. </p>
<p>Firefox 3.6 is going to be adding enhancements to the way Plugin information is exposed to JavaScript. We&#8217;re looking forward to how this will simplify this task.</p>
<p>Interested in the code under development? Check out <a href="http://svn.mozilla.org/projects/pfs2/trunk/">PFS2 server</a>, <a href="http://github.com/ozten/Perfidies-of-the-Web/tree">PFS2 client</a> and of course <a href="http://svn.mozilla.org/projects/mozilla.com/">Mozilla.com</a> where it will eventually live.</p>
<p><strong>Update 10/3 @12:50 PDT:</strong> Thanks to everyone who has filed bugs! Additionally, here is the list of Plugin states, copy, and links. This is going to change, based on your feedback, but I think it will help the discussion.</p>
<table border="1" cellspacing="0">
<thead>
<tr>
<th>Status</th>
<th>Copy</th>
<th>Button</th>
<th>Link</th>
</tr>
</thead>
<tbody>
<tr>
<td>Unknown Plugin</td>
<td>N/A we don&#8217;t display anything</td>
<td>N/A</td>
<td>N/A</td>
</tr>
<tr>
<td>Current</td>
<td>You&#8217;re Safe</td>
<td>Learn More</td>
<td>Vendor URL</td>
</tr>
<tr>
<td>Old or Unknown Release</td>
<td>Potentially Vulnerable</td>
<td>Update</td>
<td>Vendor URL</td>
</tr>
<tr>
<td>Old with Known Exploit</td>
<td>Update Now</td>
<td>Vulnerable</td>
<td>Vendor URL</td>
</tr>
<tr>
<td>Current with Known Exploit</td>
<td>Vulnerable No Fix</td>
<td>Disable Now</td>
<td>#disable-now</td>
</tr>
</tbody>
</table>
<p>I think the consensus is that the copy for Current and Old send the wrong message.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/10/02/upyourplug-needs-your-help/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Attention all web testing gurus</title>
		<link>http://blog.mozilla.com/webdev/2009/09/15/attention-all-web-testing-gurus/</link>
		<comments>http://blog.mozilla.com/webdev/2009/09/15/attention-all-web-testing-gurus/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:01:57 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=660</guid>
		<description><![CDATA[We&#8217;re looking for someone with mounds of web testing experience and a love for the open web.  If that applies to you, find out more and apply!.
]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re looking for someone with mounds of web testing experience and a love for the open web.  If that applies to you, <a href="http://www.jobvite.com/CompanyJobs/Job.aspx?c=qpX9Vfwa&#038;v=1&#038;j=oKobVfwY">find out more and apply!</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/09/15/attention-all-web-testing-gurus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Download Stats move to mozilla.com</title>
		<link>http://blog.mozilla.com/webdev/2009/08/18/download-stats-move-to-mozilla-com/</link>
		<comments>http://blog.mozilla.com/webdev/2009/08/18/download-stats-move-to-mozilla-com/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 23:43:19 +0000</pubDate>
		<dc:creator>morgamic</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=633</guid>
		<description><![CDATA[During the Firefox 3.5 launch, Daniel Einspanjer and Dave Dash put together a neat little stats counter at downloadstats.mozilla.com.  We decided to do a sprint to try integrating this with mozilla.com to give it a proper home.
Historically, we&#8217;ve had different ways to track new releases and their downloads:

2004-2007 (Firefox 1.0, 1.5, 2.0) &#8211; Bouncer [...]]]></description>
			<content:encoded><![CDATA[<p>During the Firefox 3.5 launch, <a href="http://daniele.livejournal.com/">Daniel Einspanjer</a> and <a href="http://davedash.com/">Dave Dash</a> put together a neat little stats counter at <a href="http://downloadstats.mozilla.com/">downloadstats.mozilla.com</a>.  We decided to do a <a href="https://wiki.mozilla.org/Website/Sprints/DownloadStats">sprint</a> to try integrating this with mozilla.com to give it a proper home.</p>
<p>Historically, we&#8217;ve had different ways to track new releases and their downloads:</p>
<ul>
<li>2004-2007 (Firefox 1.0, 1.5, 2.0) &#8211; Bouncer database statistics tracked redirects on the download redirector in a MySQL database.</li>
<li>2008 (Firefox 3.0) &#8211; Jeremy Orem&#8217;s download stats page pulled stats from Daniel Einspanjer&#8217;s metrics feed.</li>
<li>2009 (Firefox 3.5) &#8211; Daniel and Dave created the 3.5 download stats page, which closely resembles what we have now.</li>
</ul>
<p>Blast from the past &#8211; Jeremy Orem&#8217;s Firefox 3.0 stats page:</p>
<p> <img src="http://blog.mozilla.com/webdev/files/2009/08/old-downloadstats.jpg" alt="oremj's old download stats"/></p>
<p>As a part of our renewed efforts to <a href="http://www.intothefuzz.com/2009/08/17/onward-and-upward-for-mozilla-com/">innovate more rapidly on mozilla.com</a>, our first sprint brings download information to mozilla.com.  From release to release we hope this page changes in exciting new ways.  In the meantime, it&#8217;ll have a nicer place to live.</p>
<p>The idea was pretty simple:</p>
<ul>
<li><em>Creating real-time JSON feeds</em> was Daniel&#8217;s work with <a href="http://www.sqlstream.com/">SQLStream</a> to manage and constantly query incoming download activity.  It was no small task, but the feed seems to work fairly well.</li>
<li><em>Using JavaScript to integrate feeds into existing pages</em> was Dave Dash&#8217;s work.  He had to do it in both <a href="http://developer.yahoo.com/yui/">YUI</a> and <a href="http://jquery.com/">jQuery</a> since mozilla.com uses YUI but the stats code uses jQuery.  Yes, fun, we know.</li>
<li><em>Creating widgets and a landing page</em> was possible because of <a href="http://www.silverorange.com/">Silver Orange</a>.  Steven Garrity and Stephen DesRoches styled the stats landing page and worked with <a href="http://www.intothefuzz.com/">John Slater</a> from Mozilla to figure out points of entry on other mozilla.com pages.</li>
</ul>
<p>The end result is a nicely sized update to mozilla.com that we were able to finish in two weeks.  Publishing our totals gives new users a feel of activity and freshness, and funnels them to a statistics page that we can always expand later.</p>
<p>We&#8217;re also excited that this page uses some neat tools we&#8217;ve grown to love:</p>
<ul>
<li>The world map is done in <a href="https://developer.mozilla.org/En/SVG">SVG</a>/<a href="https://developer.mozilla.org/en/HTML/Canvas">Canvas</a> thanks to <a href="http://hyper-metrix.com/#Blog">Alistair MacDonald</a></li>
<li>The dynamic table uses <a href="http://jquery.com/">jQuery</a> and some jQuery plugins (<a href="http://tablesorter.com/">tablesorter</a>, <a href="http://omnipotent.net/jquery.sparkline/">sparklines</a>).  It updates every minute.</li>
<li>All feed data is available in <a href="https://developer.mozilla.org/En/JSON">JSON</a> format which makes it easy for pages to update themselves via JavaScript</li>
</ul>
<p>Here&#8217;s a widget on <a href="http://www.mozilla.com/en-US/firefox/">Firefox product pages</a>:</p>
<p><img src="http://people.mozilla.org/~morgamic/stats/stats-menu.png" alt="screenshot of stats total on a Firefox page"/></p>
<p>Here&#8217;s a widget on the <a href="http://www.mozilla.com/en-US/firefox/personal.html">personalize Firefox page</a>:</p>
<p><img src="http://people.mozilla.org/~morgamic/stats/stats-feature.png" alt="screenshot of stats total on the personalize Firefox page"/></p>
<p>Here&#8217;s the main sections from the <a href="http://www.mozilla.com/en-US/firefox/stats/">main stats page</a>:</p>
<p><img src="http://people.mozilla.org/~morgamic/stats/stats-map.png" alt="screenshot of stats total on the personalize Firefox page"/><br />
<img src="http://people.mozilla.org/~morgamic/stats/stats-sparklines.png" alt="screenshot of stats total on the personalize Firefox page"/></p>
<p>We hope you like the small changes we made, and if you have ideas on how to make this better, please let us know!  If you&#8217;d like to play with these feeds, you can find them here:</p>
<ul>
<li><a href="http://www.mozilla.com/en-US/firefox/stats/getJSON.php?q=data/country_report.json">Country report JSON</a></li>
<li><a href="http://www.mozilla.com/en-US/firefox/stats/total.php">Total downloads JSON</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/08/18/download-stats-move-to-mozilla-com/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mozilla Service Week &#8211; First L10n Release</title>
		<link>http://blog.mozilla.com/webdev/2009/08/18/mozilla-service-week-first-l10n-release/</link>
		<comments>http://blog.mozilla.com/webdev/2009/08/18/mozilla-service-week-first-l10n-release/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 18:56:02 +0000</pubDate>
		<dc:creator>ozten</dc:creator>
				<category><![CDATA[Mozilla Service Week]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=645</guid>
		<description><![CDATA[Congratulations to the Mozilla Community for an amazing and ongoing localization effort! We’ve shipped our first 4 locales and have several more in the works.
A lot of hard work was done by our de, es, fr, and it teams to make it into the first release.
What exactly has to be done for each locale? The [...]]]></description>
			<content:encoded><![CDATA[<p>Congratulations to the Mozilla Community for an amazing and ongoing localization effort! We’ve shipped our first 4 locales and have several more in the works.</p>
<p>A lot of hard work was done by our <a href="http://mozillaservice.org/home/index/de_DE">de,</a> <a href="http://mozillaservice.org/home/index/es_ES">es,</a> <a href="http://mozillaservice.org/home/index/fr_FR">fr,</a> and <a href="http://mozillaservice.org/home/index/it_IT">it</a> teams to make it into the first release.</p>
<p>What exactly has to be done for each locale? The following assets are translated:
<ul>
<li>230+ pieces of content (in the <a title="de example" href="http://svn.mozilla.org/projects/mozillaservice.org/trunk/web/application/locale/de/LC_MESSAGES/messages.po">messages.po file</a>)</li>
<li>20 question faq.php which is an HTML file</li>
<li>Site header image</li>
<li>Several affiliate buttons</li>
<li>Service Week Flyer</li>
</ul>
<p>In addition to the 4 locales listed above, several other communities are busy working on Mozilla Service Week localizations. We’ll be shipping them as they are completed.</p>
<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=500840">This tracking bug</a> has links to all of the L10n work being done. There are many ways to <a href="http://mozillaservice.org/tell_us/build_mozservice09/en_US">help us build out Mozilla Service Week</a>, so get involved and Be the Difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/08/18/mozilla-service-week-first-l10n-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving Mozilla Web Localization, Part 3: Challenges for Tools</title>
		<link>http://blog.mozilla.com/webdev/2009/08/17/improving-mozilla-web-localization-part-3-challenges-for-tools/</link>
		<comments>http://blog.mozilla.com/webdev/2009/08/17/improving-mozilla-web-localization-part-3-challenges-for-tools/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 08:14:52 +0000</pubDate>
		<dc:creator>Frédéric Wenzel</dc:creator>
				<category><![CDATA[Localization]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=615</guid>
		<description><![CDATA[This is the final post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven’t read it, please start with the first post. Again, this is a discussion starter and nowhere close to a final decision. Your opinion on the issue is very valuable, so please leave comments.
In part 2 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm4.static.flickr.com/3132/2504310138_f7d3e1aec3_m.jpg" alt="Tools" class="alignright" aligh="right" /><em>This is the final post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven’t read it, please start with the <a href="http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/">first post</a>. Again, this is a discussion starter and nowhere close to a final decision. Your opinion on the issue is very valuable, so please leave comments.</em></p>
<p>In part 2 of the series, I explained some organizational challenges when growing a web localization team healthily. In this post, I want to outline some of issues <strong>localization tools</strong> are facing on the web.</p>
<p>Note: In this article, the term <em>localization tools</em> is referring to <em>developer tools</em> that human beings can use to localize web applications. This is unrelated to automatic translation tools like <a href="http://translate.google.com/">Google Translate</a> or <a href="http://babelfish.yahoo.com/">Yahoo Babel Fish</a>.</p>
<h3>The thin line between developer and localizer</h3>
<p>Most translatable Web content at Mozilla is represented as <a href="http://en.wikipedia.org/wiki/GNU_gettext">GNU gettext</a> .po files as part of the regular the source code. Localizing web applications is therefore still very much a technical task: Checking out a source tree, editing a .po file, checking it back in, (optionally waiting for the staging server to pick up the changes and checking out one&#8217;s changes online), that sounds very much like a developer&#8217;s work, not as much like the core concern of a localizer. </p>
<p>A lot of tools do not try to change that. They are mere frontends to translating .po files, but they do not help you translate the <em>website</em>. One way to change this would be building a <a href="http://ozten.com/psto/2009/08/14/a-sketch-of-po-liveedit/">&#8220;PO live edit&#8221;</a> tool, as my colleague Austin King describes in a recent blog post.</p>
<p>Please read his post for more details, but the idea is to build a translation tool that requires zero set-up, has a small learning curve, and ties web site translation together &#8220;end-to-end&#8221;, i.e., from development to deployment in one go.</p>
<h3>.po or not .po?</h3>
<p>Another problem we have is that not all of our pages are completely localizable in .po files only. Most notably, the web site mozilla.com mainly consists of straight HTML files, tied together with some PHP. But also other pages, like AMO, have some content in localizable HTML files. The rationale is that these texts would add a huge number of strings to the .po files if they were split up in that fashion, and it would be significantly harder for localizers to translate these out of context. Therefore, having localizers translate straight HTML from a file is considered the &#8220;lesser evil&#8221;.</p>
<p>The reason why these are so different is that these pages sometimes do not only contain translatable content, but they may also require the localizer to add or remove bullet points, or replace links to a US-centered site with another locally applicable option.</p>
<p>Currently, we are not aware of a tool that makes these localizations easier. Some tools, like <a href="http://translate.sourceforge.net/wiki/toolkit/html2po">html2po</a>, try to extract strings from an HTML file and drop them into a .po file (one string per <a href="http://en.wikipedia.org/wiki/HTML_element#Block_elements">block-level element</a>, for example), with varying success. While this allows using .po-capable tools on the resulting files, it removes the flexibility to perform &#8220;content-changing localization&#8221; as described above. Finally, it also makes the .po file <em>authoritative</em>, i.e., if one localizer edits the generated .po file but another one prefers editing the HTML template, we are going to run into non-trivial merging problems.</p>
<p>Making HTML translation easier is definitely a &#8220;slippery slope&#8221; towards building a full-blown HTML editor, which by all means we want to avoid. However, I can imagine integrating <a href="https://bespin.mozilla.com/">Bespin</a> with a web site instance and allowing localizers to collaboratively edit the HTML file right where it will show up eventually.</p>
<h3>Comments?</h3>
<p>This is where you come in: <strong>Please leave comments.</strong> If you are a localizer yourself, please tell us what does or what does not work well for you. What is your workflow like? Are you happy with it or would you like to change it? If you have used or witnessed a tool before that you found provided an <em>innovative solution</em> to the problems outlined above, please tell us. </p>
<h3>Acknowledgments</h3>
<p>This series of blog posts was a result of many discussions with sethb, gandalf, stas, ozten, pascal, pike and others interested in making Web localization better. Thanks for your input, guys!</p>
<p><small>Photo Credit: <a href="http://www.flickr.com/photos/22280677@N07/2504310138/">“Old Tools”</a>, CC by-sa licensed by Svadilfari on flickr.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/08/17/improving-mozilla-web-localization-part-3-challenges-for-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Improving Mozilla Web Localization, Part 2: Organizational Challenges</title>
		<link>http://blog.mozilla.com/webdev/2009/08/12/improving-mozilla-web-localization-part-2-organizational-challenges/</link>
		<comments>http://blog.mozilla.com/webdev/2009/08/12/improving-mozilla-web-localization-part-2-organizational-challenges/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 19:43:04 +0000</pubDate>
		<dc:creator>Frédéric Wenzel</dc:creator>
				<category><![CDATA[Localization]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=613</guid>
		<description><![CDATA[This is the second post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven&#8217;t read it, please start with the first post. Again, this is a discussion starter and nowhere close to a final decision. Your opinion on the issue is very valuable, so please leave comments.
In yesterday&#8217;s post, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm1.static.flickr.com/34/72949752_499f70c163_m.jpg" alt="Dictionary" class="alignright" align="right" /><em>This is the second post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven&#8217;t read it, please start with the <a href="http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/">first post</a>. Again, this is a discussion starter and nowhere close to a final decision. Your opinion on the issue is very valuable, so please leave comments.</em></p>
<p>In <a href="http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/">yesterday&#8217;s post</a>, I described the problem we are facing with an increasing amount of localizable websites under the roof of the Mozilla project. In short, I concluded that getting more possible localizers involved is a way to solve this &#8212; but scaling the localizer community has to happen in a healthy way.</p>
<h3>Crowd-Sourcing Localization?</h3>
<p>Engaging an arbitrary amount of people in solving a problem even has a fancy buzz-word nowadays: <em>&#8220;crowd-sourcing&#8221;</em>. But is this what we want for the L10n community? Increasing the sheer amount of translations is not going to help anyone, unless they are <em>good</em> translations. In other words, we want <strong>more signal, not more noise</strong>.</p>
<p>In addition, when improving Web L10n, one rule is the most important: <strong>Don&#8217;t break what works.</strong> We have an amazing group of localizers who are indispensable and it would be foolish to demote them to some sort of &#8220;translation monkeys&#8221;. Likewise, merely shifting their work from actual localization to the tedious task of approving &#8220;crowd-sourced&#8221; strings one by one is not going to make their lives any easier or more fun.</p>
<h3>Scaling Locale Ownership: Hierarchies</h3>
<p>One possible way to tackle this dilemma is what we could call &#8220;hierarchical community management&#8221;. One or more <strong>locale owners</strong> should be able to delegate localization authority for one or more projects to a set of other localizers. These contributors can, in turn, either localize a particular project themselves or decide to pass on localization rights in a similar way, with or without the need to sign off on the changes their respective delegates perform. By making the whole process <strong>opt-in</strong> and <strong>as fine or coarse-grained as the localizers desire</strong>, it is ensured that for one locale, a small group of very active people can cover it all, while for another locale, the work can be spread over a substantial number of shoulders.</p>
<p>With a hierarchical permission system, delegating work to known localizers is not the only thing getting easier. It gives newcomers a very structured way of entering the L10n world in the limits of a single project or two, and to &#8220;climb up the tree&#8221; by building reputation in the community.</p>
<h3>But what are good translations? &#8212; Building a Reputation Model</h3>
<p>You might have noticed, for approving translations from other people, the per-project localizers will still have to read and accept a possibly huge amount of translations. This is not only tedious, it may also take longer than just translating things oneself. Therefore, when building a foundation for next-generation Web L10n, reputation should not only be assignable by &#8220;admins&#8221;, but also earnable from within the system.</p>
<p>A good example of such a system is <a href="http://answers.yahoo.com">Yahoo Answers</a>, an online Q+A/advice community. They do not only give you points for contributing (i.e., adding to either &#8220;noise&#8221; or &#8220;signal&#8221;), but users are also able to &#8220;thumbs up&#8221; or &#8220;thumbs down&#8221; individual contributions, therefore <em>dividing</em> noise from signal. If we give localizers the opportunity to <strong>approve contributions in bulk</strong> that were added by a trusted individual or based on a specific thumbs up/down level determined by the community, it&#8217;ll be a powerful tool for involving more contributors without decreasing the translation quality. If we, in turn, give the contributors a measurement of <strong>reputation</strong> for submitting successfully approved translations, they are able to build a tangible reputation level that&#8217;ll facilitate their advancement in the L10n community.</p>
<h3>Summary</h3>
<p>On an organizational level, next-generation Web L10n needs to be based on a flexible, hierarchical community structure that retains strong locale ownership in order to ensure a high level of quality, but at the same time enables and encourages &#8220;newcomers&#8221; to build a tangible reputation in the community.</p>
<p><small>Photo Credit: <a href="http://www.flickr.com/photos/calliope/72949752/">&#8220;pronouncing dictionary&#8221;</a>, <em>CC by</em> licensed by Muffet on flickr.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/08/12/improving-mozilla-web-localization-part-2-organizational-challenges/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Improving Mozilla Web Localization, Part 1: What&#8217;s Wrong?</title>
		<link>http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/</link>
		<comments>http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 15:49:19 +0000</pubDate>
		<dc:creator>Frédéric Wenzel</dc:creator>
				<category><![CDATA[Localization]]></category>
		<category><![CDATA[l10n]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=609</guid>
		<description><![CDATA[Last week I had the chance to travel to Berlin, Germany, and discuss &#8220;Localization on the Web&#8221; with our Localization (L10n)-drivers team. In a small series of three blog posts, I would like to point out what the &#8220;pain points&#8221; are for Web L10n at Mozilla, and start a discussion on how to fix them.
Please [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm1.static.flickr.com/70/227505138_6336873163_m.jpg" alt="Rosetta Stone (replica)" class="alignright" align="right" />Last week I had the chance to travel to Berlin, Germany, and discuss &#8220;Localization on the Web&#8221; with our Localization (L10n)-drivers team. In a small series of three blog posts, I would like to point out what the &#8220;pain points&#8221; are for Web L10n at Mozilla, and start a discussion on how to fix them.</p>
<p><em>Please note that none of this is authoritative &#8212; it&#8217;s a complicated topic and making mistakes is easy. If you feel something is misrepresented, please leave a comment and speak your mind.</em></p>
<h3>The status quo</h3>
<p>Here at Mozilla, we are very proud and honored to have an awesomely active localization community that works hard to bring mozilla products and web sites to you in <em>your</em> language. Without them, it would be impossible to publish, for example, <a href="http://www.mozilla.com/en-US/firefox/all.html">Firefox in 75 languages</a> and <a href="https://addons.mozilla.org/">AMO</a> in 33.</p>
<h3>What&#8217;s wrong?</h3>
<p>Product localization at Mozilla works very well: The localizers show unmatched dedication to, and pride in, getting every version of Firefox to their fellow speakers. And a lot of these localizers don&#8217;t stop there: They also translate websites like <a href="https://addons.mozilla.org">AMO</a>, <a href="http://support.mozilla.com/">SUMO</a>, <a href="http://mozilla.com">mozilla.com</a>, or <a href="http://mozillaservice.org/">Mozilla Service Week</a>. But the more web sites are being released, the higher the work load gets for the localizers. Our teams in some locales can handle that pretty well, both because they are mature, well-oiled teams and because their size allows them to delegate different projects to different people without overworking individual localizers. Others however, be they a newly-founded team or a locale just naturally smaller in size, can find it overwhelming to translate not only the flagship application Firefox but also many other projects that are equally as important to the end users.</p>
<p>I want to make clear that these localizers are not slackers: Their day has 24 hours like everyone else&#8217;s, and they have a day job and families to take care of as well. Therefore, they have to prioritize and some projects just don&#8217;t make the cut.</p>
<p>In addition, <em>starting</em> to be a localizer can be hard. Some of our existing localizers are developers with a non-English mother tongue (like myself, for example) who can check out an SVN repository, edit a .po file, submit a patch, etc. before they&#8217;ve even had breakfast. Other possible contributors might not be that technical and still want to help. Currently, when somebody asks <em>&#8220;how can I translate project X?&#8221;</em> the answer is often neither obvious nor trivial.</p>
<p>The fact that some localizers and locales cannot keep up with the amount of localization needed for various projects under the roof of Mozilla is not a bad thing. It&#8217;s rather a sign of success: All over the Web, Mozilla included, localized websites are becoming the rule rather than the exception. After users have become accustomed to a <em>browser</em> in their own language, <em>websites</em> in their language are the logical next step. But no-one can expect single localizers to bear that task all by themselves.</p>
<h3>What can we do?</h3>
<p>What we would like to do is lower the entry-level to localizing Mozilla websites by making it quick and easy, while not impairing the established workflows current localizers have. This will not only reduce the individual work load on existing localizers and their projects, it can also make it easier for interested community members to become a localizer, by taking on projects that are less overwhelming in size and therefore easier to digest.</p>
<p>Why is this not as easy as installing a production instance of the numerous &#8220;translation tools&#8221; out there and pointing it at our projects? This will be covered in the next two blog posts, addressing some organizational issues first, followed by some technical challenges.</p>
<p><small>Photo credit: <a href="http://www.flickr.com/photos/namlhots/227505138/">&#8220;Touching Rosetta&#8221;</a>, CC by-sa licensed by namlhots on flickr</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/08/11/improving-mozilla-web-localization-part-1-whats-wrong/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
