<?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>hacks.mozilla.org</title>
	<atom:link href="http://hacks.mozilla.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacks.mozilla.org</link>
	<description></description>
	<lastBuildDate>Thu, 19 Nov 2009 21:03:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>web developer survey: 5,000+ responses from 119 countries!</title>
		<link>http://hacks.mozilla.org/2009/11/web-developer-survey-5000/</link>
		<comments>http://hacks.mozilla.org/2009/11/web-developer-survey-5000/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:01:02 +0000</pubDate>
		<dc:creator>afranq</dc:creator>
				<category><![CDATA[MDN]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2354</guid>
		<description><![CDATA[A few weeks ago, we launched a new survey for Web developers. We wanted to learn more about what you are interested in to build the Mozilla Developer Network tailored to your needs.
Thanks to your help in spreading the word about the survey, we surpassed our goal of 5,000 responses!  The survey is now closed [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, we launched a new <a href="http://hacks.mozilla.org/2009/10/mozilla-developer-network/">survey for Web developers</a>. We wanted to learn more about what you are interested in to build the Mozilla Developer Network tailored to your needs.</p>
<p>Thanks to your help in spreading the word about the survey, we surpassed our goal of 5,000 responses!  The survey is now closed and we&#8217;re processing the data. We&#8217;ll post results here on the <a href="http://hacks.mozilla.org/">hacks blog</a> and tweet about them on <a href="http://twitter.com/mozhacks">@mozhacks</a> in the next few weeks.</p>
<p>Given the positive feedback about this initiative, we&#8217;re planning to repeat the survey on a regular basis to show trends in the Web developer world over time. For example: what tools and technologies are most popular at a give time around the world? The next iteration should be coming in a few months, and we&#8217;ll ask for your help again to make sure the participation is as broad as possible.</p>
<p>Thanks for joining this effort, and stay tuned for the results!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/web-developer-survey-5000/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>what&#8217;s new in Firebug 1.5?</title>
		<link>http://hacks.mozilla.org/2009/11/whats-new-in-firebug-1-5/</link>
		<comments>http://hacks.mozilla.org/2009/11/whats-new-in-firebug-1-5/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 14:57:22 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox 3.5]]></category>
		<category><![CDATA[Firefox 3.6]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2338</guid>
		<description><![CDATA[This is a re-post from Rob Cambell&#8217;s personal weblog.  Firebug 1.5 is the first release that will work with the upcoming Firefox 3.6 and also also works with Firefox 3.5.  It&#8217;s currently in beta and will be available before the release of Firefox 3.6.
As of this minute, Firebug 1.5 is sitting comfortably in [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a re-post from <a href="http://antennasoft.net/robcee/2009/11/12/firebug-1-5-new-features-revealed/">Rob Cambell&#8217;s personal weblog</a>.  Firebug 1.5 is the first release that will work with the upcoming Firefox 3.6 and also also works with Firefox 3.5.  It&#8217;s currently in beta and will be available before the release of Firefox 3.6.</em></p>
<p>As of this minute, Firebug 1.5 is sitting comfortably in its third beta and available for <a href="http://getfirebug.com/releases/firebug/1.5X/firebug-1.5X.0b3.xpi" target="_blank">download</a>. This version is shaping up to be our best release yet and initial reports have been very positive regarding its stability, UI improvements and new features. So let&#8217;s take a look at some of the new features.</p>
<p><b>Improved Net Panel accuracy</b></p>
<p>One of the problems with Firebug&#8217;s Net panel in the past has been inaccurate timings. Because Firebug is entirely written in JavaScript some network and UI activity could block Firebug during long operations and cause the timings displayed there to be less than accurate. This has finally been corrected with the landing of a new service called the http-activity-distributor. For more details on the implementation and use of the newly-improved Net panel, see Honza&#8217;s <a href="http://www.softwareishard.com/blog/firebug/firebug-http-time-monitor/" target="_blank">blog post</a> on the topic.</p>
<p><b>New Break Functionality</b></p>
<p>In Firebug 1.4, we introduced the concept of &#8220;break-on-next&#8221; to the Script panel. This was a &#8220;pause&#8221; button sitting between the inspect icon and the Console tab. In 1.5, we&#8217;ve extended this concept to the Console, HTML and Net panels to allow more exciting types of breaks.</p>
<div><a title="break on xhr by robceemoz, on Flickr" href="http://www.flickr.com/photos/robceemoz/4098694166/"><img src="http://farm3.static.flickr.com/2527/4098694166_e8217cdf05.jpg" alt="break on xhr" width="500" height="268" /></a></div>
<p>In the Console, we&#8217;ve replaced the mini-menu <strong>Break-on-Errors</strong> option with the pause button. The reasons for this possibly contentious change was it made for a more consistent use of menus and the break button. Now, to enable Break on Errors, select the Console panel and hit the pause button. You&#8217;ll see that familiar glow to indicate that it&#8217;s waiting for an error. Now whenever an error occurs on the page, you&#8217;ll be dropped into the script panel at the line where the error occurred.</p>
<p>The HTML panel&#8217;s break button is a little different. This is the <strong>Break-on-Mutation</strong> feature. When this is enabled, whenever a bit of JavaScript modifies an HTML element, you&#8217;ll be taken to the Script panel and the modifying code while be highlighted. Related to this, you should be able to see modified HTML occurring in real-time in the HTML panel with affected elements and attributes being highlighted as they change in the page.</p>
<p>Finally in the Net panel, the break button acts as a <strong>Break-on-XHR</strong> button. This is intended to help debug AJAX apps by allowing you to halt the debugger during an XmlHttpRequest send. As in the other break types, you&#8217;ll be transported to the script panel when an XHR object fires off its request and you&#8217;ll be given the option to copy the message.</p>
<p>John Barton and Honza have written a great interactive demo page describing these new features on <a href="http://getfirebug.com/doc/breakpoints/demo.html" target="_blank">getfirebug.com</a>.</p>
<p><b>Mixed Development</b></p>
<ul>
<li>We made a few tweaks to the UI in this version. We replaced the &#8220;Off&#8221; label with a single &#8220;power&#8221; button (or window close button on Mac) as promised during the last release.</li>
<li>Kevin Decker added the search panel originally intended for version 1.4 with some nice options.</li>
<li>Persist option on Console and Net Panel. Save your data!</li>
<li>Improvements to the Inspector.</li>
<li>Still more to come. Between now and final release we plan on hunting down a few more bugs to make this even more stable. Feel free to download and give it a try.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/whats-new-in-firebug-1-5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>a proposal: resource packages to improve performance</title>
		<link>http://hacks.mozilla.org/2009/11/a-proposal-resource-packages-to-improve-performance/</link>
		<comments>http://hacks.mozilla.org/2009/11/a-proposal-resource-packages-to-improve-performance/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 04:22:59 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2324</guid>
		<description><![CDATA[A short post on this topic.
Alexander Limi has a post describing a simple way that web sites could improve their performance: by putting images, css and other static resources in a .zip file for downloading.  He&#8217;s asking for feedback on the topic.  If the feedback is good we&#8217;re likely to try and get [...]]]></description>
			<content:encoded><![CDATA[<p>A short post on this topic.</p>
<p>Alexander Limi has a <a href="http://limi.net/articles/resource-packages/">post describing a simple way that web sites could improve their performance</a>: by putting images, css and other static resources in a .zip file for downloading.  He&#8217;s asking for feedback on the topic.  If the feedback is good we&#8217;re likely to try and get this implemented for Firefox 3.7.</p>
<p>If you&#8217;re a web developer and you have a comment, please put it in his weblog post.  Thanks!  (Comments are closed here.)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/a-proposal-resource-packages-to-improve-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>web developer survey update &#8211; help wanted!</title>
		<link>http://hacks.mozilla.org/2009/11/web-developer-survey-update/</link>
		<comments>http://hacks.mozilla.org/2009/11/web-developer-survey-update/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 16:00:52 +0000</pubDate>
		<dc:creator>afranq</dc:creator>
				<category><![CDATA[MDN]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2304</guid>
		<description><![CDATA[Two weeks ago we announced the launch of the Mozilla Developer Network. We also asked for your help through this short survey for Web developers. The questions were meant to understand who you are, what you&#8217;re interested in, and what resources would be most useful to you on MDN. We&#8217;re happy to report that we [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago we announced the <a href="http://bit.ly/mozmdn">launch of the Mozilla Developer Network</a>. We also asked for your help through this <a href="http://bit.ly/mdnsurvey1">short survey for Web developers</a>. The questions were meant to understand who you are, what you&#8217;re interested in, and what resources would be most useful to you on MDN. We&#8217;re happy to report that we have received over 3,600 responses so far, so thank you!</p>
<p><strong>Here&#8217;s a Sneak Peek at the Data:</strong></p>
<p>HTML/CSS/Javascript are the winning combination, PHP is a close 4th. After that, technology choices are quite fragmented.</p>
<p style="text-align: center;"><img class="size-full wp-image-2305 aligncenter" title="Dev survey - nov8 - what technologie do you use" src="http://hacks.mozilla.org/wp-content/uploads/2009/11/tech_devsurvey_nov8.png" alt="Dev survey - nov8 - what technologie do you use" width="377" height="288" /></p>
<p>The most popular tools for development are a collection of Firefox add-ons, including Firebug and Web developer, and&#8230; text editors! Each developer has a favorite, from vi or emacs to TextMate or Notepad++.</p>
<p style="text-align: center;"><img class="size-full wp-image-2307 aligncenter" title="Dev survey - nov 8 - what tools do you use" src="http://hacks.mozilla.org/wp-content/uploads/2009/11/tools_devsurvey_nov81.png" alt="Dev survey - nov 8 - what tools do you use" width="378" height="299" /></p>
<p>Either Web developers live mostly in the US and in France, or this is where the most active Mozilla developer outreach is happening. We think it&#8217;s the latter, for France we call it the &#8220;<a href="http://blog.mozbox.org/">Paul</a> and <a href="http://standblog.org/blog/">Tristan</a> effect&#8221;!</p>
<p style="text-align: center;"><img class="size-full wp-image-2308 aligncenter" title="Dev survey - nov 8 - where are you located" src="http://hacks.mozilla.org/wp-content/uploads/2009/11/where_devsurvey_nov8.png" alt="Dev survey - nov 8 - where are you located" width="376" height="287" /></p>
<p><strong>What Are We Missing?</strong></p>
<p>Please help us get more responses from around the world so we can understand the needs of Web developers everywhere.</p>
<p>We would also love to get more participants who are working in corporate environments, especially on intranets. And we&#8217;d like to hear more from those of you who are working (willingly or not) with proprietary technologies.</p>
<p><strong>How Can You Help?</strong></p>
<p>We&#8217;d like to get 5,000 responses before we close <a href="http://bit.ly/mdnsurvey1">the survey</a>, so help us spread the word to other Web developers: <a href="http://twitter.com/home/?status=Calling+all+Web+developers!+Help+build+the+Mozilla+Developer+Network+by+taking+this+quick+survey:+http://bit.ly/mdnsurvey1">tweet</a> about it and send the <a href="http://bit.ly/mdnsurvey1">survey link</a> to your friends!</p>
<p>Once we have enough responses, we&#8217;ll publish the results on this blog. You can also follow the latest Mozilla Developer Network updates on Twitter at <a href="http://twitter.com/mozhacks">@mozhacks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/web-developer-survey-update/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>5 years of Firefox</title>
		<link>http://hacks.mozilla.org/2009/11/5-years/</link>
		<comments>http://hacks.mozilla.org/2009/11/5-years/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 23:00:13 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2250</guid>
		<description><![CDATA[Firefox is five years old.  We thought that we would celebrate that by talking about how the web has changed over the last five years and Firefox&#8217;s role in those changes.
Where We&#8217;re At
2009 has been an interesting year.  We&#8217;re at a crossroads for the Internet.  In the next 12 months or so [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/christopherblizzard/4087825002/"><img alt="5 Years of Firefox Cake at the Firefox Developer Day in Tokyo, Japan" src="http://farm3.static.flickr.com/2664/4087825002_b3674d8ecc.jpg" title="5 Years of Firefox Cake at the Firefox Developer Day in Tokyo, Japan" width="500" height="333" /></a><p class="wp-caption-text">5 Years of Firefox Cake at the Firefox Developer day in Tokyo, Japan</p></div>
<p><a href="http://www.spreadfirefox.com/5years/">Firefox is five years old</a>.  We thought that we would celebrate that by talking about how the web has changed over the last five years and Firefox&#8217;s role in those changes.</p>
<p><strong>Where We&#8217;re At</strong></p>
<p>2009 has been an interesting year.  We&#8217;re at a crossroads for the Internet.  In the next 12 months or so we&#8217;re likely to see regulation of the Internet in the United States &#8211; <a href="http://online.wsj.com/article/SB10001424052748703573604574490441027049518.html">possibly for good</a>, <a href="http://www.thedailyshow.com/watch/mon-october-26-2009/from-here-to-neutrality">possibly for bad</a>.  We&#8217;ve seen increased interest in the browser space with the entrace of Google with their <a href="http://www.techcrunch.com/2009/11/02/google-says-chrome-browser-now-has-30-million-active-users/">minimalist Chrome browser</a>.  Mozilla put a vastly improved rendering engine into the hands of hundreds of millions of users with the <a href="http://arstechnica.com/open-source/reviews/2009/06/hands-on-firefox-35-released-aims-to-upgrade-the-web.ars">release of Firefox 3.5</a>.  The EU is working with Microsoft to implement a ballot to make users aware of browser choice.  No one could possibly say that things are boring right now.  And this has only been over the last year.</p>
<p>But what has changed over the last five years?  What are the main themes?  We&#8217;ve picked a few to talk about and we hope that it helps put things into perspective for the next five.</p>
<p><strong>The Rise of the Modern Browser</strong></p>
<p>One thing that&#8217;s become obvious over the last five years is the <a href="http://a.deveria.com/caniuse/#compare=y&#038;b1=trident|8&#038;b2=gecko|3.5">wide gap that&#8217;s emerging between the field of modern browsers</a> &#8211; Firefox, Safari, Opera and Chrome &#8211; with the world&#8217;s most popular browser &#8211; IE. The modern browser is built for the future of web applications &#8211; <a href="http://www.mozilla.com/en-US/firefox/performance/">super fast JavaScript</a>, <a href="https://developer.mozilla.org/en/CSS_Reference">modern CSS</a>, <a href="http://arstechnica.com/open-source/news/2007/08/firefox-gets-experimental-support-for-the-video-element.ars">HTML5</a>, support for the <a href="http://hacks.mozilla.org/2009/07/working-smarter-not-harder/">various web-apps standards</a>, <a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">downloadable font support</a>, <a href="https://developer.mozilla.org/en/Offline_resources_in_Firefox">offline application support</a>, raw graphics through <a href="http://processingjs.org/exhibition">canvas</a> and <a href="http://planet-webgl.org">WebGL</a>, <a href="http://standblog.org/blog/post/2009/04/15/Making-video-a-first-class-citizen-of-the-Web">native video</a>, <a href="https://developer.mozilla.org/En/Using_XMLHttpRequest">advanced XHR capabilities </a> mixed with new <a href="http://hacks.mozilla.org/2009/10/content-security-policy/">security tools</a> and <a href="http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/">network capabilities</a>.</p>
<p>Over the last five years we&#8217;ve been setting ourselves up for the next five.  The web is moving faster, not slower, and modern browsers are set to handle it.</p>
<p>In this sense we&#8217;ve done our jobs at Mozilla.  We were <a href="http://shaver.off.net/diary/2008/08/22/the-birth-of-a-faster-monkey/">first on the scene with fast JavaScript</a>, <a href="http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/">CORS</a>, <a href="https://developer.mozilla.org/en/SVG_In_HTML_Introduction">mixing HTML and SVG</a>, <a href="http://www.khronos.org/news/press/releases/khronos-webgl-initiative-hardware-accelerated-3d-graphics-internet/">WebGL is based</a> on <a href="http://blog.vlad1.com/canvas-3d/">Canvas3D</a> work we pioneered, we&#8217;re scripting hardware with <a href="http://hacks.mozilla.org/2009/06/geolocation-open-street-maps/">geolocation</a> and <a href="http://hacks.mozilla.org/2009/10/orientation-for-firefox/">orientation</a>.  We&#8217;re helping to <a href="http://people.mozilla.com/~prouget/demos/transition/index.xhtml">standardize and implement some new CSS capabilities</a> that are being developed in other browsers, <a href="http://hacks.mozilla.org/2009/10/font-control-for-designers/">we&#8217;re leading the web towards a modern font system</a> and giving web authors and users <a href="http://hacks.mozilla.org/2009/10/content-security-policy/">more security tools</a>.  Our job is to help keep the web rich and moving forward &#8211; this is a huge part of our public benefit mission.  This is the opportunity that Firefox&#8217;s five years have offered us.</p>
<p>The browsers that are on the horizon aren&#8217;t just incremental changes &#8211; they represent the pieces to build the next generation web &#8211; rich with standards-based graphics, new JavaScript libraries and full blown applications.</p>
<p><strong>Standards Won</strong></p>
<p>Firefox&#8217;s growth on the web has had another important effect &#8211; bringing standards to the forefront of development.  Very early in the Mozilla project almost half of the web&#8217;s HTML pages started using <a href="https://developer.mozilla.org/en/Mozilla%27s_DOCTYPE_sniffing">DOCTYPE</a> in order to opt-in to standards mode for many web browsers. Developers signaled that they wanted to use a standards-based method for development.</p>
<p>That&#8217;s important.  It set up the current frame for development on the web that we have today.  It allowed Apple to take KHTML and turn it into Safari which then allowed Chrome to pick up that work and enter the market and render a standards-based web.  Now we don&#8217;t have just one or two browsers, but many, and a lot of that has to do with the way that early web developers approached development.</p>
<p>Standards matter, and they should continue to matter.  When they do those individual human beings we like to call users benefit with greater choice and fast innovation.</p>
<p><strong>Customizing Your Experience</strong></p>
<p>Led by Firefox&#8217;s <a href="https://addons.mozilla.org">add-ons system</a> there&#8217;s been an explosion in the number of people who are customizing their experiences &#8211; both in browsers and on the web.  Anywhere from <a href="http://blog.mozilla.com/addons/2009/08/11/how-many-firefox-users-use-add-ons/">one third to one half of Firefox users have some kind of add-on installed</a>.</p>
<p>The web is unique, and was built to be hacked.  No other widely-deployed system in the world delivers itself as source code like the web does.  And this transparency has made it possible for the distributed innovation that we&#8217;re seeing in Firefox and on the web. People <a href="http://userscripts.org/scripts/show/50771">patching new UI into their favorite web sites</a>, <a href="http://www.getinvisiblehand.com/">mashing up data from multiple sources</a> or radically <a href="https://addons.mozilla.org/en-US/firefox/addon/4891">changing the feel of the browser itself</a> &#8211; this is a source for inspiration for browser vendors and web site operators alike.  For the first time individual people have the ability to take an active part in the future of their computing experience.</p>
<p>It&#8217;s also worth noting that Gecko and Firefox are unique in this space.  The highly modular nature of Gecko mixed with the fact that Firefox itself is written in HTML and XUL (another UI-focused markup language) means that it&#8217;s the only browser that&#8217;s hackable like the web is.  Every other browser is built as a monolithic desktop application from the last millennium.  This natural advantage not only means that Firefox has the widest array of add-ons and developers, but is also a source of inspiration for most of the rest of the market.</p>
<p><strong>RSS and Data</strong></p>
<p>In the last five years one of the big changes we&#8217;ve seen is web sites offering up data and feeds.  Feeds in particular have reached the point where even non-technical people know what they are and how to use them.  The <a href="http://www.mozilla.org/foundation/feed-icon-guidelines/">ubiquitous RSS icon, which was originally created for the Firefox browser and given away by Mozilla</a>, now exists on millions of web sites offering users the ability to get updates on their terms.</p>
<p>But we&#8217;ve gone far beyond just simple feeds.  Advanced APIs are now appearing for web sites so you can integrate native applications, build a Firefox extension or be able to pull your data out of a web site.</p>
<p>And we&#8217;ve also moved from the promise of XML to the <a href="https://developer.mozilla.org/en/Using_JSON_in_Firefox">reality of JSON</a> as the data format of choice.</p>
<p><strong>Video</strong></p>
<p>It&#8217;s important to remember that Youtube didn&#8217;t exist when Firefox was launched.  At that time your only options were native QuickTime, Windows Media or Real Player.  (Anyone remember Real Player?)</p>
<p>In the last few years we&#8217;ve seen Youtube become one of the largest sites of the Internet, the launch of Hulu, and sites like Netflix offering premium on-demand video right over the Internet to web browsers and devices alike.  We&#8217;ve also seen millions of people create their own videos and publish them to the web.</p>
<p>We&#8217;ve also seen the launch of open video and native video support in browsers to bring the creativity and hackability of the web to currently closed video platforms.</p>
<p><strong>Users as Creators</strong></p>
<p>The rise of the web is a story of anyone being able to create a web site.  But that&#8217;s still a largely technical exercise, even with tools. What we have seen, thanks to tools like WordPress and blogger, is the growth of weblogs, feeds and data which make it possible for anyone with a web browser to become a publisher or journalist.</p>
<p>And it has moved well beyond just text.  People with low-cost tools are making movies and posting them.  <a href="http://www.centerforsocialmedia.org/videos/remix_culture/">Remix culture</a> is alive and well, creating comentary and new and exciting creations &#8211; all in the hands of pretty normal people.</p>
<p><strong>Mobile</strong></p>
<p>The iPhone taught us that you could build a decent browser for mobile phones and that data was important.  Phones, really just in the last five years or so, have shown us that access to data plans that look like what you can get to your house can unleash developer and user creativity.</p>
<p>In the last five years at Mozilla we&#8217;ve also made the <a href="http://www.youtube.com/watch?v=Ih5SrhCJukI">commitment to build a browser for mobile devices</a>.  We&#8217;re still in an early pre-1.0 beta stage, but that browser is already getting excellent reviews.</p>
<p><strong>So what about the next five years?</strong></p>
<p>Mozilla has been at the heart of many of the issues of the Internet over the last five years.  We&#8217;ve vastly improved the browsing experience for hundreds of millions of people around the world.  We&#8217;ve managed to keep Microsoft honest and forced them to release newer versions of their browsers.  Firefox&#8217;s presence was a large factor in Apple being able to ship a browser to its user base as the Mac came back to the market.  We&#8217;ve made it possible for third party browser vendors like Google to enter the market.  We&#8217;ve proven that people care about improving their experiences on the web.  We&#8217;ve given over 330 million people the taste of what it&#8217;s like to use an open source product.  And we&#8217;ve overseen the technical growth of the web through direct action and standardization.</p>
<p>It&#8217;s hard to beat that, but we&#8217;re going to try.  We&#8217;ll continue to make competitive browser releases and improve people&#8217;s experiences on the web.  We&#8217;ll continue to innovate on behalf of developers and bring those improvements to the standards space.  And we&#8217;ll continue to grow our amazing global community of users, developers and activists.</p>
<p>Over the next five years everyone can expect that the browser should take part in a few new areas &#8211; to act as the user agent it should be. Issues around data, privacy and identity loom large.  You will see the values of Mozilla&#8217;s public benefit mission reflected in our product choices in these areas to make users safer and help them understand what it means to share data with web sites.</p>
<p>Expect to see big changes in the video space.  HTML5-based video and open video codecs are starting to appear on the web as web developers make individual choices to support a standards-based, royalty-free approach.  Expect to see changes in the expectations around the licensing of codecs.</p>
<p>And over the next five years mobile will play an increasingly important role in our lives, and in the future of the web.  The decisions of users, carriers, governments and the people who build phones will have far-reaching effects on this new extension to the Internet and how people will access information for decades to come.</p>
<p>Mozilla has a unique place on the Internet.  Driven to help improve it as part of our mission expect us to express opinions on decisions that affect its future.  We act both through direct action but also through indirect action &#8211; sometimes our effects are as important as our actions.  We will continue to protect users and we&#8217;ll continue to do everything they can to make it possible for the next set of people to come along and build the next great web site.</p>
<p>It&#8217;s been a great five years.  Let&#8217;s make it another five and keep the web moving forward for the benefit of everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/5-years/feed/</wfw:commentRss>
		<slash:comments>135</slash:comments>
		</item>
		<item>
		<title>two important api changes &#8211; CSS gradients and the media load event</title>
		<link>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/</link>
		<comments>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 18:55:03 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2241</guid>
		<description><![CDATA[Robert O&#8217;Callahan has been posting updates in his weblog about changes that we&#8217;re going to be making that are web-facing.  It&#8217;s worth summarizing two here for web developers.
Removing the media element &#8216;load&#8217; event.
Yesterday I checked in a patch that removes support for the &#8216;load&#8217; event on &#60;video&#62; and &#60;audio&#62; elements. We simply never fire [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblogs.mozillazine.org/roc/">Robert O&#8217;Callahan</a> has been posting updates in his weblog about changes that we&#8217;re going to be making that are web-facing.  It&#8217;s worth summarizing two here for web developers.</p>
<p><strong><a href="http://weblogs.mozillazine.org/roc/archives/2009/10/removing_the_me.html">Removing the media element &#8216;load&#8217; event.</a></strong></p>
<blockquote><p>Yesterday I checked in a patch that removes support for the &#8216;load&#8217; event on &lt;video&gt; and &lt;audio&gt; elements. We simply never fire it. Also, the networkState attribute is now never NETWORK_LOADED. When we&#8217;ve read to the end of the media resource, networkState  changes to NETWORK_IDLE. We plan to ship this change for Firefox 3.6. </p></blockquote>
<p>This API has been removed based on consensus from everyone who are doing HTML5 video implementations and there are lots of other <a href="http://weblogs.mozillazine.org/roc/archives/2009/10/removing_the_me.html">options for events that Robert goes over in his post</a>.</p>
<p><strong><a href="http://weblogs.mozillazine.org/roc/archives/2009/11/css_gradient_sy.html">Changing our CSS Gradient Syntax</a></strong></p>
<blockquote><p>
We landed support for a form of CSS gradients on trunk a while ago, but we got considerable feedback that our syntax &#8212; which was an incremental improvement of Webkit&#8217;s syntax, which basically exposes a standard gradient API in the most direct possible way &#8212; sucked. A bunch of people on www-style got talking and Tab Atkins produced a much better proposal. Since we haven&#8217;t shipped our syntax anywhere yet, dropping it and implementing Tab&#8217;s syntax instead was a no-brainer. So Zack Weinberg, David Baron and I did that (using a -moz prefix of course), and today it landed on trunk. It should land on the Firefox 3.6 branch shortly. It&#8217;s unfortunate to land something new like this after the last beta, but in this case, it seems like the right thing to do instead of shipping CSS gradient syntax that we know nobody wants.
</p></blockquote>
<p>We&#8217;ve never shipped the &#8220;bad&#8221; CSS gradient syntax in a final release, but it is in our first beta.  We&#8217;ll be updating it before we make our final release of 3.6.  Stay turned for the new syntax on <a href="http://hacks.mozilla.org/">hacks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/11/api-change-media-load-css-gradient/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Firefox 3.6 Beta 1 now available &#8211; what&#8217;s new for web developers</title>
		<link>http://hacks.mozilla.org/2009/10/firefox-3-6b1/</link>
		<comments>http://hacks.mozilla.org/2009/10/firefox-3-6b1/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 00:46:09 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.6]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2191</guid>
		<description><![CDATA[Firefox 3.6b1 is now available for download.  As usual, this is a beta release so the usual warnings about eating your data and burning your house down apply.
If you download and run this beta you will get updates as we make them available &#8211; once every 1-2 weeks or so.  To keep up [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://developer.mozilla.org/devnews/index.php/2009/10/30/firefox-3-6-beta-1-is-now-available-for-download/">Firefox 3.6b1 is now available for download</a>.  As usual, this is a beta release so the usual warnings about eating your data and burning your house down apply.</p>
<p>If you download and run this beta you will get updates as we make them available &#8211; once every 1-2 weeks or so.  To keep up with things as they land in the betas, please follow us on the <a href="http://twitter.com/mozhacks">@mozhacks</a> twitter account.</p>
<p>Many add-ons have not been updated for 3.6.  To help us test if add-ons are compatible consider installing the <a href="https://addons.mozilla.org/en-US/firefox/addon/15003?src=external-mozhacks-relnote">Add-on compatibility reporter</a>.  It will let you run add-ons that are listed as incompatible and gives you the chance to report if add-ons appear to be working OK.  This is our first attempt at crowdsourcing compatibility and if you&#8217;re feeling adventurous you should try it out.</p>
<p>Here&#8217;s what&#8217;s new and notable in 3.6 Beta vs. Firefox 3.5 that might be of interest to web developers:</p>
<ul>
<li>We now support file-based <a href="https://developer.mozilla.org/En/DragDrop/DataTransfer">Drag and Drop</a> so you can <a href="http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/">Drag and Drop files from your desktop in the browser</a>.  Mixed with the File API (mentioned below) this can make for a very powerful set of features for people building photo and video uploaders or anything else that wants to import data.
<li>@font-face now <a href="http://hacks.mozilla.org/2009/10/woff/">supports the WOFF format</a>.
<li>We support multiple background images for <a href="https://developer.mozilla.org/en/CSS/background-image">background-image</a>.
<li>You can now specify the background size via <a href="https://developer.mozilla.org/en/CSS/-moz-background-size">-moz-background-size</a>
<li>We now specify a very powerful <a href="https://developer.mozilla.org/en/CSS/pointer-events">pointer-events</a> property that lets you control whether a particular element can receive events.
<li>You can now specify an algorithm to render images via the <a href="https://developer.mozilla.org/en/CSS/image-rendering">image-rendering</a> CSS property.
<li>Poster images now work for <a href="https://developer.mozilla.org/En/HTML/Element/Video">video elements</a>.
<li>Support for a new <a href="https://developer.mozilla.org/En/Using_geolocation">geolocation feature</a> that will return an <a href="https://developer.mozilla.org/en/nsIDOMGeoPosition">approximate address</a> for your location.
<li>Support for <a href="http://hacks.mozilla.org/2009/10/orientation-for-firefox/">orientation events</a>.
<li>&#8230;and a lot of other great stuff.  For the full list, have a look at the <a href="https://developer.mozilla.org/en/Firefox_3.6_for_developers">Firefox 3.6 for developers page</a> which has everything on it.
</ul>
<p>Here&#8217;s the list of things that we will support by 3.6 final, but aren&#8217;t in this beta:</p>
<ul>
<li>Support for CSS gradients is in this beta, but we&#8217;re changing it due to negative feedback on the current syntax.
<li>We will support the &lt;input type=&#8221;file&#8221; multiple&gt; so you can upload more than one file from the same file upload control.
<li>We have support in 3.6 for a new version of the <a href="http://dev.w3.org/2006/webapi/FileAPI/">File API draft spec</a> but that spec is out of date and our docs aren&#8217;t complete.  There&#8217;s an <a href="http://mxr.mozilla.org/mozilla1.9.2/source/content/base/public/nsIDOMFileRequest.idl">IDL entry for the FileRequest</a> object, but it&#8217;s likely to be renamed to FileReader based on feedback.  We&#8217;ll try to keep people <a href="http://twitter.com/mozhacks">updated</a> as we release updated betas.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/firefox-3-6b1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>help build the mozilla developer network</title>
		<link>http://hacks.mozilla.org/2009/10/mozilla-developer-network/</link>
		<comments>http://hacks.mozilla.org/2009/10/mozilla-developer-network/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:30:42 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[MDN]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2118</guid>
		<description><![CDATA[
Help us build the Mozilla Developer Network
Take the survey now.

At Mozilla we&#8217;ve been talking recently about how important the web has become to everything around us.  The web &#8211; and the Internet it&#8217;s built on &#8211; has become the defining computing platform for this century.  And most of that has happened because of [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.flickr.com/photos/caveman_92223/2982595969/"><img alt="Route 66 by Caveman 92223" src="http://farm4.static.flickr.com/3143/2982595969_bbe67fc03b.jpg" title="Route 66" width="500" height="375" /></a><p class="wp-caption-text">Route 66 by Caveman 92223</p></div>
<div align="center">
<strong>Help us build the Mozilla Developer Network</strong></p>
<p><strong><a href="http://bit.ly/mdnsurvey1">Take the survey now.</a></strong>
</div>
<p>At Mozilla we&#8217;ve been talking recently about how important the web has become to everything around us.  The web &#8211; and the Internet it&#8217;s built on &#8211; has become the defining computing platform for this century.  And most of that has happened because of web developers, and the freedom they have enjoyed.</p>
<p>Firefox is one of the most important tools for web developers.  Firebug combined with Firefox&#8217;s strong support for standards means that most web developers are building for Firefox first and then porting to other browsers later.</p>
<p>But even with developers using Firefox for development there hasn&#8217;t been an easy way for those of us at the Mozilla project to let you know about what&#8217;s going on at Mozilla &#8211; what we&#8217;re putting in Firefox, what we&#8217;re doing to bring the web forward and what we&#8217;re doing for web developers.  (Although the <a href="http://hacks.mozilla.org">hacks</a> weblog is the first attempt at that.)  And conversely there isn&#8217;t an obvious way for individual web developers to give Mozilla structured feedback about what&#8217;s important to them or what issues they might be having.</p>
<p>That&#8217;s why we&#8217;re working on the Mozilla Developer Network.  It will serve two purposes:</p>
<ol>
<li><strong>To provide you with information about what&#8217;s going on at Mozilla and around the web.</strong></li>
<li><strong>To give you the chance to give us structured feedback and become part of the Mozilla Community.</strong></li>
</ol>
<p>Our first step is to do a <a href="http://bit.ly/mdnsurvey1">quick survey</a>.  If we can get <strong>5,000 responses</strong> to the survey, we&#8217;ll release the aggregate results.</p>
<p>The survey itself asks you about how you work, what you think of Firefox and should only take a few minutes to complete.</p>
<p>Thanks!  We&#8217;ll have more on the Mozilla Developer Network as things progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/mozilla-developer-network/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>font_dragr: a drag and drop preview tool for fonts</title>
		<link>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/</link>
		<comments>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:00:22 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Drag and Drop]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox 3.6]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2086</guid>
		<description><![CDATA[This demo is from our good friend Ryan Seddon who came up with a demo that seems deeply appropriate for this week, given our focus on the future of fonts on the web.
If you&#8217;ve ever been editing a page and wanted to know what a particular font looked like without having to upload files to [...]]]></description>
			<content:encoded><![CDATA[<p>This demo is from our good friend <a href="http://twitter.com/thecssninja">Ryan Seddon</a> who came up with a demo that seems deeply appropriate for this week, given our focus on the <a href="http://hacks.mozilla.org/2009/10/font-control-for-designers/ ">future</a> of <a href="http://hacks.mozilla.org/2009/10/woff/">fonts on the web</a>.</p>
<p>If you&#8217;ve ever been editing a page and wanted to know what a particular font looked like without having to upload files to a web server and update CSS (so tedious, that!) then this demo is for you.</p>
<p>He&#8217;s come up with a demo that shows what&#8217;s possible when you&#8217;ve got downloadable fonts, drag and drop and editable content.  (If you want to know more about drag and drop we suggest you read his excellent overview of using <a href="http://www.thecssninja.com/javascript/drag-and-drop-upload">drag and drop to do file uploading</a>.)</p>
<p>From <a href="http://www.thecssninja.com/javascript/font-dragr">Ryan&#8217;s description</a>:</p>
<blockquote><p><a href="http://labs.thecssninja.com/font_dragr/">Font dragr</a> is an experimental web app that uses HTML5 &#038; CSS3 to create a useful standalone web based application for testing custom fonts, once you visit it for the first time you don’t need to be online to use it after the initial visit. It allows you, in Firefox 3.6+, to drag and drop font files from your file system into the drop area. The browser will then create a data URL encoded copy to use in the page and render the content in the dropped font.</p></blockquote>
<p>You can either <a href="http://www.thecssninja.com/javascript/font-dragr">read the full description</a>, which contains a lot of useful technical information about how the demo works, or you can <a href="http://labs.thecssninja.com/font_dragr/">view the demo</a> below.  Either way, it&#8217;s nice to see the excellent HTML5 support in Firefox 3.6 coming together with everything else we&#8217;ve added to bring a lot of new capabilities to web developers and users.</p>
<p>Thanks, Ryan!</p>
<p><object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width='500' height='300'><param name='movie' value='http://screenr.com/Content/assets/screenr_0817090731.swf' /><param name='flashvars' value='i=20449' /><param name='allowFullScreen' value='true' /><embed src='http://screenr.com/Content/assets/screenr_0817090731.swf' flashvars='i=20449' allowFullScreen='true' width='500' height='300' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/font_dragr-a-drag-and-drop-preview-tool-for-fonts/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>after Firefox 3.6 &#8211; new font control features for designers</title>
		<link>http://hacks.mozilla.org/2009/10/font-control-for-designers/</link>
		<comments>http://hacks.mozilla.org/2009/10/font-control-for-designers/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:00:21 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1984</guid>
		<description><![CDATA[Note: the discussion below applies to work in progress that might show up in Firefox 3.7.  It does not describe features in Firefox 3.6.
This post is from Jonathan Kew and John Daggett.  He&#8217;s supplied a 5 minute video that shows some of the features on the fly.  If you&#8217;re a total font [...]]]></description>
			<content:encoded><![CDATA[<p><i>Note: the discussion below applies to work in progress that <em>might</em> show up in Firefox 3.7.  It does not describe features in Firefox 3.6.</i></p>
<p><i>This post is from Jonathan Kew and John Daggett.  He&#8217;s supplied a 5 minute video that shows some of the features on the fly.  If you&#8217;re a total font nerd and you enjoy a soothing British accent, you might want to watch it.</i></p>
<p><video controls="true"><source type="video/ogg" src="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.ogv"/><source type="video/mp4" src="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.mp4"/><embed src="http://blip.tv/play/AYGoj0QC" type="application/x-shockwave-flash" width="500" height="416" allowscriptaccess="always" allowfullscreen="true"></embed></video></p>
<p>Using @font-face allows web designers a wide palette of font choices and with commercial font vendors supporting the <a href="http://hacks.mozilla.org/2009/10/woff/">WOFF</a> font format, the set of font choices should improve even more. So the next step is clearly to try and make better use of features available in these fonts.</p>
<p>For many years, “smart” font formats such as OpenType and AAT have provided font designers ways of including a rich set of variations in their fonts, from ligatures and swashes to small caps and tabular figures. The OpenType specification <a href="http://www.microsoft.com/typography/otspec/featurelist.htm">describes these features</a>, identifying each with a unique feature tag. But these have typically only been available to those using professional publishing applications such as Adobe InDesign. Firefox currently renders using font defaults; it would be much more interesting to provide web authors with a way of controlling these font features via CSS.</p>
<p>Håkon Wium Lie of Opera, based on discussions with Tal Leming and Adam Twardoch, <a href="http://lists.w3.org/Archives/Public/www-style/2008Jan/0380.html">proposed extending the CSS &#8216;font-variant&#8217; property</a> to include values for font features. Mozilla is <a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">actively working on a new proposal</a> along these lines. This is a fairly big addition to CSS, so it will most likely involve some complex discussions about how best to support these features. </p>
<p><b>Experimental Implementation</b></p>
<p>As part of this effort, Jonathan Kew has been working on porting a portion of the Pango library for use with handling complex scripts and to enable the use of font features on all supported platforms. He currently has an <a href="http://people.mozilla.com/~jkew/feature-samples/">experimental build</a> that uses a special CSS property to associate a list of OpenType features with specific elements in a page. This is <strong>not</strong> the <a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">proposed format</a>, it simply provides a better way of discussing possible sets of font-variant properties and the OpenType feature settings to which they should map.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.altstyles</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #808080; font-style: italic;">/* format: feature-tag=[0,1] with 0 to disable, 1 to enable */</span>
  -moz-font-feature-opentype<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;dlig=1,ss01=1&quot;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>The feature setting string above implies rendering with discretionary ligatures (dlig) and the first set of stylistic alternates (ss01). An example using Jack Usine&#8217;s <a href="http://www.smeltery.net/fonts/megalopolis-extra">MEgalopolis Extra</a>: </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/withlove.html"><img src="https://wiki.mozilla.org/images/6/6f/Withlove.png"/></a></p>
<p>This font makes extensive use of OpenType features; the <a href="http://www.smeltery.net/fonts/megalopolis-extra">homepage of the font contains a sample rendering</a> that uses many of these features. Below is a rendering of the same sample written in HTML with OpenType features enabled: </p>
<p><a href="http://people.mozilla.com/~jkew/feature-samples/MEgalopolis.html"><img src="https://wiki.mozilla.org/images/9/95/Megalopolis.png"/></a></p>
<p><b>Tabular Figures for Numerical Alignment</b></p>
<p>OpenType features also enable better control over alignment. When numbers are listed in tabular form, proportional forms often result in the misalignment of digits across rows, making the list harder to scan. With tabular alignment enabled, individual digits are rendered using a fixed width so that digits align across rows:</p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/tabulardata.html"><img src="https://wiki.mozilla.org/images/a/a0/Flavorfigures.png"/></a></p>
<p><b>Automatic Fractions</b></p>
<p>Automatic fractions are also possible with OpenType features, note the inline use of fractional forms in the recipe ingredient list below: </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/tiramisu.html"><img src="https://wiki.mozilla.org/images/b/b8/Tiramisu.png"/></a></p>
<p><b>Language Sensitivity</b></p>
<p>OpenType also includes support for features on a per-language basis. This is important for rendering text correctly in some languages. For example, Turkish uses both a dotted-i and a dotless-i, so the distinction needs to be preserved when rendering ligatures or small caps. Below is the same text in English and Turkish, with both default and language-sensitive renderings shown for the Turkish text: </p>
<p><a href="http://people.mozilla.com/~jkew/feature-samples/udhr-turkish.html"><img src="https://wiki.mozilla.org/images/d/d8/Udhrturkish.png"/></a></p>
<p><b>Historical Text</b></p>
<p>The way text is rendered constantly evolves; glyphs once in common use often morph into other forms, making the historical forms distinct from their modern forms. Below is the text of an old Massachusetts Bay Colony law, taken from a book in the <a href="http://www.bc.edu/schools/law/library/about/rarebook/exhibitions/newacq08.html">Daniel R. Coquillette Rare Book Room</a> of the Boston College Law Library. </p>
<p>Original scanned image: </p>
<p><a href="http://www.bc.edu/schools/law/library/about/rarebook/exhibitions/newacq08.html"><img src="https://wiki.mozilla.org/images/5/5a/Bookexcerpt.png"/></a></p>
<p>Below is the same text rendered in HTML using the <a href="http://www.iginomarini.com/">Fell Types revival fonts by Igino Marini</a> with OpenType features enabled. Note the ‘ct’ ligature and the contextual form of the ‘s’:</p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/historicaltext.html"><img src="https://wiki.mozilla.org/images/5/52/Historicaltext.png"/></a></p>
<p><b>More resources</b></p>
<p><a href="http://lists.w3.org/Archives/Public/www-style/2009Jun/0506.html">Font feature support in CSS proposal</a><br />
<a href="http://www.microsoft.com/typography/otspec/featurelist.htm">OpenType font feature list</a><br />
<a href="http://www.iginomarini.com">Fell Types revival fonts by Igino Marini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/font-control-for-designers/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/woff/features-screencast-500.ogv" length="4402211" type="video/ogg" />
		</item>
		<item>
		<title>Web Open Font Format for Firefox 3.6</title>
		<link>http://hacks.mozilla.org/2009/10/woff/</link>
		<comments>http://hacks.mozilla.org/2009/10/woff/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 16:00:09 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[@font-face]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3.6]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1921</guid>
		<description><![CDATA[This article was written by John Daggett.  John is a Mozilla contributor and has been working hard with font creators and web developers to improve the state of fonts on the web.  This article is a high-level overview of whats different and shows some examples of WOFF in use.  A full list [...]]]></description>
			<content:encoded><![CDATA[<p><em>This article was written by John Daggett.  John is a Mozilla contributor and has been working hard with font creators and web developers to improve the state of fonts on the web.  This article is a high-level overview of whats different and shows some examples of WOFF in use.  A full list of other supporting organizations <a href="http://blog.mozilla.com/blog/2009/10/20/mozilla-supports-web-open-font-format/">can be found at the official Mozilla Blog</a>.</em></p>
<p>In Firefox 3.5 we <a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">included support for linking to TrueType and OpenType fonts</a>.  In Firefox 3.6 we&#8217;re including support for a new font format &#8211; the Web Open Font Format, or WOFF.  This format has two main advantages over raw TrueType or OpenType fonts.</p>
<ol>
<li>It is compressed, which means that you will typically see much smaller download sizes compared with raw TrueType or OpenType fonts.
<li>It contains information that allows you to see where the font came from &#8211; without DRM or labeling for a specific domain &#8211; which means it has support from a <a href="http://typegirl.tumblr.com/post/142912558/most-of-the-important-foundries-are-supporting-webfont">large number of font creators and font foundries</a>.
</ol>
<p>The WOFF format originated from a collabaration between the font designers <a href="http://www.letterror.com/">Erik van Blokland</a> and <a href="http://talleming.com/">Tal Leming</a> with help from Mozilla&#8217;s Jonathan Kew.  Each had proposed their own format and WOFF represents a melding of these different proposals.  The  <a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html"> format itself</a> is intended to be a simple repackaging of OpenType or TrueType font data, it doesn&#8217;t introduce any new behavior, alter the @font-face linking mechanism or affect the way fonts are rendered.  Many font vendors have <a href="http://typegirl.tumblr.com/post/142912558/most-of-the-important-foundries-are-supporting-webfont"> expressed support for this new format</a> so the hope is this will open up a wider range of font options for web designers.</p>
<p><b>Details on Differences between TrueType, OpenType and WOFF</b></p>
<p>First, compression is part of the WOFF format so web authors can optimize the size of fonts used on their pages.  The compression format is lossless, the uncompressed font data will match that of the original OpenType or TrueType font, so the way the font renders will be the same as the original.  Similar compression can be achieved using general HTTP compression but because compression is part of the WOFF format, it&#8217;s simpler for authors to use, especially in situations where access to server configuration is not possible.</p>
<p>Second, the format includes optional metadata so that a font vendor can tag their fonts with information related to font usage.  This metadata doesn&#8217;t affect how fonts are loaded but tools can use this information to identify the source of a given font, so that those interested in the design of a given page can track down the fonts used on that page.  Fonts in WOFF format are compressed but are not encrypted, the format should not be viewed as a &#8220;secure&#8221; format by those looking for a mechanism to strictly regulate and control font use.</p>
<p>Note: until Firefox 3.6 ships, users can test the use of WOFF fonts with Firefox <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/"> nightly builds</a>.</p>
<p><b>Examples</b></p>
<p>Below is a simple example that shows how to construct an @font-face rule that links to a WOFF font. To support browsers that only support direct linking to OpenType and TrueType fonts, the &#8217;src&#8217; descriptor lists the WOFF font first along with a format hint (&#8221;woff&#8221;), followed by the TrueType version:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Gentium (SIL International) */</span>
&nbsp;
<span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.woff<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;woff&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span>
       <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.ttf<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;truetype&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
body <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">,</span> Times New Roman<span style="color: #00AA00;">,</span> <span style="color: #993333;">serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Structured this way, browsers that support the WOFF format will download the WOFF file. Other browsers that support @font-face but don&#8217;t yet support the WOFF format will use the TrueType version. (Note: IE support is a bit trickier, as discussed below).　As WOFF is adopted more widely the need to include links to multiple font formats will diminish. </p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/gentium-test.html"><img src="https://wiki.mozilla.org/images/7/7e/Gentiumtest.png"></a></p>
<p>Other examples below demostrate the use of WOFF formatted fonts but each example has been constructed so that it will work in any browser that supports @font-face, including Internet Explorer. </p>
<p><b>A font family with multiple faces</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/droidserif-test.html"><img src="https://wiki.mozilla.org/images/7/72/Droidtest.png"></a></p>
<p><b>Using a Postscript CFF font</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/chunkfive-test.html"><img src="https://wiki.mozilla.org/images/9/97/Chunkfivetest.png"></a></p>
<p><b>African Language Display</b></p>
<p>Below is an example of how downloadable fonts can be used to render languages for which font support is usually lacking. The example shows the UN Declaration of Human Rights, translated into two African languages, and how these render with default browser fonts vs. with a downloadable font suited for rendering these languages.</p>
<p>Note that in one of these examples that the font size goes from a 3.1MB TTF to a 1MB WOFF font and in the other from a 172KB TTF to an 80KB WOFF file.</p>
<p><a href="http://people.mozilla.com/~jkew/woff/udhr-sample/"><img src="https://wiki.mozilla.org/images/9/92/Charissiltest.png"/></a></p>
<p><b>Another Postscript CFF font</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/goudy1911-test.html"><img src="https://wiki.mozilla.org/images/3/35/Goudy1911test.png"/></a></p>
<p><b>An example in Japanese</b></p>
<p><a href="http://people.mozilla.org/~jdaggett/webfonts/mplus-test.html"><img src="https://wiki.mozilla.org/images/f/f8/Mlustest.png"/></a></p>
<p><b>Working With Other Browsers</b></p>
<p>Firefox 3.6 will be the first shipping browser to support the WOFF format so it&#8217;s important to construct @font-face rules that work with browsers lacking WOFF support. One thing that helps greatly with this is the use of format hints to indicate the format of font data before it&#8217;s downloaded; browsers that don&#8217;t recognize a given format simply skip data in a format they don&#8217;t support.</p>
<p>Internet Explorer, including IE8, only supports the EOT font format and only implements a subset of the @font-face rule descriptors. This makes creating cross-platform @font-face rules that work with IE especially tricky. One solution is to make different rules for IE:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.eot<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>  <span style="color: #808080; font-style: italic;">/* for IE */</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #a1a100;">@font-face {</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> GentiumTest<span style="color: #00AA00;">;</span>
  <span style="color: #808080; font-style: italic;">/* Works only in WOFF-enabled browsers */</span>
  src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span>fonts/GenR102.woff<span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;woff&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> 
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>One minor downside of this is that IE doesn&#8217;t understand format hints and doesn&#8217;t parse @font-face URL&#8217;s correctly, it treats format hints as part of the URL, so web authors using the @font-face rules above will see the following in their access logs:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">GET /fonts/GenR102.eot HTTP/1.1&quot; 200 303536
GET /fonts/GenR102.woff)%20format(%22woff%22) HTTP/1.1&quot; 404 335</pre></div></div>

<p>IE successfully pulls down and uses the EOT version of the font but also tries to pull down the WOFF font with the format hint included in the URL. This fails and doesn&#8217;t affecting page rendering but it wastes valuable server resources. For more discussion, see Paul Irish&#8217;s blog post for <a href="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">one interesting workaround</a>.</p>
<p>Another problem is that IE currently tries to download <strong>all</strong> fonts on the page, whether they are used or not. That makes site-wide stylesheets containing all fonts used on site pages difficult, since IE will always try to download all fonts defined in @font-face rules, wasting lots of server bandwidth. </p>
<p><b>Further Resources</b></p>
<p><b>Documentation</b></p>
<p><a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html">Latest draft WOFF specification</a><br />
<a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">Original blog post on using @font-face</a><br />
<a href="http://dev.w3.org/csswg/css3-fonts/">CSS3 Fonts working draft</a><br />
<a href="https://developer.mozilla.org/en/CSS/@font-face">MDC @font-face documentation</a></p>
<p><b>Tools</b></p>
<p><a href="http://people.mozilla.com/~jkew/woff/woff-code-latest.zip">Jonathan Kew&#8217;s sample encoding/decoding code</a><br />
<a href="http://code.typesupply.com/wiki/woffTools">woffTools &#8211; tools for examining and validating WOFF files</a><br />
<a href="http://sourceforge.net/projects/fonttools/">FontTools/TTX &#8211; Python library and tool for manipulating font data</a><br />
<a href="http://fonts.philip.html5.org/">Web-based font subsetting tool</a></p>
<p><b>General @font-face Examples</b></p>
<p><a href="http://www.alistapart.com/articles/cssatten">CSS @ Ten: The Next Big Thing</a><br />
<a href="http://nicewebtype.com/fonts/graublau-sans-web/">Example layout using Graublau Sans</a><br />
<a href="http://typeinspire.com/">Examples of Interesting Web Typography</a><br />
<a href="http://webtypography.net/">The Elements of Typographic Style Applied to the Web</a></p>
<p><b>Font Resources</b></p>
<p><a href="http://www.fontsquirrel.com/">Font Squirrel</a><br />
<a href="http://opentype.info/demo/webfontdemo.html">10 Great Free Fonts for @font-face</a><br />
<a href="http://www.smashingmagazine.com/2007/11/08/40-excellent-freefonts-for-professional-design/">40 Excellent Free Fonts by Smashing Magazine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/woff/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>making waves with HTML5</title>
		<link>http://hacks.mozilla.org/2009/10/making-waves-with-html5/</link>
		<comments>http://hacks.mozilla.org/2009/10/making-waves-with-html5/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 03:31:31 +0000</pubDate>
		<dc:creator>Gen Kanai</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1917</guid>
		<description><![CDATA[Thomas Saunders of modern-carpentry has a very nice HTML5 demo, making waves with html5, showcasing the power of Canvas as well as Processing.js.
modern carpentry rides the html5 canvas wave
Thomas says:
I was challenged at work to create something that &#8220;floats naturally&#8221;.  After a while of confusion in my pursuit of &#8220;natural floating&#8221; or whatever,  [...]]]></description>
			<content:encoded><![CDATA[<p>Thomas Saunders of <a href="http://modern-carpentry.com/">modern-carpentry</a> has a very nice HTML5 demo, <a href="http://modern-carpentry.com/workshop/html5/waveform/">making waves with html5</a>, showcasing the power of <a href="https://developer.mozilla.org/en/HTML/Canvas">Canvas</a> as well as <a href="http://processingjs.org/">Processing.js</a>.</p>
<p style="text-align: center;"><strong><a href="http://modern-carpentry.com/workshop/html5/waveform/">modern carpentry rides the html5 canvas wave</a></strong></p>
<p>Thomas says:</p>
<blockquote><p><em>I was challenged at work to create something that &#8220;floats naturally&#8221;.  After a while of confusion in my pursuit of &#8220;natural floating&#8221; or whatever,  I came up with the idea that I needed a tool to investigate my confusion.   This project is a result of my trying to build that tool.</em></p>
<p><em>It was initially built as a Flash/Flex application, which you can see <a href="http://modern-carpentry.com/workshop/waveform/">here</a>.   Later on, however, I became interested in HTML5 and the Canvas tag and decided to port the application to JavaScript and HTML (with the help of jQuery, and also Processing.js, of course&#8230;).  The transition went fairly well, and I ended up with a JS/HTML version of the application that I actually think is cooler than the original Flash version.</em></p>
<p><em>In the end, I came up with both something that &#8220;floats naturally&#8221;  and also  a serendipitous encounter with the simplicity of working with only HTML and JavaScript, which has been very rewarding.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/making-waves-with-html5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>a multi-touch drawing demo for Firefox 3.7</title>
		<link>http://hacks.mozilla.org/2009/10/multi-touch/</link>
		<comments>http://hacks.mozilla.org/2009/10/multi-touch/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 22:21:59 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Multi-touch]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1891</guid>
		<description><![CDATA[
Firefox Multitouch at MozChile &#8211; Drawing Canvas Experiment from Marcio Galli on Vimeo.

A couple of months ago we featured a video that had some examples of multi-touch working in Firefox.  At a recent event in South America, Marcio Galli put together a quick and fun drawing program based on the multi-touch code that we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p><video controls="true"><source src="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.ogv" type="video/ogg"/><source src="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.mp4" type="video/mp4"/><object width="500" height="280"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7026562&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7026562&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="280"></embed></object>
<p><a href="http://vimeo.com/7026562">Firefox Multitouch at MozChile &#8211; Drawing Canvas Experiment</a> from <a href="http://vimeo.com/taboca">Marcio Galli</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></video></p>
<p>A couple of months ago we featured a video that had some examples of <a href="http://hacks.mozilla.org/2009/08/multi-touch-firefox/">multi-touch working in Firefox.</a>  At a recent event in South America, <a href="http://blog.taboca.com/handsfree-drawing-demo-for-firefox-multitouch">Marcio Galli put together a quick and fun drawing program</a> based on the multi-touch code that we&#8217;ll have in a later release of Firefox.  What&#8217;s really great is that he was able to put this together in just a couple of hours based on the web platform.</p>
<p>There are three main components to the touch support in Firefox:</p>
<p>1. Touch-based scrolling and panning for the browser.  This allows you, as a user, to scroll web pages, select text, open menus, select buttons, etc.  This is part of Firefox 3.6.</p>
<p>2. Implement a new CSS selector that will tell you if you&#8217;re on a touch-enabled device.  This is <code><a href="https://developer.mozilla.org/en/CSS/:-moz-system-metric%28touch-enabled%29">-moz-system-metric(touch-enabled)</a></code>.  You can use this in your CSS to adjust the size of UI elements to fit people&#8217;s fingers.  This is part of Firefox 3.6.</p>
<p>3. Exposing multi-touch data to web pages.  This takes the form of DOM events much like mouse events you can catch today.  This isn&#8217;t part of Firefox 3.6, but is likely to be part of Firefox 3.7.</p>
<p>Although not all of this will be in our next release we thought it would be fun for people to see what will be possible with the release after 3.6.</p>
<p>Note: You can find the sample code on <a href="http://www.mgalli.com/development/drawing/">Marcio&#8217;s page for the demo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/multi-touch/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/multitouch-draw/multitouch-drawing-small.ogv" length="12759187" type="video/ogg" />
		</item>
		<item>
		<title>new device API for Firefox 3.6: orientation</title>
		<link>http://hacks.mozilla.org/2009/10/orientation-for-firefox/</link>
		<comments>http://hacks.mozilla.org/2009/10/orientation-for-firefox/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 23:17:48 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Device APIs]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox 3.6]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1860</guid>
		<description><![CDATA[
One new feature that we&#8217;re including as part of Firefox 3.6 is support for web pages to access machine orientation information if it&#8217;s available.  As you can see from the demo above you can use it to figure out if the machine is moving and what direction it&#8217;s facing.
Using the API is very simple. [...]]]></description>
			<content:encoded><![CDATA[<p><video width="500" controls><source type="video/ogg" src="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.ogv"/><source type="video/mp4" src="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.mp4"/><embed src="http://blip.tv/play/AYGm2xMC" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"></embed></video></p>
<p>One new feature that we&#8217;re including as part of Firefox 3.6 is support for web pages to access machine orientation information if it&#8217;s available.  As you can see from the demo above you can use it to figure out if the machine is moving and what direction it&#8217;s facing.</p>
<p>Using the API is very simple.  All you have to do is add a simple event listener:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;MozOrientation&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #009966; font-style: italic;">/* 3 values: e.x, e.y, e.z */</span>
                        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Originally built as something that we would include for our upcoming mobile browser release, we&#8217;ve made it available on desktop systems as well.  Many modern Macbooks and Thinkpads contain devices and drivers that expose this information.  We&#8217;ve added support for Linux, Macs and some Thinkpads where drivers and devices are available.  (Note, on some Macbooks detect the orientation information backwards &#8211; we&#8217;re working on that.)</p>
<p>You can find more information on <a href="http://dougt.org/wordpress/2009/08/orientation/">two</a> <a href="http://dougt.org/wordpress/2009/08/orientation-update/">posts</a> by Doug Turner and an update on <a href="http://www.bitstampede.com/2009/10/01/device-orientation-documentation/">documentation for orientation</a> from Eric Shepherd.</p>
<p><a href="http://blog.mozbox.org/post/2009/10/12/Some-new-demos">Paul Rouget</a> has this and some other demos up in one of his posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/orientation-for-firefox/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/orientation-demo/mozOrientation.ogv" length="11252636" type="video/ogg" />
		</item>
		<item>
		<title>mitigating attacks with content security policy</title>
		<link>http://hacks.mozilla.org/2009/10/content-security-policy/</link>
		<comments>http://hacks.mozilla.org/2009/10/content-security-policy/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:08:56 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1796</guid>
		<description><![CDATA[Firefox support for Content Security Policy (CSP) has been in the news and is now available in test builds for web developers to try.  Support for CSP isn&#8217;t slated for Firefox 3.6 but is likely to be included in the release after 3.6, mostly likely called 3.7.
This post is targeted at web developers and [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox support for <a href="http://people.mozilla.org/~bsterne/content-security-policy/index.html">Content Security Policy (CSP)</a> has been <a href="http://blog.mozilla.com/news/2009/10/05/mozillas-content-security-policy-in-the-news/">in the news</a> and is <a href="https://build.mozilla.org/tryserver-builds/bsterne@mozilla.com-1254264686/">now available in test builds</a> for web developers to try.  Support for CSP isn&#8217;t slated for Firefox 3.6 but is likely to be included in the release after 3.6, mostly likely called 3.7.</p>
<p>This post is targeted at web developers and gives a quick overview of the three kinds of attacks that CSP helps to mitigate and also gives some quick examples so developers can get a sense of how it will work for them.</p>
<p>In case you don&#8217;t know what our Content Security Policy code is &#8211; and based on anecdotal evidence a lot of people don&#8217;t &#8211; it&#8217;s a set of easy to use tools that allow a web site owner to tell the browser where it should or should not load resources from.  In particular it aims to prevent three different classes of common attacks we see on the web today: <a href="http://www.owasp.org/index.php/Cross_Site_Scripting">cross-site scripting</a>, <a href="http://ha.ckers.org/blog/20080915/clickjacking/">clickjacking</a> and packet sniffing attacks.</p>
<p><strong>Cross-site scripting attacks</strong> are largely the result of a mistake made on backend web servers where someone fails to escape data that&#8217;s submitted by users.  When that happens it&#8217;s possible to inject a tag to load JavaScript code from another web site.  That code could be harmless but it could also contain something dangerous, like malware.  What CSP does is make it possible for a web site author, via HTTP headers, to specify what types of scripts can be loaded and from where.  For developers who are setting a policy, it adds a layer of protection where even if they make a mistake it is likely to be mitigated by this additional layer of policy.</p>
<p><strong>Clickjacking attacks</strong> are where someone embeds a page into a transparent iframe and &#8220;steals&#8221; user clicks to activate something dangerous.  One particular attack allows a browser to be <a href="http://jeremiahgrossman.blogspot.com/2008/10/clickjacking-web-pages-can-see-and-hear.html">turned into a remote surveillance device</a>.  CSP includes the ability for a page to tell the browser that it never wants to be ever included in an iframe.</p>
<p>And last is the ability for a web site to tell the browser that it <strong>never wants resources from that page to be loaded over unencrypted HTTP</strong>.  Banking and other commerce sites will find this particularly useful.</p>
<p>CSP is very powerful and flexible, allowing you to specify whether or not you want to load different kinds of media, different kinds of script methods, css, can be used to set up loading only from specific other hosts and a large number of other things.  It&#8217;s meant to be very easy to set up for simple cases but will scale up to pretty complex infrastructure where different resources might be spread out over a large number of machines.</p>
<p>Here are four examples that show common use cases.  Each of these examples is a header that&#8217;s delivered as a header over HTTP and it affects how the page is rendered.</p>
<p>A site wants all of its content to come from its own domain:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow 'self'</pre></div></div>

<p>Example 2: An auction site wants to be able to load images from anywhere, plugin content from a list of trusted media providers and a CDN network and scripts only from its server hosting sanitized JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow 'self'; img-src *; \
                           object-src media1.com media2.com *.cdn.com; \
                           script-src trustedscripts.example.com</pre></div></div>

<p>Example 3: Server administrators want to deny all third-party scripts for the site, and a given project group also wants to disallow media from other sites (header provided by sysadmins and header provided by project group are both present):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow *; script-src 'self'
X-Content-Security-Policy: allow *; script-src 'self'; media-src 'self';</pre></div></div>

<p>Example 4: An online payments site wants to ensure that all of the content in its page is loaded over SSL to prevent attackers from eavesdropping on requests for insecure content:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X-Content-Security-Policy: allow https://*:443</pre></div></div>

<p>The implementation isn&#8217;t quite complete yet, but it&#8217;s pretty close.  There&#8217;s more information on the <a href="http://people.mozilla.org/~bsterne/content-security-policy/demo.cgi">demo page</a> for CSP, read the <a href="http://people.mozilla.org/~bsterne/content-security-policy/index.html">overview</a> or read the <a href="https://wiki.mozilla.org/Security/CSP/Spec">spec itself.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/content-security-policy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WebGL in the wild</title>
		<link>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/</link>
		<comments>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 04:53:55 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1798</guid>
		<description><![CDATA[This is a guest post by David Humphrey and was originally posted in his weblog.  David is a professor at Seneca College in Toronto where he teaches and researches open source development and leads Mozilla&#8217;s education project.  David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension. [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post by David Humphrey and was <a href="http://vocamus.net/dave/?p=771">originally posted in his weblog</a>.  David is a professor at <a href="http://senecac.on.ca/">Seneca College</a> in Toronto where he <a href="http://zenit.senecac.on.ca/wiki">teaches and researches</a> open source development and leads <a href="http://education.mozilla.org/">Mozilla&#8217;s education project</a>.  David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension.  It&#8217;s nice to see that work making its way out of the experimental stage and already being used to solve real-world problems even before it&#8217;s officially shipped anywhere.</em></p>
<p>I&#8217;ve been spending a lot of time lately thinking about 3D in the browser.  It&#8217;s to the point that I have to blog about it, and try to get it out of my head and onto the web where it belongs.  Part of the reason I&#8217;m writing this tonight is that my colleague, <a href="http://cleung.wordpress.com/">Cathy Leung</a>, has just put up a demo so awesome I&#8217;m compelled to share it (<a href="http://www.youtube.com/watch?v=n3tQd7UT09k">video here</a>):</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>She put the video together after <a href="http://www.itbusiness.ca/it/client/en/home/DetailNewsPrint.asp?id=54713">this article</a> was written about her work to make 3D accessible to web developers via <a href="http://c3dl.org">C3DL</a>.  Cathy has been working with a team of students at <a href="http://senecacollege.ca/">Seneca College</a> for the past few years, focused on an <a href="https://addons.mozilla.org/en-US/firefox/addon/7171">experimental 3D technology</a> created by  Mozilla.  Her work proves how valuable 3D in the browser can be.  I think a lot of people misunderstand its significance: &#8220;Doom in the browser?&#8221;  Sure, but it&#8217;s way more than that.  There is  no shortage of tea pots on the web these days, as various browser vendors start to show-off early releases of <a href="http://arstechnica.com/open-source/news/2009/08/webgl-standard-to-bring-3d-web-without-browser-plugins.ars">WebGL</a> enabled builds.  However, Mozilla has been at this game a long time.  I know because we&#8217;ve been using their stuff as long as they&#8217;ve been building it.  And it&#8217;s really reached a <a href="http://blog.vlad1.com/2009/09/21/webgl-samples/">new level now</a>.</p>
<p>As <a href="http://readysetstop.blogspot.com/">Mozilla pushes WebGL</a> further, and <a href="http://www.c3dl.org/index.php/c3dl-news/release-1-1-and-beyond/">Cathy continues</a> her work on C3DL, I&#8217;m focused on another project to harness the power of  3D in the browser.  Together with <a href="http://hyper-metrix.com/">Al MacDonald</a>, I&#8217;m leading a <a href="https://wiki.mozilla.org/Education/Projects/ProcessingForTheWeb">Mozilla Foundation project</a> to complete the work begun by <a href="http://ejohn.org/">John Resig</a> to port the <a href="http://processing.org/">Processing language</a> to JavaScript (aka <a href="http://processingjs.org/">processing.js</a>).  The processing.js port, while unfinished, <a href="http://9elements.com/io/projects/html5/canvas/">is already amazing</a>.  Imagine if <a href="http://zenit.senecac.on.ca/wiki/index.php?title=Processing.js">we took eight students</a>, finished it, and added 3D support from C3DL?  I know, exactly.</p>
<p>Part of what makes me so excited about all this work is the deep intersection of things I love.  I&#8217;ve long been a fan of the work of Processing creators, <a href="http://benfry.com/">Ben Fry</a> and <a href="http://reas.com/">Casey Reas</a>, every since they were part of the <a href="http://acg.media.mit.edu/">Aesthetics and Computation Group</a>.  I&#8217;ve always thought that their work belonged on the web instead of on the desktop.  At the same time, my own work with Mozilla and the open web has proven to me the need for richer ways of working with things like <a href="http://vocamus.net/dave/?page_id=741">open data</a>.  The web is at an interesting point in its evolution.  We now take for granted that it can do what was once only possible via  desktop apps.  Looking forward I can already see a time when the web will also be the proper medium of artists, designers, data visualizers, and others pushing the limits of the second and third dimensions.  I&#8217;m thrilled to be a small part of this effort now.</p>
<p>If you&#8217;d like to get involved with any of the work discussed above, please do <a href="mailto:david.humphrey@senecac.on.ca">get in touch with me</a>.  The most exciting aspect of everything I&#8217;ve told you remains that it&#8217;s all community developed, from Mozilla to C3DL to processing to processing.js.  That&#8217;s how you build the software stack of the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>what does &#8220;open web&#8221; mean to you?</title>
		<link>http://hacks.mozilla.org/2009/09/open-web-survey/</link>
		<comments>http://hacks.mozilla.org/2009/09/open-web-survey/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 00:43:13 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Survey]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1791</guid>
		<description><![CDATA[Update: This poll is now closed &#8211; we&#8217;ll post some results once we&#8217;ve analyzed them &#8211; thanks for helping!
We&#8217;re running a short survey to find out what the phrase &#8220;open web&#8221; means to web developers.  What does that phrase mean to you?
http://rypple.com/blizzard/web
It&#8217;s an anonymous survey and will probably take you less than a minute [...]]]></description>
			<content:encoded><![CDATA[<p><b>Update: This poll is now closed &#8211; we&#8217;ll post some results once we&#8217;ve analyzed them &#8211; thanks for helping!</b></p>
<p>We&#8217;re running a short survey to find out what the phrase &#8220;open web&#8221; means to web developers.  What does that phrase mean to you?</p>
<p><strike>http://rypple.com/blizzard/web</strike></p>
<p>It&#8217;s an anonymous survey and will probably take you less than a minute to respond to.</p>
<p>Since it&#8217;s a survey that only allows you to use about 200 characters you&#8217;ll have to be short and simple.  And we don&#8217;t want to poison people by offering suggestions &#8211; we&#8217;re curious about people&#8217;s honest responses.</p>
<p>We&#8217;ll post a summary if we get enough results.</p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/open-web-survey/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>theora 1.1 is released &#8211; what you should know</title>
		<link>http://hacks.mozilla.org/2009/09/theora-1-1-released/</link>
		<comments>http://hacks.mozilla.org/2009/09/theora-1-1-released/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 17:03:27 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1646</guid>
		<description><![CDATA[Less than a year after the release of Theora 1.0, the wonderful people at Xiph have released Theora 1.1.  The 1.1 release is a software-only release of the Theora encoder and decoder.  It does not include any changes to the Theora format.  Existing Theora videos should continue to play with the new [...]]]></description>
			<content:encoded><![CDATA[<p>Less than a year after the release of <a href="http://www.xiph.org/press/2008/theora-release-1.0/">Theora 1.0</a>, the wonderful people at Xiph have <a href="http://theora.org/news/">released Theora 1.1</a>.  The 1.1 release is a software-only release of the <a href="http://www.theora.org/">Theora encoder and decoder</a>.  It does not include any changes to the Theora format.  Existing Theora videos should continue to play with the new decoder and the new Theora encoder generates bitstreams that will work in existing players that can play Theora content.</p>
<p>The 1.1 release is largely an improvement to the Theora encoder.  This post will attempt to give people a high-level overview of the changes and what they mean to web developers and people who are thinking of deploying Theora to support HTML5 video.  Theora is an important technology to web developers &#8211; it&#8217;s the only competitive codec that currently complies with the <a href="http://lockshot.wordpress.com/2009/07/30/whats-the-problem-with-ogg-theora/">W3C patent policy</a>.</p>
<p>Here&#8217;s a quick list of important things that have changed in this release.  We&#8217;ll go into more detail on each of these items.</p>
<ul>
<li>Video quality between Theora 1.0 and Theora 1.1 has been improved.</li>
<li>Rate control for live streaming now works well.</li>
<li>A two-pass mode has been added to the encoder that can create rate controlled videos with very predictable bandwidth requirements.</li>
<li>CPU usage during encoding is much more consistent.</li>
<li>Decoder performance has been improved.</li>
</ul>
<p><b>Video quality between Theora 1.0 and Theora 1.1 has been improved.</b></p>
<p>One issue that people had with the Theora 1.0 encoder was that it produced video that appeared fuzzy.  The 1.1 improvements are clear in these two images provided by <a href="http://web.mit.edu/xiphmont/Public/theora/demo7.html">Monty, one of the Xiph Developers</a>.  Open each of these images in new tabs and flip between them.  You can really see the difference.</p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.0.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.0.png"></a></p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.1.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/st-1.1.png"></a></p>
<p>This was also very visible at the edges of text.  Here&#8217;s an example taken from one of our <a href="http://www.mozilla.com/en-US/firefox/video/?video=whatnew-3.5">Firefox 3.5 promotional videos</a>.  The first is with the <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.0-v-4.ogv">1.0 encoder (9.0MB)</a> and the second is with the <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.1-v-6.ogv">1.1 encoder (8.2MB)</a>.  You will notice that not only are the edges more defined but there&#8217;s a lot less noise in the area around the edges of the text.  Once again, if you open them in tabs and flip between them you can see the difference.</p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.0.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.0.png"></a></p>
<p><a target="_blank" href="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.1.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/fx-1.1.png"></a></p>
<p>Note that the original <a href="http://videos.mozilla.org/firefox/3.5/overview/overview.ogv">video</a> is nearly 17MB.  That was done largely to get the text crisp.  With these changes we can likely use a much lower-bandwidth version of the video, probably as small as <a href="http://people.mozilla.org/~blizzard/videos/theora-1.0-vs-1.1/fx35_overview-1.1-v-7.ogv">9.9MB.</a>  That&#8217;s a pretty big difference.</p>
<p>Note that we&#8217;re talking about an improvement of quality <i>at the same video bitrate</i>.  This means that we&#8217;re either able to produce higher quality videos at the same file size or we&#8217;re able to reduce the file size and keep the same quality &#8211; either way it&#8217;s a big win.</p>
<p><b>Rate control for live streaming now works well.</b></p>
<p>Before describing this change, something important must be described.  This is the difference between videos encoded with a <i><a href="http://en.wikipedia.org/wiki/Variable-rate_encoding">variable bitrate (VBR)</a></i> and a <i><a href="http://en.wikipedia.org/wiki/Constant_bitrate">constant bitrate (CBR)</a></i>.</p>
<p>In variable bitrate encoding the amount of data that&#8217;s required to represent the difference between two frames in a video is allowed to grow.  This happens most often when shifting from a scene where there isn&#8217;t much movement to a scene where there&#8217;s a lot of motion.  You could easily go from requiring 40Kb/sec to 400Kb/sec because the entire background moves.</p>
<p>In constant bitrate encoding the amount of data that you&#8217;re allowed to use to represent a change from one frame to the next is pinned at some maximum value.  If you&#8217;ve got a low maximum value and there&#8217;s a set of frames that requires a lot of bits to represent the changes from one to the next you will need to sacrifice something in order to stay inside of that maximum value.  Very often it&#8217;s some amount of video quality or the encoder will start dropping frames in order to keep under the watermark.</p>
<p>This leads to a pretty simple rule: <i>If you want the highest quality video possible, you should be using variable rate encoding.</i>  This means that when you&#8217;re encoding a video you should be using quality settings (0-99, low/medium/high, 1-10) instead of picking bitrates (60Kb/sec, 200Kb/sec.)  For most use cases on the web VBR-encoded videos actually work very well because users are allowed to buffer quite a bit of video out ahead of their current position so these bursts of data don&#8217;t affect the user&#8217;s experience.</p>
<p>But there are some use cases where having a constant bitrate is very important.  These include:</p>
<ol>
<li>Live, low delay streaming over HTTP with a lot of clients.</li>
<li>Streaming large files where a large read-ahead buffer is not desired.</li>
<li>Situations where large bursts of data result in large bursts in CPU to handle them.</li>
</ol>
<p>For live, low-delay streaming over HTTP it&#8217;s important to realize what happens when there&#8217;s a sudden burst of data to handle.  HTTP runs over <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a>.  In TCP it takes a while for a connection to increase its bandwidth.  (And by &#8220;a while&#8221; I mean &#8220;not that long&#8221; but it&#8217;s long enough to affect the low latency connection that we want for this use case.  This is why many low-latency applications don&#8217;t use TCP.  But we&#8217;re talking about delivering video over HTTP.)  If you&#8217;ve got a big burst of data and the TCP window takes a long time to open up you start building up a big send buffer on the server.  (And remember in this use case you&#8217;ve got a lot of clients connected!)  That requires a lot of memory to hold the send buffers for each client.  What happens then is that servers will start closing connections en masse because it needs to save memory or because it thinks that the client has become somehow unreachable.  This is made worse by the fact that even if the connection scales up and then scales back down it re-settles at the low rate and the process has to be repeated.  The user&#8217;s experience is that the video stream stops and restarts or just stops working altogether when the server hangs up.  The solution?  Using a constant rate that doesn&#8217;t require the TCP window to open up suddenly and doesn&#8217;t require large send buffers for each client.</p>
<p>For the use case where you&#8217;re streaming large files it might not be reasonable for the client to cache a lot of data.  You also might be serving up a lot of data to a lot of clients and you might want to avoid the large send buffer problem as well, just for different reasons.</p>
<p>And for the last use case where you&#8217;re in a CPU-constrained environment the bursting nature of variable bitrate videos means it often takes a large bursts of CPU to handle those bursts.  While CPUs do burst up faster than TCP does, you might be talking to constrained processors (think mobile) or you might be serving up files near HD-sized content, which CPUs often struggle to decode.</p>
<p>In any case there are a number of use cases for constant bitrate encoding.  Back to the question of what&#8217;s improved in Theora 1.1.</p>
<p>In Theora 1.0 the rate controlled encoding mode was very very broken.  This resulted in two things:</p>
<ol>
<li>People trying to do live streaming ran into problems.</li>
<li>People who used rate controlled settings to compare overall Theora quality to the quality of other encoders saw worse results than the format actually represented.</li>
</ol>
<p>The first issue is clear &#8211; it was broken, it should be fixed.  And it has been.  The new encoder does a pretty good job of maintaining bitrates, changes quality on the fly, drops frames and even includes a &#8220;soft-target&#8221; mode so that bitrates can fluctuate a little bit to maintain quality while occasionally breaking the bandwidth rules.</p>
<p>The encoder also has a wonderful new piece of functionality that people will find very useful.  It&#8217;s now possible to specify a maximum rate ceiling for video encoding while also specifying a minimum quality floor.  What this means is that the encoder will try and maintain very crisp video frames within rate constraints.  This means that it will aggressively drop frames instead of creating frame deltas that are fuzzy or low-quality.  While this might sound like a poor trade-off it&#8217;s actually very useful.  If you&#8217;re showing a live video of a presentation you usually want a crisp video of the slides and having a lower frame update rate is very acceptable.</p>
<p>The second issue that was caused by the bad rate control in Theora 1.0 is an issue of marketing.  People would often use the encoder with the fixed bitrate mode instead of the quality mode and dismiss the results as a reflection of the format instead of problems with the encoder.  We hope that people find better results with the new encoder.</p>
<p><b>A two-pass mode has been added to the encoder that can create rate controlled videos with very predictable bandwidth requirements.</b></p>
<p>In addition to fixing the single pass rate controlled encoder in 1.1 a two-pass encoding option has been added.  This means that if you are transcoding a file (as opposed to doing a live stream) you can create a very consistent bitrate in a file if you want.  This is because the encoder can look ahead in the stream to allocate bits efficiently.  <a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html">Monty from Xiph made a graph</a> that shows one example of the bitrate in a file with one pass and two pass.</p>
<p><a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html"><img src="http://web.mit.edu/xiphmont/Public/theora/onepass-twopass.png" width="500"/></a></p>
<blockquote><p>Above: graph of quantizer choice (which roughly corresponds to the encoding quality) when using default two-pass bitrate management as opposed to one-pass (with &#8211;soft-target) when encoding [the Matrix movie clip] at 300kbps. Both encodes resulted in the same bitrate. The quality of a one-pass encode varies considerably as the encoder has no way to plan ahead.</p></blockquote>
<p><b>CPU usage during encoding is much more consistent.</b></p>
<p>People who were doing live streaming often saw huge spikes in CPU usage during high-motion events.  This has been fixed and now CPU usage is much more consistent during single pass rate constrained encoding making it much easier to live stream video.</p>
<p><b>Decoder performance has been improved.</b></p>
<p>And last but not least the decoder has been made faster during the 1.1 release.  How much faster depends quite a bit on the clip, but people are reporting that the new encoder is anywhere from 1.5-2x faster than the 1.0 of release of libtheora.</p>
<p><b>Coming soon to a product near you.</b></p>
<p>This release is a library release.  It&#8217;s not a product in itself, but is instead something that other products include.  So over the next days and weeks we&#8217;ll see other products pick up and start using this as part of their releases.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/theora-1-1-released/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
<enclosure url="http://videos.mozilla.org/firefox/3.5/overview/overview.ogv" length="17620460" type="video/ogg" />
		</item>
		<item>
		<title>three more WebGL demos</title>
		<link>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/</link>
		<comments>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 04:12:52 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1745</guid>
		<description><![CDATA[If you see other cool WebGL demos post them in the comments here or let us know at @mozhacks.  We&#8217;ll keep posting them as we find them.
A port of Puls to WebGL:

Escher-Droste effect in WebGL:

Metatunnel by FRequency:

(via Mark Steele)
]]></description>
			<content:encoded><![CDATA[<p>If you see other cool WebGL demos post them in the comments here or let us know at <a href="http://twitter.com/mozhacks"><b>@mozhacks</b></a>.  We&#8217;ll keep posting them as we find them.</p>
<p>A port of <a href="http://wakaba.c3.cx/w/puls.html">Puls to WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/puls.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/puls.png"/></a></p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html">Escher-Droste effect in WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/escher.png"/></a></p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html">Metatunnel by FRequency</a>:</p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/glowing-tunnel.png"/></a></p>
<p>(via <a href="http://readysetstop.blogspot.com/2009/09/webgl-demos.html">Mark Steele</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>WebGL for Firefox</title>
		<link>http://hacks.mozilla.org/2009/09/webgl-for-firefox/</link>
		<comments>http://hacks.mozilla.org/2009/09/webgl-for-firefox/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 01:16:04 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1725</guid>
		<description><![CDATA[This is a re-post from Vlad Vukićević&#8217;s personal blog.  WebGL, an effort to bring a GL-based 3D extension to the web, is being standardized through Khronos.  The WebGL work is based on the GL Canvas extension that Vlad started and is now being implemented in both Firefox and Safari.  Builds that include [...]]]></description>
			<content:encoded><![CDATA[<p><i>This is a re-post from <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/">Vlad Vukićević</a>&#8217;s personal blog.  WebGL, an effort to bring a GL-based 3D extension to the web, is being <a href="http://www.khronos.org/news/press/releases/khronos-launches-initiative-for-free-standard-for-accelerated-3d-on-web/">standardized through Khronos</a>.  The WebGL work is based on the <a href="http://blog.vlad1.com/canvas-3d/">GL Canvas extension</a> that Vlad started and is now being implemented in both Firefox and Safari.  Builds that include support for WebGL are <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">now being built every night.</a>  This work won&#8217;t make it into Firefox 3.6 but may be included in a post-3.6 release.</a>  To keep track of the WebGL progress you can follow <a href="http://blog.vlad1.com/">Vlad</a> or <a href="http://readysetstop.blogspot.com/">Mark Steele</a>&#8217;s progress.</i></p>
<p>Since <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/" >my post on Friday</a>, we landed a few fixes to improve our WebGL implementation and to fix a couple of bugs we discovered on Friday.  I&#8217;m looking forward to seeing what people do with WebGL, and how it can be useful on the web right now.  For example, EA/Maxis recently added COLLADA export of Creature designs to their popular game <a href="http://www.spore.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.spore.com');">Spore</a>, and they have a <a href="http://www.spore.com/sporepedia">Sporepedia</a> where players can see others&#8217; creations.  Right now, those previews are just as images.  With WebGL, they could be fully 3D, even animated.</p>
<p><a href="http://blog.vlad1.com/wp-content/uploads/2009/09/spdemo.png" ><img class="alignleft size-full wp-image-201" title="Spore Creature View (thumbnail)" src="http://blog.vlad1.com/wp-content/uploads/2009/09/spdemo-thumb.jpg" alt="Spore Creature View (thumbnail)" width="306" height="288" /></a>Over the weekend I&#8217;ve put together <a href="http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html">this example</a>, which uses WebGL to render an exported Spore creature, and let the user rotate the 3D model to view it from different angles.  For those who want to try it out, you&#8217;ll need a recent Firefox nightly (one from today, September 21, or newer), and with one preference flipped as described in <a href="http://blog.vlad1.com/2009/09/18/webgl-in-firefox-nightly-builds/" >this post</a>.</p>
<p>I&#8217;ll be working to update the very basic &#8220;<a href="http://people.mozilla.com/~vladimir/canvas3d/examples/gles2book/">getting started</a>&#8221; demos from the GL ES 2 book that I ported to Canvas 3D as well, so that those who are interested in experimenting can have some good basic code to look at.  They&#8217;re not updated yet, but they should be in the next day or two.</p>
<p>For those of you on Windows who don&#8217;t have an up to date OpenGL driver, or don&#8217;t have the possibility of getting one (e.g. many common Intel graphics cards doesn&#8217;t have OpenGL drivers), you can enable software rendering by downloading a Windows build of the Mesa software OpenGL implementation.  It won&#8217;t be fast, but it should be enough for you to get an idea of what&#8217;s going on, and to play with some of the demos.  To use it, download <a href="http://people.mozilla.com/~vladimir/webgl/webgl-mesa-751.zip">webgl-mesa-751.zip</a> and extract it somewhere on your computer.  It has a single file, OSMESA32.DLL, that you need to tell Firefox where to find:  open up about:config, and set the preference <em>webgl.osmesalib</em> to the path of OSMESA32.DLL.  If you extracted it to &#8220;C:\temp&#8221;, you would put in &#8220;C:\temp\osmesa32.dll&#8221; in the pref.  Then, flip <em>webgl.software_rendering</em> to true, and you should be good to go.</p>
<p>(Mac OS X users shouldn&#8217;t need to bother with software rendering, since Apple already provides a high quality OpenGL implementation, and Linux users should be ok as long as they have recent OpenGL drivers installed.)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/webgl-for-firefox/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
