<?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; projects</title>
	<atom:link href="http://xulforge.com/blog/tag/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://xulforge.com/blog</link>
	<description>Xulforge projects, code, and more</description>
	<lastBuildDate>Fri, 03 Feb 2012 21:02:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>My experience porting an add-on to Mobile Firefox</title>
		<link>http://xulforge.com/blog/2011/10/porting-an-add-on-to-mobile/</link>
		<comments>http://xulforge.com/blog/2011/10/porting-an-add-on-to-mobile/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 00:44:47 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[remotexulmanager]]></category>
		<category><![CDATA[xulforge]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=112</guid>
		<description><![CDATA[I&#8217;ve been meaning to experiment more with Mobile Firefox for a while, but I&#8217;ve had very little time to work on my own add-ons, which are the best source of real-world development experience for me. Since I had received a couple of requests to port Remote XUL Manager to mobile, and this is a fairly [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to experiment more with Mobile Firefox for a while, but I&#8217;ve had very little time to work on my own add-ons, which are the best source of real-world development experience for me. Since I had received a couple of requests to port <a href="https://addons.mozilla.org/en-US/firefox/addon/remote-xul-manager/">Remote XUL Manager</a> to mobile, and this is a fairly simple extension, I thought this would be the ideal learning experience.</p>
<p>Since I already had a working desktop extension, the amount of coding needed was <a href="https://github.com/jvillalobos/Remote-XUL-Manager/commit/e33f34e680224204abcb3c12e49828d145406be9">fairly small</a>. However, I did encounter several difficulties along the way, which I think are worth documenting. Here&#8217;s how it went.</p>
<h2>Documentation</h2>
<p>The first thing I looked for was documentation. It&#8217;s not hard to find the <a href="https://developer.mozilla.org/en/mobile">Mobile documentation</a> page if you know that the Mozilla Developer Network exists. That&#8217;s a good hub with useful tidbits, although it could use some cleanup and consolidation. Many of its useful links lead to the Mozilla wiki, outside of MDN, and they are written in the format you expect for the wiki, not MDN. The <a href="https://wiki.mozilla.org/Mobile/Fennec/Extensions">Fennec Extensions page</a> covers some of the basics, but it fails to say how to create a basic overlay. Something many developers need to know to get started is which chrome path is necessary to overlay. I believe it&#8217;s the same path as in Firefox, but I ended up not using an overlay at all.</p>
<h2>UI</h2>
<p>Figuring out the UI for my port was one of the most difficult steps. In Firefox I just add a menu item that opens the main management window. My extension also has a few extra windows for advanced features, but early on I decided not to support them in the mobile version.</p>
<p>The only UI area you really have available is the content, so I decided to create an <em>about:remotexul</em> XUL page. This requires registering a JS component instead of an overlay, and the component just tells Firefox to redirect <em>about:remotexul</em> to a XUL page in my chrome package. So, instead of clicking on a menu item, the user has to type this URL. Not terribly user-friendly, but not that bad either. I considered adding a button somewhere, but gave up almost immediately.</p>
<p>Which leads me to a few questions about mobile add-on development. Firstly, how can we expect add-ons to be built for mobile if there is no place for them in the UI? Do we only want add-ons that work silently in the content? And (more importantly IMO) are we applying the same philosophy for tablets? It seems that, at least in terms of add-ons and UI space, mobile phones and tablets are entirely different playgrounds.</p>
<p>My take on it is that we need an Add-on Bar for both. The panel on the right-hand side can afford one more button, and this button could toggle another panel where add-on buttons can live. A similar approach could be used for tablets, but in their case I think the toolbar could be enabled by default (provided it has buttons in it). Having no way to add UI is a gigantic obstacle in the way of add-on creation for mobile. The possibility of improving performance through more native UI toolkits is also a looming obstacle that we&#8217;ll need to tackle.</p>
<p>As a minor side note, I noticed some drawing oddities when panning my XUL document in the content area. I guess XUL content hasn&#8217;t been given enough attention on mobile, so if you want to take this same approach, you might want to consider using HTML instead.</p>
<h2>Testing environment</h2>
<p>Getting Mobile Firefox set up was much more difficult than I expected.</p>
<p>Since there&#8217;s a desktop emulator of Mobile Firefox and I didn&#8217;t have any supporting mobile devices at the moment, this was my only way to test. So I went to the main <a href="http://www.mozilla.org/en-US/mobile/">Mobile page</a> to download the emulator. Oddly enough, this page offered (and continues to offer) version 4.0.1, which is a few releases old by now. The &#8220;See all our channels&#8221; link takes you to the desktop Firefox channels page, and changing <em>firefox</em> for <em>mobile</em> in the URL leads to a 404.  So I downloaded 4.0.1, and one of the first things I tried was to check for updates. There were none.</p>
<p>Hmm, ok, so I needed to do a little hunting for the emulator. Luckily, the MDN page has a direct link to the <a href="https://ftp.mozilla.org/pub/mozilla.org/mobile/releases/">FTP site</a>, with all builds for all platforms. So I downloaded the Mobile Firefox 6 emulator for Mac OS. I fired it up and everything looks OK until I try to load a page. Any page turns up blank. So I go to the #mobile channel on IRC and ask around. I am told to use Linux instead&#8230; But I also got a useful <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=670763">bug link</a>. It turns out that the switch to multiple processes for Mobile Firefox broke the Mac OS build, and I guess it&#8217;s not such a big priority to get that sorted out. I suppose that this bug will get more attention once desktop Firefox goes multi-process for content.</p>
<p>At this point I realized I was going the <em>about:</em> page route for the UI, so I was able to test and debug most of the port in desktop Firefox. Then the Mozilla All Hands came along and I got a new Asus Android tablet for testing, so no more emulation for me <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>The build-install-test cycle was really slow for me, though, since the easiest way to get the extension installed is to upload it to some public URL and install it using InstallTrigger (a bit of JS magic used to install add-ons from HTML). If you can use the emulator in your system, though, file:// URLs work fine as a shortcut.</p>
<h2>Tools</h2>
<p>I also felt the lack of development tools, some of which are key to add-on development.</p>
<p>I commonly used the <a href="https://developer.mozilla.org/en/Toolkit_API/FUEL">FUEL library</a> in my add-ons. Since it isn&#8217;t supported on mobile, I had to get rid of that code. Luckily, it wasn&#8217;t much I needed to change. There is ongoing work to port Jetpack to mobile, so that will probably become the best set of libraries available for add-ons in the future. For now I&#8217;ll just plug to components directly.</p>
<p>DOM Inspector is another tool I use heavily. But, is it even possible to have something like DOMi on mobile? Maybe on the tablet version, but certainly not on a phone&#8230; However, I think there are ways around this. It should be possible to integrate DOMi into the emulator. You can have it open in a separate window and inspect the mobile UI from there. Another random idea I have is to wrap the Mobile Firefox emulator as an extension you can install in desktop Firefox, so you get the benefits of all development tools that are already part of Firefox. I&#8217;m not sure if that&#8217;s feasible, though.</p>
<h2>Conclusions</h2>
<p>There are still many rough edges when diving into mobile add-ons for Firefox, some of which I think are not hard to fix. But there are also hard problems to solve, and hard questions to ask: does it make sense to support such a wide variety of add-ons in a mobile phone browser? And what about tablets?</p>
<p>This is an almost exhaustive list of the problems I encountered while porting my add-on, so I hope it isn&#8217;t taken the wrong way. The truth is that most of my code worked without any modifications. It is very satisfying to be able to support even more users of my add-on, and to have one of the few desktop+mobile add-ons around. Plus, tinkering around with code, failing and then succeeding is just plain fun <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Remote XUL Manager 1.1 is the first version that supports mobile, and it&#8217;s currently waiting to be reviewed (irony!). You can give it a try on <a href="https://addons.mozilla.org/en-US/firefox/addon/remote-xul-manager/versions/?page=1#version-1.1">this page</a>.</p>
<p>I&#8217;d love to hear what others have to say about trying to port add-ons to mobile. If you have any similar stories, please share them in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2011/10/porting-an-add-on-to-mobile/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Projects update</title>
		<link>http://xulforge.com/blog/2011/03/projects-update/</link>
		<comments>http://xulforge.com/blog/2011/03/projects-update/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 01:24:17 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[fire.fm]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[pneuma]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=85</guid>
		<description><![CDATA[Since I haven&#8217;t blogged here for quite a while, I thought it&#8217;d be good to do the mandatory WordPress version update and then post a little update on the side projects I&#8217;m currently working on: Remote XUL Manager has taken most of my spare time. It&#8217;s been exciting just because it&#8217;s a fairly new project [...]]]></description>
			<content:encoded><![CDATA[<p>Since I haven&#8217;t blogged here for quite a while, I thought it&#8217;d be good to do the mandatory WordPress version update and then post a little update on the side projects I&#8217;m currently working on:</p>
<ul>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/remote-xul-manager/">Remote XUL Manager</a> has taken most of my spare time. It&#8217;s been exciting just because it&#8217;s a fairly new project and it had a pretty well-defined goal, which was reached only a few days ago. Version 1.0 was released on March 10th, and it does every I planned for this add-on to do. There are a couple of feature requests that I will consider in due time, but they&#8217;re pretty minor and I&#8217;m satisfied with the current state of this project.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/firefm/">Fire.fm</a> has taken the back seat. In the past few months all we&#8217;ve done is update locales, clean up some code, and push a few bug fixes (and then fixes on the fixes, and so on&#8230;). We have some plans for version 1.5, but it&#8217;s getting harder and harder to find the time for this. Specially because Last.fm keeps closing down their service and that has a very negative effect on my motivation. If it weren&#8217;t for the people that still use it &#8211; close to 200K &#8211; I would have abandoned this add-on a long time ago.</li>
<li>My <a href="http://xulforge.com/blog/2010/05/add-on-manifests-revisited-wiki/">Add-on Packaging Proposal</a> for the Google Summer of Code never gained any traction. Unfortunately the project was abandoned by the student assigned to it, so the whole idea stalled and was discarded. Now I&#8217;ve been approached by somebody who is interested in working on it. That&#8217;s very encouraging, but I need to give this some thought. I&#8217;ve been planning on reviewing the whole spec and giving it an overhaul based on all the stuff that has changed with Firefox 4 and the feedback I received. I&#8217;ll post here when (and if) I have an updated draft.</li>
<li>The band I help as Executive Producer, <a href="http://pneumametal.com/">Pneuma</a>, has had a great deal of success locally, and they&#8217;re getting ready to tour Mexico and Europe. It&#8217;s very exciting times for them and I&#8217;m glad to be a part of this.</li>
</ul>
<p>It&#8217;s been crazy times for me and the AMO Editor team. We had a very successful competition that yielded a incredible throughput and over 2500 reviews by the top 4 winners alone. And yet we&#8217;re still swamped with review submissions due to the upcoming Firefox 4 launch and the <a href="http://blog.mozilla.com/addons/2011/02/17/sandboxed-add-ons-disabled-next-week/">mass disabling of sandboxed add-ons</a>, which resulted in a great deal of new submissions of old add-ons.</p>
<p>I have a bunch of ideas for new add-ons that I wish I had the time to work on. For now, I just write them down on my Someday list and wait <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2011/03/projects-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GSOC Project Update: Cancelled</title>
		<link>http://xulforge.com/blog/2010/09/gsoc-project-update-cancelled/</link>
		<comments>http://xulforge.com/blog/2010/09/gsoc-project-update-cancelled/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 21:41:27 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=82</guid>
		<description><![CDATA[I&#8217;ve been meaning to write about this for a while now, but I just haven&#8217;t had the time for it given all the work I&#8217;ve been doing surrounding the Firefox 4 release. The editor review queues are predictably getting much more submissions, and I&#8217;ve been trying to keep add-on developers up to date with Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to write about this for a while now, but I just haven&#8217;t had the time for it given all the work I&#8217;ve been doing surrounding the Firefox 4 release. The editor review queues are predictably getting much more submissions, and I&#8217;ve been trying to keep add-on developers up to date with Firefox 4 <a href="http://blog.mozilla.com/addons/2010/07/21/compatibility-for-firefox-4-time-to-get-started/">breaking</a> <a href="http://blog.mozilla.com/addons/2010/08/31/compatibility-firefox-4-beta-4/">changes</a>.</p>
<p>A while ago I suggested a different packaging system for add-ons that would (arguably) make it easier to work with. I proposed it as a project for the Google Summer of Code, and <a href="http://xulforge.com/blog/2010/05/add-on-packaging-ideas-gsoc/">it was accepted</a>. That was kind of unexpected, and I was very excited to be part of that experiment. There was a good student submission for the project and everything looked well underway.</p>
<p>Fast forward a few months, and I was contacted by the student working on the project. He wanted to drop it due to lack of time and progress <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . After chatting for a while, I agreed with him that dropping it was for the best. In the end the problem was a mixture of poor communication and a scheduling mismatch between the summer break in the US and other countries (Brazil in this case). He just couldn&#8217;t focus on the project due to school work.</p>
<p>So, the experimental implementation never happened, but the idea lives on. The project&#8217;s approval motivated me to create a <a href="https://wiki.mozilla.org/User:Jorge.villalobos/AddonPackaging">pretty decent spec</a> that I&#8217;ll update once Firefox 4 is released. Many changes have been introduced in Firefox 4 that affect manifest files, and others that overlap with some of the proposed features. Once Firefox 4 is stable for add-on developers, I&#8217;ll update the wiki and probably post an update here. I don&#8217;t have any plans to implement this or push the idea too hard, but I still think there&#8217;s some value there and it&#8217;s worthwhile to keep it alive.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/09/gsoc-project-update-cancelled/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Add-on packaging &#8211; Manifests revisited and wiki</title>
		<link>http://xulforge.com/blog/2010/05/add-on-manifests-revisited-wiki/</link>
		<comments>http://xulforge.com/blog/2010/05/add-on-manifests-revisited-wiki/#comments</comments>
		<pubDate>Tue, 25 May 2010 23:35:22 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=73</guid>
		<description><![CDATA[I&#8217;ve been spending some time working on the new wiki for the Add-on Packaging Spec. Here it is. At the moment I&#8217;m writing the complete manifest file specification, basically copying and adapting the current specifications for install manifests and chrome manifests. I&#8217;m pretty much done with the former, and will be adding the latter probably [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been spending some time working on the new wiki for the Add-on Packaging Spec. <a href="https://wiki.mozilla.org/User:Jorge.villalobos/AddonPackaging">Here it is</a>.</p>
<p>At the moment I&#8217;m writing the complete manifest file specification, basically copying and adapting the current specifications for <a href="https://developer.mozilla.org/en/Install_Manifests">install manifests</a> and <a href="https://developer.mozilla.org/en/Chrome_Registration">chrome manifests</a>. I&#8217;m pretty much done with the former, and will be adding the latter probably tomorrow.</p>
<p>After receiving lots of feedback regarding the manifest format, I agreed to take the manifest file the XML way. I followed JJ Barton&#8217;s suggestion of using HTML instead of a custom XML format, which leads to a very <a href="https://wiki.mozilla.org/User:Jorge.villalobos/AddonPackaging/Manifest#Example_minimal_manifest">simple and familiar</a> manifest format, with some very nice <a href="http://xulforge.com/addonpackaging/manifest.html">visualization options</a>. This is the first time I&#8217;ve used the <em>:before</em> pseudo-class and the CSS <em>content</em> property, and I must say that they blew me away, limited as the latter is. Cool stuff.</p>
<p>If you want to discuss the pros and cons of the HTML manifest format, please fire away in the comments. I will be adding more content to the wiki as the project progresses.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/05/add-on-manifests-revisited-wiki/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Add-on packaging spec, part 3</title>
		<link>http://xulforge.com/blog/2010/05/add-on-packaging-spec-3/</link>
		<comments>http://xulforge.com/blog/2010/05/add-on-packaging-spec-3/#comments</comments>
		<pubDate>Thu, 20 May 2010 16:18:24 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=67</guid>
		<description><![CDATA[This is a specification for a project that will be implemented for the Google Summer of Code, and it can still change as feedback is received. There are no concrete plans of making this a part of Firefox in the near future. Read my previous post for more info. Part 3 – Installation Add-on performance [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a specification for a project that will be   implemented for the Google Summer of Code, and it can still change as   feedback is received. There are no concrete plans of making this a part   of Firefox in the near future. Read my <a href="../2010/05/2010/05/add-on-packaging-ideas-gsoc/">previous   post</a> for more info.</strong></p>
<h2>Part 3 – Installation</h2>
<p>Add-on performance has been a hot topic recently, given that add-ons are a significant contributor to slowdowns, specially at startup. One of the reasons I&#8217;ve seen mentioned is how extensions are laid out in the file system after installation. The suggestion is to educate developers on how to <a href="http://autonome.wordpress.com/2010/03/10/firefox-extensions-and-performance/#comment-706">package add-ons taking performance into account</a>. That&#8217;s not a bad approach, but I think it&#8217;s easier for developers and more effective in general if the post-install procedure handles performance optimizations. This might even be necessary, considering that different applications and different platforms can have different ways to optimize for performance.</p>
<p>The add-on installer should package most if not all files into a single, uncompressed JAR file, as suggested in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533038">this bug report</a>:</p>
<ul>
<li>Add-ons in the new format should not have internal chrome JARs.</li>
<li>All files that can be efficiently read from a JAR file will be moved into a single uncompressed JAR (like a TAR) upon installation. This is a single JAR for all add-ons using the new system. One possible &#8220;cheat&#8221; to accomplish this is to create a fake add-on install directory, with a single JAR and a generated manifest that includes the information for all add-ons contained in it. This manifest could even be an &#8220;old style&#8221; chrome.manifest, in case changing chrome resolution rules turns out to be too difficult.</li>
<li>Files that can&#8217;t be put in the JAR (this is mentioned in the bug report, and I don&#8217;t know why this is the case), such as binary libraries and components should ideally be grouped together in the same place where the big JAR will be located. One concern here would be file name collisions and the way these files are automagically loaded from their special folders, which may be hard to overcome. In case this is too difficult, it&#8217;s probably best to lay them out like it&#8217;s done now: on their separate extension directories.</li>
</ul>
<p>From a performance perspective, this is what makes most sense for all platforms as far as I know, so it would be the default and maybe only behavior. However, if different packaging requirements come up for specific platforms, it can and should be implemented, with the great advantage that it will be possible to do so, at least with add-ons using the new system.</p>
<h2>Spec corrections</h2>
<ul>
<li>By far, the most debated point in this spec has been the format chosen for the manifest. I&#8217;m convinced now, JSON was not the right way to go. I really like John J Barton&#8217;s idea of an HTML manifest, so I think I will pursue this approach. It makes sense due to familiarity, IDE support and even skinability. Somebody mentioned that I should also cover update.rdf and McCoy. This will be done in the new XML-based spec, and it should be very straightforward.</li>
<li>In part 2 I mentioned that having internal JARs would still be possible. I&#8217;m reconsidering this decision. Since the new format is meant to be a fresh start in several regards, I&#8217;m thinking it would be a bad idea to drag these old practices back, considering that they would have a negative effect on the post-install process.</li>
</ul>
<p>The final project spec will be moved to a wiki, where it makes more sense to have a document that will likely see many iterations and corrections. I will being working on this as soon as possible, and will post a link in this blog once there&#8217;s something everybody can look at.</p>
<p>I will also post updates when there&#8217;s more progress on the project.</p>
<h2>Acknowledgements</h2>
<ul>
<li>Google, for creating the very cool GSOC and keeping it alive for many years.</li>
<li>Gerv, choffman, and all GSOC admins.</li>
<li>Hebert Duarte, for volunteering to implement this project.</li>
<li>Everyone who has been posting comments and giving me feedback. It&#8217;s all very valuable and not a single comment has gone unread.</li>
</ul>
<p>Thank you all!</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/05/add-on-packaging-spec-3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Add-on packaging spec, part 2</title>
		<link>http://xulforge.com/blog/2010/05/add-on-packaging-spec-2/</link>
		<comments>http://xulforge.com/blog/2010/05/add-on-packaging-spec-2/#comments</comments>
		<pubDate>Wed, 19 May 2010 01:12:33 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=61</guid>
		<description><![CDATA[This is a specification for a project that will be implemented for the Google Summer of Code, and it can still change as feedback is received. There are no concrete plans of making this a part of Firefox in the near future. Read my previous post for more info. Part 2 – URL resolution Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a specification for a project that will be  implemented for the Google Summer of Code, and it can still change as  feedback is received. There are no concrete plans of making this a part  of Firefox in the near future. Read my <a href="../2010/05/add-on-packaging-ideas-gsoc/">previous  post</a> for more info.</strong></p>
<h2>Part 2 – URL resolution</h2>
<p>Here&#8217;s a simple chrome.manifest file, as exemplified in part 1:</p>
<pre>content   xulschoolhello              jar:chrome/xulschoolhello.jar!/content/
skin      xulschoolhello  classic/1.0 jar:chrome/xulschoolhello.jar!/skin/
locale    xulschoolhello  en-US       jar:chrome/xulschoolhello.jar!/locale/en-US/

overlay chrome://browser/content/browser.xul  chrome://xulschoolhello/content/browserOverlay.xul</pre>
<p>There are two things I find silly about it:</p>
<ol>
<li>The file and directory structure is too complicated for a simple add-on. It could be simpler, but the form above is the current recommended way of doing things.</li>
<li>If this is the default, recommended way of doing things, then why is it necessary to explicitly declare it?</li>
</ol>
<p>This part of the specification aims to remove as much redundancy as possible from chrome (and other) declarations, as well as provide sensible defaults so that simple add-ons are simple to develop.</p>
<h3>The simplest manifest</h3>
<p>Let&#8217;s begin with the new manifest file introduced in the previous part of the spec:</p>
<pre>{
  "id" : "helloworld@xulschool.com",
  "name" : "XUL School Hello World",
  "description" : "Welcome to XUL School!",
  "version" : "0.1",
  "authors" : "Appcoast",
  "homepageURL" : "https://developer.mozilla.org/en/XUL_School",
  "type" : "2",
  "targetApplications" : {
    "id" : "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
    "minVersion" : "3.0",
    "maxVersion" : "3.6.*"
  },
<strong>  "domains" : "xulschoolhello",
  "overlays" : {
    "source" : "chrome://xulschoolhello/content/overlay.xul",
    "target" : "chrome://browser/content/browser.xul"
  }</strong>
}</pre>
<p>A couple of notes before diving in:</p>
<ul>
<li>There&#8217;s an ongoing discussion of what format is best for the manifest, JSON or some form of XML or HTML. Examples are being presented as JSON but could change eventually. If you want to join the discussion, please do so in <a href="http://xulforge.com/blog/2010/05/add-on-packaging-spec/">Part 1</a>.</li>
<li>The &#8220;domains&#8221; property is now plural, as it should be. (Thanks Wladimir!)</li>
</ul>
<p>The highlighted sections are the equivalent of the chrome.manifest file presented above. The &#8220;domains&#8221; declaration covers the &#8220;content&#8221;,  &#8220;skin&#8221; and &#8220;locale&#8221; declarations in the old format. However, the file layout also needs to change, since the defaults for the new format are much simpler than in the old one. Here are the default resolutions for all URLs and other special folders:</p>
<ul>
<li>&#8220;content&#8221; and &#8220;skin&#8221; URLs default to the root directory, where the manifest file is located. This means that the simplest of add-ons would consist of the manifest file and an overlay file zipped together. Complex add-ons would of course require directory structures in order to keep everything organized, but that&#8217;s left to the authors to determine.</li>
<li>&#8220;locale&#8221; URLs are a little more involved. If the author only wishes to ship the add-on in one locale, then the locale files can be located in the root directory, just like &#8220;content&#8221; and &#8220;skin&#8221; files. If there are more languages, they can be organized under &#8220;/locale/en-US/&#8221; and similar. The &#8220;locale&#8221; directory in the root would have that special meaning, and all directories within it are considered locale folders and are automatically registered. There&#8217;s no need for chrome declarations even in this case.</li>
<li>&#8220;resource&#8221; URLs will also default to the root directory, and will use the same domain. In the example extension above, &#8220;resource://xulschoolhello/hello.jsm&#8221; would point to the &#8220;hello.jsm&#8221; file in the root of the add-on package.</li>
<li>The &#8220;components&#8221; and &#8220;platform&#8221; folders will continue to have their special meaning.</li>
<li>The default preferences file will be named &#8220;defaultPrefs.js&#8221; and will also reside in the package root.</li>
</ul>
<h3>Advanced manifests</h3>
<p>The defaults defined above should be adequate for most add-ons I&#8217;ve ever seen (and I&#8217;ve seen a lot!), but we can&#8217;t leave out add-ons that require more than this. It&#8217;s very important that the new system is as flexible as possible for authors, and that add-ons can be migrated to it without requiring significant changes or refactoring.<br />
First of all, the &#8220;domains&#8221; attribute can be extended to include declarations similar to old-style manifests. Here&#8217;s the equivalent of the first chrome.manifest declarations in the first example:</p>
<pre>"domains" : {
  "name" : "xulschoolhello",
  "content" : {
    "location" : "jar:chrome/xulschoolhello.jar!/content/"
  },
  "skin" : {
    "location" : "jar:chrome/xulschoolhello.jar!/skin/"
  },
  "locale" : {
    "locale" : "en-US",
    "location" : "jar:chrome/xulschoolhello.jar!/locale/en-US/"
  }
},</pre>
<p>Some notes about this expanded format:</p>
<ul>
<li>&#8220;domains&#8221; can be an array, in case multiple domains need to be defined.</li>
<li>The name of the skin is still redundant, so there&#8217;s no need to specify it.</li>
<li>&#8220;content&#8221;, &#8220;skin&#8221;, &#8220;locale&#8221; and &#8220;resources&#8221; can be arrays, to specify multiple entries.</li>
<li>&#8220;content&#8221;, &#8220;skin&#8221;, &#8220;locale&#8221; and &#8220;resources&#8221; support a &#8220;flags&#8221; attribute, in order to support <a href="https://developer.mozilla.org/en/Chrome_Registration#Manifest_Flags">manifest flags</a>. This attribute can also be specified on overlays, overrides and style declarations, which are not exemplified but are the same as the overlay declaration shown before.</li>
</ul>
<p>Moreover, it should be possible to change the locations of any of our &#8220;special&#8221; files and folders, in order to give developers maximum flexibility. For this, the manifest can have a &#8220;locations&#8221; attribute, exemplified here:</p>
<pre>"locations" : {
  "defaultPrefs" : "prefs/myPrefs.js",
  "components" : "code/myComponents/",
  "platform" : "code/platform/"
},
</pre>
<p>The only file that has a mandated name and location would be the manifest file. The rest can be organized to the authors&#8217; preference, provided they don&#8217;t like the defaults and they want to tinker with the manifest.</p>
<h3>Manifest Localization</h3>
<p><a href="https://developer.mozilla.org/en/Install_Manifests#localized">Localizing manifests</a> is an arduous task. The most modern way to do it involves adding all the localized information in the manifest file, which isn&#8217;t yet supported by the most popular add-on localization community, Babelzilla. Keeping the manifest properly localized becomes a burden to add-on developers, and most don&#8217;t even bother.</p>
<p>The suggested solution in the new system is to take advantage of the existing localization infrastructure. The manifest localization file will default to the location &#8220;chrome://firstDeclaredDomain/locale/manifest.properties&#8221;, or can be explicitly defined (needs to be a chrome locale URL):</p>
<pre>"localized" : "chrome://xulschoolhello/locale/manifest.properties",
</pre>
<p>This localized file would hold strings corresponding to the <a href="https://developer.mozilla.org/en/Install_Manifests#localized">localizable attributes</a>:</p>
<pre>name = Hola Mundo de XUL School
description = Bienvenido a XUL School!
translator.1 = Jorge
translator.2 = Somebody else</pre>
<p>The .1 and .2 suffix is just a way to handle multi-valued attributes.</p>
<p>Moving this information out of the manifest has one drawback: the add-on installer needs to do some additional effort to show these values during installation, since it will require to figure out the location of the localized file. This isn&#8217;t too hard to figure out using the manifest, though, and the advantages outweigh a few additional ms during installation.</p>
<p>Part 3 of this specification will cover add-on installation and any pending topics. It will also introduce a wiki page where the full spec will be fleshed out and all edge cases will be covered.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/05/add-on-packaging-spec-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Add-on packaging spec, part 1</title>
		<link>http://xulforge.com/blog/2010/05/add-on-packaging-spec/</link>
		<comments>http://xulforge.com/blog/2010/05/add-on-packaging-spec/#comments</comments>
		<pubDate>Thu, 13 May 2010 22:48:29 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=59</guid>
		<description><![CDATA[This is a specification for a project that will be implemented for the Google Summer of Code, and it can still change as feedback is received. There are no concrete plans of making this a part of Firefox in the near future. Read my previous post for more info. Part 1 &#8211; The Manifest File [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a specification for a project that will be implemented for the Google Summer of Code, and it can still change as feedback is received. There are no concrete plans of making this a part of Firefox in the near future. Read my <a href="http://xulforge.com/blog/2010/05/add-on-packaging-ideas-gsoc/">previous post</a> for more info.</strong></p>
<h2>Part 1 &#8211; The Manifest File</h2>
<p>Most add-ons rely on 2 manifest files: <a href="https://developer.mozilla.org/en/Install_Manifests">install.rdf</a> and <a href="https://developer.mozilla.org/en/Chrome_Registration">chrome.manifest</a>. The install manifest holds add-on metadata such as its name, description, icon path and compatibility information. The chrome manifest determines where to locate chrome files under different circumstances (OS, application, version, etc.), as well as overlays, skins and locales.</p>
<p>These files are written in very different text formats, and they are not completely independent from each other. For example, the install manifest uses chrome paths to locate the extension icon, preferences window and about window, if defined. Install manifests also hold localized data which hasn&#8217;t been integrated properly into the add-on localization system. It&#8217;s also worth noting that the average add-on has very short and simple manifest files, including a significant amount of boilerplate code.</p>
<p>In order to simplify the packaging system, both manifest files should be merged into a single file. The file specification should allow for the least amount of unnecessary declarations that is possible, so that simple add-ons are simple to make. It should also be robust enough not to limit complex add-on creation, and it should cover every single non-obsoleted feature of both current manifest files. It should work for all add-ons that currently use the XPI format: extensions, themes, locale, and multi-item packages.</p>
<p>The chosen format for the manifest file is JSON. The reasons behind this decision are:</p>
<ul>
<li>JSON is a very compact and easy to read format.</li>
<li>It&#8217;s widely used and well known.</li>
<li>Firefox and Mozilla-based applications already include a fast and safe <a href="https://developer.mozilla.org/en/Using_JSON_in_Firefox">JSON parser</a>.</li>
<li>The Jetpack project uses JSON for its <a href="https://jetpack.mozillalabs.com/sdk/0.3/docs/#guide/packaging">manifest file</a>, and using the same base for all add-ons helps maintain consistency and ease switching between platforms if needed.</li>
</ul>
<p>The only major disadvantage is <a href="http://stackoverflow.com/questions/244777/can-i-comment-a-json-file">not being able to comment</a> in JSON files. There are workarounds, but they&#8217;re not very pretty.</p>
<p>The manifest file will be named <strong>manifest.json</strong>. It&#8217;s not package.json like previously speculated because it doesn&#8217;t serve the exact same purpose as package manifests in Jetpack, and it would cause confusion about the meaning of packages. It&#8217;s not install.json because it could be easily confused with the old install.js manifests.</p>
<p>The presence of manifest.json in the XPI file will indicate this file needs to be handled as a v2 package. If manifest.json isn&#8217;t found, the current install system should be used. XPIs should be able to include old and new manifest files in order to be backward-compatible with application versions that don&#8217;t support the new system.</p>
<h3>A simple manifest file</h3>
<p>A very simple Hello World add-on (taken from <a href="https://developer.mozilla.org/en/XUL_School">XUL School</a>) would have the following manifest files.</p>
<p><strong>install.rdf</strong></p>
<pre>&lt;?xml version="1.0"?&gt;

&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
  &lt;Description about="urn:mozilla:install-manifest"&gt;
    &lt;em:id&gt;helloworld@xulschool.com&lt;/em:id&gt;
    &lt;em:name&gt;XUL School Hello World&lt;/em:name&gt;
    &lt;em:description&gt;Welcome to XUL School!&lt;/em:description&gt;
    &lt;em:version&gt;0.1&lt;/em:version&gt;
    &lt;em:creator&gt;Appcoast&lt;/em:creator&gt;
    &lt;em:homepageURL&gt;https://developer.mozilla.org/en/XUL_School&lt;/em:homepageURL&gt;
    &lt;em:type&gt;2&lt;/em:type&gt;
    &lt;em:targetApplication&gt;
      &lt;Description&gt;
        &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
        &lt;em:minVersion&gt;3.0&lt;/em:minVersion&gt;
        &lt;em:maxVersion&gt;3.6.*&lt;/em:maxVersion&gt;
      &lt;/Description&gt;
    &lt;/em:targetApplication&gt;
  &lt;/Description&gt;
&lt;/RDF&gt;</pre>
<p><strong>chrome.manifest</strong></p>
<pre>content   xulschoolhello              jar:chrome/xulschoolhello.jar!/content/
skin      xulschoolhello  classic/1.0 jar:chrome/xulschoolhello.jar!/skin/
locale    xulschoolhello  en-US       jar:chrome/xulschoolhello.jar!/locale/en-US/

overlay chrome://browser/content/browser.xul  chrome://xulschoolhello/content/browserOverlay.xul</pre>
<p>The equivalent manifest file in the new system would be the following.</p>
<p><strong>manifest.json</strong></p>
<pre>
<pre>{
  id : "helloworld@xulschool.com",
  name : "XUL School Hello World",
  description : "Welcome to XUL School!",
  version : "0.1",
  authors : "Appcoast",
  homepageURL : "https://developer.mozilla.org/en/XUL_School",
  type: "2",
  targetApplications : {
    id : "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
    minVersion : "3.0",
    maxVersion : "3.6.*"
  },     
  domain : "xulschoolhello",
  overlays : {
    source : "chrome://xulschoolhello/content/overlay.xul",
    target : "chrome://browser/content/browser.xul"
  }
}</pre>
</pre>
<p>The (not really) missing chrome declarations will be covered in part 2 of this specification.</p>
<p>Plural attributes in the manifest file (authors, targetApplications, overlays, and others) can either be a single value or object, or an array of them. So, if there were multiple authors to the add-on, the following would also work:</p>
<pre>
<pre>authors : [ "Appcoast", "Mozilla" ],</pre>
</pre>
<p>Part 2 of this specification will attempt to cover all possible attributes in the manifest file, as well as attribute localization.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/05/add-on-packaging-spec/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Add-on Packaging Idea now a GSOC project</title>
		<link>http://xulforge.com/blog/2010/05/add-on-packaging-ideas-gsoc/</link>
		<comments>http://xulforge.com/blog/2010/05/add-on-packaging-ideas-gsoc/#comments</comments>
		<pubDate>Thu, 13 May 2010 20:17:31 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=57</guid>
		<description><![CDATA[When I wrote my previous post about making add-on packaging simpler, I hoped but didn&#8217;t expect much to come out of it. It was more like taking a peek into the community and see how much interest there was for these kinds of proposal. I have a real desire to see things like this come [...]]]></description>
			<content:encoded><![CDATA[<p>When I wrote my <a href="http://xulforge.com/blog/2010/03/xpi-v2-making-ext-dev-easier/">previous post</a> about making add-on packaging simpler, I hoped but didn&#8217;t expect much to come out of it. It was more like taking a peek into the community and see how much interest there was for these kinds of proposal. I have a real desire to see things like this come to fruition, but not enough time or resources to do it myself. And it&#8217;s very difficult for a volunteer to handle a project of such magnitude.</p>
<p>But then the <a href="http://code.google.com/soc/">Google Summer of Code</a> came to the rescue. I believe Gerv mentioned it in one of our weekly all hands meetings, and I thought &#8220;it&#8217;s a long short, but what the hell&#8221;. I just threw the idea into the candidates list. In a matter of a couple of weeks, the idea went from candidate to proposal, to approved proposal, to approved proposal with an assigned student. So, this summer, Hebert Duarte from Brazil will be working on the add-on packaging idea, and hopefully we will have a working implementation within a couple of months. That&#8217;s awesome!</p>
<p>Now it&#8217;s my responsibility to guide Hebert in the right direction, and to give him all he needs to get this project going. For that I will be posting a more detailed specification of the new add-on packaging system, to try to cover the quirks and special cases that need to be addressed. Expect it to appear on this blog very soon. Coding begins on May 24th, so I want to have everything figured out by then. Your feedback as usual is welcome.</p>
<p>Note that having a working implementation doesn&#8217;t guarantee it will become part of Firefox or other applications any time soon. At the moment there are no plans or expectations of when and if we will be including this into the Mozilla code base. That&#8217;s a whole other project <img src='http://xulforge.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/05/add-on-packaging-ideas-gsoc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Doing my part for open audio</title>
		<link>http://xulforge.com/blog/2010/03/doing-my-part-for-open-audio/</link>
		<comments>http://xulforge.com/blog/2010/03/doing-my-part-for-open-audio/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 17:25:21 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[metal]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pneuma]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=45</guid>
		<description><![CDATA[The past few years have been completely surreal for me. I still can&#8217;t quite believe I&#8217;m working for Mozilla and helping the project in such a significant way. It&#8217;s one of those things you dream about but you never expect it to become true. Then it happens and you realize it&#8217;s just a matter of [...]]]></description>
			<content:encoded><![CDATA[<p>The past few years have been completely surreal for me. I still can&#8217;t quite believe I&#8217;m working for Mozilla and helping the project in such a significant way. It&#8217;s one of those things you dream about but you never expect it to become true. Then it happens and you realize it&#8217;s just a matter of working hard and doing things right. Go figure.</p>
<p>I keep feeling the same about a side project of mine that began shortly before I joined Mozilla. A long time friend of mine has lead a heavy metal band called <a href="http://pneumametal.com/">Pneuma</a> for quite a few years now. They had to break ties with their production company recently because of unacceptable delays on their part, and lots of the typical crap professional musicians have to deal with. They were looking for people to invest in the independent production of their next album, and I guess I was just in the right place at the right time.</p>
<p>Of course I wouldn&#8217;t invest in them if I didn&#8217;t think they were really good.  I have great expectations for their upcoming album and I&#8217;m helping them in every way I can. The best way I can help them is by bringing my knowledge of the web and technology to the table. So far I&#8217;ve helped them set up their <a href="http://pneumametal.com/">temporary website</a> and <a href="http://twitter.com/PneumaRock">twitter account</a>. I will also be helping them out with their online distribution, because not having your album listed on the iTunes Store is a very new and very big mistake a band can easily make.</p>
<p>But I digress. The point of this post is that I decided to use HTML5 on their site, and provide their first single in open OGG/Vorbis format (falling back to MP3 and Quicktime), with the added bonus that the band agreed to have the track available for download and free distribution. So anybody can listen and download the track in their preferred format, MP3 or OGG. The audio player looks fantastic on the site, by the way. Much better than QuickTime or WMP plugins. The audio quality is also great, and the file is much smaller than its MP3 counterpart.</p>
<p>Adding also to the surrealism of the whole &#8220;music producer&#8221; side of my life is the fact that Pneuma will be the opening act at the first Metallica concert in Costa Rica, next Sunday. This is the biggest concert in Costa Rican history, and I&#8217;m pretty sure I&#8217;ll be backstage. I haven&#8217;t really taken that in yet, there&#8217;s just too much work to do before the concert. But <strong>WOW</strong>.</p>
<p>If you like thrash / progressive metal, I recommend you visit <a href="http://pneumametal.com/">http://pneumametal.com/</a> and have a quick listen. I think you&#8217;ll be pleasantly surprised.</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2010/03/doing-my-part-for-open-audio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Extension update</title>
		<link>http://xulforge.com/blog/2009/07/extension-update/</link>
		<comments>http://xulforge.com/blog/2009/07/extension-update/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 21:27:41 +0000</pubDate>
		<dc:creator>jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[donations]]></category>
		<category><![CDATA[extend firefox]]></category>
		<category><![CDATA[fire.fm]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://xulforge.com/blog/?p=13</guid>
		<description><![CDATA[Recently I&#8217;ve been occupying myself with several Firefox extension projects: Most of all, I&#8217;ve been contributing to the AMO editor team to keep the add-on review queues down to a manageable size. There&#8217;s a great deal of new submissions and updates due to the release of Firefox version 3.5. There are hundreds of updates that [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been occupying myself with several Firefox extension projects:</p>
<ol>
<li>Most of all, I&#8217;ve been contributing to the <a href="http://addons.mozilla.org">AMO</a> editor team to keep the add-on review queues down to a manageable size. There&#8217;s a great deal of new submissions and updates due to the release of Firefox version 3.5. There are hundreds of updates that are minimal to non existent compatibility changes, so I&#8217;ve been able to review close to 200 updates on this month alone. I enjoy my work with the editor team, specially because I&#8217;ve very fond of doing code review and being ruthlessly critical. It&#8217;s in my nature, what can I say&#8230; There are plans for <a href="http://blog.mozilla.com/addons/2009/07/01/removing-the-sandbox/">removing the AMO sandbox</a>, which I find intriguing, to say the least. I wonder how that will change the editor group and their work.</li>
<li>The <a href="http://labs.mozilla.com/contests/extendfirefox3.5/index.php">Extend Firefox 3.5</a> competition has been officially announced. With an October deadline, it includes several new interesting categories to compete in. Jose and I are already working on Fire.fm 1.3, which will be our entry for best extension update. There&#8217;s a great deal of new features we&#8217;ll be putting into it, which I think will greatly improve our user experience. We&#8217;re also working on a few ideas for new add-ons. I hope to be able to submit a couple of entries to increase our chances of winning.</li>
<li>Finally, the <a href="http://blog.mozilla.com/addons/2009/07/15/firefox-add-ons-contributions-pilot/">Add-ons Contributions pilot</a> was introduced to AMO. This enabled add-on authors to request donations for their project right on AMO, giving our donation links more exposure and possibly allowing a few authors to remove donation requests from their add-on UI, which is always a loss for user experience. We have activated contributions for Fire.fm, and so far the response has been pretty good. We&#8217;re very happy about it and hope people will continue helping us out.</li>
</ol>
<p>I still feel in &#8216;break mode&#8217;, and hope to start working in full gear soon. There&#8217;s so much I want to do, and I still need to get everything sorted out. More updates soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://xulforge.com/blog/2009/07/extension-update/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! -->
