<?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>Xulforge Blog &#187; firefox</title>
	<atom:link href="http://xulforge.com/blog/tag/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://xulforge.com/blog</link>
	<description>Xulforge projects, code, and more</description>
	<lastBuildDate>Wed, 02 May 2012 00:31:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Running multiple Firefox instances on Mac OS</title>
		<link>http://xulforge.com/blog/2011/07/multiple-firefox-instances-mac/</link>
		<comments>http://xulforge.com/blog/2011/07/multiple-firefox-instances-mac/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 00:38:58 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=102</guid>
		<description><![CDATA[I visit my Google Plus Stream every now and then to see if there&#8217;s anything useful in it. Unsurprisingly, most of the time there isn&#8217;t anything. I blame primitive filtering and lack of users. But one thing that caught my eye was a post by sheppy, asking about running multiple versions of Firefox easily. While [...]]]></description>
			<content:encoded><![CDATA[<p>I visit my Google Plus Stream every now and then to see if there&#8217;s anything useful in it. Unsurprisingly, most of the time there isn&#8217;t anything. I blame primitive filtering and lack of users. But one thing that caught my eye was a post by sheppy, asking about running multiple versions of Firefox easily. While most add-on developers should have little problem with this, it&#8217;s kinda tricky to get this right on Mac OS. The lack of the &#8220;shortcut&#8221; concept is problematic, so running a matrix of multiple Firefox profiles and multiple Firefox versions (at the same time) can be troublesome. Specially now that we have <a href="http://www.mozilla.com/en-US/firefox/channel/">multiple channels</a> instead of &#8220;what we have&#8221; and &#8220;what&#8217;s coming&#8221;. Here&#8217;s what I do.</p>
<p>I use the Automator application that is part of all default Mac OS installations. This is a tool that allows you to create automated tasks, as you might have guessed. Then I do something like this:</p>
<ol>
<li>Open Automator.</li>
<li>Choose the Application template.</li>
<li>From the long list in the second column, double click on Run Shell Script. This will add a box on the main panel, with a text input.</li>
<li>Enter this: <em>/Applications/${APPLICATION}.app/Contents/MacOS/firefox-bin -P ${PROFILE} &gt; /dev/null &amp;</em></li>
<li>Replace ${APPLICATION} with the name of the application you want to run (Firefox, Aurora, Nightly, etc.). Replace ${PROFILE} with the name of the profile you want to run, or leave it blank to open the profile manager.</li>
<li>(Optional) Replace /dev/null with a file path to save the console output to a file.</li>
<li>Save the application to the Desktop.</li>
</ol>
<p>That&#8217;s it. You now have a Windows-style shortcut that opens a specific application and profile combination. Repeat as necessary and you&#8217;ll have all the shortcuts you need, which you can open in parallel (except opening the same profile with multiple applications, which would be a bad idea). My desktop has a matrix of profiles and applications that are very convenient for my testing needs. You may want to have them in the dock or elsewhere, but that&#8217;s a matter of preference. You can also change their icon, which is not really worthwhile IMO.</p>
<p>You can copy and paste applications and then open them in Automator to edit their parameters. You need to open Automator and then choose the Open option, there&#8217;s no contextual edit option, which is a bit of an annoyance.</p>
<p>If anybody has a different system to deal with this on Mac OS, I&#8217;d love to hear it.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2011/07/multiple-firefox-instances-mac/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Firefox 4 Add-on Compatibility presentation</title>
		<link>http://xulforge.com/blog/2010/07/firefox-4-add-on-compatibility-presentation/</link>
		<comments>http://xulforge.com/blog/2010/07/firefox-4-add-on-compatibility-presentation/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 17:45:56 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=78</guid>
		<description><![CDATA[I&#8217;m presenting about Firefox 4 Add-on Compatibility at the Mozilla Summit a little later today. Here are the slides in PDF version for all of those interested. Firefox 4 for Add-on Developers For now, this is a pretty good reference if you want to start supporting the Firefox 4 betas in your add-ons. I&#8217;ll be [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m presenting about Firefox 4 Add-on Compatibility at the Mozilla Summit a little later today. Here are the slides in PDF version for all of those interested.</p>
<p><a href="http://xulforge.com/blog/wp-content/uploads/2010/07/Firefox-4-for-Add-on-Developers.pdf">Firefox 4 for Add-on Developers</a></p>
<p>For now, this is a pretty good reference if you want to start supporting the Firefox 4 betas in your add-ons. I&#8217;ll be elaborating on this subject through the following weeks, in the Add-ons Blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/07/firefox-4-add-on-compatibility-presentation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>XPI v2 &#8211; Making Extension Development Easier</title>
		<link>http://xulforge.com/blog/2010/03/xpi-v2-making-ext-dev-easier/</link>
		<comments>http://xulforge.com/blog/2010/03/xpi-v2-making-ext-dev-easier/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 18:16:19 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[jetpack]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[xulschool]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/2010/03/xpi-v2-making-extension-development-easier/</guid>
		<description><![CDATA[Note: this is just me throwing some ideas around. It is not an official proposal or spec. Having said that, I would like everyone that has interest in extension development to read this post and tell me what they think. I’ve been an extension developer for a long time, and I like to think that [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Note:</strong> this is just me throwing some ideas around. It is not an official proposal or spec. Having said that, I would like everyone that has interest in extension development to read this post and tell me what they think.</p>
<p>I’ve been an extension developer for a long time, and I like to think that developing extensions is actually quite easy. Maybe it has to do with my C++/Java background, where setting up a development environment is much more involved than using a text editor and zipping some files together.<br />
That doesn’t negate the fact that the Mozilla add-ons platform is old, and showing its age. There are a number of problems with it that make it hard to take the first steps into add-on development, and it’s amazing how little has been done to solve them over the past years. These are the top 3 in my mind:</p>
<ul style="list-style-type: disc;">
<li>Extensions can’t be installed or uninstalled without a browser restart.
<ul style="list-style-type: hyphen;">
<li>That’s <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=256509">bug 256509</a>. Can it be fixed? Probably, but it would take a major development effort.</li>
</ul>
</li>
<li>The documentation about extension development is incomplete or outdated.
<ul style="list-style-type: hyphen;">
<li>I’m working on this in the <a href="https://developer.mozilla.org/en/XUL_School">XUL School</a> project, to be finished soon.</li>
</ul>
</li>
<li>Getting started with a basic “hello world” extension is too much effort: install.rdf, chrome.manifest, chrome JAR, content, skin, locale, defaults, OMG!</li>
</ul>
<p>The last point is the one I want to tackle in this post. There’s a ridiculous amount of boilerplate, redundant coding to do even for the most basic of add-ons, specially if you’re making an extension that should be skinable and localizable. These are the specific problems I’ve identified:</p>
<ul style="list-style-type: disc;">
<li>There are two manifest files: install.rdf and chrome.manifest, in completely different formats.</li>
<li>They are both defined in relatively obscure formats. The install.rdf file is one of the very few places where RDF is still used in Firefox. Sticking to a dying format (at least in this context) is a very bad idea.</li>
<li>The default chrome structure (with content, locale, skin, etc.) is too bureaucratic and inflexible, and almost completely redundant. Most add-ons have exactly the same structure, and having to define it every single time is unnecessary.</li>
</ul>
<p>I think we can reimagine add-on packaging in way that simple tasks can be performed in the simplest of ways, and so that it can scale to be as fine-tuned as it is today. So here are my ideas.<strong>#1 Merge install.rdf and chrome.manifest into a single file.</strong> What format should be used? I think JSON is as good as any other, and Mozilla already includes a native and very fast JSON parser. This manifest file could also match the <a href="https://jetpack.mozillalabs.com/sdk/0.1/docs/#guide/packaging">package.json manifests</a> being used for Jetpacks. <em>package.json</em> is actually a pretty good name for the manifest file. Perhaps the same standard can be use for Jetpacks and other add-ons?</p>
<p><strong>#2 Default to the root extension directory for chrome URLs in order to minimize chrome.manifest declarations.</strong> This means that a hello world extension could have this structure:</p>
<ul>
<li> helloworld.xpi2
<ul>
<li>package.json</li>
<li>overlay.xul</li>
<li>overlay.js</li>
<li>overlay.dtd</li>
</ul>
</li>
</ul>
<p>And the manifest file would be something like:</p>
<pre>{
  id : “helloworld@xulforge.com”,
  name : “Hello World!”,  
  type: “2”
  compatibility :    
    { id : “{ec8030f7-c20a-464f-9b0e-13a3a9e97384}”,
      minVersion : “3.5”,
      maxVersion : “3.6.*”},     
  domain: “helloworldchrome”,
  overlays:      
    { source : “chrome://helloworldchrome/content/overlay.xul”,
      target : “chrome://browser/content/browser.xul”}
}</pre>
<p>(Note: ‘compatibility’ and ‘overlays’ can be arrays when there’s more than one item. And the ‘domain’ value is a general declaration of the chrome domain.)</p>
<p>In this new system, you would be able to have all of your chrome files in the root directory and have no need for chrome directives other than declaring your main overlay. Also, in your root directory you can have a <em>locale</em> or <em>skin</em> folder that the system would know how to handle without any changes to the manifest. If a file isn’t found in the <em>locale</em> or <em>skin</em> folder, then the system falls back to the root directory as a last resource. Of course it would still be possible to declare specific locations for content, locale and skin in the manifest, in order to allow the “old style” to be used.</p>
<p>What about other special locations?</p>
<ul style="list-style-type: disc;">
<li><em>platform</em> and <em>components</em> will continue to have their special meanings.</li>
<li>JSM files can be handled just the same as chrome files, except that they use <em>resource://</em> instead of <em>chrome://</em>.</li>
<li>The default preferences file should also be moved to the root and have a predetermined name, like <em>defaultPrefs.js</em>.</li>
</ul>
<p><strong>#3 Installing the package.</strong> When you install an XPI file, the file is unpacked in your profile directory. It is common (but not mandatory) practice for chrome files to be packed in a JAR file, which remains packed after installation. According to <a href="http://autonome.wordpress.com/2010/03/10/firefox-extensions-and-performance/#comment-706">recent discussions about add-on performance</a>, it’s more efficient to keep files packed together. Instead of requiring authors to use the internal JAR approach, I think it makes more sense to require authors *not* to use JARs, and then keep the packed XPI in the profile on installation. Files that need to be extracted, like the manifest (maybe) and binary components (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533038#c3">according to this</a>) can be extracted upon installation. This way it’s up to the platform and not the developer to look after performance.That’s it. Given that this new packaging system would be backwards-incompatible with the current one, it might make sense to change the file extension to something like XPI2, in order to make a clearer distinction between the 2. However it should suffice to look for the manifest file in order to identify the system in use.<br />
How hard is this to implement? I think #1 and #3 are fairly simple to implement.  #2 is the one that may present a bigger challenge, since the chrome URL system is something that runs deep in the Mozilla code, and changing its file location rules could cause breakage or vulnerabilities in non-add-on code. It might also be possible to limit the scope of these changes to add-ons only, but again, that may require lots of work. I’d love to hear the opinions of those who work on this part of the platform.</p>
<p>Some may wonder how does Jetpack fit into this whole idea. Well, Jetpack is a different platform, and it may very well replace traditional add-ons in the long term, but <a href="http://blog.mozilla.com/addons/2010/01/11/add-ons-are-here-to-stay/">we’re still a long ways to go</a>. We shouldn’t see Jetpack as some kind of competition, but as a lesson in what we can do better. If we improve add-on packaging to be closer to Jetpack packaging (I think this would be), then it’s a win for both, because it’ll make it less painful for developers to choose and switch between either platform.</p>
<p>I’d love to hear what experienced developers (both add-on and platform) think about this. I think there’s a real gain for novice developers in this if we were to implement it. I intentionally left out some details for brevity, but I’ll be happy to discuss them in the comments. Thanks for reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/03/xpi-v2-making-ext-dev-easier/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>And now they wait&#8230;</title>
		<link>http://xulforge.com/blog/2010/01/and-now-they-wait/</link>
		<comments>http://xulforge.com/blog/2010/01/and-now-they-wait/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 17:05:39 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=33</guid>
		<description><![CDATA[I guess giving 3 month&#8217;s advanced notice wasn&#8217;t enough for most add-on authors. I guess this is partly our fault, and we should stress enough how important it is for them to stay up to date with Firefox new, or at least the Add-ons Blog. On Thursday, the update queue had about 80 add-on updates [...]]]></description>
			<content:encoded><![CDATA[<p>I guess giving 3 month&#8217;s <a href="http://blog.mozilla.com/addons/2009/10/30/time-to-update-your-add-ons-for-3-6/">advanced</a> <a href="https://forums.addons.mozilla.org/viewtopic.php?f=10&amp;t=93">notice</a> wasn&#8217;t enough for most add-on authors. I guess this is partly our fault, and we should stress enough how important it is for them to stay up to date with Firefox new, or at least the <a href="http://blog.mozilla.com/addons/">Add-ons Blog</a>.</p>
<p>On Thursday, the update queue had about 80 add-on updates in line to be reviewed. This is a short as it&#8217;s been for a very long time. Today it stands close to 200 updates, and will continue to grow in the following couple of weeks. All authors are now rushing out updates because they just realized Firefox 3.6 is out.</p>
<p>Well, now it&#8217;s up to the editor team to catch up. It&#8217;ll take a while, I think. Authors that decided to update after the 3.6 release will now have to wait. It&#8217;s bad for everyone, and the result of bad communication. That&#8217;s something we&#8217;ll need to work on.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/01/and-now-they-wait/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Introducing My Personas</title>
		<link>http://xulforge.com/blog/2009/05/introducing-my-personas/</link>
		<comments>http://xulforge.com/blog/2009/05/introducing-my-personas/#comments</comments>
		<pubDate>Thu, 28 May 2009 18:45:02 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[personas]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[xulforge]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=11</guid>
		<description><![CDATA[For my first &#8220;official&#8221; Xulforge project, I decided to take on a relatively simple task, so that I could get the site and blog started quickly. This way at least I have some content to show for while I work on larger projects . This first project is My Personas. This project is a set [...]]]></description>
			<content:encoded><![CDATA[<p>For my first &#8220;official&#8221; Xulforge project, I decided to take on a relatively simple task, so that I could get the site and blog started quickly. This way at least I have some content to show for while I work on larger projects <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . This first project is <a title="My Personas project at Xulforge" href="http://xulforge.com/personas/">My Personas</a>.</p>
<p>This project is a set of skins for the <a href="http://www.getpersonas.com/">Personas</a> extension. Personas is a new approach to developing themes for Firefox and other Mozilla apps. Creating a skin is pretty simple: all you need is a header image and a footer image. Creating a good one is a little harder; you&#8217;ll need to fill a very, very large image area, while at the same time keeping in mind that only a tiny fraction of the image will be visible in the majority of browsers. Patterns and other artificial designs are probably easier, but mine are just extracts from my large photo collection, so it&#8217;s trickier.</p>
<p>I have a list of the skins I&#8217;ve created in the <a href="http://xulforge.com/personas/">project page</a>, with explanations on why I chose the pictures. So far my designs are doing pretty well, with a few hundred active daily users at this time. You can see the user counts in <a href="http://personas.services.mozilla.com/gallery/Designer/jorgev">my designer page</a>.</p>
<p>My skins were all created using <a href="http://www.gimp.org/">The Gimp</a>, and the pictures were taken with 2 different models of the Canon PowerShot (I upgraded recently). Artistic feedback is greatly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2009/05/introducing-my-personas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Regarding Fire.fm</title>
		<link>http://xulforge.com/blog/2009/05/regarding-firefm/</link>
		<comments>http://xulforge.com/blog/2009/05/regarding-firefm/#comments</comments>
		<pubDate>Thu, 28 May 2009 00:44:14 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[fire.fm]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=7</guid>
		<description><![CDATA[Fire.fm is a project that a friend and I began in order to compete in the Extend Firefox 3 competition, particularly to participate in the Best Music Add-on, which was being sponsored by Last.fm. I was a big fan of Last.fm at the time, given that it offered free online radio all around the world.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/en-US/firefox/addon/7684">Fire.fm</a> is a project that a friend and I began in order to compete in the Extend Firefox 3 competition, particularly to participate in the Best Music Add-on, which was being sponsored by <a href="http://last.fm/">Last.fm</a>. I was a big fan of Last.fm at the time, given that it offered free online radio all around the world.  Sadly, that <a href="http://blog.last.fm/2009/04/22/radio-subscriptions">ended somewhat abruptly</a>.</p>
<p>Anyway, at the time we were pretty excited about it, and we spent a great deal of time and effort making Fire.fm a sure winner. And <a title="Extend Firefox 3 Winners Announcement" href="http://blog.mozilla.com/extendfirefox/2008/08/21/extend-firefox-3-winners/">we won</a>! We won the Best Music Add-on category, and I think we weren&#8217;t allowed to win in others, because I think we should have won the general competition as well <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Needless to say, we were super happy with this, and we have been actively maintaining the add-on in our spare time.</p>
<p>Fire.fm is, in a nutshell, a Last.fm radio player. It used to be a very easy way to tune into Last.fm radio without having to be on top of the website all day long. Our users loved it, and shortly we were in the AMO Recommended List.</p>
<p>Sadly, Last.fm cut off their free radio service to most of the world shortly afterward, so at least I lost a lot of the motivation I initially had to continue making it grow. Still, I don&#8217;t want to abandon a project that still has much to be fixed, so I&#8217;ll certainly won&#8217;t quit until all the annoying bugs are solved. Most users have a very smooth experience with Fire.fm, but there are a few unlucky ones that have some serious problems, like not being able to listen to stations at all&#8230; New features in Fire.fm are probably going to be very rare from version 1.2.3 and later.</p>
<p>Xulforge was already in my mind when we began working on Fire.fm, so I always kinda saw it as a Xulforge project. Xulforge was put on hold until very recently, so it feels weird trying to associate the two. I&#8217;ll keep Fire.fm in my project list, though, because I it was one of my first independent projects, and also because it has been very successful and I&#8217;m very proud of it.</p>
<p>Fire.fm is open source, BSD-licensed (more on that in another post). So, if you want to take a look into our code, you&#8217;re more than welcome. See the <a href="https://sourceforge.net/projects/firefm/">Fire.fm Sourceforge Project Page</a> for more information.</p>
<div id="attachment_8" class="wp-caption aligncenter" style="width: 110px"><a href="https://sourceforge.net/projects/firefm/"><img class="size-full wp-image-8" title="Fire.fm Logo" src="http://xulforge.com/blog/wp-content/uploads/2009/05/logo100.png" alt="Fire.fm Logo" width="100" height="100" /></a><p class="wp-caption-text">Fire.fm Logo</p></div>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2009/05/regarding-firefm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
