Skip to content

MAOW Perú afterthoughts

The first Latin American MAOW (Mozilla Add-ons Workshop) was held last Saturday in Lima, Perú. The event was organized by Percy Cabello from the Mozilla Perú community, also the maintainer of the very awesome Mozilla Links blog.

I did the first part of the workshop, explaining extension development.

Me explaining stuff

I learned from this experience that it’s not a good idea to cover all of the boilerplate parts of extension development in a presentation with such limited time. For future events I think it’s a better idea to have some sort of required reading before attending, so that it’s easier just to dive into the actual juicy parts and get stuff done. I still managed to cover several topics surrounding extension development, and the slides were full of references that people can follow to continue learning about the topic.

The second part of the event was about Jetpack development, and was presented by newly appointed Jetpack Ambassador Hernán Rodríguez, from Agentina:

Hernán showing shinny stuff

Hernán did a fantastic job. I also should give Jetpack some credit because it is incredibly easy to get started in a few minutes. The attendees had a chance to play around and do more experimenting than on my presentation. We had some fun playing around with Hernán Twitter slidebar and messing around with CSS transformations.

The event was a great success, and this was all thanks to the great work of the Mozilla Perú community. I was pleasantly surprised of how well organized they are, and the great deal of large-scale technology events that are held in Perú that could be good platforms for Mozilla to attract new community members.

Much more details about this event can be read (in Spanish) in the Mozilla Perú blog and Hernán’s blog:

Thanks again to Percy and Mozilla Perú community for organizing this event. I hope to see you again soon!

Tagged , , , , ,

And now they wait…

I guess giving 3 month’s advanced notice wasn’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 in line to be reviewed. This is a short as it’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.

Well, now it’s up to the editor team to catch up. It’ll take a while, I think. Authors that decided to update after the 3.6 release will now have to wait. It’s bad for everyone, and the result of bad communication. That’s something we’ll need to work on.

Tagged , , ,

Jetpack, Personas, and the future

Mike Connor’s post on Jetpack and Personas has brought up lots of debate surrounding the future of the add-ons ecosystem. Extension developers are concerned about the future of XUL and the extensions they’ve spent so much time and effort on. Others are concerned about the future of the platform and its openness. I’d like to chime in as a veteran extension developer and recent addition to MoCo. This is not an official statement, just my views on the situation.

First of all, let me be very clear about this: there is no short term plan to eliminate the extension platform as we know it. XUL and XPCOM run deep in Firefox. They are Firefox. Eliminating the technologies that make extensions possible would require a rewrite of pretty much everything in the platform, which is massive. I’m not saying this couldn’t happen some time in the future (I don’t know, really), but it isn’t something that can be accomplished within a few weeks, or even a few months. It’s something that requires a great deal of planning and the collaboration of the whole community. Extension developers shouldn’t worry about their add-ons being obsolete overnight.

We should all look into the future, though. Not as something that we’ll have to accept, but as something we can shape. Jetpack and Personas are still experiments in many ways, and there’s much we can do to make them what we want them to be. I personally doubt they will ever reach the point where they will replace the current add-on options, but I am confident that they can come very close, and that’s a big win for everyone.

Jetpack

The goals of the Jetpack project are ambitious: no restarts for install / uninstall, a clean and more stable API, complete security, and a much easier development experience. They’re so ambitious that to think all of these can be accomplished while preserving the flexibility of the current platform would be naive at best.

There are no stable APIs. You can make higher abstractions that are less likely to change. But they will change. Jetpack only makes its add-ons dependent on its API, instead of the XUL/XPCOM platform. So, instead of updating your add-on to the next Firefox version, you’ll update it to the next version of Jetpack, which should happen much less often. That is of course assuming there will be some sort of versioning of the Jetpack API. If that’s not the case, well, then we have bigger problems to be concerned about.

