Skip to content

The complex AMO review process

The add-on review process on AMO is fairly complicated, and can get very overwhelming if you need to look at it close enough that you must understand file and add-on statuses. AMO admins, devs, and reviewers are usually the ones who have to worry about this stuff and there aren’t good docs for it.

Since the issue popped up again today, I decided to take a few minutes to create a chart that explains the AMO review cycle from a file and add-on status perspective. If you think this chart is pretty crazy, you should keep in mind it’s a simplified view of the process. It doesn’t take into account developers deleting versions of marking their add-ons as inactive, and a few repetitive connections were left out. Still, it should give a good idea of how add-on and file statuses interact during the review process, and should help admins figure out which status means what (to add more confusion to the mix, AMO has old unused statuses, as well as others that are only used in Marketplace).

Here’s the chart without the notes:

Review cycle chartFor the real deal, check out the doc.

Is this complexity necessary? Probably. We have two review levels because it allows us to list polished add-ons as well as experimental ones, giving developers and users more flexibility and choice. This in turn makes AMO more diverse and generally a better option than self-hosting.

Tagged , , ,

Mozilla Hispano Labs Blog Coordination

All of us Spanish-speaking Mozillians need to take two roles: one with our local community and one with Mozilla Hispano. Mozilla Hispano is a meta-community that allow us to share a whole bunch of knowledge and experience in our first language, which is pretty unique within the Mozilla world.

So, while I help out with local events in Costa Rica, I also collaborate with Mozilla Hispano in various ways.

This year I volunteered to help with the Mozilla Hispano Labs blog, what I consider to be a very important communication channel to developers who can eventually join us. In this blog we regularly publish technical articles, translated or original, related to Mozilla projects and the open web.

MH LabsIt too some time, but the blog has now picked up a good publication pace. Just recently we were publishing roughly one article per week, and this month it looks like we’ll have twice as many. We have 3 regular writers and a few new ones who look like they might stick around.

At the moment most of the articles are translations, and this is the process we follow:

  1. Identify a good article in English.  Every now and then I’ll comb articles published at Mozilla Hacks and choose the best recent ones. Sometimes there will be interesting pieces that come up from other sources.
  2. Create a translation task in our Teambox tool. This is an internal task management tool we use. Anyone interested in helping out just has to write to our mailing list in order to gain access to the tool.
  3. A volunteer chooses the task from the available options and takes it.
  4. The translation is delivered, usually in the form of a Google Doc. Experienced writers get access to the Mozilla Hispano WordPress so they can deliver it as a draft post.
  5. La translation is reviewed (usually by me) and some cosmetic fixes are done before publishing it.

This role has been very useful for me. It keeps me focused because there are always new articles to review, and at the same time it doesn’t require too much time (reviewing and publishing an article takes about an hour).

The biggest challenge I’ve run into is to keep enough topic diversity. There was a moment when most articles were about Firefox OS app development. That’s not necessarily bad, given that it’s new and popular, but I think we need to cater to various interests. It’s also been complicated to get original material to publish. Most developers don’t have much time to write about what they do (myself included), which is unfortunate. I’ll try to make more contributions of my own and try to lead with the example.

Overall it’s been a great experience, and I’m glad to be in charge of this little corner in the MH world.

Tagged , , ,

Coordinación del blog de Mozilla Hispano Labs

Todos los voluntarios de Mozilla que hablamos español debemos cumplir dos roles: uno con nuestra comunidad local, y otro con Mozilla Hispano. Mozilla Hispano es una comunidad de comunidades, que nos permite compartir muchísimo conocimiento y experiencia en nuestra primera lengua, lo cual es bastante único en la comunidad Mozilla.

Mientras colaboro con eventos locales como los próximos talleres de extensiones y apps en Costa Rica, por otro lado participo en Mozilla Hispano de diversas maneras.

Este año me ofrecí para ayudar con el blog de Mozilla Hispano Labs, un canal que yo considero muy importante para comunicarnos con los desarrolladores y obtener su colaboración. La idea del blog es publicar regularmente material técnico, traducido y original, que tenga que ver con proyectos de Mozilla y la web abierta en general.

