<?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>Ted's Mozilla Blog &#187; firefox</title>
	<atom:link href="http://blog.mozilla.com/ted/category/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/ted</link>
	<description>If this were a diary it would have a unicorn on the cover, because unicorns are awesome.</description>
	<lastBuildDate>Thu, 09 Feb 2012 14:12:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Measuring UI Responsiveness</title>
		<link>http://blog.mozilla.com/ted/2011/06/27/measuring-ui-responsiveness/</link>
		<comments>http://blog.mozilla.com/ted/2011/06/27/measuring-ui-responsiveness/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 14:50:47 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[responsiveness]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=80</guid>
		<description><![CDATA[One of the goals for the Firefox team is to ensure that the user interface remains responsive to input at all times. Clearly a responsive interface is incredibly important to making the browser a useful application, but how do we measure &#8220;responsiveness&#8221;? Dietrich has done some work on this, writing an add-on that measures the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the goals for the Firefox team is to <a href="https://wiki.mozilla.org/Firefox/Features/50ms_ASSERT">ensure that the user interface remains responsive</a> to input at all times. Clearly a responsive interface is incredibly important to making the browser a useful application, but how do we measure &#8220;responsiveness&#8221;?</p>
<p><a href="https://twitter.com/#!/dietrich/">Dietrich</a> has done some work on this, <a href="https://github.com/autonome/about-response">writing an add-on</a> that measures the time that various UI actions take. This covers the direct case, where a user initiates an action and expects a response in a reasonable amount of time. Clearly we want to make sure that individual actions don&#8217;t take an extraordinary amount of time.</p>
<p>I took the opposite tack, with an eye on being able to detect when the application was not responsive to user input regardless of what actions the user was taking. Building on some work by <a href="http://blog.mozilla.com/cjones/">Chris Jones</a> and <a href="http://mozakai.blogspot.com/">Alon Zakai</a>, I <a title="Bug 606574 - Add event loop responsiveness instrumentation" href="https://bugzilla.mozilla.org/show_bug.cgi?id=606574">wrote some code</a> that instruments the main thread event loop to find out how long it takes to respond to events, which ought to be a reasonable proxy for measuring responsiveness. When the instrumentation detects that the event loop takes too long to respond (more than 50 milliseconds, currently) it writes a data point to a log giving the current timestamp and the amount of time the event loop was not responsive.</p>
<p>When I implemented this I had my eye on <a title="Bug 631571 - Measure browser responsiveness in Talos" href="https://bugzilla.mozilla.org/show_bug.cgi?id=631571">Talos integration</a>, where we could run the browser through some automated UI tests with this instrumentation enabled, and then correlate &#8220;UI actions&#8221; with &#8220;unresponsive periods&#8221; and ensure that the browser did not become unresponsive during those actions. Talos integration has been shifted off as a longer-term goal, with the more immediate goal being &#8220;find UI actions that are the worst offenders of unresponsiveness&#8221;. To that end we&#8217;ve filed some other bugs about<a title="Bug 653701 - Figure out a way to correlate JavaScript execution with event loop non-responsiveness" href="https://bugzilla.mozilla.org/show_bug.cgi?id=653701"> correlating this unresponsiveness data with JavaScript execution</a>, and <a title="Bug 653703 - Correlate C++ profiling with event loop non-responsiveness" href="https://bugzilla.mozilla.org/show_bug.cgi?id=653703">correlating the data with C++ execution</a>. If you&#8217;ve got any ideas please feel free to contribute to those bugs!</p>
<p>If you&#8217;d like to try out the responsiveness instrumentation I implemented, it landed on mozilla-central a while ago, and there&#8217;s <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/EventTracer.cpp#38">some reasonably complete documentation in the source code</a>. There are implementations for Windows, Linux/GTK2 and OS X currently. (And a patch for <a title="Bug 633239 - event loop responsiveness for Android" href="https://bugzilla.mozilla.org/show_bug.cgi?id=633239">an Android implementation in a bug</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2011/06/27/measuring-ui-responsiveness/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Why it&#8217;s hard to ship non-crashy software</title>
		<link>http://blog.mozilla.com/ted/2011/06/14/why-its-hard-to-ship-non-crashy-software/</link>
		<comments>http://blog.mozilla.com/ted/2011/06/14/why-its-hard-to-ship-non-crashy-software/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 13:28:50 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[crashes]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=73</guid>
		<description><![CDATA[I was just looking at some data produced from our crash reporting system, and I continue to be amazed at the amount of third-party code that gets loaded into Firefox on Windows. That data file contains a list of all unique binary files (EXE or DLL) that were listed in Windows crash reports in a [...]]]></description>
			<content:encoded><![CDATA[<p>I was just looking at <a title="Warning: 2MB file" href="https://crash-analysis.mozilla.com/crash_analysis/modulelist/20110613-modulelist.txt">some data</a> produced from our <a title="crash-stats.mozilla.com, running the Socorro webapp" href="https://crash-stats.mozilla.com/products/Firefox">crash reporting system</a>, and I continue to be amazed at the amount of third-party code that gets loaded into Firefox on Windows. That data file contains a list of all unique binary files (EXE or DLL) that were listed in Windows crash reports in a single day. A quick look at it shows:</p>
<p>$ cut -f1 -d, 20110613-modulelist.txt  | sort -u | wc -l<br />
10385</p>
<p>There are over 10,000 unique filenames in a single day&#8217;s worth of crash reports. That sure seems like a lot! Now, certainly, a lot of these modules look like they&#8217;ve been randomly named, which probably indicates that they&#8217;re some kind of virus (like <em>0eYZf0QFDSGEAbTRWD3F.dll</em>, for example), so those are likely to inflate the number. There&#8217;s <a title="Bug 634726 - add md5 hash of .dll's when gathering crash report, and expose those in crash reports on socorro" href="https://bugzilla.mozilla.org/show_bug.cgi?id=634726">a bug on file</a> asking that we collect MD5 hashes of every DLL in our crash reports so we could more easily detect malware/virus DLLs that use these tactics, as well as integrate with lists of known malware and viruses from antivirus vendors.</p>
<p>In the past, we have had problems with <a title="Adobe Flash Player" href="http://www.adobe.com/products/flashplayer/">plugins</a> and <a title="Skype Click and Call" href="http://www.skype.com/intl/en/get-skype/on-your-computer/click-and-call/">extensions</a> causing crashes for many Firefox users. We have ways of mitigating those through <a href="http://www.mozilla.com/en-US/blocklist/">blacklisting</a>. We can also <a href="https://wiki.mozilla.org/Firefox/3.6/DLL_Blocking">blacklist specific DLLs</a> from loading in the Firefox process, which is not used as often because it&#8217;s harder to get right and provides little feedback to users about what&#8217;s been disabled. However, given the sheer number of possible things that can be loaded in our process, it&#8217;s unlikely that we&#8217;ll ever be able to block all software that causes crashes for users. This is unfortunate, because any one of these pieces of software can cause a crash in Firefox, and all the user sees is &#8220;<a title="We're Sorry..." href="http://support.mozilla.com/media/uploads/gallery/images/send_crash.png">Firefox crashed</a>&#8220;. I suppose we now know how Microsoft feels when users blame Windows for crashes caused by faulty drivers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2011/06/14/why-its-hard-to-ship-non-crashy-software/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>moz-headless-screenshot</title>
		<link>http://blog.mozilla.com/ted/2010/07/29/moz-headless-screenshot/</link>
		<comments>http://blog.mozilla.com/ted/2010/07/29/moz-headless-screenshot/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 17:06:12 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=60</guid>
		<description><![CDATA[On a personal project of mine, I have a need to generate thumbnails of web pages. Until recently my solution was to use Firefox running in Xvfb, a virtual X server. This is not an ideal solution, as it requires you to have lots of X client libraries installed on your server. Additionally, Firefox is [...]]]></description>
			<content:encoded><![CDATA[<p>On a <a title="qumbler: stuff, etc." href="http://qumbler.com/">personal project of mine</a>, I have a need to generate thumbnails of web pages. Until recently my solution was to use <a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a> running in <a href="http://en.wikipedia.org/wiki/Xvfb">Xvfb</a>, a virtual X server. This is not an ideal solution, as it requires you to have lots of X client libraries installed on your server. Additionally, Firefox is not intended for this purpose, so there are lots of ways for things to go wrong.</p>
<p>Because of this, I&#8217;d been following <a href="http://chrislord.net/">Chris Lord</a>&#8216;s work on the <a href="http://hg.mozilla.org/incubator/offscreen/">offscreen branch</a> of Mozilla for some time, but never tried it out until recently. The offscreen branch provides a widget backend for Mozilla that can render web content to an offscreen buffer. Chris wrote it in support of <a href="http://www.clutter-project.org/">Clutter</a>, which is a pretty neat use case. Conveniently, he also provided a sample embedding client application called moz-headless-screenshot. This is a simple command line tool that takes a URL, image size, and output filename and generates a PNG screenshot of the webpage. This being exactly what I wanted, and having my poorly-written Firefox+Xvfb solution fall apart due to a server migration, I decided to give his solution a shot.</p>
<p>I hit a few speed bumps on the way, since there wasn&#8217;t much documentation to be found on actually building and using moz-headless-screenshot. I&#8217;ve attempted to fix this my providing <a href="http://ted.mielczarek.org/hg/moz-headless-screenshot/file/tip/Makefile">detailed steps and a Makefile</a> in <a href="http://ted.mielczarek.org/hg/moz-headless-screenshot/">my own moz-headless-screenshot repository</a>. I&#8217;ve also modified the code slightly such that it&#8217;s easier to run (at least in my use case). I have heard from others over the years that have this same need, so hopefully someone else finds it useful!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2010/07/29/moz-headless-screenshot/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Easy branch-landing of patches</title>
		<link>http://blog.mozilla.com/ted/2009/12/02/easy-branch-landing-of-patches/</link>
		<comments>http://blog.mozilla.com/ted/2009/12/02/easy-branch-landing-of-patches/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:44:36 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=43</guid>
		<description><![CDATA[I often find myself landing patches on our 1.9.2 and 1.9.1 branches, both of which are in Mercurial repositories. This generally involves getting a changeset from the mozilla-central repository into one of these repositories, and also amending the changeset message to include the name of the person who gave me approval to land. There was [...]]]></description>
			<content:encoded><![CDATA[<p>I often find myself landing patches on our <a href="http://hg.mozilla.org/releases/mozilla-1.9.2/">1.9.2</a> and <a href="http://hg.mozilla.org/releases/mozilla-1.9.1/">1.9.1</a> branches, both of which are in <a href="http://mercurial.selenic.com/">Mercurial</a> repositories. This generally involves getting a changeset from the <a href="http://hg.mozilla.org/mozilla-central/">mozilla-central</a> repository into one of these repositories, and also amending the changeset message to include the name of the person who gave me approval to land. There was <a title="Thread: Adding &quot;APPROVAL REQUIRED&quot; to the CLOSED TREE hook." href="http://groups.google.com/group/mozilla.dev.tree-management/browse_thread/thread/352bc473c506ab1a/">some discussion recently</a> on how it&#8217;s kind of a pain to do that. I&#8217;ve cooked up an easy solution for my own needs, perhaps it will serve yours as well.</p>
<p>I use &#8220;<a href="http://mercurial.selenic.com/wiki/TransplantExtension">hg transplant</a>&#8221; to get changesets from one repository to another. This assumes that you have local clones of both the source repository (mozilla-central in this case) and the destination repository (mozilla-1.9.2 or 1.9.1, usually). Assuming you had both clones side-by-side in a directory, you could run the transplant command in the destination repository&#8217;s working directory like so (where xxx is the changeset identifier of the changeset you want transplanted, you can also specify more than one changeset):</p>
<pre>hg transplant -s ../mozilla-central xxx</pre>
<p>The transplant command conveniently includes a &#8220;&#8211;filter&#8221; option that will let you alter the commit message or patch while transplanting. This requires you to have some sort of script for transplant to run. Here&#8217;s what I&#8217;m using (on Linux):</p>
<pre>#!/bin/sh

if test -n "$APPEND"; then
 echo " $APPEND" &gt;&gt; "$1";
else
 if test -n "$EDITOR"; then
 $EDITOR "$1";
 else
 editor "$1";
 fi
fi</pre>
<p>Save this as &#8220;<a href="http://people.mozilla.com/~tmielczarek/transplant.sh">transplant.sh</a>&#8221; somewhere (and ensure that it&#8217;s executable), then in your ~/.hgrc, add a section:</p>
<pre>[transplant]
filter = /path/to/transplant.sh</pre>
<p>Now, when you run &#8220;hg transplant&#8221;, by default it will open an editor to edit the commit message for each changeset, allowing you to add approval information. But, even better, transplant.sh will append the contents of the &#8220;APPEND&#8221; variable if set, so you can run transplant like so to quickly append approval information:</p>
<pre>APPEND="a=someone" hg transplant -s ../mozilla-central xxx</pre>
<p>I find that this saves me a bunch of time, so hopefully it&#8217;s useful to someone else!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2009/12/02/easy-branch-landing-of-patches/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Source Server, back on trunk</title>
		<link>http://blog.mozilla.com/ted/2009/10/05/source-server-back-on-trunk/</link>
		<comments>http://blog.mozilla.com/ted/2009/10/05/source-server-back-on-trunk/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 20:50:23 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[building]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=38</guid>
		<description><![CDATA[Some time ago, Lukas Blakk implemented support for a source server on our Windows builds as a class project in Dave Humphrey&#8216;s class at Seneca College. Of course, soon after that we switched our main VCS from CVS to Mercurial, which broke all of her hard work. Thankfully, we got another one of Dave&#8217;s students, [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, <a href="http://crashopensource.blogspot.com/">Lukas Blakk</a> implemented support for a <a href="https://developer.mozilla.org/en/Using_the_Mozilla_source_server">source server</a> on our Windows builds as a class project in <a href="http://vocamus.net/dave/">Dave Humphrey</a>&#8216;s class at <a href="http://www.senecac.on.ca/">Seneca College</a>. Of course, soon after that we switched our main <acronym title="Version Control System">VCS</acronym> from <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a> to <a href="http://mercurial.selenic.com/wiki/">Mercurial</a>, which broke all of her hard work. Thankfully, we got another one of Dave&#8217;s students, <a href="http://jvalianes.blogspot.com/">Jesse Valianes</a>, to <a title="Bug 440001 -  source server support for mercurial" href="https://bugzilla.mozilla.org/show_bug.cgi?id=440001">fix things</a> to make it work with Mercurial. We landed his patch, but as it turns out we never <a title="Bug 506702 -  need to set PDBSTR_PATH for win32 builds" href="https://bugzilla.mozilla.org/show_bug.cgi?id=506702">enabled a setting on our build machines</a> to make it actually work. However, when we finally tried to do so, I found out that <a title="Bug 385792 -  compress pdb files in symbol store" href="https://bugzilla.mozilla.org/show_bug.cgi?id=385792">another patch</a> we had landed in the interim had broken things. I finally <a title="Bug 520141 -  fix source server support to work with pdb compression" href="https://bugzilla.mozilla.org/show_bug.cgi?id=520141">landed a fix</a> for that, and we flipped it back on, and so today&#8217;s trunk build is source-enabled again.</p>
<p>If you have no idea what any of this means, it means you can <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">download a Windows nightly build</a>, attach a debugger, have it download the debug symbols automatically from our <a href="https://developer.mozilla.org/en/Using_the_Mozilla_symbol_server">symbol server</a>, and the debugger will download the matching source for you automatically.</p>
<p>I hope to get this backported to our 1.9.2 and 1.9.1 branches ASAP, so that our 3.5.x and 3.6 release builds will be similarly debuggable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2009/10/05/source-server-back-on-trunk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Packaging</title>
		<link>http://blog.mozilla.com/ted/2009/09/17/firefox-packaging/</link>
		<comments>http://blog.mozilla.com/ted/2009/09/17/firefox-packaging/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 18:09:25 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[building]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=35</guid>
		<description><![CDATA[I recently landed some changes (on trunk and 1.9.2) to the way Firefox packaging works. There are two immediate consequences of this you should be aware of: Mac builds now use a packaging manifest just like Windows and Linux. If you add a file that you intend to ship on Mac, it needs to wind [...]]]></description>
			<content:encoded><![CDATA[<p>I recently landed some changes (on trunk and 1.9.2) to the way Firefox packaging works. There are two immediate consequences of this you should be aware of:</p>
<ol>
<li>Mac builds now use a packaging manifest just like Windows and Linux. If you add a file that you intend to ship on Mac, it needs to wind up in a packaging manifest. (<a title=" Bug 463605 -  make Mac OS X packaging use a packaging manifest (like Windows and Linux)" href="https://bugzilla.mozilla.org/show_bug.cgi?id=463605">bug 463605</a>)</li>
<li>All the  packaging manifest files have been combined into one single file: <a href="http://mxr.mozilla.org/mozilla-central/source/browser/installer/package-manifest.in">browser/installer/package-manifest.in</a>. This should save everyone some time and annoyance. (<a title=" Bug 511642 -  use a single packaging manifest across all three platforms (with preprocessing)" href="https://bugzilla.mozilla.org/show_bug.cgi?id=511642">bug 511642</a>)</li>
</ol>
<p>These changes had no effect on applications other than Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2009/09/17/firefox-packaging/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SSL in Mochitest</title>
		<link>http://blog.mozilla.com/ted/2008/09/22/ssl-in-mochitest/</link>
		<comments>http://blog.mozilla.com/ted/2008/09/22/ssl-in-mochitest/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 19:47:00 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/?p=12</guid>
		<description><![CDATA[Without a lot of fanfare, a patch landed recently that enables the use of SSL with the test HTTP server we use in our Mochitest test harness. About five months ago, I read an article about how Fedora wanted to standardize on NSS as the cryptography solution for their distro in order to be able [...]]]></description>
			<content:encoded><![CDATA[<p>Without a lot of fanfare, <a title=" Bug 428009 -  hook up ssltunnel to mochitest" href="https://bugzilla.mozilla.org/show_bug.cgi?id=428009">a patch landed</a> recently that enables the use of SSL with the test HTTP server we use in our <a href="http://developer.mozilla.org/en/Mochitest">Mochitest test harness</a>.</p>
<p>About five months ago, I read <a href="http://fedoraproject.org/wiki/FedoraCryptoConsolidation">an article</a> about how Fedora wanted to standardize on NSS as the cryptography solution for their distro in order to be able to leverage a common certificate database, among other things. The article went into detail on how they wrote<a href="http://fedoraproject.org/wiki/Nss_compat_ossl"> an OpenSSL wrapper around NSS</a> so they could easily port applications that only supported OpenSSL to use NSS instead. As a concrete example, they showed a ported version of stunnel using NSS. This gave me pause, as one of the things we were lacking in our Mochitest harness was SSL support and stunnel would do exactly what we needed in this case. Considering we already build and ship NSS with every copy of Firefox, and it was clearly possible to implement the functionality we needed using NSS, I set out to figure out how to implement a bare-bones version of stunnel from scratch. After a bit of poking through the online <a title="NSPR API Reference" href="http://developer.mozilla.org/en/NSPR_API_Reference">NSPR</a> and <a title="NSS reference" href="http://developer.mozilla.org/En/NSS_reference">NSS</a> documentation, <a title="Bug 426867 - ssl proxy for mochitest " href="https://bugzilla.mozilla.org/show_bug.cgi?id=426867">I had a proof of concept application</a> which I called &#8220;ssltunnel.&#8221; After some insightful review comments from NSS developers I committed it to CVS.</p>
<p>Unfortunately, that wasn&#8217;t the end. We still needed to hook this program up to the test harness, and I just didn&#8217;t have the motivation to do so. I filed <a title="Bug 428009 - hook up ssltunnel to mochitest" href="https://bugzilla.mozilla.org/show_bug.cgi?id=428009">the bug</a>, and hoped someone else would do the work. (as I often do!) Thankfully, that someone appeared in the person of Honza Bambas, whom I can only describe as a &#8220;programming rockstar.&#8221; He not only integrated ssltunnel into Mochitest, but he rewrote large sections of it to make it work robustly and made it work as an HTTP proxy while he was at it. After some reviews, and a couple of landings and backouts due to unrelated test failures, and some time spent languishing in bugzilla, we finally made his patch stick.</p>
<p><img title="Screenshot of Firefox showing an SSL connection to example.com, with the security info panel open" src="http://people.mozilla.com/~tmielczarek/mochitest-ssl.png" alt="" /></p>
<p>Of course, now that we have this capability, we need tests to use it! Honza has written <a title="Mochitest - SSL and https enabled tests" href="http://developer.mozilla.org/en/Mochitest#SSL_and_https_enabled_tests">some great documentation</a> on what is currently available via Mochitest, and how to add custom servers and certificates other things you might want. If you get motivated to write some tests and hit a rough spot, feel free as always to track me down on IRC and ask me about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2008/09/22/ssl-in-mochitest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MochiTest Maker</title>
		<link>http://blog.mozilla.com/ted/2008/04/18/mochitest-maker/</link>
		<comments>http://blog.mozilla.com/ted/2008/04/18/mochitest-maker/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 18:40:58 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/2008/04/18/mochitest-maker/</guid>
		<description><![CDATA[Just something I threw together this morning: MochiTest Maker. It&#8217;s a pure HTML+JavaScript environment for writing MochiTests. It&#8217;s not as full-featured as the real MochiTest, as you can&#8217;t set HTTP headers or include external files, but it should serve for a lot of simple web content tests. Ideally at some point I&#8217;d like to add [...]]]></description>
			<content:encoded><![CDATA[<p>Just something I threw together this morning: <a href="http://ted.mielczarek.org/code/mozilla/mochitest-maker/">MochiTest Maker</a>. It&#8217;s a pure HTML+JavaScript environment for writing <a href="http://developer.mozilla.org/en/docs/Mochitest">MochiTests</a>. It&#8217;s not as full-featured as the real MochiTest, as you can&#8217;t set HTTP headers or include external files, but it should serve for a lot of simple web content tests.</p>
<p>Ideally at some point I&#8217;d like to add a CGI backend to this so you could specify a directory, and have it generate a patch against current CVS to include your test in that directory. That would lower the bar even further for getting new tests into the tree. Another cool addition would be to integrate this with my <a href="http://ted.mielczarek.org/code/mozilla/regression-search.html">regression search buildbot</a> (currently offline), so that you could write a mochitest and then with one click submit it to find out when something regressed. That shouldn&#8217;t be hard to do, but my buildbot needs to find a more permanent home first.</p>
<p>I think there&#8217;s still a lot more we can (and must) do to lower the bar for writing tests. We need all the tests we can get!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2008/04/18/mochitest-maker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging nightly builds with the source server</title>
		<link>http://blog.mozilla.com/ted/2008/04/15/debugging-nightly-builds-with-the-source-server/</link>
		<comments>http://blog.mozilla.com/ted/2008/04/15/debugging-nightly-builds-with-the-source-server/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 19:02:40 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[debugging]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/2008/04/15/debugging-nightly-builds-with-the-source-server/</guid>
		<description><![CDATA[Some time ago, we set up a symbol server for our Windows builds. This was sort of an afterthought, it just happened to be really easy to do in our new crash reporting architecture. It turns out that this is incredibly useful for people. This shouldn&#8217;t be surprising, given how difficult it is to build [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, we set up a <a href="http://developer.mozilla.org/en/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">symbol server</a> for our Windows builds. This was sort of an afterthought, it just happened to be really easy to do in our new crash reporting architecture. It turns out that <a href="http://developer.mozilla.org/en/docs/How_to_get_a_stacktrace_with_WinDbg" title="How to get a stacktrace with WinDbg">this is incredibly useful for people</a>. This shouldn&#8217;t be surprising, given how difficult it is to build your own Firefox. Some time after we set this up, I found out that Microsoft&#8217;s debuggers also supported something called a <a href="http://msdn2.microsoft.com/en-us/library/ms680641.aspx" title="MSDN - Source Server">source server</a> (Note: this page did not contain this much information when this project started). This sounded interesting, but it wasn&#8217;t something I had time to work on, so I <a href="http://zenit.senecac.on.ca/wiki/index.php?title=Mozilla_Source_and_Symbol_Server&amp;oldid=12245" title="Seneca Wiki - Mozilla Source and Symbol Server">added some information</a> to <a href="http://zenit.senecac.on.ca/wiki/index.php/Main_Page" title="Seneca Wiki">Seneca&#8217;s wiki</a>, hoping an interested student would pick it up as a class project.</p>
<p>To say that I got more than I hoped for would be an understatement. <a href="http://crashopensource.blogspot.com/" title="Crashing Into the World of Open Source (without a paddle) ">Lukas Blakk</a> took the project and ran with it, producing a working prototype and fleshing it out to the point where it now works perfectly on current nightly builds. She&#8217;s done an incredible job working with a practically undocumented feature of Microsoft&#8217;s debugging tools and having the perseverance to stick it out. As a result, you can now debug nightly Windows builds with full source available. We&#8217;ve got a handy <a href="http://developer.mozilla.org/en/docs/Using_the_Mozilla_source_server" title="Using the Mozilla source server">MDC document available</a> to tell you how. You&#8217;ll need a nightly from today (April 15th) or newer, and this will be available in the Firefox 3.0 release builds. Happy debugging!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2008/04/15/debugging-nightly-builds-with-the-source-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed++</title>
		<link>http://blog.mozilla.com/ted/2008/02/29/speed/</link>
		<comments>http://blog.mozilla.com/ted/2008/02/29/speed/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 12:43:26 +0000</pubDate>
		<dc:creator>Ted Mielczarek</dc:creator>
				<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/ted/2008/02/29/speed/</guid>
		<description><![CDATA[So, after much wrangling, we have turned on profile-guided optimization on our Windows nightly build machine. The immediate impact is that we got faster, by about 10% on some of our benchmarks. We also exposed at least one tricky layout bug that relied on undefined order of evaluation, but dbaron fixed it. Big thanks to [...]]]></description>
			<content:encoded><![CDATA[<p>So, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=418772" title="Bug 418772 – PGO scripts and input">after</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=419905" title="Bug 419905 – turn off pgo in places, mozstorage, sqlite">much</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=361343" title="Bug 361343 – build config for profile-guided optimization on Windows">wrangling</a>, we have <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=418865">turned on profile-guided optimization</a> on our Windows nightly build machine. The immediate impact is that <a href="http://graphs.mozilla.org/graph.html#spst=range&amp;spstart=0&amp;spend=1200306875&amp;bpst=cursor&amp;bpstart=0&amp;bpend=1200306875&amp;m1tid=53236&amp;m1bl=0&amp;m1avg=0" title="Graph server URL. It's ok if you don't want to look.">we got faster</a>, by about 10% on some of our benchmarks. We also exposed at least one <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420069" title="Bug 420069 – PGO layout regression with horizontal lists of links">tricky layout bug</a> that relied on undefined order of evaluation, but dbaron fixed it. Big thanks to <a href="http://blog.mozilla.com/rob-sayre/">Rob Sayre</a> and everyone else that made this possible!</p>
<p>Next up is probably going to be <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=418866" title="Bug 418866 – turn on profile-guided optimization on fx-linux-tbox">turning this on on our Linux nightly build machine</a>. I think we&#8217;ve resolved the issues there, but we&#8217;re going to wait until after beta 4 for that. Apparently we shipped Firefox 1.0 nightlies with PGO, so it should be ok, although that was back with gcc 3.3 or so.</p>
<p>We&#8217;d like to do this on Mac, but that still needs <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=419348" title="Bug 419348 – build config fixes for profile-guided optimization on mac">some work</a>. I&#8217;m hopeful that we&#8217;ll get there before Firefox 3 ships.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/ted/2008/02/29/speed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