Jetpack, unlike XUL and XPCOM, is not a fully open system. It can’t be. Not without sacrificing the security it’s meant to bring. As a secure system, it should be closed by default, enabling through its API only the features that are considered to be safe and necessary. This limits add-on creativity to the API designers’ imaginations, as opposed to the developers’. On the other hand, in the current system extensions can do pretty much anything. They can read, write and execute files. They can change your preferences and access your saved passwords. They can monitor your online activities and send information to third parties. The only real protection between you and the extensions you install is the review system that all of them have to go through in order to be publicly listed on AMO. A group of reviewers (also known as editors) make sure these extensions are safe to use and respect user choice. Which one is better? To me, the answer is simple: if it’s possible on Jetpack, use Jetpack. It’s simpler and safer. If it isn’t, then fall back to extensions, where you have almost limitless control.

Jetpack add-ons will be easier to develop, and it will be possible to install and remove them without restarts. This is a huge win for users and developers. Many, if not most add-ons will be easily portable to this new platform, and they will benefit from it. It remains to be seen, however, if highly complex (and extremely popular) add-ons like AdBlock Plus, NoScript and Firebug will be able to live in the Jetpack world. These extensions are strongly tied to the platform, and their interactions would be very hard to translate into a general use API. Maybe we can implement jetpack.magic.doWhatNoScriptDoes :) .

Personas

Personas are not even close to being a replacement for themes. Personas allow some very basic skinning using header and footer images and setting font colors for the main toolbox. Surely they could be extended to include images for the toolbar icons and some more advanced customizations, but that’s not the case now, and even then they wouldn’t be a complete replacement for themes. Themes can change the appearance of the application in very significant ways, and this can’t be accomplished without the complexity inherent in theme development. So, theme developers, you’re not done yet either.

The future

I think the future for extensions and themes is still bright. Jetpack and Personas have shown us how things can be different, and opening the field for new development and competition is a win for all.

There’s much we can do to improve the “classic” add-on world, in the area of documentation and tutorials, and even in the platform itself. We’re being shown how to improve. We should take this as a call to action, and improve. Let’s work on the platforms that will support the development of the future, but let’s not forget the ones that are still active and thriving.

Let’s not forget how we got here.

Tagged , , , ,

MozCamp Chile 2009 Slides

I presented at MozCamp Chile 2009 today. I made a presentation that covers AMO, the work being done improving AMO for developers, and an introduction to the editor community, and the proposals on how to make review times better.

Here’s an exported PDF from the presentation:

http://xulforge.com/blog/wp-content/uploads/2009/10/AMO-Communities.pdf

The weirdest project I’ve accepted

The most random project I’ve ever contributed to is currently gaining momentum, and hopefully it will be public by the end of the year.

No, it’s not even close to being related to open source, and far from real coding. It’s closer to one of my biggest passions: heavy metal music. Metal is possibly my greatest source of inspiration, and I have more guitar-grinding heroes than technology-producing heroes. Sorry Steve Jobs, but I’ll take Luca Turilli before you any day.

Sadly, the metal scene in Costa Rica is mostly dead. There are very few professional bands around, and most have conformed with playing a few local gigs and selling a few hundred albums in the area. Lame. And this is where Pneuma steps in. Pneuma is a Costa Rican progressive thrash metal band lead by a friend of mine, Antonio Masís (vocals and bass). It’s also my favorite local band and pretty high up my global preference list. They’ve been around for a while, and already have a studio album which sold decently, although only locally. Their second album… that’s a long story.

They met with delay after delay in the production of their second album, until they decided to take matters into their own hands and record it again independently. Here’s where I step in. I volunteered to invest in their album, as well as contribute with my ‘Internet skills’ to give them more leverage in a worldwide market that no longer requires mega-corporate backing to enter. I’ve already studied several alternatives, such as CDBaby and TuneCore. They both look very promising.

The album is already fully recorded, and it’s now in the mixing/mastering process in California. It’s absolutely amazing. Nothing like this have ever been produced in this country, and I hope it will do well internationally as well. I’ll do my best to make that happen. For now, I’m setting up their website, pneumarock.com, which doesn’t have much now. We’ll begin more aggressive marketing soon, when we’re closer to the release date and we’ve sorted out a few details.

I’m very excited by this project. I’m happy to be able to make a contribution to local artists, specially artists as good as Pneuma. I also think there’s a very real possibility of making good money out of this, which is good because I’m not a complete socialist :P .

Tagged , ,

Wrapping loose variables and functions in Add-ons

