Ehsan Akhgari is a programmer living in Toronto working for Mozilla. He has over 10 years of experience on browsers and the web platform and Firefox. Learn more about him here.

Project SpiderNode

Some time around 4 weeks ago, a few of us got together to investigate what it would take to implement the Electron API on top of Gecko. Electron consists of two parts: a Node environment with a few additional Node modules, and a lightweight embedding API for opening windows that point to a local or remote web page in order to display UI. Project Positron tries to create an Electron compatible runtime built on Mozilla technology stack, that is, Gecko and SpiderMonkey.

Building Firefox With clang-cl: A Status Update

Last June, I wrote about enabling building Firefox with clang-cl. We didn't get these builds up on the infrastructure and things regressed on both the Mozilla and LLVM side, and we got to a state where clang-cl either wouldn't compile Firefox any more, or the resulting build would be severely broken. It took us months but earlier today we finally managed to finally get a full x86-64 Firefox build with clang-cl!

C++ Static Analysis using Clang

Introduction Large code bases typically develop rules around how various code constructs should be used. These rules help eliminate bugs resulting from common mistakes. C++ gives programmers a good amount of power over enforcing such rules using the facilities that the language provides. As a simple example, if you have a class that should not be inherited from, you can mark the class as final. Typically one finds themselves in a situation where the language doesn't provide an easy way to enforce something.

My experience adding a new build type using TaskCluster

TaskCluster is Mozilla's task queuing, scheduling and execution service. It allows the user to schedule a DAG representing a task graph that describes a some tasks and their dependencies, and how to execute them, and it schedules them to run in the needed order on a number of slave machines. As of a while ago, some of the continuous integration tasks have been runing on TaskCluster, and I recently set out to enable static analysis optimized builds on Linux64 on top of TaskCluster.

Tab audio indicators and muting in Firefox Nightly

Sometimes when you have several tabs open, and one of them starts to make some noise, you may wonder where the noise is coming from. Other times, you may want to quickly mute a tab without figuring out if the web page provides its own UI for muting the audio. On Wednesday, I landed the user facing bits of a feature to add an audio indicator to the tabs that are playing audio, and enable muting them.

Local Autoland

It has been a while since I've asked myself: “Is the tree open?” These days, when I want to land something on mozilla-inound, I switch to my git-workdir[1], I cherry-pick the commit that I want to land, and I type the following in my terminal: $ land Land is a very sophisticated bot that tries to land your commits for you! It assumes you use git-cinnabar, which you should if you use git.