MH LabsTomó tiempo, pero ahora el blog tiene muy buen ritmo de publicaciones. Hasta hace poco estábamos publicando más o menos un artículo por semana, y este mes parece que vamos a tener el doble. Tenemos tres redactores regulares, y ahora hay varios que están empezando y podrían convertirse en regulares.

Por el momento la mayoría de los artículos son traducciones, y el proceso que seguimos es el siguiente:

  1. Se identifica un artículo en inglés que se considere bueno para el blog. De vez en cuando voy al sitio de Mozilla Hacks (altamente recomendado) y escojo los mejores artículos recientes. A veces también aparecen artículos buenos de otras fuentes.
  2. Se crea una tarea de traducción del artículo en el Teambox. Esta es una herramienta interna para darle seguimiento a las tareas. Cualquiera que desee colaborar solo tiene que escribir a la lista de correo para pedir acceso.
  3. Algún colaborador escoge la tarea entre las opciones disponibles y se la asigna.
  4. La traducción se entrega, normalmente usando un Google Doc con la traducción. A los redactores que ya han hecho aportes se les da acceso al WordPress de Mozilla Hispano para que puedan hacer un borrador y ponerlo como pendiente de revisión.
  5. La traducción se revisa (eso normalmente lo hago yo), se le corrigen asuntos cosméticos como imágenes y formatos, y se publica.

Este rol me ha servido mucho porque me mantiene enfocado, dado que siempre hay artículos por revisar, pero al mismo tiempo no requiere mucho tiempo (revisar y publicar un artículo toma alrededor de una hora).

El mayor reto que me he encontrado es tener una alta diversidad de artículos. Hubo un momento donde casi todos estaban dedicados al desarrollo de apps para Firefox OS. No es que sea algo malo, dado que es algo muy nuevo y popular, pero creo que es necesario apuntarle a distintos intereses. También ha sido complicado obtener material original. La mayoría de la gente que se dedica a desarrollar no tiene mucho tiempo para escribir sobre lo que hacen, lo cual es lamentable (me incluyo en la lista). Voy a tratar de hacer más aportes propios; eso tal vez inspire a otros a seguir el ejemplo.

Volviendo a lo local, también ha sido difícil conseguir gente en Costa Rica que quiera colaborar con la comunidad, en cualquier capacidad. Si hay algún interesado en contribuir con el blog de Mozilla Hispano Labs, les recuerdo que solo hay que escribir a la lista de correo, pero también me pueden contactar dejando un comentario aquí, o por Facebook o Twitter.

Tagged , ,

Software Freedom Day 2013 – Costa Rica

Today we’re at the Sede Interuniversitaria, Alajuela, celebrating Software Freedom Day. The event is organized by the Costa Rican Free Software Network.

We held a Firefox OS App Development workshop earlier today, which was very well received. We had a full lab with over 20 participants. Due to the great response, we’re running another workshop later today, at 4pm. We will give away a Firefox OS t-shirt to the best demo that comes out of the session.

Logo Firefox OS

The workshop consists of a quick overview of the Firefox OS Simulator, and a simple stopwatch app. There’s no presentation, just a simple guide (in Spanish, click here for the English version) that gives a quick primer on app development, as well as some links and references. We then lets students run with their creativity and modify the example app, or create a new one.

It’s very cool to demonstrate how easy it is to work with Firefox OS apps. We have very good docs and samples, so people can hit the ground running and play around without too much setting up.


We have some plans for events later this year, which is great because the Mozilla Costa Rica community has been dormant for quite a while.

Tagged , , , , ,

Día de la Libertad del Software 2013

Para celebrar el Día de la Libertad del Software estamos hoy en la Sede Interuniversitaria de Alajuela. El evento fue organizado por la Red Costarricense de Software Libre.

Acabamos de salir del taller de Desarrollo de Apps para Firefox OS, el cual tuvo excelente asistencia (se llenó, alrededor de 20 participantes). Debido a la buena respuesta, vamos a dar un taller adicional a las 4pm. Obsequiaremos una camiseta de Firefox OS al que nos muestre la mejor aplicación al final del taller.

Logo Firefox OS

El taller consiste en un vistazo rápido del Simulador de Firefox OS y una aplicación sencilla de cronómetro. No hay presentación, sino una simple guía donde tenemos un resumen de cómo crear aplicaciones, y vínculos a ejemplos y referencias. Luego dejamos a los estudiantes para que apliquen su creatividad a la aplicación ejemplo, o hagan una propia.