We (AMO Editors) have traditionally rejected updates or nominations on add-ons that don’t follow the wrapping rule for variables and functions. This is an important rule IMO because the possible compatibility conflicts are very real and possibly damaging to user experience. Enforcing good user experience and code quality is part of our responsibility as editors, so I think this rule should not be removed or lessened in any way.

This discussion came up due to a denied update for Text Formating Toolbar 0.1.4.11. I was requested to come up with a POC that demonstrates how name conflicts can cause problems, so I created this add-on, which conflicts with Text Formatting Toolbar using seemingly harmless code. Here’s the link:

Name Conflict

If you install this with the Text Formatting Toolbar, you’ll notice that the bold, italics, code and color features are broken.

Here’s the code in my overlay:

window.addEventListener(
  "load",
  function() {
    window.setTimeout(
      function () {
        formatItalics = "i";
        formatBold = "b";
        formatColor = "white";

        formatCode =
          function(aString) {
            if (typeof(aString) != "string") alert('Invalid Code!'); }
      },
      100);
  },
  true);

As you can see, it’s fairly simple. The load event and setTimeout call are only used to make sure that it is the other extension and not this one the one that experiences the compatibility problems. If two add-ons use the same names in the global scope, then one is going to experience problems in one way or another. There’s nothing more to it.

Obviously I can intentionally create an add-on that causes conflicts with any other add-ons, but I hope you see past this and realize that the code I posted could very well be written by another author who is unaware of the rules we enforce. This is what we look after, and this is why we should reject global namespace pollution in almost all instances.

Tagged , ,

Extension update

Recently I’ve been occupying myself with several Firefox extension projects:

  1. Most of all, I’ve been contributing to the AMO editor team to keep the add-on review queues down to a manageable size. There’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’ve been able to review close to 200 updates on this month alone. I enjoy my work with the editor team, specially because I’ve very fond of doing code review and being ruthlessly critical. It’s in my nature, what can I say… There are plans for removing the AMO sandbox, which I find intriguing, to say the least. I wonder how that will change the editor group and their work.
  2. The Extend Firefox 3.5 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’s a great deal of new features we’ll be putting into it, which I think will greatly improve our user experience. We’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.
  3. Finally, the Add-ons Contributions pilot 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’re very happy about it and hope people will continue helping us out.

I still feel in ‘break mode’, and hope to start working in full gear soon. There’s so much I want to do, and I still need to get everything sorted out. More updates soon!

Tagged , , , , , ,

Introducing My Personas

For my first “official” 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 of skins for the Personas 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’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’s trickier.

I have a list of the skins I’ve created in the project page, 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 my designer page.

My skins were all created using The Gimp, and the pictures were taken with 2 different models of the Canon PowerShot (I upgraded recently). Artistic feedback is greatly appreciated.

Tagged , , , , ,

Regarding Fire.fm

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.  Sadly, that ended somewhat abruptly.

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 we won! We won the Best Music Add-on category, and I think we weren’t allowed to win in others, because I think we should have won the general competition as well ;) . Needless to say, we were super happy with this, and we have been actively maintaining the add-on in our spare time.

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.

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’t want to abandon a project that still has much to be fixed, so I’ll certainly won’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… New features in Fire.fm are probably going to be very rare from version 1.2.3 and later.

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’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’m very proud of it.

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’re more than welcome. See the Fire.fm Sourceforge Project Page for more information.

Fire.fm Logo

Fire.fm Logo

Tagged , , , , ,

Getting started

Hello, welcome to Xulforge.

My name is Jorge Villalobos. I’m a software developer who has been working for the past couple of years with Mozilla technologies, particularly XUL and Firefox extensions. I co-developed the very successful Fire.fm extension with Jose Enrique Bolaños, and helped develop several other extensions during my tenure at Glaxstar. I particularly enjoyed working on the eBay Companion.

I quit Glaxstar to pursue my own projects and ideas, and this is the purpose of Xulforge. I’ll be focusing mostly on Firefox extensions, but occasionally I might try a few different things which will likely end up here as well. I also have a personal blog which I’ll continue to use (and usually neglect) for more personal matters.

I’ll post again shortly, hopefully, with updates on the projects that I’ll be working on over here.

Tagged ,