<?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>Mon, 08 Feb 2010 16:37:49 +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>GetFirebug.com redesign launched!</title>
		<link>http://blog.mozilla.com/webdev/2010/02/08/getfirebug-com-redesign-launched/</link>
		<comments>http://blog.mozilla.com/webdev/2010/02/08/getfirebug-com-redesign-launched/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 16:03:05 +0000</pubDate>
		<dc:creator>nlee</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[Sans nom]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/2010/02/08/getfirebug-com-redesign-launched/</guid>
		<description><![CDATA[After a much-too-long delay, the GetFirebug.com web site redesign is now live. Here's a few production notes and other thoughts on how the revamped web site for one of the top web development tools came into being.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve happened across the <a href="http://getfirebug.com/">GetFirebug.com</a> web site recently, you&#8217;ll notice everything has a rather pleasant freshly painted smell. After a much-too-long delay, we&#8217;ve finally updated the design and layout for the official Firebug web site, and introduced a lovely new icon by our resident Iconmaster General <a href="http://seanmartell.com/">Sean Martell</a>.</p>
<p>Even with intense competition from tools integrated into other web browsers, Firebug is arguably still the leading web development tool in use, with <a href="https://addons.mozilla.org/en-US/statistics/addon/1843">nearly two million active daily users</a>. Its web site needed to reflect Firebug&#8217;s capabilities more clearly. With that in mind, the primary goals with this redesign were to make the official Firebug web site easier to use, more pleasant to look at, and give Firebug more of a traditional software-style layout to highlight its many positive qualities.</p>
<h2>GetFirebug.com: Before</h2>
<div class="thumbimg"><a href="http://blog.mozilla.com/webdev/files/2010/02/firebug-original1.png"><img style="border:1px solid #aaa" src="http://blog.mozilla.com/webdev/files/2010/02/firebug-original-tm.jpg" alt="firebug-original.png" width="650" height="487" /></a></div>
<h2>GetFirebug.com: After</h2>
<div class="thumbimg"><a href="http://blog.mozilla.com/webdev/files/2010/02/Firebug-new1.png"><img style="border:1px solid #aaa" src="http://blog.mozilla.com/webdev/files/2010/02/Firebug-new-tm.jpg" alt="Firebug-new.png" width="650" height="491" /></a></div>
<p>It&#8217;s a fairly straightforward design, so there&#8217;s not a lot of interesting production notes to highlight, but here&#8217;s some specifics on what went into this redesign:</p>
<ul>
<li>The layout is roughly based on the <a href="http://960.gs/">960 grid system</a>. The original hope was to do the site in a fully fluid layout, but time constrains intervened.</li>
<li>Headers and pull text are in the gorgeous (and open source!) <a href="http://www.campivisivi.net/titillium/">Tittillium</a>, thanks to <a href="https://developer.mozilla.org/index.php?title=En/CSS/%40font-face">@font-face</a>. The body text was originally set in <a href="http://www.droidfonts.com/">Droid</a>, but due to a legibility issue on Windows machines with text-smoothing disabled, it was switched to the more common Trebuchet MS.</li>
<li>The pages are build using the HTML5 doctype, with <a href="http://jquery.com/">JQuery</a> and the <a href="http://fancybox.net/">Fancybox</a> plugin powering the modal pop-ups.</li>
<li>The screencast on the homepage uses the <a href="http://camendesign.com/code/video_for_everybody">Video for Everybody</a> system to embed the OGG video, with MP4 and Flash fallback for other user agents.</li>
<li>The homepage blog feed pulls in from the <a href="http://blog.getfirebug.com/">Firebug weblog</a> RSS feed using <a href="http://simplepie.org/">SimplePie</a>.</li>
<li>For this iteration, we wanted to switch the site over to a simple content management system, and ended up settling on <a href="http://grabaperch.com/">Perch</a>. It has its shortcomings, but it was straightforward enough and easy enough for me (mostly a designer/UX guy) to implement.</li>
<li>Sean passed along a few images that inspired the sparkly new icon. Originally, we tossed around the idea of doing something cartoony and heroic, like <a href="http://mozilla.seanmartell.com/firebug_torch.png">this lil&#8217; dude</a>, but ultimately decided to go with a more, well, buggier bug.</li>
<li>Photographic inspiration:  <a href="http://www.ent.iastate.edu/images/coleoptera/dogbane/dogbane_beetle.jpg">Bug 1</a> • <a href="http://www.wildanimalsonline.com/insect/firebug-pyrrhocorisapterus.jpg">Bug 2</a> • <a href="http://farm4.static.flickr.com/3176/2738273721_ec11488947.jpg">Bug 3</a> • <a href="http://www.naturspaziergang.de/insecta/Wanzen/Wanzen-Fotos/Pyrrhocoris_apterus-03-03-09_001.jpg">Bugs!</a></li>
</ul>
<p>It&#8217;s been a long time coming, and we hope you like GetFirebug.com&#8217;s new set of clothes. The content is currently being updated and will roll out as it is completed, but in the meantime, please <a href="http://getfirebug.com/">kick the tires</a> and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2010/02/08/getfirebug-com-redesign-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Got Data? Need Search? Use Sphinx</title>
		<link>http://blog.mozilla.com/webdev/2010/01/28/got-data-need-search-use-sphinx/</link>
		<comments>http://blog.mozilla.com/webdev/2010/01/28/got-data-need-search-use-sphinx/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 20:17:25 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sphinx]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=924</guid>
		<description><![CDATA[So you&#8217;ve built your web application, and people are putting data in it,  but how do they get that data back out? Often, they find data by  searching. MySQL provides a searchable full-text index, but it has  several limitations:

FULLTEXT indexes are only available  on MyISAM tables.
Adding FULLTEXT indexes can slow down [...]]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;ve built your web application, and people are putting data in it,  but how do they get that data back out? Often, they find data by  searching. MySQL provides a searchable <a href="http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html">full-text index</a>, but it has  several limitations:</p>
<ul>
<li>FULLTEXT indexes are only available  on MyISAM tables.</li>
<li>Adding FULLTEXT indexes can slow down INSERTs  and UPDATEs.</li>
<li>FULLTEXT indexes can span multiple columns, but not  multiple tables of data.</li>
<li>Searching can increase the load on  your database server.</li>
</ul>
<p>Fortunately, a search system,  like Sphinx, allows you to overcome these limitations and provide  powerful, flexible, and fast search solutions.<a href="http://sphinxsearch.com/"></a></p>
<p><a href="http://sphinxsearch.com/">Sphinx</a>, in  particular, is easy to set up and use. It powers searches on both <a href="https://addons.mozilla.org/">Addons</a> and <a href="http://support.mozilla.com/">Support</a>. We honestly didn&#8217;t shop around, because we  found Sphinx did what we needed very well.</p>
<p>Because Sphinx is  external to MySQL, it doesn&#8217;t care about things like what table engine  you use, so you can perform fast, full-text searches on InnoDB tables.  It also takes the load of searching off the database, leaving it free to  retrieve all the documents your users can find. And because Sphinx  finds its data via SQL queries, indexes can collate data in several  tables.</p>
<p>How fast does Sphinx index data? For both Addons and  Support, indexing is under two minutes, which includes on the order of  10^4 documents on Addons, and on the order of 10^5 on Support. This  speed means we could easily double or triple the quantity of data before  we&#8217;d need to rethink our search strategy.</p>
<p>Sphinx typically  collects data by running SQL queries, so if you can write a query to get  your data&#8211;possibly joining data from several tables, or small, extra  queries for many-to-many relationships like tags&#8211;you&#8217;re done. If your  data isn&#8217;t in a SQL database, you can feed it data in XML. If you have  lots of data, or lots of old data that doesn&#8217;t change, you can break  this into smaller indexes, or just look at what&#8217;s changed, and merge the  data together.</p>
<p>The index includes all the text you select and  several attributes you can define, which you can use to filter results,  or to retrieve the document from the database.</p>
<p>Running searches  from your application is very flexible. PHP, Python, Ruby, and others  have ports of the search API. You can also search via a SQL interface.  There&#8217;s even a command line search binary for testing. The API can do  some pretty advanced things, like sorting, filtering, settings offsets  and result limits, or even building excerpts for your results.</p>
<p>Search  is an important part of data-driven web applications, and Sphinx is a  powerful ally in providing search capabilities. If you&#8217;ve been relying  on FULLTEXT indexes, I encourage you to try a search system like Sphinx.  And if you need help, come find us in <a href="irc://irc.mozilla.org/webdev">#webdev</a> on irc.mozilla.org.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2010/01/28/got-data-need-search-use-sphinx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making getpersonas.com blazing fast</title>
		<link>http://blog.mozilla.com/webdev/2010/01/12/making-getpersonas-com-blazing-fast/</link>
		<comments>http://blog.mozilla.com/webdev/2010/01/12/making-getpersonas-com-blazing-fast/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 22:16:11 +0000</pubDate>
		<dc:creator>rdoherty</dc:creator>
				<category><![CDATA[Personas]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=869</guid>
		<description><![CDATA[I love speed. I&#8217;m a speed fanatic. Fast cars, planes, skydiving, anything involving triple digit MPH. But the thing that I like fast the most is websites. Millisecond response times, content delivery networks, caching, sprites, you name it. 
In case you didn&#8217;t already know, Personas (AKA &#8216;lightweight themes&#8217;) have been integrated into Firefox 3.6. With [...]]]></description>
			<content:encoded><![CDATA[<p>I love speed. I&#8217;m a speed fanatic. Fast cars, planes, skydiving, anything involving triple digit MPH. But the thing that I like fast the most is websites. Millisecond response times, content delivery networks, caching, sprites, you name it. </p>
<p>In case you didn&#8217;t already know, Personas (AKA &#8216;lightweight themes&#8217;) have been integrated into Firefox 3.6. With the impeding tsunami of traffic from millions of Firefox users headed towards getpersonas.com, I knew my time had come. Donning Firebug, YSlow and <a href="http://webpagetest.org">webpagetest.org</a>, I set out to squeeze every last drop of performance out of it.</p>
<p>I knew my work would be painstaking, arduous and gut-wrenching, but I couldn&#8217;t let the fear of disappointing millions of Firefox users around the world stop me. </p>
<h3>Minify</h3>
<p>My first task: concatenation and minification of JavaScript and CSS. My weapon of choice: <a href="http://code.google.com/p/minify/">Minify</a>.</p>
<p>Minify is a neat little PHP library that will take a list of CSS or JavaScript files, concatenate into one file, minify (remove whitespace and linebreaks) and gzip them. The plus is it doesn&#8217;t involve running any code before you push your files live, you can point your CSS &#038; JavaScript URLs directly at Minify like so: http://getpersonas-cdn.mozilla.net/static/min/?g=css&#038;r=59272. (g=css tells Minify I want the &#8216;css&#8217; group of files)</p>
<p>The benefits of Minify are less HTTP requests and small file sizes due to minification and gzip. For getpersonas.com, 3 JavaScript files were reduced to 1<sup>1</sup>.</p>
<h3>Move JavaScript to the bottom of all pages</h3>
<p>Next, in order to make getpersonas.com <strong>appear</strong> faster, I knew I had to move JavaScript to the bottom of every page.</p>
<p>From a <a href="http://www.webpagetest.org/result/091014_2GTP/1/details/">previous test on webpagetest.org</a>, it was apparent that users were waiting for the JavaScript in the head of the page to download before any other content. This is a well-known &#8216;feature&#8217; of all web browsers. <a href="http://developer.yahoo.com/performance/rules.html#js_bottom">JavaScript blocks parallel downloading for all hostnames</a>, period. The remedy? Move JavaScript to the end of the page.</p>
<p>Thankfully I hadn&#8217;t written any inline JavaScript, so moving the reference to the main JavaScript file to the bottom of every page was relatively simple. The benefit? <strong>Rendering of each page started 500ms earlier</strong>. While seemingly small, half a second is enough for a user to detect.</p>
<h3>Add far-future expires headers</h3>
<p>My next task? Adding far-future expires headers to all CSS, JS and images.</p>
<p>When visitors browse your website, they often view multiple pages that share common resources. Images, CSS, JavaScript, etc. Unfortunately, browsers need to check each file on every page load to see if it has changed. This requires many requests to the webserver, each incurring a non-trivial cost, sometimes in the hundreds of milliseconds. The method to avoid this is to use far-future expires headers.</p>
<p>Expires headers tell browsers how long they can store a file in their cache. If the expires headers tell browsers to cache a file for a long time, the browser doesn&#8217;t need to check to see if it has changed. This is what they look like:</p>
<p><code>Expires: Thu, 15 Apr 2020 20:00:00 GMT</code></p>
<p>In this case, the file doesn&#8217;t expire until April 15, 2020 at 8:00pm. Adding this to a .htaccess file in /static gave all our images proper expires headers:</p>
<p><code>&lt;FilesMatch "\.(jpg|jpeg|png|gif|ico)$"&gt;<br />
ExpiresActive On<br />
ExpiresDefault "access plus 10 years"<br />
&lt;/FilesMatch&gt;</code></p>
<p>&#8220;But wait!&#8221;, you say. How will browsers know when the file has changed if it never checks for a new version? Easy, change the filename or append a query string. All persona images have a modified timestamp at the end of their URLs: http://getpersonas-cdn.mozilla.net/static/8/8/48888/preview.jpg?1260925626 and CSS &#038; JavaScript have their SVN revision number instead: http://getpersonas-cdn.mozilla.net/static/min/?g=js&#038;r=59113. (And Minify is configured to send far-future expires headers) For &#8216;regular&#8217; images used throughout the site appending a new version # to the end of the url is easy enough.</p>
<p>For users, this means a faster <strong>overall</strong> site. Repeat view time decreased from 1.6 seconds to 0.7 seconds. </p>
<h3>Use a CDN</h3>
<p>Last but not least, we needed to move our content closer to users around the world. How? A content delivery network (CDN).</p>
<p>A big problem with the Internet is people all around the world use it. Sometimes from thousands of miles away from your webserver. Fiber optic cables under the ocean may be fast, but 50 or 100ms of round-trip time adds up when users need to download dozens of files. Short of inventing faster-than-light communication, the next easiest thing to do is move your content closer to your users.</p>
<p>Instead of buying our own servers and copying files to them, we&#8217;re using a CDN for getpersonas.com. A CDN has servers set up around the world and has done all the hard work for us already <img src='http://blog.mozilla.com/webdev/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>All our images, JavaScript and CSS are served from the CDN&#8217;s servers. The way we achieved this is by setting up a separate hostname that points to them (getpersonas-cdn.mozilla.net). When a browser requests a file from getpersonas-cdn.mozilla.net, the CDN fetches it from our webservers, caches it (because of our far-future expires headers <img src='http://blog.mozilla.com/webdev/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) and serves it to the browser.</p>
<p>Since our CDN has servers in multiple locations around the world, users download files faster and with better latency. </p>
<h3>Results?</h3>
<p>This post wouldn&#8217;t be worth reading without some pretty charts and graphs now would it? (Results according to <a href="http://webpagetest.org">webpagetest.org</a>, a great performance tester)</p>
<h4>Summary:</h4>
<ul>
<li>500ms earlier rendering start time</li>
<li>300ms shorter download time (most likely even faster for users across the globe)</li>
<li>&gt;2x increase in repeat view speed</li>
</ul>
<h4>Before:</h4>
<table id="tableResults" class="pretty" align="center" border="1" cellpadding="10" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="4">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" valign="middle">Bandwidth</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">3.617s</td>
<td id="fvTTFB" valign="middle">0.792s</td>
<td id="fvStartRender" valign="middle">1.763s</td>
<td id="fvDocComplete" class="border" valign="middle">3.617s</td>
<td id="fvRequestsDoc" valign="middle">26</td>
<td id="fvBytesDoc" valign="middle">305 KB</td>
<td id="fvBandwidth" valign="middle">885.23 Kbps</td>
<td id="fvFullyLoaded" class="border" valign="middle">3.617s</td>
<td id="fvRequests" valign="middle">26</td>
<td id="fvBytes" valign="middle">305 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">1.638s</td>
<td id="rvTTFB" class="even" valign="middle">0.418s</td>
<td id="rvStartRender" class="even" valign="middle">0.906s</td>
<td id="rvDocComplete" class="even border" valign="middle">1.638s</td>
<td id="rvRequestsDoc" class="even" valign="middle">26</td>
<td id="rvBytesDoc" class="even" valign="middle">10 KB</td>
<td id="rvBandwidth" class="even" valign="middle">N//A</td>
<td id="rvFullyLoaded" class="even border" valign="middle">1.830s</td>
<td id="rvRequests" class="even" valign="middle">26</td>
<td id="rvBytes" class="even" valign="middle">10 KB</td>
</tr>
</table>
<p><a href="http://www.webpagetest.org/result/091231_3Y1V/"><img src="http://blog.mozilla.com/webdev/files/2010/01/before2.png" alt="before" title="before" width="790" height="444" class="alignnone size-full wp-image-890" /></a></p>
<h4>After</h4>
<table id="tableResults" class="pretty" align="center" border="1" cellpadding="10" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="4">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" valign="middle">Bandwidth</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">3.312s</td>
<td id="fvTTFB" valign="middle">0.780s</td>
<td id="fvStartRender" valign="middle">1.306s</td>
<td id="fvDocComplete" class="border" valign="middle">3.312s</td>
<td id="fvRequestsDoc" valign="middle">25</td>
<td id="fvBytesDoc" valign="middle">318 KB</td>
<td id="fvBandwidth" valign="middle">1.03 Mbps</td>
<td id="fvFullyLoaded" class="border" valign="middle">3.312s</td>
<td id="fvRequests" valign="middle">25</td>
<td id="fvBytes" valign="middle">318 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">0.730s</td>
<td id="rvTTFB" class="even" valign="middle">0.430s</td>
<td id="rvStartRender" class="even" valign="middle">0.534s</td>
<td id="rvDocComplete" class="even border" valign="middle">0.730s</td>
<td id="rvRequestsDoc" class="even" valign="middle">2</td>
<td id="rvBytesDoc" class="even" valign="middle">8 KB</td>
<td id="rvBandwidth" class="even" valign="middle">N//A</td>
<td id="rvFullyLoaded" class="even border" valign="middle">1.153s</td>
<td id="rvRequests" class="even" valign="middle">2</td>
<td id="rvBytes" class="even" valign="middle">8 KB</td>
</tr>
</table>
<p><a href="http://www.webpagetest.org/result/100112_4872/"><img src="http://blog.mozilla.com/webdev/files/2010/01/after.png" alt="after" title="after" width="790" height="434" class="alignnone size-full wp-image-885" /></a></p>
<h3>One more thing:</h4>
<p>For an overview of how much we&#8217;ve sped up getpersonas.com since October 2009, here&#8217;s a speed test from then (before a site redesign):</p>
<table id="tableResults" class="pretty" align="center" border="1" cellpadding="10" cellspacing="0">
<tr>
<th align="center" class="empty" valign="middle" style="border:1px white solid;"></th>
<th align="center" class="empty" valign="middle" colspan="3" ></th>
<th align="center" class="border" valign="middle" colspan="4">Document Complete</th>
<th align="center" class="border" valign="middle" colspan="3">Fully Loaded</th>
</tr>
<tr>
<th align="center" class="empty" valign="middle"></th>
<th align="center" valign="middle">Load Time</th>
<th align="center" valign="middle">First Byte</th>
<th align="center" valign="middle">Start Render</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
<th align="center" valign="middle">Bandwidth</th>
<th align="center" class="border" valign="middle">Time</th>
<th align="center" valign="middle">Requests</th>
<th align="center" valign="middle">Bytes In</th>
</tr>
<tr>
<td align="left" valign="middle">First View</td>
<td id="fvLoadTime" valign="middle">5.225s</td>
<td id="fvTTFB" valign="middle">0.782s</td>
<td id="fvStartRender" valign="middle">2.937s</td>
<td id="fvDocComplete" class="border" valign="middle">5.225s</td>
<td id="fvRequestsDoc" valign="middle">27</td>
<td id="fvBytesDoc" valign="middle">487 KB</td>
<td id="fvBandwidth" valign="middle">898.34 Kbps</td>
<td id="fvFullyLoaded" class="border" valign="middle">5.460s</td>
<td id="fvRequests" valign="middle">27</td>
<td id="fvBytes" valign="middle">487 KB</td>
</tr>
<tr>
<td align="left" class="even" valign="middle">Repeat View</td>
<td id="rvLoadTime" class="even" valign="middle">61.028s</td>
<td id="rvTTFB" class="even" valign="middle">0.433s</td>
<td id="rvStartRender" class="even" valign="middle">13.087s</td>
<td id="rvDocComplete" class="even border" valign="middle">61.028s</td>
<td id="rvRequestsDoc" class="even" valign="middle">27</td>
<td id="rvBytesDoc" class="even" valign="middle">27 KB</td>
<td id="rvBandwidth" class="even" valign="middle">N//A</td>
<td id="rvFullyLoaded" class="even border" valign="middle">61.028s</td>
<td id="rvRequests" class="even" valign="middle">27</td>
<td id="rvBytes" class="even" valign="middle">27 KB</td>
</tr>
</table>
<p><a href="http://www.webpagetest.org/result/091014_2GTP/"><img src="http://blog.mozilla.com/webdev/files/2010/01/before-redesign.png" alt="before redesign" title="before redesign" width="790" height="457" class="alignnone size-full wp-image-903" /></a></p>
<p>That&#8217;s a decrease of <strong>two seconds</strong> in download time and rendering starts 1.7 seconds earlier. Not bad, eh?</p>
<p>[1]: An additional JavaScript file was added between tests shown at bottom of post.</p>
<p>Special thanks to Stephen Donner, Krupa Raj, Jeremy Orem and Matthew Zeier for their hard work in making getpersonas.com blazing fast.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2010/01/12/making-getpersonas-com-blazing-fast/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Rebuilding the Plugin Directory</title>
		<link>http://blog.mozilla.com/webdev/2010/01/08/rebuilding-the-plugin-directory/</link>
		<comments>http://blog.mozilla.com/webdev/2010/01/08/rebuilding-the-plugin-directory/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 20:12:49 +0000</pubDate>
		<dc:creator>lorchard</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=823</guid>
		<description><![CDATA[Most web browsers, including Firefox, offer the ability to install third-party plugins. These plugins enhance your browser by enabling it to handle new kinds of content—i.e. video, audio, even 3-D games and whole application platforms.
Unfortunately, plugins can also introduce crashes and security vulnerabilities. And even worse: Since there&#8217;s no automatic update mechanism across plugins, it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_864" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-864" title="plugindir" src="http://blog.mozilla.com/webdev/files/2010/01/plugindir-300x141.png" alt="Early snapshot of the Plugin Directory" width="300" height="141" /><p class="wp-caption-text">Early snapshot of the Plugin Directory</p></div>
<p>Most web browsers, including Firefox, offer the ability to install third-party plugins. These plugins enhance your browser by enabling it to handle new kinds of content—i.e. video, audio, even 3-D games and whole application platforms.</p>
<p>Unfortunately, plugins can also introduce crashes and security vulnerabilities. And even worse: Since there&#8217;s no automatic update mechanism across plugins, it&#8217;s easy to install a one and forget it&#8217;s even there. Unless you return regularly to a plugin&#8217;s download page, you may never think to update it.</p>
<p>With this in mind, we launched a page a few months ago to detect outdated installations of the Adobe Flash plugin, <a href="http://blog.mozilla.com/security/2009/09/04/helping-users-keep-plugins-updated/">encouraging Firefox users to download an update</a>. Soon after, we expanded the effort by launching a general <a href="https://www.mozilla.com/en-US/plugincheck/">Plugin Check page</a> to cover more plugins used with Firefox.</p>
<p>But, since it&#8217;s our mission to make the web a better place, we want to go even further: We want to expand this Plugin Check service to cover as many browsers and plugins as possible.</p>
<p>As it turns out, that&#8217;s a tall order: Competing browsers offer entirely different models of collecting information on installed plugins, and plugins themselves reveal inconsistent information from one to the next. This makes a common detection scheme across browsers and plugins somewhat challenging.</p>
<p>Additionally, there&#8217;s no single fresh source of information about plugins to check once the installed versions have been detected. For example, while the <a href="http://plugindoc.mozdev.org/">PluginDoc site at mozdev.org</a> has existed for years, it tends to be out of date because it&#8217;s largely maintained manually by just a few people. And, if the information was up to date, there&#8217;s no web-based service to use for automated update checks.</p>
<p>So, to address these issues, the Webdev team has started work on <a href="https://wiki.mozilla.org/Plugins:PluginDirectory">building a new Plugin Directory</a>. We&#8217;re in the very early stages yet, but we&#8217;re hoping to make progress on goals like the following:</p>
<ul>
<li>Invite plugin vendors to contribute to our database, possibly even  through submissions to a web-based API as part of a release process.</li>
<li>Invite users of varying levels of expertise to contribute to our  plugin database, since we need a lot of help cataloging and tracking the  plugins in the wild.</li>
<li>Provide a human-browseable directory to explore the plugin database.</li>
<li>Offer a web service enabling web pages and browsers to query our database for plugin details.</li>
<li>Improve plugin detection from web pages and within browsers</li>
</ul>
<p>We can use help on all of the above as the project progresses, so stay tuned for more details.  In the meantime, you can peek in on the progress so far by visiting the project wiki page, where you can find notes, demos, and source code:</p>
<ul>
<li> <a href="https://wiki.mozilla.org/Plugins:PluginDirectory">https://wiki.mozilla.org/Plugins:PluginDirectory</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2010/01/08/rebuilding-the-plugin-directory/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>getpersonas.com 2.1 has launched!</title>
		<link>http://blog.mozilla.com/webdev/2010/01/08/getpersonas-com-2-1-has-launched/</link>
		<comments>http://blog.mozilla.com/webdev/2010/01/08/getpersonas-com-2-1-has-launched/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 17:25:55 +0000</pubDate>
		<dc:creator>rdoherty</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=850</guid>
		<description><![CDATA[
If getpersonas.com seems a little bit snappier today, there&#8217;s a reason. Last night we released a new version of the website that utilizes a Content Delivery Network (CDN) that makes browsing getpersonas.com even faster.
What&#8217;s a CDN, you ask? To put it simply, a CDN moves content that normally would be served from a website in [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.mozilla.com/webdev/files/2010/01/personas-21.jpg" alt="getpersonas.com 2.1" width="470" height="391" class="alignnone size-full wp-image-855" /></p>
<p>If <a href="http://www.getpersonas.com">getpersonas.com</a> seems a little bit snappier today, there&#8217;s a reason. Last night we released a new version of the website that utilizes a Content Delivery Network (CDN) that makes browsing getpersonas.com even faster.</p>
<p>What&#8217;s a CDN, you ask? To put it simply, a CDN moves content that normally would be served from a website in one location and stores it all around the world, making it faster for you, the user to download it. We&#8217;re using a CDN to store images, JavaScript and CSS for getpersonas.com. </p>
<p>Another neat trick we are using to make the site faster is far future Expires headers. What this does is tell the browser to cache our files and not re-download them every time you visit our site, saving you bandwidth and time.</p>
<p>This release also contains numerous bugfixes, <a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;component=getpersonas.com;product=Websites;target_milestone=2.1">view the full buglist</a> if you want to know more.</p>
<p>Special thanks to Stephen Donner, Krupa Raj, Jeremy Orem and Matthew Zeier for their hard work in making this release possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2010/01/08/getpersonas-com-2-1-has-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Gradients Tutorials</title>
		<link>http://blog.mozilla.com/webdev/2009/11/30/css-gradients-tutorials/</link>
		<comments>http://blog.mozilla.com/webdev/2009/11/30/css-gradients-tutorials/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 23:21:19 +0000</pubDate>
		<dc:creator>rdoherty</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=800</guid>
		<description><![CDATA[hacks.mozilla.org has two great tutorials up about CSS gradients available in Firefox 3.6:

css gradients in Firefox 3.6
building beautiful buttons with css gradients

Really awesome stuff, looking forward to seeing more and more designs that are normally done with lots of images to be created with CSS!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://hacks.mozilla.org">hacks.mozilla.org</a> has two great tutorials up about CSS gradients available in Firefox 3.6:</p>
<ul>
<li><a href="http://hacks.mozilla.org/2009/11/css-gradients-firefox-36/">css gradients in Firefox 3.6</a></li>
<li><a href="http://hacks.mozilla.org/2009/11/building-beautiful-buttons-with-css-gradients/">building beautiful buttons with css gradients</a></li>
</ol>
<p>Really awesome stuff, looking forward to seeing more and more designs that are normally done with lots of images to be created with CSS!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/11/30/css-gradients-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>2</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>
	</channel>
</rss>