Están todos invitados al taller en la tarde. Sino esperamos organizar más actividades en lo que queda del año. Estén pendientes de nuestros anuncios en las redes sociales.

Tagged , , ,

Make your add-on support Android in 4 easy steps

As you may know by now, we’re running an add-on developer contest called Amp Your Firefox. We’re very excited about it and there are various categories you can compete in, but we especially care about the mobile categories. We want to grow our collection of add-ons for Android, so that Android users can enjoy the fully customizable experience that is Firefox.

I have been working on making many of my add-ons Android-compatible (alas, I don’t qualify for the contest, being both an employee and a judge!). So I wanted to give you a quick primer on how easy it is to convert add-ons or create new ones that work for Android, from the perspective of someone who has already worked on desktop add-ons.

  1. Add Android compatibility to your manifest. That means supporting <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id> in your target applications, and adding <em:bootstrap>true</em:bootstrap> to make it restartless.
  2. Set up your bootstrap.js script. This replaces a good chunk of your overlay. This script is responsible for setting up and then clearing any UI elements that you want to add, and running any startup scripts. The chrome.manifest file is loaded normally, so any additional XUL, locale files and CSS are also loaded. Keep in mind that add-on UI on Android is pretty much limited to the content area, but you can still load XUL pages using chrome or about URLs. XPCOM and JS Modules are pretty much the same.
  3. Set up your bootstrap.js script, like, for real. It’s likely you want your add-on to work both for Android and desktop, so your bootstrap script should handle multiple windows well and clean up after itself. Mossop wrote a great post with sample code you can reuse to make sure you’ve covered your bases during install, uninstall, and windows opening and closing.
  4. Read the docs! Should this be the first step? … maybe, what do I know. You can find everything you need here: Extensions for Android. You’ll especially want to get acquainted with the NativeWindow object, for Android-specific UI, and the BrowserApp object, which is sort of the replacement of the gBrowser object / <tabbrowser> element.

I was surprised at how easy it was to create add-ons that work on Android, and to port some of the ones I had already created. Userscript-type add-ons work very well because they generally don’t need UI outside of the content, so porting my AMO Admin Assistant add-on was pretty much trivial. More UI-heavy add-ons like Remote XUL Manager and Click-to-Play Manager required more thought. They both open a XUL window, which I ended up converting into an about page in the mobile version. I also created the Mobile Installer add-on exclusively for Android, which is more of a sample add-on I made for a talk, but uses more of the Android-specific APIs in NativeWindow. It’s also a nice little tool that makes it easier to install XPIs after you’ve copied them to your device.

All of the add-on links above point to Github, in case you’re interested in looking at their code and using some of it on your own add-ons. I hope this motivates you to give Android add-ons a try, and step up to the challenge in Amp Your Firefox. All you need is to submit your entry and have your add-on approved on AMO to win an awesome t-shirt, so I really don’t know what additional motivation is needed ;).

If you have any questions about Android add-ons, fire away in the comments.

Tagged , , , , , – present and future

The extension is more than four years old today. I created it with coworker Jose Enrique Bolaños to submit it to the Extend Firefox competition. It was a great product, if I can say so myself. It won the Best Music add-on prize and garnered a great deal of users and good reviews at the time.

Unfortunately, the service has changed a lot throughout the years, becoming more closed to the public with every iteration. When we created this add-on, radio streaming was available anonymously to everyone around the world. Today, only paying customers can access this service. This has lead to us becoming less and less interested in adding features and even maintaining it.

So, while my interest in the project is minimal, I still reply to support email and try to fix it whenever it is broken in a significant way. I think we did a good job with, because it has required very little maintenance in the past couple of years, with only 6 minor bug fix releases in 2 years, including today’s release. Yet, there are plenty of rough edges by now, and the day will come when something will break in a way that takes too much work to fix, and I doubt we’ll do anything about it.

I decided to move the sources to GitHub, to make them a bit easier to maintain. The project had been hosted at SourceForge and its sources managed with SVN all these years. And, while I think SVN works well for small projects like this one, GitHub’s design is pure genius and sufficient for me to deal with an extra layer of indirection when pushing code.

