What have I done since last July?

July 16, 2015 § Leave a comment

School year 2014-2015 is ending. It’s time for a brief report.

Session Restore

As I announced last year, I am mostly inactive on Session Restore these days. However, I am quite happy to have landed « Bug 883609 – Make Backups Useful ». This has considerably improved the resilience of Session Restore against a variety of accidents.

Besides this, I have mostly been reviewing and mentoring a few contributors.

For Q3, I will try to help Allasso (one of our contributors) land bug 906076, which we hope can improve a lot the startup speed for users with many tabs or tab groups.

Performance Monitoring

My biggest code contribution for the past 6 months is Performance Monitoring. Firefox Nightly now has a module (PerformanceStats.jsm/nsIPerformanceStats) dedicated to monitoring the performance of Firefox, webpages and add-ons in real-time. While there are a number of improvements I wish to land, this is already powerful enough to implement about:performance (a top-like utility for Firefox), the slow add-on watcher (which has progressively grown into something actually useful), and slow add-on Telemetry.

I am currently working on making measures faster and decreasing even further the number of false alerts, as well as ensuring that everything works nicely with e10s. Oh, and I have a new UX design for about:performance which I hope you will like.

Also, I have passed on the data to the AMO team so that they can start publishing the performance of add-ons to their authors.

Async Tooling

I have been less active on Async Tooling recently, in large part because most of the tooling we needed has landed, and the rest is now in the hands of the DevTools team. My main contribution has been DOM Promise Uncaught Error monitoring, which was both one of the blockers to port our code from Promise.jsm to DOM Promise, and a primitive necessary for the DevTools team.

My second contribution was modifying our (then) reference implementation of Promise, all our test suites and quite a number of individual tests to handle the case of uncaught asynchronous errors. I have had relatively little feedback on this, but this serves me almost for every single patch I write.

Other than that, I have landed the PromiseWorker, which is designed to make using ChromeWorkers simpler, and I have both landed and mentored a number of improvements to Sqlite.jsm, in particular error-reporting and clean async shutdown, as well as maintenance fixes to OS.File.

I do not have specific plans for the near future of Async Tooling.


One year ago, I joined the effort to overhaul Places, our implementation of bookmarks, history, keywords, etc. Unfortunately, this effort is far from over, as all the participants (starting with my reviewer) keep being preempted for higher-priority work. However, we did manage to land a number of improvements. I contributed History.jsm, a (not complete yet) reimplementation of the History API, with a nicer API and off the main thread database access.

I also refactored Places to handle asynchronous shutdown sequence.

In the near future, I plan to finish and land a non-blocking reimplementation of the Forget button (and Sanitize dialog). I do not have other short-term plans for Places.


Shutdown has kept me quite busy this past 12 months. On one side, AsyncShutdown has been improved, made easier to use and debug post-mortem, and extended to support async shutdown of C++-based features. On another side, I have implemented a Dashboard to track AsyncShutdown timeouts and trends, which has saved my life a few times – in particular, when I fixed the crashes caused by Avast, and when I helped pinpoint and fix the topcrashers for Firefox 33.

Also, I landed the Shutdown Terminator, which turns shutdown hangs into actionable crashes, and also lets us track the duration of successful shutdowns (hint: if it takes more than 10 seconds, you’re as good as crashed).

I do not have short-term plans for Shutdown, although if I find time, I might try and make it crash a bit faster.


Community also ate plenty of my time. My main involvement was mentoring a number of bugs (I lost track of the number, probably a 10-20) and welcoming new potential contributors both on #introduction and through the contribute form. As a note, while mentoring is almost always a pleasure, welcoming new contributors is a huge time sink with very little return on effort. More on this in another blog post.

I also dedicated time and effort to Teaching Open-Source to University students, with mixed results. Students who had signed up by themselves gave me great feedback, while students who had been assigned to the course without having any choice did not prove as pleasant to work with. While I hope to reproduce the experience eventually, this will not be with the same University.

The French Firefox OS launch, going to present (and actually sell) the first Firefox OS phones to entirely non-technical crowds, was also an interesting experience. I don’t know if it was useful in the end, but it was certainly fun.

Finally, while I haven’t found a good place to mention it, this year will be remembered also for Je Suis Charlie, both the initial terrorist attacks and the entirely predictable law on mass surveillance that just passed in France.

In the near future, I plan to continue mentoring bugs, but I will be less active on the contribute form – rather, I am lending a hand to the Participation team’s effort to replace the contribute form with something much better.

Tagged: , , , , , , , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

What’s this?

You are currently reading What have I done since last July? at Il y a du thé renversé au bord de la table.


%d bloggers like this: