• Waking up again

    Nine and a half years at PagerDuty, and a few months recovering from burnout, later…

    Read on →
  • Telemetry Results for Add-on Compatibility Check

    Earlier this year (in Firefox 32), we landed a fix for bug 760356, to reduce how often we delay starting up the browser in order to check whether all your add-ons are compatible. We landed the related bug 1010449 in Firefox 31 to gather telemetry about the compatibility check, so that we could to before/after analysis.

    Read on →
  • How many Firefox extensions do people use?

    I found myself wondering what a “normal” number of XPI extensions is, and since I was working on some other analysis runs on the Mozilla Telemetry database, I took the time to run a count across one day’s data (May 29 2014). Without much further ado, here’s the median and higher percentiles of the number of active add-ons for Firefox and Fennec (Firefox for Android):

    Read on →
  • A Mixed Bag of Telemetry

    There were a few open questions, and follow ups on previous work, that I wanted to look at in Mozilla’s Telemetry database (https://wiki.mozilla.org/Telemetry, though that page is out of date).

    Read on →
  • Add-on compatibility checks and new Firefox versions

    I’ve been working on Bug 772484 – “extension check dialog is annoying and can effectively hang the Firefox process”, and Vladan suggested I post an outline of the issues and proposed changes.

    Read on →
  • Add-on Manager JSON databases landed!

    Felipe landed the Addon Repository (Bug 853389) changes on Aug 1, so they rode the uplift train and are currently in Firefox Aurora (25). My changes for the XPI Provider (Bug 853388), aside from the Telemetry measurements, landed on Sunday (Aug 11) and are in the latest nightly (Firefox 26). I still need to make some changes to the Telemetry patch and get that through reviews, but the core of the work is finally done.

    Read on →
  • Add-on Manager progress: Almost done!

    Felipe has a full suite of r+ for his work on AddonRepository.jsm in Bug 853389, and I’m in the middle of handling review comments for the XPI Database changes in Bug 853388. I need to update based on the review comments, implement asynchronous loading of the JSON database, and add some telemetry so we can track performance and correctness of the new version. Once that is done, we’ll be ready to land on Nightly.

    Read on →
  • Saving browser state asynchronously

    As part of switching the Firefox extensions databases from sqlite to a flat file containing JSON, we want to build a module that flushes the in-memory state of the data out to disk after it changes, in a way that doesn’t hang the main thread waiting for the I/O to complete. Felipe did an initial implementation for bug 853389 based on the DeferredTask module, and I’ve been working on sorting out all the edge cases that the XPIDatabase tests trigger. Unfortunately, there are plenty of edge cases. As a result the attempted implementation is getting rather twisted, so I wanted to put up the current state of my design both to clarify it in my own mind, and to solicit input on ways we could simplify. In particular, I’d like to hear from people who have a good feel for Promise based asynchronous code, to see if there’s an idiomatic Promise based implementation that is more straightforward than the current approach with explicit callbacks.

    Read on →
  • Add-On Manager Progress

    It’s been a month since Felipe and I started coding on the add-on manager conversion, and we’ve made quite a bit of progress. The core code for both modules has been converted to load and save in JSON format; we’re now cleaning up corner cases like upgrading from previous database formats.

    Read on →
  • Speeding up the Add-On Manager

    One of the focuses of the performance team this year is to improve start-up time for the browser. We’ve identified that the Add-on Manager has several issues that can delay start up, and can also cause brief user interface hangs (“jank”) during normal operation. This Bugzilla search shows what we’re tracking right now.

    Read on →