Posted by: felipe | January 9, 2014

Hello 2014

Happy new year everyone! During the holidays I had been thinking about my goals for 2014, and I thought it’d be a good exercise to remember what I’ve done in the past year, the projects I worked on, etc. It’s nice to look back and see what was accomplished last year and think about how to improve it. So here’s my personal list; it doesn’t include everything but it includes the things I found most important:

Related to performance/removing main-thread-IO:

  • Rewrote the storage for the AddonRepository module in the work with Irving to make the Addons Manager async.
  • Did the Downloads API file/folder/mimetype launcher code and storage migrator for the new JS downloads API project.
  • After Drew made the contentprefs API async I help update a number of the API consumers to async.

Related to hotfixes:

  • Created a hotfix to decrease the update check interval which brought more users to up-to-date Firefox versions, who were lagging behind by never seeing the update message.
  • Worked on a hotfix to deactivate pdf.js if necessary, when we were releasing it to all users for the first time. Fortunately we didn’t have to use it.
  • Assisted in the work of another hotfix that was being prepared to change the update fingerprints but also luckily wasn’t needed.
  • Wrote down some documentation about all of the hotfix process to streamline the creation of future ones.

Related to electrolysis:

  • Worked on the tab crashed page
  • Made <select> elements work
  • Added support for form autocomplete
  • Worked on improving the event handling for events that are handled by both processes

Other things:

  • For mochitests: worked on fixing some of the optional parameters like –repeat which weren’t working for all kinds of mochitests, and added the –run-until-failure option.
  • Added the –debug-on-failure option which works together with the –jsdebugger option.
  • Helped organize the projects of Desktop Firefox for the Google Summer of Code and guide many students through the proposal phase while they drafted their proposals.
  • Mentored one student for GSOC who created an add-on to visualize memory usage information from about:memory.

Events attended:

  • FISL – The yearly 7k-people free software forum in Brazil
  • The MozSummit Assembly meeting to help plan the summit, and the summit of course
  • A Firefox OS campaign in Brazil
  • The Firefox Performance week


  • Reviewed/feedbacked about 300 patches

That’s it. Looking forward to a great 2014!

Posted by: felipe | October 1, 2013

GSoC 2013 completed

Last week, the 2013 edition of the Google Summer of Code officially finished. The Firefox team had come up with a few project ideas for this year and I mentored Abhishek Choudhary in the project dubbed “about:memory for real people”. The goal was to produce a friendlier and prettier version of about:memory that could be used by users and web developers to investigate the memory usage aspects of their webpages.

Mentoring GSoC was a nice experience again (it was my 4th time as a mentor) and I’m happy to say that the project was completed successfully! On Sep 16th, the “soft pencils down” goal on GSoC timeline, Abhishek tagged the 1.0 version on GitHub and the code was called complete. After a small extra bug fix, 1.0.1 was tagged and then submitted to!

The project itself was very interesting because it was not a straightforward coding exercise: there was also a creative element to it which allowed us to experiment different visualization styles to try and see what worked best. It began with a few different separate visualizations but it evolved over time to one main integrated viz that supports seeing the data consumed by each tab and to watch how it evolves over time. The user can take manual time snapshots or let it take one every 5 seconds, and then use the time slider to go back and forth between the last 5 snapshots. The main hope is that this should be useful for a web developer who wants to see how a particular action on the website might affect its memory usage and if it fits the expectations (does that operation increase memory? does it release it as expected?).

Here’s a screenshot of the main interface:

fx-statistics screenshot

You can see more details and install it from AMO. There’s a small catch: the add-on currently won’t work with Aurora or Nightly, just Beta and Release. This was an interesting part of the project: on the few last weeks of the project, the API that the add-on had been using changed, and it was not possible to change it to the new API among the other wrap-up tasks for the project. But luckily add-on versioning works well, and as the goal of this add-on is end users, shipping for beta and release is ok for now, and we’ll soon be posting a new version that is compatible with FF25+.

Abhishek also has a very nice blog post that you should be reading instead of mine :), describing the project progression and his experience working on it. I want to take this opportunity to say congrats to him and thanks to all students who participated in the GSoC project this year! I hope everyone had a nice time and hopefully the experience have interested some of you to continue to be part of community! Looking forward to next year’s projects.


Posted by: felipe | July 16, 2013


Firefox, Tux and Gnu at FISL

Two weeks ago, almost the entire Mozilla community in Brazil assembled together in Porto Alegre to attend FISL, the largest free software conference in the country, which brings together about 7000 people every year to talk about every side of open source: communities, business, government, education, etc.

I think the community had its best attendance ever this year. For one thing, it was the largest group: there were about 30 contributors from all over the country who contribute to every area of Mozilla. For another, our participation this year was entirely planned and run by the community, and everyone was working together in sync to make it a success.

Our activities included various talks on the main conference track, an apps hackaton, a Mozilla room, SUMO sprints, and just a lot of engagement with the students and developers at the conference. As expected, interest in Firefox OS was very high, and this brought to us a lot of people who wanted to hear more about the OS, take a look at the devices (we had a few Geeksphones for demonstrations!) and learn how to build apps. With the dedicated Mozilla room we were able to run several “Apps 101″ sessions to get people started on apps and the hackaton (at times back-to-back sessions to keep up with the demand!), and to provide a welcoming place for them to hack on the apps or to get some hands-on help when they needed.