So, is on life support, but other exciting projects will come and supersede it. It was a cool thing to work on, and its codebase has been very useful to me across the years. I’m happy to revisit its code a couple times a year, but I’m even happier starting new stuff.

Tagged , , , , , ,

Extending the New Developer Toolbar

Firefox 16 will be released in a couple of days. Among its many improvements, there’s the new Developer Toolbar. This toolbar is essentially a command line that allows you to execute commands on the developer tools, like inspecting elements, starting up the debugger and generating screenshots from web content. This feature is designed to be easily extensible, so I decided to give it a try. Here are my results.

I thought it was particularly useful that there is a screenshot command in it. Since I’m not much of a web developer, this is the command that struck me as most useful. So I decided to take the screenshot command and juice it up. I created a restartless extension that adds a new imgur command that, predictably, uploads screenshots to instead of saving them locally.

Creating commands is surprisingly easy. There’s no documentation for it yet – that I know of – so it required some digging around. Since it made sense to base my code on the screenshot command, first I located its source. As you will see if you inspect that code, declaring commands is super simple, and something you can cobble together in a few minutes (sans localization). Once I had the base for my code, it was just a matter of looking into imgur’s API, and then code, debug, repeat.

I finally got it in a decent state.

imgur instalado

The resulting code can be found on Github. It’s worth noting that the code won’t work as is, just because I decided not to publish the imgur API key I generated. If you want to fork the code, you just need to visit imgur’s API page, generate your own key and replace it in the code. However, if you want to give the add-on a try, here it is. It should work on Firefox 16 and later.

I created this add-on as an experiment, and as part of a Firefox Developer Tools presentation I’m giving later this week in Costa Rica. So, this is far from a finished product. A few things should be corrected, like the lack of localization and the fact that it doesn’t send any metadata (like the title and description) to imgur. So, if you’re interested in turning it into a decent add-on, be my guest :).

Tagged , , , , , ,

Software Freedom Day 2012 @ Costa Rica

Last Friday we had our first Mozilla community activity in Costa Rica. The event was Software Freedom Day, celebrated a week late over here because it coincides with our national independence festivities (the evening of September 14th and all of September 15th). The event was hosted by PROTEA and the Free Software Community at Universidad de Costa Rica.

We organized ourselves for this event in a matter of a couple of weeks. We were lucky enough to have the support of the event organizers, who were extremely welcoming. We were also lucky to be backed by the excellent Mozilla Reps program, who sent us stand swag with very little forward notice (you guys rock!).

Reps goodiesThe theme of this event was Free Software and Education, so we promoted  Webmaker and Hackasaurus on our Facebook page and Twitter account. They’re both very interesting projects that aim to promote education of web technologies, particularly to children and not-so-technical people. What I learned about these tools is really fantastic, and I hope someone in Costa Rica can take the initiative and implement it locally.

Our booth was very successful. We ran out of Firefox pins and Mozilla stickers in just a couple of hours (the event lasted all day), and many people came up to us to talk and ask questions. The majority of booth traffic happened in the morning, so we were smart not to hold on to much swag for the afternoon. I did realize that we should have had informative flyers for our visitors. That was an idea that lost importance during the planing process, but we should definitely take into account for future events.

Mozilla Costa Rica

This was a great first opportunity for us to work together and begin sending the Mozilla message. Activity on our Facebook page grew considerably throughout the days leading to the event. We got to meet members of various free software communities in Costa Rica. And, most importantly, we got to share the Mozilla vision with many interested people. The reaction we got from people who support free software and specially Firefox is very encouraging. We hope this is just the first of many similar endeavors.

Thanks to everyone who visited us and made this event possible!

Tagged , , ,

Signing XPI files (using python and m2crypto) on (Mountain) Lion

I want to call out this post by the Appcoast folks: Signing XPI files (using python and m2crypto) on (Mountain) Lion. They contacted me recently because they were having some problems with the old way of signing XPIs, and I pointed them to Wladimir’s post in the AdBlock Plus blog. Their post just elaborates their experience getting it working on Mountain Lion, which might also apply to other systems. Hopefully this will be useful to people.

Tagged , , ,