<?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 Hacks - the Web developer blog &#187; Firefox</title>
	<atom:link href="http://hacks.mozilla.org/category/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacks.mozilla.org</link>
	<description>hacks.mozilla.org</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:52:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SPDY Brings Responsive and Scalable Transport to Firefox 11</title>
		<link>http://hacks.mozilla.org/2012/02/spdy-brings-responsive-and-scalable-transport-to-firefox-11/</link>
		<comments>http://hacks.mozilla.org/2012/02/spdy-brings-responsive-and-scalable-transport-to-firefox-11/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 22:16:14 +0000</pubDate>
		<dc:creator>Patrick McManus</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10976</guid>
		<description><![CDATA[Firefox 11 contains the first Firefox implementation of the SPDY protocol. SPDY is a secure web transport protocol that encapsulates HTTP/1 while replacing its aging connection management strategies. This results in more responsive page loads today and enables better scalability with the real time web of tomorrow. The most important goal of SPDY is to [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 11 contains the first Firefox implementation of the SPDY protocol. SPDY is a secure web transport protocol that encapsulates HTTP/1 while replacing its aging connection management strategies. This results in more responsive page loads today and enables better scalability with the real time web of tomorrow.</p>
<p>The most important goal of SPDY is to transport web content using fewer TCP connections. It does this by multiplexing large numbers of transactions onto one TLS connection. This has much better latency properties than native HTTP/1. When using SPDY a web request practically never has to wait in the browser due to connection limits being exhausted (e.g. the limit of 6 parallel HTTP/1 connections to the same host name). The request is simply multiplexed onto an existing connection.</p>
<p>Many web pages are full of small icons and script references. The speed of those transfers is limited by network delay instead of bandwidth. SPDY ramps up the parallelism which in turn removes the serialized delays experienced by HTTP/1 and the end result is faster page load time. By using fewer connections, SPDY also saves the time and CPU needed to establish those connections.</p>
<p>The page-load waterfall diagram below tells the story well. Note the large number of object requests that all hit the network at the same time. All of their individual load times are comprised exclusively of network delay and by executing them in parallel the total page load time is reduced to a single round trip.</p>
<p><img src="http://hacks.mozilla.org/wp-content/uploads/2012/01/waterfall.png" alt="" title="Waterfall" width="400" height="293" class="aligncenter size-full wp-image-10986" /></p>
<p>Generally speaking, web pages on high latency connections with high numbers of embedded objects will see the biggest benefit from SPDY. That&#8217;s great because its where the web should be going. High latency mobile is a bigger part of the Internet every day, and as the Internet spreads to parts of the world where it isn&#8217;t yet common you can count on the fact that the growth will be mobile driven. Designs with large numbers of objects are also proving to be a very popular paradigm. Facebook, G+, Twitter and any avatar driven forum are clear examples of this. Rather than relying on optimization hacks such as sprites and data urls that are hard to develop and harder to maintain we can let the transport protocol do its job better.</p>
<p>Beyond better page load time, there is good reason to think this approach is good for the web&#8217;s foundation. The way HTTP/1 uses large numbers of small and parallel active connections creates a giant networking congestion problem. This inhibits the deployment of real time applications like WebRTC, VOIP, and some highly interactive games. SPDY&#8217;s small number of busier connections fit the congestion control model of the Internet much better and enables the transport of classic web content to cooperate better with these real time applications. Web browsers have only managed to keep the congestion problem in check with HTTP/1 through arbitrary limits on its parallelism. With SPDY we can have our parallel-cake and eat it in low latency conditions too. This property is what I find most promising about SPDY, and <a href="http://bitsup.blogspot.com/2011/12/spdy-bufferbloat-http-and-real-time.html"">I&#8217;ve written about it extensively in the past</a>.</p>
<p>There is a great transition path onto SPDY. It is a new protocol, but it uses the old https:// protocol scheme in URIs. No changes to markup are needed to use SPDY. Generally SPDY servers support both SPDYand HTTP/1 for use with browsers that are not SPDY capable. The protocol used is silently negotiated through a TLS extension called Next Protocol Negotiation. The great news here is that upgrading to SPDY is just a matter of an administrative server upgrade. No changes to content are needed and things like REST APIs continue to work unmodified. Indeed, a SPDY site is not visually different in any way from an HTTP/1 site.</p>
<p>Google did a lot of work to launch this technology and to evolve it in the open, but it isn&#8217;t a Google only project any more. Since the implementations in Chrome and various Google web services were introduced we have seen either code or commitments regarding SPDY from many other products and groups including Amazon&#8217;s tablet, node.js, an Apache module, curl, nginx, and even a couple CDNs along with Mozilla. In my opinion, that kind of reaction is because engineers have looked at this and decided that it is solves several serious problems with HTTP&#8217;s connection handling and that this is a technology well positioned for us all to cooperate on. There is also discussion and preliminary movement in all the right standardization forums such as the W3C TAG and the IETF. Open standardization of the protocol is a key condition of Mozilla&#8217;s interest in it, but it is not a precondition to using it. Gathering operational experience instead of just engineering on whiteboards, is a valuable part of how the best protocols are made. The details of SPDY can be iterated based on that experience and the standardization process. The protocol is well suited to that evolution at this stage.</p>
<p>SPDY needs to be explicitly enabled through about:config in Firefox 11. Go to that URL and search for network.http.spdy.enabled and set it to true. Future revisions hope to have it enabled by default.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2012/02/spdy-brings-responsive-and-scalable-transport-to-firefox-11/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Mozilla Hacks Weekly, February 2nd 2012</title>
		<link>http://hacks.mozilla.org/2012/02/mozilla-hacks-weekly-february-2nd-2012/</link>
		<comments>http://hacks.mozilla.org/2012/02/mozilla-hacks-weekly-february-2nd-2012/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 14:20:28 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[BrowserID]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mozilla Hacks Weekly]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=11147</guid>
		<description><![CDATA[After a little break, Mozilla Hacks Weekly is now back! More reading tips from Mozilla&#8217;s Developer Engagement team. We also have a new format for our content, so please let us know if you have any thoughts on that! At the end of this blog post, you also have all the Developer Engagement team members [...]]]></description>
			<content:encoded><![CDATA[<p>After a little break, Mozilla Hacks Weekly is now back! More reading tips from <a href="https://wiki.mozilla.org/Engagement/Developer_Engagement">Mozilla&#8217;s Developer Engagement</a> team. We also have a new format for our content, so please let us know if you have any thoughts on that!</p>
<p><span id="more-11147"></span></p>
<p>At the end of this blog post, you also have all the Developer Engagement team members and what they work on, if you are interested in discussing more, contributing or taking part of our work.</p>
<h2>Weekly links</h2>
<p>If there is anything you think we should read or know about, don&#8217;t hesitate to post a comment, contact us on Twitter or through any other means.<br />
The picks this week are:</p>
<ul>
<li><a href="http://msujaws.wordpress.com/2012/02/01/layout-paint-flashing-in-firefox/">Layout paint flashing in Firefox</a> &#8211; Detect when a region of the web browser requires repainting.</li>
<li>James Long shows just how simple it is to <a href="http://jlongster.com/2011/12/28/rotating-webpages-with-a-gamepad.html">use a Wii controller and CSS transitions to change web sites</a> in Firefox.</li>
<li><a href="http://beingintelligently.com/?p=34">The Case for Browser ID</a> &#8211; A thoroughly clueful analysis supporting BrowserID as a pragmatic solution for identity on the Web, including key ingredients and current issues. </li>
<li>Slide decks are little by little moving from dedicated Powerpoint-like applications to the web. Among the numerous slide engines around, <a href="http://bartaz.github.com/impress.js/">impress.js</a> is really visually appealing, but, beware!, you need a browser supporting CSS3 Transforms, both 2D and 3D, and Transitions (For Firefox, it is from Firefox 10 or later&#8230;)</li>
<li><a href="https://github.com/Pollenware/comb">Comb</a> looks like a nice toolbox of utilities for creating node.js applications, including helpers for logging, collections and flow control.</li>
<li>Peter Lubbers HTML Offline Web Apps Presentation. HTML5 &#8220;Off line&#8221;" can be as tricky as it is powerful. Check out this <a href="http://www.slideshare.net/skillsmatter/peter-lubbershtml5offlinewebapps">great introduction</a>!</li>
<li>If you use <a href="http://www.sublimetext.com/2">Sublime Text 2</a> for programming then you&#8217;ll love this <a href="http://wbond.net/sublime_packages/community">huge list of packages</a> that extend the code editor in various ways.</li>
<li>This article is not directly to Web development, but to something close to our hearts and even closer to our wallets: monetization. <a href="http://www.elezea.com/2011/12/facebook-ads-and-you/">Everything for free, always: how Facebook ads show us the sad state of the Internet</a>. In short, close to one billion people are willing to leave a large organization know everything about them in order to access a service that costs roughly 3 dollars a year. It says a lot about the monetization issue on the Web. Aiming to fix this, Mozilla&rsquo;s working on <a href="http://hacks.mozilla.org/2011/12/mozilla-labs-apps-preview/">Mozilla Labs Apps Preview</a>, which could also become useful for  <a href="http://hacks.mozilla.org/2011/12/gaming-and-the-mozilla-labs-apps-project/">games</a>!</li>
<li><a href="http://line25.com/articles/10-usability-crimes-you-really-shouldnt-commit">10 Usability Crimes You Really Shouldn&rsquo;t Commit</a> &#8211; A collection of ten simple but important usability tips for web developers young and old.</li>
</ul>
<h2>The Developer Engagement team</h2>
<p>Mozilla&#8217;s Developer Engagement team work with writing articles, documentation &#8211; such as <a href="https://developer.mozilla.org/">MDN (Mozilla Developer Network)</a> &#8211; public speaking and generally helping and informing about open technologies and Mozilla products. If you are interested in following our work, here are the team members:</p>
<section class="hw-team">
<div class="hw-team-member">
<h3>Barry Munsterteiger</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2012/02/barry.jpg" alt=""> Barry is our Creative Instigator and is working on interesting and limit-breaking demos.</p>
<p>        Twitter: <a href="https://twitter.com/mozbarry">@mozBarry</a>
    </div>
<div class="hw-team-member">
<h3>Christian Heilmann</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/chris-heilmann.jpg" alt=""> Christian is Mozilla&#8217;s Principal Evangelist and is working with HTML5, Open Web, <a href="https://browserid.org/">BrowserID</a> and <a href="https://wiki.mozilla.org/DevTools">Developer Tools in Firefox</a>. He is also maintaining the <a href="https://twitter.com/mozhacks">@mozhacks</a> account together with Robert Nyman.</p>
<p>        Blog: <a href="http://christianheilmann.com/">http://christianheilmann.com/</a><br />
        Twitter: <a href="http://twitter.com/codepo8">@codepo8</a>
    </div>
<div class="hw-team-member">
<h3>Eric &#8220;Sheppy&#8221; Shepherd</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/09/eric-shepherd.jpg" alt=""> Eric is the Developer Documentation Lead for the MDN documentation and everything surrounding it. </p>
<p>        Blog: <a href="http://www.bitstampede.com/">http://www.bitstampede.com/</a><br />
        Twitter: <a href="http://twitter.com/sheppy">@sheppy</a>
    </div>
<div class="hw-team-member">
<h3>Havi Hoffman</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/havi-hoffman.jpg" alt=""> Havi works with <a href="http://mozillalabs.com/">Mozilla Labs</a> and <a href="https://webfwd.org/">WebFWD</a>, and maintains the <a href="http://twitter.com/mozlabs">@mozlabs</a> account.</p>
<p>        Twitter: <a href="http://twitter.com/freshelectrons">@freshelectrons</a>.
    </div>
<div class="hw-team-member">
<h3>Janet Swisher</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/janet-swisher.jpeg" alt=""> Janet is working on MDN documentation and is organizing doc sprints to ensure we have premium quality on MDN.</p>
<p>        Blog: <a href="http://www.janetswisher.com/">http://www.janetswisher.com/</a><br />
        Twitter: <a href="http://twitter.com/jmswisher">@jmswisher</a>.
    </div>
<div class="hw-team-member">
<h3>Jean-Yves Perrier</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/12/Jean-yves-perrier.png" alt=""> Jean-Yves is another one of our technical writers working on MDN documentation.</p>
<p>        Twitter: <a href="http://twitter.com/@teoli2003">@teoli2003</a>.
    </div>
<div class="hw-team-member">
<h3>Jeff Griffiths</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/11/jeff-griffiths.jpg" alt=""> Jeff is working with the <a href="https://wiki.mozilla.org/Jetpack">Add-ons SDK (Jetpack)</a>.</p>
<p>        Blog: <a href="http://canuckistani.ca/">http://canuckistani.ca/</a><br />
        Twitter: <a href="http://twitter.com/canuckistani">@canuckistani</a>
    </div>
<div class="hw-team-member">
<h3>Joe Stagner</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/09/joe-stagner-cartoon.gif" alt=""> Joe is working with <a href="https://apps.mozillalabs.com/">Web Apps</a> Developer Ecosystem &amp; Partner Engagement, HTML5 and the Open Web.</p>
<p>        Blog: <a href="http://www.misfitgeek.com/">http://www.misfitgeek.com/</a><br />
        Twitter: <a href="http://twitter.com/MisfitGeek">@MisfitGeek</a>
    </div>
<div class="hw-team-member">
<h3>John Karahalis</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/john-karahalis.jpg" alt=""> John is working on <a href="https://developer.mozilla.org/demos/devderby">Dev Derby</a>.</p>
<p>        Twitter: <a href="http://twitter.com/openjck">@openjck</a>
    </div>
<div class="hw-team-member">
<h3>Rob Hawkes</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/rob-hawkes.jpg" alt=""> Rob is working on <a href="https://wiki.mozilla.org/HTML5_Games">HTML5 games</a> and the Open Web.</p>
<p>        Blog: <a href="http://rawkes.com/">http://rawkes.com/</a><br />
        Twitter: <a href="http://twitter.com/robhawkes">@robhawkes</a>
    </div>
<div class="hw-team-member">
<h3>Robert Nyman</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/robert-nyman.jpg" alt=""> Robert is working with HTML5, Open Web, <a href="http://www.mozilla.com/firefox/">Firefox</a>, <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> and maintains the <a href="https://twitter.com/mozhacks">@mozhacks</a> account.</p>
<p>        Blog: <a href="http://robertnyman.com">http://robertnyman.com</a><br />
        Twitter: <a href="http://twitter.com/robertnyman">@robertnyman</a>
    </div>
<div class="hw-team-member">
<h3>Shezmeen Prasad</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2012/02/shez.jpg" alt=""> Shezmeen is working on everything regarding events, organization and connecting conferences with Mozilla speakers.
    </div>
<div class="hw-team-member">
<h3>Stormy Peters</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/stormy-peters.jpg" alt=""> Stormy is the Team Lead for the Developer Engagement team. managing it and evaluating our objectives.</p>
<p>        Blog: <a href="http://stormyscorner.com/">http://stormyscorner.com/</a><br />
        Twitter: <a href="http://twitter.com/storming">@storming</a>
    </div>
<div class="hw-team-member">
<h3>Tristan Nitot</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/tristan-nitot.jpg" alt=""> Tristan is our <a href="http://hacks.mozilla.org/category/missionmozilla/">Mission Evangelist</a> and is focusing on the bigger picture of Mozilla.</p>
<p>        Blog: <a href="http://standblog.org/blog/en">http://standblog.org/blog/en</a><br />
        Twitter: <a href="http://twitter.com/nitot">@nitot</a>
    </div>
<div class="hw-team-member">
<h3>Will Bamberg</h3>
<p>        <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/will-bamberg.jpg" alt="A picture of Will Bamberg"> Will is working on documentation for the <a href="https://wiki.mozilla.org/Jetpack">Add-ons SDK (Jetpack)</a>.
    </div>
</section>
<style>
    .hw-team {overflow: hidden;}
    .hw-team-member { float: right; width: 45%; overflow: hidden; margin-bottom: 15px; }
    .hw-team-member:nth-child(odd) { float: left; clear: both;}
    .hw-team-member img { display: block; margin-bottom: 10px; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2012/02/mozilla-hacks-weekly-february-2nd-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Fullscreen API in web browsers</title>
		<link>http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/</link>
		<comments>http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 17:38:18 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 10]]></category>
		<category><![CDATA[Web Developers]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=11021</guid>
		<description><![CDATA[One thing which has been very important when it comes to creating special end user experiences have been the ability to show something fullscreen, effectively hiding all the other content etc. Remember when web sites gave you instructions how to configure your web browser with hiding toolbars and more, just to get a slightly better [...]]]></description>
			<content:encoded><![CDATA[<p>One thing which has been very important when it comes to creating special end user experiences have been the ability to show something fullscreen, effectively hiding all the other content etc.</p>
<p><span id="more-11021"></span></p>
<p>Remember when web sites gave you instructions how to configure your web browser with hiding toolbars and more, just to get a slightly better user experience? Or maybe it&#8217;s just me… :-)</p>
<p>Either way, some time ago we got fullscreen support in web browsers where the user could choose to view the current web site in fullscreen. That&#8217;s all good and well, but as an extension to that, as web developers we want to be able to trigger that. Either for the entire web site or just a specific element.</p>
<p>And now we can!</p>
<h2>Requesting fullscreen</h2>
<p>We now have access to a method called <code>requestFullScreen</code>, so far implemented in Firefox, Google Chrome and Safari. Therefore, to make it work at the moment, we need this code:</p>
<p><script src="https://gist.github.com/1704368.js?file=Fullscreen%20API"></script><br />
<noscript><br />
    <code>var docElm = document.documentElement;<br />
if (docElm.requestFullscreen) {<br />
    docElm.requestFullScreen();<br />
}<br />
else if (docElm.mozRequestFullscreen) {<br />
    docElm.mozRequestFullScreen();<br />
}<br />
else if (docElm.webkitRequestFullScreen) {<br />
    docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);<br />
}</code><br />
</noscript></p>
<p>Please note that the <a href="http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html">Fullscreen standard in the W3C specification</a> uses a lowercase &#8216;s&#8217; in all methods, whereas Firefox, Google Chrome and Safari use an uppercase one.</p>
<p>What the code above does is just getting a reference to the documentElement and request for it to be displayed fullscreen. Naturally, you could also make just a certain element fullscreen, for instance, a video, with the same method called for the element you wish.</p>
<h2>Cancelling fullscreen</h2>
<p>If you want to cancel the fullscreen state, you need to call it on the document element:</p>
<p><script src="https://gist.github.com/1705463.js"></script><br />
<noscript><br />
    <code>if (document.exitFullscreen) {<br />
    document.exitFullscreen();<br />
}<br />
else if (document.mozCancelFullScreen) {<br />
    document.mozCancelFullScreen();<br />
}<br />
else if (document.webkitCancelFullScreen) {<br />
    document.webkitCancelFullScreen();<br />
}</code><br />
</noscript></p>
<p>Note here that W3C has decided to call it <code>exitFullscreen</code>, but in all existing web browser implementations it&#8217;s about cancelling the state.</p>
<h2>Detecting fullscreen state change</h2>
<p>The user could, for instance, exit fullscreen, something that might be good for you to know. For that we have a <code>fullscreenchange</code> event, that you can apply both to the element that requested fullscreen, but also to the document. Then we just detect the fullscreen state and take act accordingly, like this:</p>
<p><script src="https://gist.github.com/1705516.js"></script><br />
<noscript><code>document.addEventListener("fullscreenchange", function () {<br />
    fullscreenState.innerHTML = (document.fullscreen)? "" : "not ";<br />
}, false);</p>
<p>document.addEventListener("mozfullscreenchange", function () {<br />
    fullscreenState.innerHTML = (document.mozFullScreen)? "" : "not ";<br />
}, false);</p>
<p>document.addEventListener("webkitfullscreenchange", function () {<br />
    fullscreenState.innerHTML = (document.webkitIsFullScreen)? "" : "not ";<br />
    }, false);</code></noscript></p>
<h2>Styling fullscreen</h2>
<p>In CSS, we get a number of pseudo-classes for styling fullscreen elements. The most reliable one is for full-screen and automatically gets triggered when the document/element is in fullscreen mode:</p>
<p><script src="https://gist.github.com/1705528.js"></script><br />
<noscript><code>html:-moz-full-screen {<br />
    background: red;<br />
}</p>
<p>html:-webkit-full-screen {<br />
    background: red;<br />
}</p>
<p>html:fullscreen {<br />
    background: red;<br />
}</code></noscript></p>
<p>Notice here that the W3C approach doesn&#8217;t use a hyphen between the word &#8216;full&#8217; and the word &#8216;screen&#8217;.</p>
<p>It should also be added that Firefox is the only web browser that applies a width and height of 100% to the element that is requesting fullscreen, since we believe that is the desired behavior. This can of course be overridden with the above CSS.</p>
<h2>Full screen with key input</h2>
<p>For security reasons, most keyboard inputs have been blocked in the fullscreen mode. However, in Google Chrome you can request keyboard support by calling the method with a flag:</p>
<p><code>docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);</code></p>
<p>This does not work in Safari, and the method won&#8217;t be called.</p>
<p>With Firefox, we are discussing and looking into various ways of how we we could add keyboard input support without jeopardizing the end user&#8217;s security. One suggestion, that no one has implemented yet, is the <code>requestFullscreenWithKeys</code> method, which in turn would trigger certain notifications for the user.</p>
<h2>Web browser support</h2>
<p>This feature is currently available in <a href="http://www.mozilla.org/firefox/beta/">Firefox beta</a>, but it&#8217;s due to land in the official release of Firefox, version 10, tomorrow! It has also been available in Google Chrome since version 15 and Safari since 5.1.</p>
<h2>Play with fullscreen!</h2>
<p>I have a <a href="http://robnyman.github.com/fullscreen/">Fullscreen API demo</a> available for you to play with, and all the code is available in the <a href="https://github.com/robnyman/robnyman.github.com/tree/master/fullscreen">Fullscreen repository on GitHub</a>.</p>
<p><a href="http://robnyman.github.com/fullscreen/"><img src="http://hacks.mozilla.org/wp-content/uploads/2012/01/fullscreen-api-demo.png" alt=""></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Introducing Aurora 11 with tons of new features and improvements</title>
		<link>http://hacks.mozilla.org/2011/12/introducing-aurora-11-with-tons-of-new-features-and-improvements/</link>
		<comments>http://hacks.mozilla.org/2011/12/introducing-aurora-11-with-tons-of-new-features-and-improvements/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 17:58:26 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Aurora]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10611</guid>
		<description><![CDATA[We have now released Aurora 11, soon to become Firefox 11, and wanted to cover all the the things we have improved in this version! Highlights To quickly edit the outerHTML of an element, we have now added support for element.outerHTML. The Battery API Storing files in IndexedDB Support for loop attributes for media elements [...]]]></description>
			<content:encoded><![CDATA[<p>We have now released <a href="http://www.mozilla.org/en-US/firefox/channel/">Aurora 11</a>, soon to become Firefox 11, and wanted to cover all the the things we have improved in this version!</p>
<p><span id="more-10611"></span></p>
<h2>Highlights</h2>
<ul>
<li>To quickly edit the outerHTML of an element, we have now added support for element.outerHTML.</li>
<li>The Battery API</li>
<li>Storing files in IndexedDB</li>
<li>Support for loop attributes for media elements</li>
<li>SPDY (off by preferences)</li>
<li>WebSockets no longer needs a prefix when you call them</li>
</ul>
<h2>All new features</h2>
<p>Below is a list of all the new improvements in Aurora 11, grouped by category together with a link to each bug in bugzilla if you are interested in reading up more about it and its process.</p>
<h3>DOM</h3>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=92264">Support element.outerHTML property</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=280391">SVGSVGElement.getElementById not implemented</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=692642">IndexedDB: support indexedDB.cmp</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=692630">IndexedDB: multientry indexes</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=692614">IndexedDB now support all key types, including floating point numbers, dates and arrays!</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=678694">Battery API</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=651072">Support HTML parsing in XMLHttpRequest per XMLHttpRequest Level 2</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=704171">Remove the no-argument form of requestAnimationFrame</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=704175">requestAnimationFrame callback function name should be &#8220;sample&#8221;, not &#8220;onBeforePaint&#8221;</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=647518">Allow mozRequestAnimationFrame requests to be cancelable</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=708173">Use cancelRequestAnimationFrame where appropriate instead of boolean flags</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=710981">Add mozCancelAnimationFrame</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=675884">Implement Event constructors</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=708701">Implement HTML event ctors</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=709127">Implement MouseEvent and UIEvent ctors</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=661877">Enable storing files in IndexedDB</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=694138">IndexedDB: Allow passing an array as keypath</a></li>
</ul>
<h3>GFX</h3>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=631479">Add Graphite2 to gecko</a></li>
</ul>
<h3>Layout</h3>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=627842">-moz-text-size-adjust CSS property</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511909">[css3-conditional] allow @-rules inside of @media and @-moz-document</a></li>
</ul>
<h3>Media</h3>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=449157">Implement the looping attributes in media elements</a></li>
</ul>
<h3>Network</h3>
<ul>
<li><a href="https://wiki.mozilla.org/Platform/Features/SPDY">SPDY (Preffed off)</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=573043">Enable Extended Protection (channel and service binding) for NTLM authentication</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=704989">add workaround for broken Outlook Web App (OWA) attachment handling</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=700589">HTTP content type charset parameter accepts single quotes</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=703380">XMLHttpRequest can fire an abort event after a load event, but should not</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=701787">Disallow responseType and withCredentials for sync XHR</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=664179">Allow Cross-Origin URLs in EventSource (Server-Sent Events)</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=707142">Support unprefixed responseType == &#8220;json&#8221; in XMLHttpRequest</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=676439">Implement Binary Messages for Websockets</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=664284">Add HSTS support for websockets</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=710964">No longer dispatch incoming WebSocket messages in CLOSING state</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=711205">Set WebSocket message size limit to 2 GB</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=695635">Tracking bug: unprefix WebSockets</a></li>
</ul>
<h3>Performance</h3>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666446">Lots of animated gifs swamp us with paint events</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/12/introducing-aurora-11-with-tons-of-new-features-and-improvements/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>New Developer Tools in Firefox 11 Aurora</title>
		<link>http://hacks.mozilla.org/2011/12/new-developer-tools-in-firefox-11-aurora/</link>
		<comments>http://hacks.mozilla.org/2011/12/new-developer-tools-in-firefox-11-aurora/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 17:07:27 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10555</guid>
		<description><![CDATA[More Goodies for the Holidays! Last month, I wrote a post for Hacks introducing the new tools in Firefox 10 Aurora. Those features have now moved to beta. Thanks for all of the great feedback so far! In a dramatic turn at the end of that blog post, I foreshadowed that we had &#8220;more to [...]]]></description>
			<content:encoded><![CDATA[<h2>More Goodies for the Holidays!</h2>
<p>Last month, I wrote a post for Hacks <a href="http://hacks.mozilla.org/2011/11/developer-tools-in-firefox-aurora-10/">introducing the new tools in Firefox 10 Aurora</a>. Those features have now moved to beta. Thanks for all of the great feedback so far!</p>
<p>In a dramatic turn at the end of that blog post, I <a href="http://en.wikipedia.org/wiki/Foreshadowing">foreshadowed</a> that we had &#8220;more to come&#8221;. And, indeed here I am to tell you about the <em>new</em> developer tools features now in <a href="http://firefox.com/aurora">Firefox Aurora</a>. What you see here is slated for final release in March, 2012.</p>
<h2>Free-form Style Sheet Editing</h2>
<p>In the last Firefox release, we introduced the Style Inspector. You can use the Style Inspector&#8217;s rules view to make changes to the CSS properties for an element. With this release, we&#8217;re adding a free-form Style Editor to the mix.</p>
<p>Select the Style Editor from the Web Developer menu, and you&#8217;re presented with a view that lists the style sheets for the page in one pane, and gives you an editor to make changes in another:</p>
<p><a href="http://hacks.mozilla.org/2011/12/new-developer-tools-in-firefox-11-aurora/style-editor-hn/" rel="attachment wp-att-10574"><img class="alignnone size-large wp-image-10574" src="http://hacks.mozilla.org/wp-content/uploads/2011/12/Style-Editor-HN-500x220.png" alt="" width="500" height="220" /></a></p>
<p>The Style Editor provides a friendly environment for working on your style sheets. Any changes you make are reflected instantly on the page. Once you&#8217;ve made your changes, you can save the file on your computer.</p>
<p>There are also a number of handy additional features. Click on the &#8220;eye&#8221; icon next to the style sheet and you can toggle the entire sheet on and off. If you&#8217;re working on a new page, you can create new style sheets on the fly or load a style sheet from disk.</p>
<p>If you want to take a look at how other sites on the web are styled, you can use the Style Editor to view the style sheets on any site. On public sites, the style sheets are often minified to reduce download time. The Style Editor will automatically prettify style sheets that it detects have been minified, but it will leave your source style sheets alone.</p>
<h2>&#8220;Tilt&#8221; 3D View of Web Page Structure</h2>
<p>Open up the Page Inspector (Web Developer-&gt;Inspect from the menu, or Inspect Element in the context menu on the page), and you&#8217;ll see a new <strong>3D</strong> button on the toolbar <strong>if your computer is compatible with WebGL</strong>. Click that, and you&#8217;re presented with a <em>whole new perspective on web page structure</em>.</p>
<p><a href="http://hacks.mozilla.org/2011/12/new-developer-tools-in-firefox-11-aurora/cnn-3d-view/" rel="attachment wp-att-10569"><img class="alignnone size-large wp-image-10569" src="http://hacks.mozilla.org/wp-content/uploads/2011/12/CNN-3D-View-500x324.png" alt="" width="500" height="324" /></a></p>
<p>This 3D view (which was previously available in an add-on called <a href="http://hacks.mozilla.org/2011/10/debugging-and-editing-webpages-in-3d/">Tilt</a>), stacks elements as they are nested in the DOM and lets you see elements that are hidden or off the page. You can zoom in and out, rotate and pan the view to see the page from any angle that is helpful to you.</p>
<p>The 3D view is fully integrated with the rest of the Page Inspector functionality. You can open the HTML view or the Style Inspector for more information about the element you&#8217;ve clicked on in the 3D view. You can also change selected elements using the breadcrumbs on the toolbar.</p>
<p>The controls for the 3D view are easy:</p>
<table>
<tbody>
<tr>
<th>Function</th>
<th>Mouse</th>
<th>Keyboard</th>
</tr>
<tr>
<td>Zoom</td>
<td>Scroll up/down</td>
<td><code>+</code> and <code>-</code></td>
</tr>
<tr>
<td>Rotate</td>
<td>Click and drag</td>
<td><code>a</code>/<code>d</code> and <code>w</code>/<code>s</code></td>
</tr>
<tr>
<td>Pan</td>
<td>right-click and drag</td>
<td>Arrow keys</td>
</tr>
</tbody>
</table>
<h2>Dozens of Other Improvements</h2>
<p>Since the last release, we&#8217;ve landed dozens of refinements to our other developer features. A growing number of contributors are making the tools they use better by <a href="https://wiki.mozilla.org/DevTools/GetInvolved">getting involved</a>.</p>
<p>The Web Console, Scratchpad and Style Inspector have all had improvements since the last Firefox. Take a look, and <a href="https://lists.mozilla.org/listinfo/dev-apps-firefox">let us know what you think</a>!</p>
<h2>Get it Now!</h2>
<p>You don&#8217;t need to wait until March to get these great new features. Download <a href="http://firefox.com/aurora">Firefox Aurora</a> today and see these and other improvements that are coming to final release soon.</p>
<h2>Updates+Screencast</h2>
<p>Since I wrote this article, we&#8217;ve landed some fixes and improvements to these tools. I added the way to pan the Page Inspector 3D view (right-click and drag). Also, there is now a <a href="http://www.youtube.com/watch?v=tRriN8V45jk&amp;context=C304a8ceADOEgsToPDskLDECBCODKvOjyBqq6eUuJy">screencast for these features</a>. Be sure to opt-in to <a href="http://youtube.com/html5">YouTube&#8217;s HTML5 video option</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/12/new-developer-tools-in-firefox-11-aurora/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>New features for HTML5 video playback in Firefox</title>
		<link>http://hacks.mozilla.org/2011/12/new-features-for-html5-video-playback-in-firefox/</link>
		<comments>http://hacks.mozilla.org/2011/12/new-features-for-html5-video-playback-in-firefox/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 12:55:54 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[aurora]]></category>
		<category><![CDATA[nightly]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10562</guid>
		<description><![CDATA[As explained in this blog post by Jared Wein of the Firefox team there are quite a few new features in Firefox when it comes to playing HTML5 video. As an Aurora user, I am most excited about the option to go full-screen, the ability to overlay video statistics and to save a snapshot of [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://msujaws.wordpress.com/2011/12/16/more-enhancements-for-html5-video-and-audio-in-firefox/">explained in this blog post by Jared Wein of the Firefox team</a> there are quite a few new features in Firefox when it comes to playing HTML5 video. As an Aurora user, I am most excited about the option to go full-screen, the ability to overlay video statistics and to save a snapshot of the current frame as a JPG. You can see me talking about and showing them in <a href="http://vid.ly/3d8j8w">this short video</a>:</p>
<p><video width="100%" controls preload="none" poster="http://cf.cdn.vid.ly/3d8j8w/poster.jpg"><source src="http://cf.cdn.vid.ly/3d8j8w/mp4.mp4" type="video/mp4"><source src="http://cf.cdn.vid.ly/3d8j8w/webm.webm" type="video/webm"><source src="http://cf.cdn.vid.ly/3d8j8w/ogv.ogv" type="video/ogg"><a target="_blank" href="http://vid.ly/3d8j8w"><img src="http://cf.cdn.vid.ly/3d8j8w/poster.jpg" width="500"></a></video> </p>
<p>Firefox has a few features up its sleeve when it comes to HTML5 video playback you might not be aware of:</p>
<ul>
<li><strong>Firefox</strong>&#8216;s seeking is now accurate to <del>milliseconds</del><ins>microseconds</del>, there is visual feedback when the video has stalled and clicking the whole video pauses and plays it</li>
<li><strong>Firefox Beta</strong> has specialised controls when you watch video on small devices and watching HTML5 video shows a pleasing background rather than a brutal grey</li>
<li><strong>Firefox Aurora</strong> has fullscreen, statistics overlay, saving of snapshots and controls appearing when the video ended</li>
<li><strong>Firefox Nightly</strong> has a full-screen button, fading video controls after 2 seconds of non-interaction, no loading throbber on audio, error reporting <ins>when a video could not be loaded</ins> on the video, loop attribute support, and resizing of videos <ins>larger than the</ins> browser window when you watch them directly</li>
</ul>
<p>Planned features for Firefox are an overlay play button like YouTube when the video is not set to autoplay and turning off screensavers during fullscreen playback.</p>
<p>Check out <a href="http://msujaws.wordpress.com/2011/12/16/more-enhancements-for-html5-video-and-audio-in-firefox/">Jared&#8217;s post</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/12/new-features-for-html5-video-playback-in-firefox/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://cf.cdn.vid.ly/3d8j8w/mp4.mp4" length="13914118" type="video/mp4" />
<enclosure url="http://cf.cdn.vid.ly/3d8j8w/webm.webm" length="14732072" type="video/webm" />
<enclosure url="http://cf.cdn.vid.ly/3d8j8w/ogv.ogv" length="11578918" type="video/ogg" />
		</item>
		<item>
		<title>Mozilla Hacks Weekly, December 8th 2011</title>
		<link>http://hacks.mozilla.org/2011/12/mozilla-hacks-weekly-december-8th-2011/</link>
		<comments>http://hacks.mozilla.org/2011/12/mozilla-hacks-weekly-december-8th-2011/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 14:35:42 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mozilla Hacks Weekly]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10472</guid>
		<description><![CDATA[Thursday is here, and just like every week when that day comes, we at Mozilla want to share some good reading with you. Weekly links December 8th 2011 If there is anything you think we should read or know about, don&#8217;t hesitate to post a comment, contact us on Twitter or through any other mean. [...]]]></description>
			<content:encoded><![CDATA[<p>Thursday is here, and just like every week when that day comes, we at Mozilla want to share some good reading with you.</p>
<p><span id="more-10472"></span></p>
<h2>Weekly links December 8th 2011</h2>
<p>If there is anything you think we should read or know about, don&#8217;t hesitate to post a comment, contact us on Twitter or through any other mean.<br />
The picks this week are:</p>
<h3>Christian Heilmann</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/chris-heilmann.jpg" alt=""> The <a href="http://thewebrocks.com/demos/3D-css-tester/">3D CSS Tester</a> is a small tool I put together yesterday to make it easier to understand 3D transforms in CSS3.</p>
<p>    If you want to read more tips or discuss the web with Christian, he&#8217;s available on Twitter as <a href="http://twitter.com/codepo8">@codepo8</a>.
</div>
<h3>Eric &#8220;Sheppy&#8221; Shepherd</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/09/eric-shepherd.jpg" alt=""> Linux developers should look at <a href="http://ehsanakhgari.org/blog/2011-10-18/why-you-should-switch-clang-today-and-how">switching to clang for building Firefox</a>. Check out ehsan’s blog post on how to do this.</p>
<p>    If you want to read more tips or discuss the web with Eric, he&#8217;s available on Twitter as <a href="http://twitter.com/sheppy">@sheppy</a>.
</div>
<h3>Havi Hoffman</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/havi-hoffman.jpg" alt=""> The New Game Conference for HTML5 game developers took place in San Francisco early last month. Now you can watch key presentations on the <a href="http://www.youtube.com/user/NewGameConference#p/">NewGameConference Youtube channel</a>, including a talk about <a href="http://www.youtube.com/watch?v=pA9d2PqebPk&#038;feature=channel_video_title">Paladin</a>, Mozilla’s 3D gaming framework.</p>
<p>    Havi can be found on Twitter as <a href="http://twitter.com/freshelectrons">@freshelectrons</a>
</div>
<h3>Jay Patel</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/jay-patel.jpg" alt=""> As more mobile devices become “HTML5 enabled”, <a href="http://techcrunch.com/2011/12/07/forecast-1-billion-html5-phones-by-2013/">with a forecast of 1 billion by 2013</a>, the future of apps built on Web technologies is looking bright.</p>
<p>    If you want to read more tips or discuss the web with Jay, he&#8217;s available on Twitter as <a href="http://twitter.com/jaybhai">@jaybhai</a>
</div>
<h3>Jean-Yves Perrier</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/12/Jean-yves-perrier.png" alt=""> Learn about the practical problems of @font-face and how to solve them thanks to this well-written article by Ryan DeBeasi: <a href="http://sixrevisions.com/css/font-face-web-fonts-issues/">How to bulletproof @font-face web fonts?</a></p>
<p>    If you want to read more tips or discuss the web with Jean-Yves, he&#8217;s available on Twitter as <a href="http://twitter.com/@teoli2003">@teoli2003</a>.
</div>
<h3>Jeff Griffiths</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/11/jeff-griffiths.jpg" alt=""> <a href="http://evanw.github.com/csg.js/">csg.js</a>, enabling even guys like me to make cool webgl cubes and spheres with simple JS code.</p>
<p>    If you want to read more tips or discuss the web with Jeff, he&#8217;s available on Twitter as <a href="http://twitter.com/canuckistani">@canuckistani</a>.
</div>
<h3>Rob Hawkes</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/rob-hawkes.jpg" alt=""> The creator’s of Canabalt talk about <a href="http://blog.semisecretsoftware.com/open-sourcing-your-game-while-its-still-popul">how open-sourcing the game while it’s still popular has been a win-win situation</a> for them. It’s nice to hear success stories about open game development rather than the (usually unfounded) fears about IP and easily-accessible code.</p>
<p>    If you want to read more tips or discuss the web with Rob, he&#8217;s available on Twitter as <a href="http://twitter.com/robhawkes">@robhawkes</a>.
</div>
<h3>Robert Nyman</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/robert-nyman.jpg" alt=""> Jake Archibald’s article on <a href="http://24ways.org/2011/adaptive-images-for-responsive-designs-again">Adaptive Images for Responsive Design</a> is quite interesting from a hacking perspective, but also very important in displaying the lack of options in web browsers today when it comes to building more versatile designs. </p>
<p>    If you want to read more tips or discuss the web with Robert, he&#8217;s available on Twitter as <a href="http://twitter.com/robertnyman">@robertnyman</a>.
</div>
<h3>Tristan Nitot</h3>
<div class="team-member">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/tristan-nitot.jpg" alt=""> As the Web is becoming the platform of choice for mobile development, it needs to be able to do things that were not possible in the past, such as accessing the battery charge, the vibrator and send text messages. Let’s see the <a href="http://johnhammink.blogspot.com/2011/11/lets-have-look-at-some-recently-landed.html">recently landed Web APIs for Firefox</a>.</p>
<p>    If you want to read more tips or discuss the web with Tristan, he&#8217;s available on Twitter as <a href="http://twitter.com/nitot">@nitot</a>.
</div>
<style>
    .team-member { overflow: hidden; margin-bottom: 15px; }
    .team-member img { float: left; margin: 0 20px 10px 0; }
    .team-member ul { margin-left: 0; }
    .team-member li { margin-left: 180px; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/12/mozilla-hacks-weekly-december-8th-2011/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Developer Tools in Firefox Aurora 10</title>
		<link>http://hacks.mozilla.org/2011/11/developer-tools-in-firefox-aurora-10/</link>
		<comments>http://hacks.mozilla.org/2011/11/developer-tools-in-firefox-aurora-10/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 17:24:12 +0000</pubDate>
		<dc:creator>Jay Patel</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10203</guid>
		<description><![CDATA[The Preview You Can Use Now Mozilla is building a collection of stable, fast and usable developer tools that ship with the browser. I&#8217;d like to introduce a collection of improvements that are scheduled to be released in final form on January 31, 2012. But, you can get them now by downloading the Firefox Aurora [...]]]></description>
			<content:encoded><![CDATA[<h2 id="the_preview_you_can_use_now">The Preview You Can Use Now</h2>
<p>Mozilla is building a collection of stable, fast and usable developer tools that ship with the browser. I&#8217;d like to introduce a collection of improvements that are scheduled to be released in final form on January 31, 2012.</p>
<p>But, you can <em>get them now</em> by downloading the <a href="http://www.mozilla.org/en-US/firefox/channel/">Firefox Aurora channel</a>. I personally find Aurora builds to be quite stable and usable for general browsing and web development. Give it a try and see what you think. You can install Aurora alongside your stable release of Firefox.</p>
<h2 id="the_new_page_inspector">The New Page Inspector</h2>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/InspectElementContextMenu.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/InspectElementContextMenu.png" alt="Inspect Element Context Menu" width="128" height="229" class="alignleft size-full wp-image-165" /></a></p>
<p>Using built-in tools, you can now peek into your page&#8217;s structure and layout. Choose &#8220;Inspect&#8221; from the &#8220;Web Developer&#8221; menu, or press the handy ctrl-shift-I (cmd-shift-I on Mac) keyboard shortcut, and you can visually select the page element that is of interest to you.</p>
<p>You&#8217;ll also find a new &#8220;Inspect Element&#8221; context menu item that lets you immediately select the element that&#8217;s under your cursor.</p>
<p>When you&#8217;re inspecting a page, you&#8217;ll see something like this:</p>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/Highlighter.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/Highlighter.png" alt="" width="590" height="520" class="aligncenter size-full wp-image-163" /></a></p>
<p><a name="nochangesreturn"></a>We overlay the page to highlight the element that you&#8217;re working with <sup><a href="#nochanges">(1)</a></sup>. The highlighter also shows you the tag, ID and classes associated with the page element you&#8217;re viewing.</p>
<p>At the bottom of the window, there&#8217;s a toolbar that gives you options for changing or working with the selected element. Starting from the left, there&#8217;s a close button to close the page inspector and return to normal browsing. The &#8220;Inspect&#8221; button toggles visual selection mode so that you can highlight another element. ProTip: pressing the ESC key also switches modes.</p>
<h3 id="breadcrumbs">Breadcrumbs</h3>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/Breadcrumbs.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/Breadcrumbs.png" alt="" width="611" height="145" class="aligncenter size-full wp-image-161" /></a></p>
<p>We call the next part of the toolbar the &#8220;breadcrumbs&#8221;. They show you where you are in the HTML structure <em>and</em> let you quickly switch to another element. The selected element is the dark &#8220;pushed&#8221; button. To the left of it are its parents, and to the right one of its children. Just click one of the buttons to move between the page elements. If you click and hold a button, you get a menu that lets you select from the siblings of the element listed on the button. The breadcrumbs make navigation quick without taking up much of your screen.</p>
<h3 id="html">HTML</h3>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/HTMLPanel.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/HTMLPanel-300x53.png" alt="" width="300" height="53" class="aligncenter size-medium wp-image-164" /></a></p>
<p>Sometimes looking at the HTML representation of a page is the quickest way to figure out what&#8217;s going on. Click the HTML button and that&#8217;s the view you&#8217;ll get. There&#8217;s a resizer on the right side of the toolbar to set just how much space you want for the HTML view. Also, clicking on a node in the HTML view will select that element for further inspection. ProTip: ctrl-H toggles the HTML view.</p>
<h3 id="styles">Styles</h3>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/RulesPane.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/RulesPane.png" alt="" width="225" height="588" class="alignleft size-full wp-image-167" /></a><a href="http://blog.mozilla.com/devtools/files/2011/11/PropertiesPane.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/PropertiesPane.png" alt="" width="225" height="585" class="alignright size-full wp-image-166" /></a></p>
<p style="clear:both">Last, but definitely not least, is the Style view. This lets you dive in, explore and experiment with your CSS. It offers two separate views of the CSS attached to the selected element: a CSS rules-based view (left, above), and a properties-based view (right, above).</p>
<p>The rules view is organized much like your stylesheets, showing all of the rules that apply to the element and all of those properties that those rules give you. Properties that are overridden are crossed out. You can toggle any single property easily using the checkbox to the left of it. A single click on a property name or value lets you edit it and see the results immediately on the page. If you click anywhere on the line with the brace at the bottom of the rule, you can add a new property there.</p>
<p>On a page with lots of styles, you sometimes just want to find out what the font-size is set to. That&#8217;s where the property view comes in. You can expand the &#8220;font-size&#8221; property and see how its set and which stylesheet set it. By default, only styles that are set in your stylesheets will be displayed (so you don&#8217;t get browser defaults listed). If you have a lot of properties listed, as you might if you use a reset stylesheet, you can quickly find what you&#8217;re looking for by typing in the search box.</p>
<p>ctrl-S toggles the Style view.</p>
<h3 id="web_console_page_inspector_great_together">Web Console + Page Inspector: Great Together</h3>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/ConsoleInspector.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/ConsoleInspector.png" alt="" width="590" height="114" class="aligncenter size-full wp-image-162" /></a></p>
<p>The Web Console is available whenever you want it, even when you&#8217;re using the page inspector. If you have an element selected, that element is available to JavaScript in the console using the variable <code>$0</code>.</p>
<h2 id="scratchpad">Scratchpad</h2>
<p><a href="http://blog.mozilla.com/devtools/files/2011/11/Scratchpad.png"><img src="http://blog.mozilla.com/devtools/files/2011/11/Scratchpad.png" alt="" width="590" height="228" class="aligncenter size-full wp-image-168" /></a></p>
<p>The Scratchpad feature, which we released in August, gives you a very friendly way to experiment with JavaScript. Rather than being confined to a small input box, you get a whole editor window to work with. Now, Scratchpad uses the <a href="http://eclipse.org/orion/">Orion</a> code editor to provide syntax highlighting, better indentation and other features you&#8217;d expect from a modern code editor.</p>
<p>Scratchpad is now wired into Firefox&#8217;s &#8220;session restore&#8221; feature. This means that you can try out a bunch of code in Scratchpad and if you restart Firefox, restoring your session will also bring back your Scratchpad. Of course, you can always save and reload your Scratchpad files, just as you could before.</p>
<p>If you are only doing web development, we&#8217;ve streamlined the user interface. If you&#8217;re doing Firefox add-on development, you owe it to yourself to set devtools.chrome.enabled to true in about:config. That setting allows Scratchpad to run code in a privileged browser context and not just against the current web page.</p>
<h2 id="the_console_object">The <code>console</code> Object</h2>
<p>We&#8217;ve been building out the <code>console</code> object that you call from your JavaScript code or use at the Web Console&#8217;s JavaScript input. It is now in line with the <a href="http://getfirebug.com/wiki/index.php/Console_API">de facto standard</a>, implementing the methods that are standard across browsers. Firebug has a couple of others that we don&#8217;t implement yet (console.table, console.profile, console.dirxml), but the commonly used methods are there.</p>
<h2 id="more_is_on_the_way">More Is On The Way</h2>
<p>All of these features are available now in <a href="http://www.mozilla.org/en-US/firefox/channel/">Firefox Aurora builds</a>. We&#8217;re working on getting more new features together for you for the next Aurora.</p>
<p>Check out our <a href="https://wiki.mozilla.org/DevTools/GetInvolved">Get Involved</a> page to see how you can provide feedback and help make these tools even better.</p>
<hr />
<p>Footnotes:</p>
<p><a name="nochanges">1</a>. Other web developer tools make changes to your page (for example, adding a class) to make the selected element visible. Firefox&#8217;s highlighter does its work without making any changes to your content <a href="#nochangesreturn">.↩</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/11/developer-tools-in-firefox-aurora-10/feed/</wfw:commentRss>
		<slash:comments>87</slash:comments>
		</item>
		<item>
		<title>Announcing Firefox Aurora 10</title>
		<link>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/</link>
		<comments>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 22:34:00 +0000</pubDate>
		<dc:creator>Joe Stagner</dc:creator>
				<category><![CDATA[Aurora]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IndexedDB]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10176</guid>
		<description><![CDATA[We&#8217;re happy to announce the availability of Aurora 10. (Download and Test Aurora 10) In additional to the normal improvements that you&#8217;ve come to expect like performance, security and bug fixes, Aurora 10 focuses in HTML5 enhancements. New additions HTML5 Visibility API createProcessingInstruction WebGL antialiasing 3D Transforms Visibility API Document.mozFullScreenEnabled\ Developer Tools Code Editor CSS [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re happy to announce the availability of Aurora 10. <br/>(<a href="http://www.mozilla.org/en-US/firefox/channel/">Download and Test Aurora 10</a>)</p>
<p>In additional to the normal improvements that you&#8217;ve come to expect like performance, security and bug fixes, Aurora 10 focuses in HTML5 enhancements. </p>
<h2>New additions</h2>
<ul>
<li><a href="https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API">HTML5 Visibility API </a></li>
<li><a href="https://developer.mozilla.org/en/DOM/document.createProcessingInstruction">createProcessingInstruction</a></li>
<li>WebGL antialiasing</li>
<li>3D Transforms</li>
<li>Visibility API</li>
<li>Document.mozFullScreenEnabled\</li>
</ul>
<h2>Developer Tools</h2>
<ul>
<li><a title="DevTools/Features/CodeEditor" href="https://wiki.mozilla.org/DevTools/Features/CodeEditor">Code Editor</a></li>
<li><a title="DevTools/Features/RulesView" href="https://wiki.mozilla.org/DevTools/Features/RulesView">CSS Rules View</a></li>
<li><a title="DevTools/Features/Highlighter" href="https://wiki.mozilla.org/DevTools/Features/Highlighter">Page Inspector/Highlighter</a></li>
<li><a title="DevTools/Features/ConsoleObjectCompletion" href="https://wiki.mozilla.org/DevTools/Features/ConsoleObjectCompletion">Console Object Completion</a></li>
<li><a title="DevTools/Features/StyleInspector" href="https://wiki.mozilla.org/DevTools/Features/StyleInspector">Style Inspector</a></li>
</ul>
<p>Aurora 10 also implements incremental enhancements like IndexedDB setVersion API changes. Ongoing detailed attention to evolving specifications help to keep Firefox at the front of the Web revolution. (Read more about <a href="https://developer.mozilla.org/en/IndexedDB/IndexedDB_primer">IndexedDB on MDN</a>.)</p>
<h2>DOM</h2>
<ul>
<li>We now fire a &#8220;load&#8221; event on stylesheet linking when the sheet load finishes or &#8220;error&#8221; if the load fails.</li>
<li>We turn the POSTDATA prompt into an information page (when navigating in session history).</li>
<li>We only forward event attributes on body/frameset to the window if we also forward the corresponding on* property.</li>
<li>We no longer allow more than one call to window.open() when we allow popups.</li>
<li>We fixed a bug where a success callback never fired when a position update is triggered after getCurrentPosition().</li>
<li>We removed replaceWholeText().</li>
<li>We fixed an error with createPattern(zero-size canvas).</li>
<li>We now handle putImageData(nonfinite) correctly.</li>
<li>We now throw INVALID_STATE_ERR when dispatching uninitialized events.</li>
<li>We&#8217;ve made Document.documentURI readonly.</li>
<li>We fixed document.importNode to comply with optional argument omitted.</li>
</ul>
<h2>Web workers</h2>
<ul>
<li>We now allow data URLs.</li>
<li>We implemented event.stopImmediatePropagation in workers.</li>
<li>We made XHR2 response/responseType work in Web Workers.</li>
</ul>
<h2>Graphics</h2>
<ul>
<li>We implement the WebGL OES_standard_derivatives extension.</li>
<li>We implement minimal-capabilities WebGL mode.</li>
</ul>
<h2>JavaScript</h2>
<ul>
<li>The function caller property no longer skips over eval frames.</li>
<li>We fixed E4X syntax so that it is not accepted in ES5 strict mode.</li>
<li>weakmap.set no longer returns itself instead of undefined.</li>
<li>We implemented the battery API.</li>
</ul>
<h2>Offline: IndexedDB enhancements</h2>
<ul>
<li>IndexedDB setVersion API changes</li>
<li>Added support for IDBObjectStore/IDBIndex.count</li>
<li>Various methods accept both keys and KeyRanges.</li>
<li>Added support for IDBCursor.advance.</li>
<li>Implemented deleteDatabase.</li>
<li> objectStoreNames are no longer updated on closed databases when another connection adds or removes object stores</li>
<li>IDBObjectStore.delete and IDBCursor.delete now return undefined.</li>
<li>No longer throws an error if there are unknown properties in the options objects to createObjectStore/createIndex.</li>
<li>We now the errorCode to &#8220;ABORT_ERR&#8221; for all pending requests when IDBTransaction.abort() is called.</li>
<li>Fixed the sort order for indexes.</li>
</ul>
<h2>Layout</h2>
<ul>
<li>We have updated the current rule for handling malformed media queries.</li>
<li>We now support the HTML5 &lt;bdi&gt; element and CSS property unicode-bidi: isolate.</li>
<li>The CSS3 implementation now supports unicode-bidi: plaintext.</li>
</ul>
<h2>Media</h2>
<ul>
<li>Implemented Document.mozFullScreenEnabled.</li>
<li>Enabled the DOM full-screen API on desktop Firefox by default.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>CSS 3D transformations in Firefox Nightly</title>
		<link>http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/</link>
		<comments>http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 20:18:42 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Web Developers]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10017</guid>
		<description><![CDATA[When the first 3D transformations in CSS got support on Webkit browsers people got incredibly excited about them. Now that they have matured we also support 3D CSS in Firefox. To see it for yourself, check out one of the latest nightly builds. You can see them in action in this demo of a rotating [...]]]></description>
			<content:encoded><![CDATA[<p>When the first 3D transformations in CSS got support on Webkit browsers people got incredibly excited about them. Now <a href="http://dev.w3.org/csswg/css3-3d-transforms/">that they have matured</a> we also support 3D CSS in Firefox. To see it for yourself, check out <a href="http://nightly.mozilla.org">one of the latest nightly builds</a>. </p>
<p>You can see them in action in <a href="http://thewebrocks.com/demos/html5-3d-css">this demo of a rotating HTML5 logo</a> and the screencast below:</p>
<p><video controls preload="none" style="width:100%;height:300px;" poster="http://cf.cdn.vid.ly/5l3j6a/poster.jpg"><source src="http://cf.cdn.vid.ly/5l3j6a/mp4.mp4" type="video/mp4"><source src="http://cf.cdn.vid.ly/5l3j6a/webm.webm" type="video/webm"><source src="http://cf.cdn.vid.ly/5l3j6a/ogv.ogv" type="video/ogg"><a target='_blank' href='http://vid.ly/5l3j6a'><img   src='http://cf.cdn.vid.ly/5l3j6a/poster.jpg' width="500"></a></video></p>
<p>This means now that we need your support in trying out CSS 3D examples in Firefox and add other extensions than <code>-webkit-</code> to your CSS 3D products and demos. To show that this is possible, we took the well-known <a href="http://www.webkit.org/blog-files/3d-transforms/poster-circle.html">webkit-only &#8220;poster circle&#8221; demo</a> and made it work with Firefox nightly by adding the -moz- (and of course the other prefixes and one set of instructions without browser prefixes). Here is a slight excerpt:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">-webkit-transform-style<span style="color: #00AA00;">:</span> preserve-3d<span style="color: #00AA00;">;</span>
-moz-transform-style<span style="color: #00AA00;">:</span> preserve-3d<span style="color: #00AA00;">;</span>
-o-transform-style<span style="color: #00AA00;">:</span> preserve-3d<span style="color: #00AA00;">;</span>
-ms-transform-style<span style="color: #00AA00;">:</span> preserve-3d<span style="color: #00AA00;">;</span>
transform-style<span style="color: #00AA00;">:</span> preserve-3d<span style="color: #00AA00;">;</span></pre></div></div>

<p>You can see this in action in the screencast below alongside Chrome and you <a href="http://thewebrocks.com/demos/postercircle/">try the demo out yourself</a>. The slight jerkiness is actually my MacBook Air impersonating a starting jet every time I use ScreenFlow and not the browser.</p>
<p><video controls preload="none" style="width:100%;height:300px;" poster="http://cf.cdn.vid.ly/4m8d9f/poster.jpg"><source src="http://cf.cdn.vid.ly/4m8d9f/mp4.mp4" type="video/mp4"><source src="http://cf.cdn.vid.ly/4m8d9f/webm.webm" type="video/webm"><source src="http://cf.cdn.vid.ly/4m8d9f/ogv.ogv" type="video/ogg"><a target='_blank' href='http://vid.ly/4m8d9f'><img   src='http://cf.cdn.vid.ly/4m8d9f/poster.jpg' width="500"></a></video></p>
<p>To celebrate the release and to show how CSS 3D can be applied as subtle effect, have a <a href="http://thewebrocks.com/demos/browsermemory/">game of pairs using your favourite browsers (and a cat)</a> : </p>
<p><a href="http://thewebrocks.com/demos/browsermemory/"><img src="http://farm7.static.flickr.com/6112/6283741113_b3604d4ee5_o.jpg" alt="browser pairs"></a></p>
<p>Oleg Romashin also spent some time to <a href="http://romaxa.bolshe.net/css3d/">convert a few CSS 3D demos to work with Mozilla</a> and you can <a href="http://m8y.org/tmp/cubiq.org/dropbox/3dcity/index2.html">check the 3D city</a> for more &#8220;wow&#8221;.</p>
<p>If you are new to CSS 3D transformations <a href="http://24ways.org/2010/intro-to-css-3d-transforms">here&#8217;s a good beginner course</a> and <a href="http://www.westciv.com/tools/3Dtransforms/index.html">a tool to create them</a>. </p>
<p>The rotating HTML5 logo demo also shows how you can check if the currently used browser supports 3D transforms. Instead of repeating the animation frames for all the prefixes we test in JavaScript and create the CSS on the fly:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> checksupport<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> props <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'perspectiveProperty'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'WebkitPerspective'</span><span style="color: #339933;">,</span>
               <span style="color: #3366CC;">'MozPerspective'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'OPerspective'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'msPerspective'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
      i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
      support <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>props<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>props<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #000066; font-weight: bold;">in</span> form.<span style="color: #660066;">style</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      support <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
      pfx <span style="color: #339933;">=</span> props<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Perspective'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      pfx <span style="color: #339933;">=</span> pfx.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    i<span style="color: #339933;">++;</span>
  <span style="color: #009900;">&#125;</span> 
  <span style="color: #000066; font-weight: bold;">return</span> support<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>checksupport<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> s <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>
  styles <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'style'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  s <span style="color: #339933;">+=</span> <span style="color: #3366CC;">'#stage{-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-perspective: 300px;}'</span><span style="color: #339933;">+</span>
       <span style="color: #3366CC;">'#logo{-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-transform-style: preserve-3d;position:relative;}'</span><span style="color: #339933;">+</span>  
       <span style="color: #3366CC;">'#logo.spin{-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-animation: spin 3s infinite linear;}'</span><span style="color: #339933;">+</span>
       <span style="color: #3366CC;">'@-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-keyframes spin {'</span><span style="color: #339933;">+</span>  
       <span style="color: #3366CC;">'0% {'</span><span style="color: #339933;">+</span> 
       <span style="color: #3366CC;">'-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);'</span><span style="color: #339933;">+</span>   
       <span style="color: #3366CC;">'}'</span><span style="color: #339933;">+</span>
       <span style="color: #3366CC;">'100% {'</span><span style="color: #339933;">+</span>   
       <span style="color: #3366CC;">'-'</span><span style="color: #339933;">+</span> pfx <span style="color: #339933;">+</span><span style="color: #3366CC;">'-transform: rotateX(0deg) rotateY(360deg)'</span><span style="color: #339933;">+</span>
       <span style="color: #3366CC;">' rotateZ(360deg);'</span><span style="color: #339933;">+</span> 
       <span style="color: #3366CC;">'}}'</span><span style="color: #339933;">;</span>
  styles.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> s<span style="color: #339933;">;</span>
  document.<span style="color: #660066;">querySelector</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'head'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>styles<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>For more information on creating your own pages that use 3D transformations, take a look at the <a href="http://dev.w3.org/csswg/css3-3d-transforms/">draft specification</a></p>
<p>As always, If you find any bugs, please report them at <a href="https://bugzilla.mozilla.org">bugzilla.mozilla.org</a>!</p>
<p>So please reward our hard work bringing the third dimension to Firefox&#8217;s CSS engine by supporting and testing. Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
<enclosure url="http://cf.cdn.vid.ly/5l3j6a/mp4.mp4" length="6843288" type="video/mp4" />
<enclosure url="http://cf.cdn.vid.ly/5l3j6a/webm.webm" length="6684672" type="video/webm" />
<enclosure url="http://cf.cdn.vid.ly/5l3j6a/ogv.ogv" length="6626659" type="video/ogg" />
<enclosure url="http://cf.cdn.vid.ly/4m8d9f/mp4.mp4" length="6138097" type="video/mp4" />
<enclosure url="http://cf.cdn.vid.ly/4m8d9f/webm.webm" length="6887958" type="video/webm" />
<enclosure url="http://cf.cdn.vid.ly/4m8d9f/ogv.ogv" length="13626193" type="video/ogg" />
		</item>
		<item>
		<title>What&#8217;s new for Web Developers in Firefox 7</title>
		<link>http://hacks.mozilla.org/2011/09/whats-new-for-web-developers-in-firefox-7/</link>
		<comments>http://hacks.mozilla.org/2011/09/whats-new-for-web-developers-in-firefox-7/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:30:22 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 7]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9593</guid>
		<description><![CDATA[Today we&#8217;re releasing Firefox Update 7. This update contains work that&#8217;s been stabilizing over the last 3 months and there are quite a few interesting things to talk about. To be clear, this is not the canonical list of changes, just highlights. As always, we&#8217;ve created a page to track the changes that web developers [...]]]></description>
			<content:encoded><![CDATA[<p>Today we&#8217;re releasing Firefox Update 7.  This update contains work that&#8217;s been stabilizing over the last 3 months and there are quite a few interesting things to talk about.</p>
<p>To be clear, this is not the canonical list of changes, just highlights.  As always, we&#8217;ve created a page to track the changes that web developers will care about.  For the full list please see the <a href="https://developer.mozilla.org/en/Firefox_7_for_developers">Firefox 7 for developers page.</a></p>
<p><strong>Firefox now supports text-overflow: ellipsis</strong></p>
<p>Firefox now supports the <code><a href="https://developer.mozilla.org/En/CSS/text-overflow">ellipsis</a></code> mode for the <code>text-overflow</code> property.  This property is supported in <a href="https://developer.mozilla.org/En/CSS/text-overflow#Browser_compatibility">other browsers</a> which means developers should be able to start using it in the wild.  Here&#8217;s an example of how text-overflow ellipsis works:</p>
<p>HTML:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;html&gt;
&lt;body&gt;
      &lt;div class=&quot;inner&quot;&gt;I am some very long text!&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>CSS:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #6666ff;">.inner</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">120px</span><span style="color: #00AA00;">;</span>
    text-<span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> ellipsis<span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">white-space</span><span style="color: #00AA00;">:</span><span style="color: #993333;">nowrap</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">dashed</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Result:</p>
<p><img src="http://hacks.mozilla.org/wp-content/uploads/2011/09/ellipsis.png"/></p>
<p>As you can see, it&#8217;s pretty easy to make text that cuts off in a sane way with this new property.  Our <a href="https://developer.mozilla.org/En/CSS/text-overflow">developer page for the property</a> also contains sample syntax for other browsers.</p>
<p><strong>WebSockets: Updated protocol and available on mobile</strong></p>
<p>First, WebSockets is now enabled by default for Firefox for Mobile.  For mobile networks that are high-latency and have high connection setup-up costs, WebSockets offers an opportunity to create a much better experience than is available with polling HTTP.</p>
<p>Second, we&#8217;ve updated to the most recent draft version of the <a href="https://developer.mozilla.org/en/WebSockets">WebSockets</a> protocol from the IETF.  Somewhat confusingly, this is version 8 of the protocol, but is <a href="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10" title="IETF WebSockets version 10">draft version 10</a>.  This will be mostly of interest to people who are building applications on top of WebSockets and tool vendors, but is worth calling out since it affects backwards compatibility.</p>
<p>Since the WebSockets work is ongoing, the namespace for WebSockets remains moz-prefixed to indicate that it&#8217;s not yet finalized.</p>
<p><strong>An even faster Canvas element</strong></p>
<p>The <code>canvas</code> element in Firefox 7 is even faster.  We&#8217;ve revised our code for Canvas based on what we learned in previous Firefox releases and how people are using Canvas in the wild.  Based on that you are likely to see much snappier performance on many demos when drawing to canvas elements.  For an example, see our <a href="https://developer.mozilla.org/en-US/demos/detail/runfield">Runfield</a> demo.</p>
<p><strong>Web sites can no longer resize your main browser window</strong></p>
<p>It&#8217;s no longer possible for a web site to change the default size of a window in a browser, according to the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=565541#c24">following rules</a>:</p>
<ol>
<li>You can&#8217;t resize a window or tab that wasn&#8217;t created by window.open.
<li>You can&#8217;t resize a window or tab when it&#8217;s in a window with more than one tab.
</ol>
<p><strong>Support for the new Navigation Web Timing Spec</strong></p>
<p>Firefox Update 7 now supports the <a href="https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html" title="Navigation Timing Spec">Navigation Timing spec</a>.  This allows a web page author to monitor parts of web page performance in the page itself.  For people who are interested in page load and navigation performance, they can send that back to the server which can give them a better view into real-world performance.</p>
<p>There are a couple of other specs in this space &#8211; the <a href="https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html">User Timing</a> and <a href="http://www.w3c-test.org/webperf/specs/ResourceTiming/">Resource Timing</a> &#8211; but those are still under discussion in working groups and as such we have not yet implemented them.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/whats-new-for-web-developers-in-firefox-7/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Firefox 7: Telemetry</title>
		<link>http://hacks.mozilla.org/2011/09/firefox-7-telemetry/</link>
		<comments>http://hacks.mozilla.org/2011/09/firefox-7-telemetry/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:13:06 +0000</pubDate>
		<dc:creator>Mozilla Hacks</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 7]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9637</guid>
		<description><![CDATA[Based on a blog post originally posted here by Taras Glek, Firefox Developer. Firefox 7 marks a turning point in how we measure Firefox performance. Traditionally we measured Firefox performance on individual developer machines and our build &#038; release infrastructure. However it turns out synthetic benchmarks do not correspond to real-world Firefox usage: it is [...]]]></description>
			<content:encoded><![CDATA[<p><em>Based on a blog post originally posted <a href="https://blog.mozilla.com/tglek/2011/09/20/firefox-7-telemetry-faster-startup/" title="2">here</a> by Taras Glek, Firefox Developer. </em></p>
<p>Firefox 7 marks a turning point in how we measure Firefox performance. Traditionally we measured Firefox performance on individual developer machines and our build &#038; release infrastructure. However it turns out synthetic benchmarks do not correspond to real-world Firefox usage: it is difficult to model a “typical” computer in a lab environment. Surprisingly slow consumer hardware, changes in usage patterns, preinstalled bloatware all affect Firefox performance in surprising ways.</p>
<p>Firefox 7 telemetry will prompt users to opt-in to reporting performance data to Mozilla. This data will supplement our existing benchmarking infrastructure to help us optimize future Firefox releases. Telemetry performance metrics are very lightweight and will not negatively impact Firefox performance.</p>
<p>In addition to transmitting data via SSL, <a href="http://blog.mozilla.com/privacy/2011/09/27/building-privacy-into-telemetry/ " title="privacy team">Mozilla privacy team</a> worked tirelessly to ensure that no personally-identifiable information is sent via telemetry. Whereas many other software projects stamp this kind of data with a unique per-user id, we opted for a per-session id which is reset every time the browser restarts. Telemetry is also disabled while in private-browsing mode.</p>
<p>The following telemetry data will be gathered in Firefox 7:</p>
<p>    Memory usage<br />
    CPU core count<br />
    Cycle collection times<br />
    Startup speed</p>
<p>Use the about:telemetry extension to check on your browser performance. The following screenshot shows how to enable telemetry:<br />
<img src="http://people.mozilla.com/~tglek/telemetry/telemetry-ff7.jpg" alt="1" /></p>
<p>I’m very excited that Firefox finally joins the ranks of cars, airplanes and other software projects in making performance decisions based on real evidence gathered in the wild.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/firefox-7-telemetry/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Direct2D Azure hits Firefox 7</title>
		<link>http://hacks.mozilla.org/2011/09/direct2d-azure-hits-firefox-7/</link>
		<comments>http://hacks.mozilla.org/2011/09/direct2d-azure-hits-firefox-7/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:11:25 +0000</pubDate>
		<dc:creator>Mozilla Hacks</dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 7]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9627</guid>
		<description><![CDATA[Based on a blog post originally posted here by Bas Schouten, Firefox Developer. Hrm, Azure, what&#8217;s that again? You can find out all about Azure other blog posts, there&#8217;s an introduction from Joe Drew and there&#8217;s several more in detailed posts discussing the Direct2D Azure backend and the performance implications to be found on my [...]]]></description>
			<content:encoded><![CDATA[<p><em>Based on a blog post originally posted <a href="http://www.basschouten.com/blog1.php/direct2d-azure-hits-firefox-7">here</a> by Bas Schouten, Firefox Developer. </em></p>
<p>Hrm, Azure, what&#8217;s that again?</p>
<p>You can find out all about Azure other blog posts, there&#8217;s an <a href="http://blog.mozilla.com/joe/2011/04/26/introducing-the-azure-project/">introduction</a> from Joe Drew and there&#8217;s several more in detailed posts discussing the Direct2D Azure backend and the performance implications to be found on my blog. The bottom line is that we&#8217;re working on a new graphics API that will be used for rendering in Gecko.</p>
<p>What does that mean for Firefox 7?</p>
<p>Well, we&#8217;re currently only using it with Direct2D and when using canvas. This allows us to stress test it, although a wide array of tests has been run, and it has been in use by our Aurora and Beta testers for a while now, there might still be issues we might have missed. If these issues show in the final release we&#8217;ll only have caused a regression in Canvas and for a limited subset of our users, rather than in all browser rendering. The bottom line is you should generally see a speed improvement using 2D Canvas in Firefox 7 when using Windows 7 or Vista with a sufficiently powerful graphics card.</p>
<p>So what&#8217;s next, what&#8217;s the status?</p>
<p>We&#8217;re currently working hard on both a Cairo and a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=687187">Skia</a> backend for the Azure API, this means we&#8217;ll be able to use the Azure API on all platforms. Possibly getting some quick performance benefits on platforms where Skia outperforms the cairo backends we&#8217;re currently using. At the same time we&#8217;re working on creating a layer that will allow controlled migration of all our content drawing code from the current &#8216;Thebes&#8217; API&#8217;s to the new Azure API. Once that is done webpage rendering in general can start taking advantage of all the latest work!</p>
<p>That&#8217;s about all I have for you right now, enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/direct2d-azure-hits-firefox-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 7 is lean and fast</title>
		<link>http://hacks.mozilla.org/2011/09/firefox-7-is-lean-and-fast/</link>
		<comments>http://hacks.mozilla.org/2011/09/firefox-7-is-lean-and-fast/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:08:53 +0000</pubDate>
		<dc:creator>Mozilla Hacks</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 7]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9561</guid>
		<description><![CDATA[Based on a blog post originally posted here by Nicholas Nethercote, Firefox Developer. tl;dr Firefox 7 now uses much less memory than previous versions: often 20% to 30% less, and sometimes as much as 50% less. This means that Firefox and the websites you use will be snappier, more responsive, and suffer fewer pauses. It [...]]]></description>
			<content:encoded><![CDATA[<p><em>Based on a blog post originally posted <a href="http://blog.mozilla.com/nnethercote/2011/08/09/firefox-7-is-lean-and-fast-2/" title="Firefox is Lean and Fast">here</a> by Nicholas Nethercote, Firefox Developer. </em></p>
<p><strong>tl;dr</strong><br />
Firefox 7 now uses much less memory than previous versions: often 20% to 30% less, and sometimes as much as 50% less. This means that Firefox and the websites you use will be snappier, more responsive, and suffer fewer pauses.  It also means that Firefox is less likely to crash or abort due to running out of memory.</p>
<p>These benefits are most noticeable if you do any of the following:<br />
- keep Firefox open for a long time;<br />
- have many tabs open at once, particularly tabs with many images;<br />
- view web pages with large amounts of text;<br />
- use Firefox on Windows<br />
- use Firefox at the same time as other programs that use lots of memory.<br />
<strong><br />
Background</strong><br />
Mozilla engineers started an effort called <a href="https://wiki.mozilla.org/Performance/MemShrink">MemShrink</a>, the aim of which is to improve Firefox’s speed and stability by reducing its memory usage.  A great deal of <a href="http://blog.mozilla.com/nnethercote/category/memshrink/">progress</a> has been made, and thanks to Firefox’s <a href="https://wiki.mozilla.org/RapidRelease/Calendar">faster development cycle</a>, each improvement made will make its way into a final release in only 12–18 weeks. The newest update to Firefox is the first general release to benefit from MemShrink’s successes, and the benefits are significant.</p>
<p><strong>Quantifying the improvements</strong><br />
Measuring memory usage is difficult: there are no standard benchmarks, there are several different metrics you can use, and memory usage varies enormously depending on what the browser is doing. Someone who usually has only a handful of tabs open will have an entirely different experience from someone who usually has hundreds of tabs open. (This latter case is not uncommon, by the way, even though the idea of anyone having that many tabs open triggers astonishment and disbelief in many people. E.g. see the comment threads <a href="http://news.ycombinator.com/item?id=2840440">here</a> and <a href="http://www.reddit.com/r/programming/comments/j7m7k/scalability/">here</a>.)</p>
<p><strong>Endurance tests</strong><br />
Dave Hunt and others have been using the MozMill add-on to perform “<a href="https://wiki.mozilla.org/QA/Mozmill_Test_Automation/Endurance_Tests">endurance tests</a>“, where they open and close large numbers of websites and track memory usage in great detail. Dave recently performed an <a href="http://blargon7.com/2011/07/endurance-tests-demonstrate-firefoxs-memory-usage-improvements/">endurance test comparison of development versions of Firefox</a>, repeatedly opening and closing pages from 100 widely used websites in 30 tabs.</p>
<p><em>[The following numbers were run while the most current version of Firefox was in Beta and capture the average and peak “resident” memory usage for each browser version over five runs of the tests. “Resident” memory usage is the amount of physical RAM that is being used by Firefox, and is thus arguably the best measure of real machine resources being used.]</em></p>
<p><img src="http://blog.mozilla.com/nnethercote/files/2011/08/average2.png" alt="2" /><br />
<img src="http://blog.mozilla.com/nnethercote/files/2011/08/peak.png" alt="3" /></p>
<p>The measurements varied significantly between runs. If we do a pair-wise comparison of runs, we see the following relative reductions in memory usage:</p>
<p>    Minimum resident: 1.1% — 23.5% (median 6.6%)<br />
    Maximum resident: -3.5% — 17.9% (median 9.6%)<br />
    Average resident: 4.4% — 27.3% (median 20.0%)</p>
<p>The following two graphs showing how memory usage varied over time during Run 1 for each version. Firefox 6&#8242;s graph is first, with the latest version second. (Note: Compare only to the purple “resident” lines; the meaning of the green “explicit” line changed between the versions and so the two green lines cannot be sensibly compared.)<br />
Firefox 7 is clearly much better; its graph is both lower and has less variation.</p>
<p><img src="http://blog.mozilla.com/nnethercote/files/2011/08/ff6.png" alt="ff6" /><br />
<img src="http://blog.mozilla.com/nnethercote/files/2011/08/ff7.png" alt="ff7" /></p>
<p><strong><br />
MemBench</strong><br />
Gregor Wagner has a memory stress test called <a href="http://gregor-wagner.com/tmp/mem">MemBench</a>. It opens 150 websites in succession, one per tab, with a 1.5 second gap between each site. The sites are mostly drawn from <a href="http://www.alexa.com/topsites/category">Alexa’s Top sites</a> list. I ran this test on 64-bit builds of Firefox 6 and 7 on my Ubuntu Linux machine, which has 16GB of RAM. Each time, I let the stress test complete and then opened about:memory to get measurements for the peak resident usage. Then I hit the “Minimize memory usage” button in about:memory several times until the numbers stabilized again, and then re-measured the resident usage. (Hitting this button is not something normal users do, but it’s useful for testing purposes because causes Firefox to immediately free up memory that would be eventually freed when garbage collection runs.)</p>
<p>For Firefox 6, the peak resident usage was 2,028 MB and the final resident usage was 669 MB. For Firefox 7, the peak usage was 1,851 MB (a 8.7% reduction) and the final usage was 321 MB (a 52.0% reduction). This latter number clearly shows that <a href="http://en.wikipedia.org/wiki/Fragmentation_%28computer%29">fragmentation</a> is a much smaller problem in Firefox 7.<br />
(On a related note, Gregor recently <a href="http://gregor-wagner.com/?p=79">measured</a> cutting-edge development versions of Firefox and Google Chrome on MemBench.)</p>
<p><strong><br />
Conclusion</strong><br />
Obviously, these tests are synthetic and do not match exactly how users actually use Firefox. (Improved benchmarking is one thing we’re working on as part of MemShrink, but we’ve got a long way to go. ) Nonetheless, the basic operations (opening and closing web pages in tabs) are the same, and we expect the improvements in real usage will mirror improvements in the tests.</p>
<p>This means that users should see Firefox 7 using less memory than earlier versions — often 20% to 30% less, and sometimes as much as 50% less — though the improvements will depend on the exact workload. Indeed, we have had lots of feedback from early users that the latest Firefox update feels faster, is more responsive, has fewer pauses, and is generally more pleasant to use than previous versions.</p>
<p>Mozilla’s MemShrink efforts are continuing. The endurance test results above show that the Beta version of Firefox already has even better memory usage, and I expect we’ll continue to make further improvements as time goes on.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/firefox-7-is-lean-and-fast/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Where on earth? This month&#8217;s Developer Derby is all about geolocation.</title>
		<link>http://hacks.mozilla.org/2011/09/where-on-earth-this-months-developer-derby-is-all-about-geolocation/</link>
		<comments>http://hacks.mozilla.org/2011/09/where-on-earth-this-months-developer-derby-is-all-about-geolocation/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 15:01:27 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Dev Derby]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Geolocation]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9479</guid>
		<description><![CDATA[Another month, another Developer Derby. This month we want you to play with something that is not part of the HTML5 stack and we feel it doesn&#8217;t get the love it deserves from developers: the geolocation API. Firefox has supported this API for a long time and you can do some pretty cool things with [...]]]></description>
			<content:encoded><![CDATA[<p>Another month, another <a href="https://developer.mozilla.org/en-US/demos/devderby">Developer Derby</a>. This month we want you to play with something that is <a href="http://isgeolocationpartofhtml5.com/">not part of the HTML5 stack</a> and we feel it doesn&#8217;t get the love it deserves from developers: the geolocation API. Firefox has supported this API for a long time and you can do some pretty cool things with it.</p>
<p>So, what is the Geolocation API? In essence it allows you to detect where the user of your product is at the moment. The location data is found by different means: GPS location, mobile phone masts or wireless hub location. If you turn off wireless on your laptop and you have no G3 connectivity, the API will not be able to get any data.</p>
<p>Using geolocation is incredibly simple. You ask the browser to tell you what the current location is with a method on the <code>navigator.geolocation</code> object:</p>

<div class="wp_syntax"><div class="code"><pre class="js" style="font-family:monospace;">navigator.geolocation.getCurrentPosition( 
  success,
  failure, 
  { parameters } 
);</pre></div></div>

<p>Where <em>success</em> is the function that is called when the browser found a location, <em>failure</em> is the function called when there was an error and properties is an object that can contain a few parameters. The parameters are the Boolean <code>enableHighAccuracy</code>, the <code>maximumAge</code> of the location before the browser should ask for a new one and the <code>timeout</code> in milliseconds after which the browser should stop trying to find a location. </p>
<p>Each function (success and failure) get a parameter with which to do your coding magic. The success function will get a location object when everything went well. This location object has the following properties: A timestamp telling you when the reading was done and a coordinates object with the following properties: <code>accuracy</code>, <code>altitude</code>, <code>altitudeAccuracy</code>, <code>heading</code>, <code>latitude</code>, <code>longitude</code> and <code>speed</code>.</p>
<p>Some of these are dependent on having more than one reading as for example heading and speed are calculated from the distance in latitude and longitude from reading to reading. </p>
<p>On Firefox you have an extra object called address which is the result of reverse geocoding the latitude and longitude. Reverse geocoding is normally done with an API but in the case of Firefox we have it baked in. When I currently do a call to <code>getCurrentPosition</code> I <a href="http://isithackday.com/hacks/geo/check/">get the following result on Firefox</a>:</p>
<pre>
Timestamp: 1315378919289
Coordinates:
    Accuracy: 18000
    Altitude: 0
    AltitudeAccuracy: 0
    Heading: NaN
    Latitude: 50.06465
    Longitude: 19.94498
    Speed: NaN

Address:
    City: Kraków
    Country: Poland
    CountryCode: PL
    County: Kraków County
    Postal Code: null
    Premises: null
    Street: Lubicz
    Street Number: 1
</pre>
<p>You can <a href="http://isithackday.com/hacks/geo/check/">Run this test for yourself</a> and see the code <a href="http://jsfiddle.net/codepo8/Un8na/">here on JSFiddle</a>:</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/codepo8/Un8na/embedded/"></iframe></p>
<p>The failure function gets an error object with a <code>code</code> property. This property can have three values: 1 is a permission denied error, 2 is a position unavailable error and 3 is a timeout.</p>
<p>In addition to the <code>getCurrentPosition</code> method you also have a <code>watchPosition</code> method which keeps firing when a new location was found. The parameters are the same and when you keep reading (for example on a mobile device) then you will get values for the <code>heading</code> and the <code>speed</code>. You can stop watching the position change using the <code>clearWatch</code> method. </p>
<p>Using <code>watchPosition</code> is very cool when you are on the go. Check the <a href="http://isithackday.com/hacks/geo/check/">Geolocation demo page</a> and turn the watch position on and off with the button on the bottom.</p>
<p>In essence, this is what the map app on your mobile phone does. </p>
<h2>What can you do with this?</h2>
<p>Well, what you get is a latitude and longitude of your end user. This can be used with all kind of geo platforms like for example <a href="http://www.geonames.org/">GeoNames</a> to find places of interest around you. </p>
<p>You could also allow people to set markers for their friends on a map, collaboratively paint with them, find photos, tweets or foursquare checkins around you &#8211; a lot is possible when you come from lat/lon.</p>
<h2>Resources</h2>
<ul>
<li><a href="http://dev.w3.org/geo/api/spec-source.html">Geo API Specification of the W3C</a></li>
<li><a href="">Geo API on MDN</a></li>
<li>Another <a href="http://html5demos.com/geo">simple Geo Demo</a> by Remy Sharp</li>
<li><a href="http://www.mozilla.org/en-US/firefox/geolocation/">Geolocation in Firefox</a></li>
<li><a href="https://developer.mozilla.org/en/Using_geolocation">Using geolocation on MDN</a></li>
</ul>
<p>We will also soon run a webinar on geolocation, stay tuned!</p>
<p><a href="https://developer.mozilla.org/en-US/demos/devderby">Happy hacking</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/where-on-earth-this-months-developer-derby-is-all-about-geolocation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 6 is here</title>
		<link>http://hacks.mozilla.org/2011/08/firefox6/</link>
		<comments>http://hacks.mozilla.org/2011/08/firefox6/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:02:25 +0000</pubDate>
		<dc:creator>louisremi</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9096</guid>
		<description><![CDATA[What&#8217;s new in Firefox 6? The most notable addition to this new release are the &#60;progress&#62; element, touch events, Server-Sent Events as well as the return of WebSockets. The &#60;progress&#62; element This element can be used to give a visual cue of something in progress in the page. System progress bars are being used, which [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_9098" class="wp-caption alignright" style="width: 108px"><a href="http://mozilla.com/firefox"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/05/Firefox-logo.png" alt="" title="Firefox logo" width="98" height="100" class="size-full wp-image-9098" /></a><p class="wp-caption-text">Download Firefox 6</p></div>
<h2>What&#8217;s new in Firefox 6?</h2>
<p>The most notable addition to this new release are the <strong>&lt;progress&gt;</strong> element, <strong>touch events</strong>, <strong>Server-Sent Events</strong> as well as the return of <strong>WebSockets</strong>.</p>
<style>
  h4 {margin-bottom: 10px}
  .changelog:nth-of-type(odd) { background-color: #F2F2F2; }
  .changelog:nth-of-type(even) { background-color: #FEF8E7; }
  .changelog {    border: 1px solid rgb(217, 217, 217);    padding: 4px; } 
  .changelog:not(:last-of-type) { border-bottom: none; }
  .wp-caption-text {
    text-align: center;
  }
  #flute {
    clear: both;
  }
  .gist { font-size: .8em; }
  .gist-meta { font-size: .6em !important; }
  .gist-file { margin: 0 !important; }
  .code {font-size: .8em; background: #F8F8FF; border: 1px solid #DEDEDE; }
</style>
<h3 id=flute>The &lt;progress&gt; element</h3>
<p><script src="https://gist.github.com/1000413.js?file=progress.html"></script><br />
<img src="http://hacks.mozilla.org/wp-content/uploads/2011/05/progress1.png" alt="screenshot of progress bars as seen on windows" title="progress" width="500" height="27" class="alignnone size-full wp-image-8229" /><br />
This element can be used to give a visual cue of something <i>in progress</i> in the page. System progress bars are being used, which means that users of MacOS and Linux will see something different than what is pictured here.</p>
<h3>Touch events</h3>
<p>The standard <a href="https://developer.mozilla.org/en/DOM/Touch_events">Touch events</a> are now available on both Firefox &#8220;desktop&#8221; and mobile, enabling users to interact with web pages using their fingers on a touch screen.<br />
<script src="https://gist.github.com/1134086.js?file=firefoxTouch.js"></script><br />
Try this minimalistic <a href="http://fiddle.jshell.net/louisremi/RmhZE/show/">touch demo</a>.</p>
<h3>Server Sent Events</h3>
<p><a href="http://dev.w3.org/html5/eventsource/">Server Sent Events</a> are a mean for a server-side script to generate client-side events accompanied with data.</p>
<p><script src="https://gist.github.com/995177.js?file=sse.html"></script><br />
Messages generated on the server-side with a <code>text/event-stream</code> mime-type and consist of a list of events data.</p>
<pre class="code"><code>data: data generated by the server

data: this line will generate a second event</code></pre>
<p>Have a look at the <a href="http://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-events/">Twitter-like timeline</a> built with server-sent events.</p>
<h3>WebSockets are back!</h3>
<p><a href="https://developer.mozilla.org/en/WebSockets">WebSockets</a> can be used to create an interactive communication channel between a browser and a server. They are already used to build &#8220;<em>HTML5</em>&#8221; chats, multiplayer games, and much much more.<br />
<em>Note that this API will be temporarily namespaced in prevision of upcoming changes to the specification.</em></p>
<h2>Other changes</h2>
<div id="section_2" class="changelog">
<h4>HTML</h4>
<ul>
<li>The HTML5 <code><a href="https://developer.mozilla.org/en/HTML/Element/progress">&lt;progress&gt;</a></code> element, which lets you create a progress bar, is now supported.</li>
<li>The parsing of the HTML5 <code><a href="https://developer.mozilla.org/en/HTML/Element/track">&lt;track&gt;</a></code> element, which specifies text tracks for media elements, is now supported. This element should appear in the DOM now, though its behavior is still not implemented.</li>
<li>The <code><a href="https://developer.mozilla.org/en/HTML/Element/iframe">&lt;iframe&gt;</a></code> element is now clipped correctly by its container when the container&#8217;s corners have been rounded using the <code><a href="https://developer.mozilla.org/en/CSS/border-radius">border-radius</a></code> property.</li>
<li><code><a href="https://developer.mozilla.org/en/HTML/Element/form">&lt;form&gt;</a></code> elements&#8217; text <code><a href="https://developer.mozilla.org/en/HTML/Element/input">&lt;input&gt;</a></code> fields no longer support the XUL <code><a href="https://developer.mozilla.org/en/XUL/Property/maxwidth">maxwidth</a></code> property; this was never intentional, and is in violation of the HTML specification. You should instead use the <code><a href="https://developer.mozilla.org/en/HTML/Element/input#attr-size">size</a></code> attribute to set the maximum width of input fields.</li>
<li>The <code><a href="https://developer.mozilla.org/en/HTML/Element/canvas">&lt;canvas&gt;</a></code> <code><a href="https://developer.mozilla.org/en/DOM/CanvasRenderingContext2d">CanvasRenderingContext2d</a></code> properties <code>fillStyle</code> and <code>strokeStyle</code> used to ignore garbage included after a valid color definition; now this is correctly treated as an error. For example, &#8220;red blue&#8221; as a color used to be treated as &#8220;red&#8221;, when it should have been ignored.</li>
<li>The width and height of <code><a href="https://developer.mozilla.org/en/HTML/Element/canvas">&lt;canvas&gt;</a></code> elements can now properly be set to 0px; previously, these were getting arbitrarily set to 300px when you tried to do that.</li>
<li>When a <code><a href="https://developer.mozilla.org/en/HTML/Element/textarea">&lt;textarea&gt;</a></code> element receives focus, the text insertion point is now placed, by default, at the beginning of the text rather than at the end. This makes Firefox&#8217;s behavior consistent with other browsers.</li>
</ul>
</div>
<div id="section_3" class="changelog">
<h4>CSS</h4>
<dl>
<dt><code><a href="https://developer.mozilla.org/en/CSS/text-decoration-color">-moz-text-decoration-color</a></code></dt>
<dd>This new property lets you set the color used by text decorations, such as underlines, overlines, and strikethroughs.</dd>
<dt><code><a href="https://developer.mozilla.org/en/CSS/text-decoration-line">-moz-text-decoration-line</a></code></dt>
<dd>This new property lets you set the kind of text decorations added to an element.</dd>
<dt><code><a href="https://developer.mozilla.org/en/CSS/text-decoration-style">-moz-text-decoration-style</a></code></dt>
<dd>This new property lets you set the style of text decorations, such as underlines, overlines, and strikethroughs. Styles include single-strokes, double strokes, wavy lines, dotted lines, and so forth.</dd>
<dt><code><a href="https://developer.mozilla.org/en/CSS/hyphens">-moz-hyphens</a></code></dt>
<dd>This new property lets you control how hyphenation of words during line wrapping is handled.</dd>
<dt><code><a href="https://developer.mozilla.org/en/CSS/orient">-moz-orient</a></code></dt>
<dd>A new (currently Mozilla-specific) property which lets you control the vertical or horizontal orientation of certain elements (particularly <code><a href="https://developer.mozilla.org/en/HTML/Element/progress">&lt;progress&gt;</a></code>).</dd>
<dt><code><a href="https://developer.mozilla.org/en/CSS/%3a%3a-moz-progress-bar">::-moz-progress-bar</a></code></dt>
<dd>A Mozilla-specific pseudo-element that lets you style the area of an <code><a href="https://developer.mozilla.org/en/HTML/Element/progress">&lt;progress&gt;</a></code> element representing the completed portion of a task.</dd>
</dl>
<h5>Other CSS changes</h5>
<ul>
<li>The <code><a href="https://developer.mozilla.org/en/CSS/@-moz-document">@-moz-document</a></code> property has a new <code>regexp()</code> function, which lets you match the document&#8217;s URL to a <a href="https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions">regular expression</a>.</li>
<li>The <code><a href="https://developer.mozilla.org/en/CSS/azimuth">azimuth</a></code> CSS property is no longer supported, as we have removed what little code we had for the <code>aural</code> media group. It was never significantly implemented, so it made more sense to remove the crufty implementation for the time being rather than try to patch it up.</li>
<li>In the past, the <code><a href="https://developer.mozilla.org/en/CSS/%3ahover">:hover</a></code> pseudoclass was not applied to class selectors when in quirks mode; for example, <code>.someclass:hover</code> did not work. This quirk has been removed.</li>
<li>The <code><a href="https://developer.mozilla.org/en/CSS/%3aindeterminate">:indeterminate</a></code> pseudo-class can be applied to <code><a href="https://developer.mozilla.org/en/HTML/Element/progress">&lt;progress&gt;</a></code> elements. This is non-standard, but we hope it will be adopted by other browsers, because it will be useful.</li>
</ul>
</div>
<div id="section_5" class="changelog">
<h4>DOM</h4>
<dl>
<dt><a href="https://developer.mozilla.org/en/CSS/Using_media_queries_from_code">Using media queries from code</a></dt>
<dd>You can now test the result of a media query string programmatically using the <code><a href="https://developer.mozilla.org/en/DOM/window.matchMedia">window.matchMedia()</a></code> method and the <code><a href="https://developer.mozilla.org/en/DOM/MediaQueryList">MediaQueryList</a></code> interface.</dd>
<dt><a href="https://developer.mozilla.org/en/DOM/Touch_events">Touch events</a></dt>
<dd>Firefox 6 adds support for W3C standard touch events; these make it easy to interpret one or more touches at a time on touch-sensitive surfaces such as touch screens and trackpads.</dd>
<dt><a href="https://developer.mozilla.org/en/Server-sent_events">Server-sent events</a></dt>
<dd>Server-sent events make it possible for a web application to ask a server to send events just like any locally-created DOM event.</dd>
</dl>
<ul>
<li><code>navigator.securityPolicy</code>, which has returned an empty string for a long time, has been removed outright.</li>
<li><code><a href="https://developer.mozilla.org/en/DOM/BlobBuilder">BlobBuilder</a></code> is now implemented, although for now it&#8217;s prefixed (so you need to use <code>MozBlobBuilder</code>).</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/document.height">document.height</a></code> and <code><a href="https://developer.mozilla.org/en/DOM/document.width">document.width</a></code> have been removed. <a title="Unable to access bug's page. Try reloading this page to see bug's status and summary in this tooltip." href="https://bugzilla.mozilla.org/show_bug.cgi?id=585877"> bug 585877</a></li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/DocumentType">DocumentType</a></code> object&#8217;s <code>entities</code> and <code>notations</code> properties, which were never implemented and always returned <code>null</code>, have been removed, since they&#8217;ve been removed from the specification anyway.</li>
<li>The <code>DOMConfiguration</code> interface and the <code>document.domConfig</code> property that used it have both been removed; they were never supported and have since been removed from the DOM specification.</li>
<li>The <code>hashchange</code> event now correctly includes <a href="https://developer.mozilla.org/en/DOM/window.onhashchange#The_hashchange_event">the <code>newURL</code> and <code>oldURL</code> fields</a>.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/FileReader">FileReader</a></code> interface&#8217;s <code>abort()</code> method now throws an exception when used if no file read is in progress.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/window.postMessage">window.postMessage()</a></code> method now uses <a href="https://developer.mozilla.org/en/DOM/The_structured_clone_algorithm">the structured clone algorithm</a> to let you pass JavaScript objects instead of just strings from one window to another.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/window.history">window.history</a></code> API now uses <a href="https://developer.mozilla.org/en/DOM/The_structured_clone_algorithm">the structured clone algorithm</a> to serialize the objects you pass to the <code>pushState()</code> and <code>replaceState()</code> methods; this lets you use more complex objects (including those that contain cyclic graphs of references).</li>
<li>You can now <a href="https://developer.mozilla.org/en/Printing#Detecting_print_requests">detect when printing has been initiated and has completed</a> by listening for the new <code>beforeprint</code> and <code>afterprint</code> events.</li>
<li>The <code>document.strictErrorChecking</code> property has been removed, since it was never implemented and was removed from the DOM specification.</li>
<li>The standard <code><a href="https://developer.mozilla.org/en/DOM/event.defaultPrevented">event.defaultPrevented</a></code> property is now supported; you should use this instead of the non-standard <code>getPreventdefault()</code> method to detect whether or not <code><a href="https://developer.mozilla.org/en/DOM/event.preventDefault">event.preventDefault()</a></code> was called on the event.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/window.top">window.top</a></code> property is now properly read only.</li>
<li>DOM views, which we never documented, have been removed. This was a bit of implementation detail that was unnecessarily complicating things, so we got rid of it. If you notice this change, you&#8217;re probably doing something wrong.</li>
<li>The <code>EventTarget</code> function <a href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMEventTarget"><code>addEventListener()</code></a>&#8216;s <code>useCapture</code> parameter is now optional, as it is in WebKit (and as per the latest version of the specification).</li>
<li>The <code>mozResponseArrayBuffer</code> property of the <a href="https://developer.mozilla.org/en/DOM/XMLHttpRequest"><code>XMLHttpRequest</code></a> object has been replaced with the <code>responseType</code> and <code>response</code> properties.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/element.dataset">element.dataset</a></code> property has been added to the <a href="https://developer.mozilla.org/en/DOM/HTMLElement"><code>HTMLElement</code></a> interface allowing access to the <a href="https://developer.mozilla.org/en/HTML/Global_attributes#attr-data-*"><code>data-*</code> global attributes</a> of an element.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/customEvent">customEvent</a></code> method has been implemented. (see <a title="Unable to access bug's page. Try reloading this page to see bug's status and summary in this tooltip." href="https://bugzilla.mozilla.org/show_bug.cgi?id=427537"> bug 427537</a> )</li>
<li>For security reasons, <code>data:</code> and <code>javascript:</code> URIs no longer inherit the security context of the current page when the user enters them in the location bar; instead, a new, empty, security context is created. This means that script loaded by entering <code>javascript:</code> URIs in the location bar no longer has access to DOM methods and the like, for example. These URIs continue to work as before when used by script, however.</li>
</ul>
</div>
<div id="section_6" class="changelog">
<h4>JavaScript</h4>
<ul>
<li>In the past, it was possible to use the <code>new</code> operator on several built-in functions (eval, parseInt, Date.parse&#8230;) that should not have allowed it, according to the specification. This behavior is no longer supported. Using the <code>new</code> operator in this way was never officially supported and was not widely done, so it&#8217;s unlikely that this change affects you.</li>
<li>ECMAScript Harmony <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/WeakMap">WeakMaps</a> have been added as a prototype implementation.</li>
</ul>
</div>
<div id="section_7" class="changelog">
<h4>SVG</h4>
<ul>
<li>The <code><a href="https://developer.mozilla.org/en/SVG/Attribute/pathLength">pathLength</a></code> attribute is now supported.</li>
<li>SVG patterns, gradients, and filters now work correctly when loaded from <a href="https://developer.mozilla.org/en/data_URIs"><code>data:</code> URLs</a>.</li>
</ul>
</div>
<div id="section_8" class="changelog">
<h4>MathML</h4>
<ul>
<li>The implementation of <code><a href="https://developer.mozilla.org/en/MathML/Element/mstyle">&lt;mstyle&gt;</a></code> has been corrected.</li>
</ul>
</div>
<div id="section_9" class="changelog">
<h4>Accessibility (ARIA)</h4>
<ul>
<li>A state change event is now correctly sent when the value of <code>aria-busy</code> changes.</li>
<li>An attribute change event is now correctly sent when <code>aria-sort</code> occurs.</li>
</ul>
</div>
<div id="section_10" class="changelog">
<h4>Net</h4>
<dl>
<dt><a href="https://developer.mozilla.org/en/WebSockets">WebSockets</a></dt>
<dd>WebSockets was updated to protocol version 07 for Firefox 6.</dd>
</dl>
<ul>
<li>Parsing of the <code>Content-Disposition</code> header has been fixed to properly interpret backslash-escaped ASCII characters as just that character itself. Previously it was incorrectly replacing that character with an underscore (&#8220;_&#8221;).</li>
<li>The value of the path field on <code>Set-Cookie</code> headers is now interpreted correctly when quotes are used; previously, they were being treated as part of the path string instead of as delimiters. <strong>This change may affect compatibility with some web sites</strong>, so authors should check their code.</li>
<li>The <a title="www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.42" target="_blank"><code>Upgrade</code></a> request header is now supported; you can request an upgrade of an HTTP channel to another protocol by calling <code><a href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade%28%29">nsIHttpChannelInternal.HTTPUpgrade()</a></code> .</li>
</ul>
</div>
<div id="section_11" class="changelog">
<h4>Other changes</h4>
<ul>
<li>Support for microsummaries has been removed; these were never widely used, were not very discoverable, and continuing to support them was making improvements to the Places (bookmark and history) architecture difficult.</li>
<li>WebGL now supports the <a title="http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt" href="http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt" target="_blank"><code>OES_texture_float</code></a> extension.</li>
</ul>
</div>
<p><br/><br/><br />
<strong>You can help us improve those changelogs by telling if you find the level of details appropriate.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/08/firefox6/feed/</wfw:commentRss>
		<slash:comments>91</slash:comments>
		</item>
		<item>
		<title>Add-on SDK and the beta of Add-on Builder now available!</title>
		<link>http://hacks.mozilla.org/2011/06/add-on-sdk-and-the-beta-of-add-on-builder-now-available/</link>
		<comments>http://hacks.mozilla.org/2011/06/add-on-sdk-and-the-beta-of-add-on-builder-now-available/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 14:22:13 +0000</pubDate>
		<dc:creator>Jay Patel</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8524</guid>
		<description><![CDATA[Firefox offers users complete control over the look and functionality of their Web browser with a gallery of hundreds of thousands of add-ons. With the launch of Add-on SDK and Add-on Builder Beta, web developers  need only knowledge of HTML, JavaScript and CSS to create great add-ons for Firefox that are restartless by default. The [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-8531" src="http://hacks.mozilla.org/wp-content/uploads/2011/06/add-on-blog-sdk-builder_600.png" alt="Add-on Builder Beta and Add-on SDK are here!" width="600" height="190" /></p>
<p>Firefox offers users complete control over the look and functionality of their Web browser with a gallery of hundreds of thousands of add-ons. With the launch of <a href="https://addons.mozilla.org/developers/builder">Add-on SDK and Add-on Builder Beta</a>, web developers  need only knowledge of HTML, JavaScript and CSS to create great add-ons for Firefox that are restartless by default.</p>
<p>The <a href="https://addons.mozilla.org/developers/builder">Add-on SDK</a> enables local development of add-ons through a command line interface, while the <a href="https://builder.addons.mozilla.org">Firefox Add-on Builder Beta</a> provides a hosted online build environment.</p>
<p>To find out more, head over to the <a href="http://blog.mozilla.com/addons/2011/06/21/add-on_sdk-builder-_beta/">Add-ons blog</a> or the new Add-on SDK &amp; Add-on Builder <a href="https://addons.mozilla.org/developers/builder">page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/06/add-on-sdk-and-the-beta-of-add-on-builder-now-available/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Firefox 5 is here</title>
		<link>http://hacks.mozilla.org/2011/06/firefox5/</link>
		<comments>http://hacks.mozilla.org/2011/06/firefox5/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 14:15:49 +0000</pubDate>
		<dc:creator>Jay Patel</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 5]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8276</guid>
		<description><![CDATA[Today, three months after the release of Firefox 4, we release Firefox 5, thanks to our new development cycle. Developers will be able to create richer animations using CSS3 Animations. This release comes with various improvements, performance optimization and bug fixes. CSS3 Animations CSS Animations (check out the documentation) are a new way to create [...]]]></description>
			<content:encoded><![CDATA[<p><em>Today, three months after the release of Firefox 4, we release <a href="http://www.mozilla.com/en-US/firefox/new/">Firefox 5</a>, thanks to our new <a href="https://developer.mozilla.org/devnews/index.php/2011/04/07/new-development-channels-and-repositories-for-rapid-releases/">development cycle</a>. Developers will be able to create richer animations using <a href="http://hacks.mozilla.org/2011/05/advanced-animations-in-aurora-with-css3-animations/">CSS3 Animations</a>. This release comes with various improvements, performance optimization and bug fixes.</em></p>
<h3>CSS3 Animations</h3>
<p>CSS Animations (check out the <a href="https://developer.mozilla.org/en/CSS/CSS_animations">documentation</a>) are a new way to create animations using CSS. Like <a href="https://developer.mozilla.org/en/CSS/CSS_transitions">CSS Transitions</a>, they are efficient and run smoothly (see David Baron&#8217;s <a href="http://dbaron.org/log/20110615-animations">article</a>), and the developers have a better controls over the intermediate steps (<em><a href="https://developer.mozilla.org/en/CSS/CSS_animations">keyframes</a></em>), and can now create much more complex animations.</p>
<h3>Notable changes</h3>
<ul>
<li>You can now pass an image as a parameter to <a href="https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas">createImageData</a>to copy its dimensions.</li>
<li><a href="https://developer.mozilla.org/en/window.setTimeout">setTimeout</a> and <a href="https://developer.mozilla.org/En/window.setInterval">setInterval</a> will only be able to execute callbacks once per second in inactive tabs. This follows the behavior of <a href="https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame">requestAnimationFrame</a> to save CPU and power consumption.</li>
</ul>
<h3>Other Bug Fixes and Performance Improvements:</h3>
<p><!--  - START CHANGELOG   ---></p>
<div class="changelog">
<h4>HTML</h4>
<ul>
<li>All HTML elements now have the <code><a class="new" href="https://developer.mozilla.org/en/DOM/element.accessKey">accessKey</a></code> attribute, as well as the <code><a href="https://developer.mozilla.org/en/DOM/element.blur">blur()</a></code> , <code><a href="https://developer.mozilla.org/en/DOM/element.click">click()</a></code> , and <code><a href="https://developer.mozilla.org/en/DOM/element.focus">focus()</a></code> methods. These are specified in the <code><a href="https://developer.mozilla.org/en/DOM/HTMLElement">HTMLElement</a></code> interface.</li>
<li>In order to comply with the HTML5 specification, support for the UTF-7 and UTF-32 <a href="https://developer.mozilla.org/en/Character_Sets_Supported_by_Gecko">character sets</a> has been removed.</li>
<li>When in quirks mode, empty <code><a href="https://developer.mozilla.org/en/HTML/Element/map">&lt;map&gt;</a></code>s are no longer skipped over in favor of non-empty ones when matching. See the <a href="https://developer.mozilla.org/en/HTML/Element/map#Gecko_notes">Gecko notes</a> on the <code><a href="https://developer.mozilla.org/en/HTML/Element/map">&lt;map&gt;</a></code> element for details.</li>
<li>Firefox mobile on Android now supports WOFF fonts for <code><a href="https://developer.mozilla.org/en/CSS/@font-face">@font-face</a></code> .</li>
<li>WebGL <a href="https://developer.mozilla.org/en/WebGL/Cross-Domain_Textures">no longer loads textures from domains other than the originating domain</a>, as a security measure.</li>
</ul>
</div>
<div class="changelog">
<h4>Canvas improvements</h4>
<ul>
<li>The <code><a href="https://developer.mozilla.org/en/HTML/Element/canvas">&lt;canvas&gt;</a></code> 2D drawing context now supports specifying an <code>ImageData</code> object as the input to the <code>createImageData()</code> method; this <a href="https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object">creates a new <code>ImageData</code> object</a> initialized with the same dimensions as the specified object, but still with all pixels preset to transparent black.</li>
<li>Specifying non-finite values when adding color stops through a call to the <code><a href="https://developer.mozilla.org/en/DOM/CanvasGradient">CanvasGradient</a></code> method <code>addColorStop()</code> now correctly throws <code>INDEX_SIZE_ERR</code> instead of <code>SYNTAX_ERR</code>.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/HTMLCanvasElement">HTMLCanvasElement</a></code> method <code>toDataURL()</code> now correctly lower-cases the specified MIME type before matching.</li>
<li><code>getImageData()</code> now correctly accepts rectangles that extend beyond the bounds of the canvas; pixels outside the canvas are returned as transparent black.</li>
<li><code>drawImage()</code> and <code>createImageData()</code> now handle negative arguments in accordance with the specification, by flipping the rectangle around the appropriate axis.</li>
<li>Specifying non-finite values when calling <code>createImageData()</code> now properly throws a <code>NOT_SUPPORTED_ERR</code> exception.</li>
<li><code>createImageData()</code> and <code>getImageData()</code> now correctly return at least one pixel&#8217;s worth of image data if a rectangle smaller than one pixel is specified.</li>
<li>Specifying a negative radius when calling <code>createRadialGradient()</code> now correctly throws <code>INDEX_SIZE_ERR</code>.</li>
<li>Specifying a <code>null</code> or <code>undefined</code> image when calling <code>createPattern()</code> or <code>drawImage()</code> now correctly throws a <code>TYPE_MISMATCH_ERR</code> exception.</li>
<li>Specifying invalid values for <code>globalAlpha</code> no longer throws a <code>SYNTAX_ERR</code> exception; these are now correctly silently ignored.</li>
<li>Specifying invalid values when calling <code>translate()</code>, <code>transform()</code>, <code>rect()</code>, <code>clearRect()</code>, <code>fillRect()</code>, <code>strokeRect()</code>, <code>lineTo()</code>, <code>moveTo()</code>, <code>quadraticCurveTo()</code>, or <code>arc()</code> no longer throws an exception; these calls are now correctly silently ignored.</li>
<li>Setting the value of <code>shadowOffsetX</code>, <code>shadowOffsetY</code>, or <code>shadowBlur</code> to an invalid value is now silently ignored.</li>
<li>Setting the value of <code>rotate</code> or <code>scale</code> to an invalid value is now silently ignored.</li>
</ul>
</div>
<div class="changelog">
<h4>CSS</h4>
<ul>
<li>Support for <a href="https://developer.mozilla.org/en/CSS/CSS_animations">CSS animations</a> has been added, using the <code>-moz-</code> prefix for now.</li>
</ul>
</div>
<div class="changelog">
<p><span id="DOM"> </span></p>
<h4>DOM</h4>
<ul>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/selection">selection</a></code> object&#8217;s <a href="https://developer.mozilla.org/en/DOM/Selection/modify"><code>modify()</code></a> method has been changed so that the &#8220;word&#8221; selection granularity no longer includes trailing spaces; this makes it more consistent across platforms and matches the behavior of WebKit&#8217;s implementation.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/window.setTimeout">window.setTimeout()</a></code> method now clamps to send no more than one timeout per second in inactive tabs. In addition, it now clamps nested timeouts to the smallest value allowed by the HTML5 specification: 4 ms (instead of the 10 ms it used to clamp to).</li>
<li>Similarly, the <code><a href="https://developer.mozilla.org/en/DOM/window.setInterval">window.setInterval()</a></code> method now clamps to no more than one interval per second in inactive tabs.</li>
<li><a href="https://developer.mozilla.org/en/XMLHttpRequest"><code>XMLHttpRequest</code></a> now <a href="https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Detecting_any_load_end_condition">supports the <code>loadend</code> event</a> for progress listeners. This is sent after any transfer is finished (that is, after the <code>abort</code>, <code>error</code>, or <code>load</code> event). You can use this to handle any tasks that need to be performed regardless of success or failure of a transfer.</li>
<li>The <code><a href="https://developer.mozilla.org/en/DOM/Blob">Blob</a></code> and, by extension, the <code><a href="https://developer.mozilla.org/en/DOM/File">File</a></code> objects&#8217; <code>slice()</code> method has been removed and replaced with a new, proposed syntax that makes it more consistent with <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice"><code>Array.slice()</code></a> and <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice"><code>String.slice()</code></a> methods in JavaScript. This method is named <a href="https://developer.mozilla.org/en/DOM/Blob#mozSlice()"><code>mozSlice()</code></a> for now.</li>
<li>The value of <code><a href="https://developer.mozilla.org/en/DOM/window.navigator.language">window.navigator.language</a></code> is now determined by looking at the value of the <code>Accept-Language</code> <a href="https://developer.mozilla.org/en/HTTP/Headers">HTTP header</a>.</li>
</ul>
</div>
<div class="changelog">
<p><span id="JavaScript"> </span></p>
<h4>JavaScript</h4>
<ul>
<li>Regular expressions are no longer callable as if they were functions; this change has been made in concert with the WebKit team to ensure compatibility (see <a class="external" href="https://bugs.webkit.org/show_bug.cgi?id=28285"> WebKit bug 28285</a>).</li>
<li>The <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/isGenerator"><code>Function.prototype.isGenerator()</code></a> method is now supported; this lets you determine if a function is a <a href="https://developer.mozilla.org/en/JavaScript/Guide/Iterators_and_Generators#Generators.3a_a_better_way_to_build_Iterators">generator</a>.</li>
</ul>
</div>
<div class="changelog">
<h4>SVG</h4>
<ul>
<li>The <code><a href="https://developer.mozilla.org/en/SVG/Attribute/class">class</a></code> SVG attribute can now be animated.</li>
<li>The following SVG-related DOM interfaces representing lists of objects are now indexable and can be accessed like arrays; in addition, they have a <code>length</code> property indicating the number of items in the lists: <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGLengthList">SVGLengthList</a></code> , <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGNumberList">SVGNumberList</a></code> , <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGPathSegList">SVGPathSegList</a></code> , and <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGPointList">SVGPointList</a></code>.</li>
</ul>
</div>
<div class="changelog">
<h4>HTTP</h4>
<ul>
<li>Firefox no longer sends the &#8220;Keep-Alive&#8221; HTTP header; we weren&#8217;t formatting it correctly, and it was redundant since we were also sending the <code><a href="https://developer.mozilla.org/en/HTTP/Headers#Connection">Connection:</a></code> or <code><a href="https://developer.mozilla.org/en/HTTP/Headers#Proxy-Connection">Proxy-Connection:</a></code> header with the value &#8220;keep-alive&#8221; anyway.</li>
<li>The HTTP transaction model has been updated to be more intelligent about reusing connections in the persistent connection pool; instead of treating the pool as a <a href="http://en.wikipedia.org/wiki/FIFO">FIFO</a> queue, Necko now attempts to sort the pool with connections with the largest <a href="http://en.wikipedia.org/wiki/congestion window">congestion window</a> (CWND) first. This can reduce the round-trip time (RTT) of HTTP transactions by avoiding the need to grow connections&#8217; windows in many cases.</li>
<li>Firefox now handles the Content-Disposition HTTP response header more effectively if both the <code>filename</code> and <code>filename*</code> parameters are provided; it looks through all provided names, using the <code>filename*</code> parameter if one is available, even if a <code>filename</code> parameter is included first. Previously, the first matching parameter would be used, thereby preventing a more appropriate name from being used. See <a class="external" title="Unable to access bug's page. Try reloading this page to see bug's status and summary in this tooltip." href="https://bugzilla.mozilla.org/show_bug.cgi?id=588781"> bug 588781</a> .</li>
</ul>
</div>
<div class="changelog">
<h4>MathML</h4>
<ul>
<li>Support for <a class=" external" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" target="_blank">embellished operators</a></li>
</ul>
</div>
<div class="changelog">
<h4>Developer tools</h4>
<ul>
<li>The <a href="https://developer.mozilla.org/en/Using_the_Web_Console#The_console_object">Web Console&#8217;s <code>Console</code> object</a> now has a <code>debug()</code> method, which is an alias for its <code>log()</code> method; this improves compatibility with certain existing sites.</li>
</ul>
</div>
<p><!--  - END CHANGELOG   ---></p>
<style>
h4 {margin-bottom: 10px}
.changelog:nth-of-type(odd) { background-color: #F2F2F2; }
.changelog:nth-of-type(even) { background-color: #FEF8E7; }
.changelog {    border: 1px solid rgb(217, 217, 217);    padding: 4px; } .changelog:not(:last-of-type) { border-bottom: none; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/06/firefox5/feed/</wfw:commentRss>
		<slash:comments>118</slash:comments>
		</item>
		<item>
		<title>Firebug for Firefox5/Aurora? Get version 1.8!</title>
		<link>http://hacks.mozilla.org/2011/05/firebug-for-firefox5aurora-get-version-1-8/</link>
		<comments>http://hacks.mozilla.org/2011/05/firebug-for-firefox5aurora-get-version-1-8/#comments</comments>
		<pubDate>Wed, 25 May 2011 08:32:14 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8143</guid>
		<description><![CDATA[Just a quick tip that if you are a developer and you lately upgraded Firefox4 to Firefox5 (or why not give Aurora a try?) it tells you that Firebug is not compatible and can&#8217;t find an upgrade. However, there is a compatible version of Firebug (v1.8) available for you: get it here. Now you can [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick tip that if you are a developer and you lately upgraded Firefox4 to Firefox5 (or why not give <a href="http://www.mozilla.com/en-US/firefox/channel/">Aurora</a> a try?) it tells you that Firebug is not compatible and can&#8217;t find an upgrade. </p>
<p>However, there is a compatible version of Firebug (v1.8) available for you: <a href="http://getfirebug.com/releases/firebug/1.8/">get it here</a>.</p>
<p>Now you can get the latest Firefox goodness and still debug your code. </p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/05/firebug-for-firefox5aurora-get-version-1-8/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Firefox Aurora: Playing With Upcoming Features is Now Safe</title>
		<link>http://hacks.mozilla.org/2011/04/aurora/</link>
		<comments>http://hacks.mozilla.org/2011/04/aurora/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 14:32:48 +0000</pubDate>
		<dc:creator>louisremi</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=7927</guid>
		<description><![CDATA[Firefox Aurora is a preview of the next version of Firefox, released every six weeks. It provides a safe way to play with the latest Web technologies the Mozilla team is working on. What is Aurora? Aurora is a new preview version that fits between the Nightly builds and Betas: Firefox Nightly (firefox.com/channel) is released [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.firefox.com/channel/"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/04/75px-Aurora210.png" alt="Aurora Logo" title="Download Aurora" width="75" height="75" class="alignright size-full wp-image-7968" /></a></p>
<p><em><a href="http://firefox.com/channel">Firefox Aurora</a> is a preview of the next version of Firefox, released every six weeks. It provides a safe way to play with the latest Web technologies the Mozilla team is working on.</em></p>
<h3>What is Aurora?</h3>
<p>Aurora is a new preview version that fits between the Nightly builds and Betas:</p>
<ul>
<li>Firefox Nightly (<a href="http://firefox.com/channel">firefox.com/channel</a>) is released every day and includes the latest (potentially unstable) features and patches.
<li>Firefox Aurora (<a href="http://firefox.com/channel">firefox.com/channel</a>) is released every six weeks and includes the newest features not known to cause problems.
<li>Firefox Beta (<a href="http://firefox.com/channel">firefox.com/channel</a>) is released every six weeks and includes the features that are ready to be used and be tested by a large audience.
</ul>
<p><img src="http://hacks.mozilla.org/wp-content/uploads/2011/04/Release3-nq8.png" title="Illustration of the release cycle" width="500" height="372" class="alignright size-full wp-image-7959" /></p>
<h3>Should I use Aurora?</h3>
<p>Amongst other things, Aurora already lets you play with CSS3 Animations and the new tabs management of Firefox. You can help us debug and test these features simply by installing Aurora from <a href="http://www.firefox.com/channel/">firefox.com/channel</a>.</p>
<h3>Switching between channels</h3>
<p>Once you have <a href="http://www.mozilla.com/en-US/firefox/channel/">downloaded and installed Aurora</a>, you can switch to other channels at will. Simply click on the <strong>Help</strong> menu and open the <strong>About</strong> window.</p>
<p><img src="http://hacks.mozilla.org/wp-content/uploads/2011/04/Screenshot-About-Aurora1-500x282.png" alt="Aurora About window" title="Screenshot-About Aurora1" width="500" height="282" class="alignright size-large wp-image-7949" /></p>
<p><em><strong>Update</strong>: The channel switcher will be removed from future versions of Aurora as <a href="http://blog.mozilla.com/channels/2011/06/02/update-on-channel-switcher/">explained</a> by Johnathan Nightingale on the channels blog.</em></p>
<p>Start using it right away and let us know what you think about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/04/aurora/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>

