Extravaganza – March 2016

Once a month, web developers from across Mozilla get together to talk about the work that we’ve shipped, share the libraries we’re working on, meet new folks, and talk about whatever else is on our minds. It’s the Webdev Extravaganza! The meeting is open to the public; you should stop by!

You can check out the wiki page that we use to organize the meeting, or view a recording of the meeting in Air Mozilla. Or just read on for a summary!

Shipping Celebration

The shipping celebration is for anything we finished and deployed in the past month, whether it be a brand new site, an upgrade to an existing one, or even a release of a library.

Peep 3.1.1

First up was ErikRose with news of a new release of Peep. The new version fixes the peep port command so that it correctly emits URL-based requirements.

Erik also wants to remind everyone to drop Peep and upgrade to Pip 8.

SHIELD Recipe Server

Next up was mythmon, who talked about the Recipe Server, a system to help Firefox respond to user issues and test new features quickly and easily. The development server for the service is now live, and is deployed to AWS using Docker and gunicorn.

Go Faster System Addon Update

Next we heard from laura who shared the news that the first Go Faster system addon update shipped! System addons are addons that come bundled with Firefox, but are updated outside of the normal 6-8 week release process. They enable us to try new features out and respond to user feedback quicker than before.


The Roundtable is the home for discussions that don’t fit anywhere else.

Debugging Python with gdb

ErikRose next talked about how he dealt with a segfault in DXR‘s indexing job. The end result of his trial is a description of how to debug Python stack frames using gdb on Ubuntu Trusty.

Conditional Requirements in Python are Bad

Erik also shared a story about conditional requirements in Python. Because Python uses executable Python files for describing the requirements for packages, some projects change their requirements list based on the environment. For example, some projects detect whether they’re running in Python 2.6 or 2.7 and include libraries that implement features that may be missing in Python 2.6.

The problem is that pip caches wheels after evaluating setup.py files, meaning that a cached package built for Python 2.6 may be used when installing in Python 2.7. The solution is to use a feature called environment markers that allows packages to specify requirements against the execution environment that they’re installed to. That way package tooling can check these conditions and avoid using cached packages that aren’t appropriate for the current environment.

If you’re interested in web development at Mozilla, or want to attend next month’s Extravaganza, subscribe to the dev-webdev@lists.mozilla.org mailing list to be notified of the next meeting, and maybe send a message introducing yourself. We’d love to meet you!

See you next month!