Mozilla Room at FISL

Welcome to the Mozilla Room at FISL 14

In true free software spirit, most of the talks at FISL are live streamed and also recorded, and you can see the full program here. Below are all the talks we had (I think I’ve included them all but apologies if I forgot any).

(p.s.: if you want to see an entertaining explanation of how Persona works I highly recommend you watch François’ presentation at the 11’30″ mark)

The hackaton ran during the conference and finished on Saturday afternoon. We got a total of 7 apps submissions, which are all posted on github, and the winner was announced at the end of Surman’s talk and received a Geeksphone Keon! There were also e-books as prizes for other teams. Big props to Adriano, André Garzia and Morvana for running the hackaton!

Hackaton Prize

With all that, what I have to say is thanks to all the contributors who helped with all our activities. It was great to meet again some of the old-timers and specially nice to meet the newer members of the community to whom I had only known online before. I was very impressed with everyone’s dedication and passion for Mozilla! Attending FISL is always a special experience for me because that’s where I started my true involvement with open source and Mozilla. After meeting Marcio and Fabricio in São Carlos in 2005 and been following things online for a while, I attended my first FISL in 2008 where I gave a presentation about add-ons development and there I met Chofmann, Blizzard, Taras, Mitchell, Mary, and that was a big push for me to start contributing. I’ve been attending the event ever since, and nowadays I often get people asking my story and how they too can get involved and I hope that I can too serve as support and inspiration for the new people joining who wants to participate and grow in the community. Last but not least, a special thanks to Sérgio for being the lead organizer and volunteering an incredible amount of his time in the past N months to make FISL happen this year!

Until FISL 15!

Posted by: felipe | July 2, 2013

Firefox Performance Week

Last week, the Firefox front-end team got together in Toronto to discuss various of our ongoing projects, with a special focus on performance-related goals. The performance team also joined us as there are various joint projects between our teams. After the week is over it’s interesting to look back and see what was accomplished during the week and what it opened as guidance for our future work. Here is my personal recap, some of the highlights of what I did and what I saw during the week. In no particular order:

  • Finally met with Irving, with whom I’ve been working in the past few months in our project to move the Add-ons Manager storage from SQLite to JSON and making it off-main-thread (bug 853389, bug 853388)
  • We did a triage of performance-related bugs to classify them into high impact and low impact and figure out where to focus
  • Got to see some of the great progress that Tim Taubert and Avi has done on the tabstrip animations and got Tim to help me use the reflow observers to do some experiments of my own in the UI. I didn’t find any obvious low hanging fruits, which is expected since he has fixed various offenders since introducing these reflows observers, but the attempt was worthwhile
  • Using the profiler I noticed some long stacks for text reflowing during tab animations, but these didn’t translate into any measurable slowness. In any case, I started some hacking to see if it was possible to improve it anyway. The issue is that the title in a tab has to be constantly remeasured for cropping while a tab opening animation is happening. I wrote a patch to only display the tab title and favicon after the animation has completed, and then got together with Avi to run his tab animation FPS tests and see what changes. The answer was: not much, there were no visible gains. In hindsight, there’s an obvious reason: even though we can hide the text in the tab that is opening, we can’t do it for the other open tabs, which will all be potentially shrinking and re-cropping at the same time. However, the investigation was very useful nonetheless, because we discovered two issues with the APIs used to measure the FPS on Mac: a telemetry measurement have been inactive since OMTC has been activated; and the framerate was always stuck on vsynced even with different values for layout.frame_rate (which is useful to tweak when doing animation stress tests)
  • Got together with Paolo to discuss the plans and current state of the Downloads API off-main-thread project, which I’ll be joining to help (starting with bug 852482)
  • Watched Vladan present his findings about running Firefox on an SD card. I had already seem the video through his blog post but watching it again and going into more details was very interesting, as the extreme slow disk IO is not only an artificial case produced on SD cards, but also something that many users have to face daily on machines with older hard drives and anti-virus software than can significantly worsen the problems.
  • Vladan’s talk was also of particular interest to me as it serves as motivation and validation for the work I’ve been involved with in the last significant number of months: the Add-ons Manager work and now the Downloads API.
  • And various converstations about Electrolysis, including a good talk with Yoric to understand how the ongoing work on session restore and e10s will interact

And beyond that there were also various other topics that benefited from having the team all together in one place, specially Social API and Australis. To me personally the week was immensely helpful as a motivator and as a way to get consensus and clarity into our upcoming projects, not to mention the fine chance of directly interacting with the entire team which not often happens as we’re all spread around the around!

As a side note, this blog post was an exercise in itself as one of the outcomes for me from the Summit Assembly meeeting we had at the week before. There’s more on it that needs a separate blog post to explain, but a personal action that I’ve taken from that event is to increase the transparency and involvement with the community about the work I do.

Older Posts »



Get every new post delivered to your Inbox.