Get your FREE 30 page Developing SOLID Applications guide!

A Super Productive Quarter At Mozilla

At Mozilla, we set goals for ourselves in quarter increments; these goals are formalized at the beginning of the quarter and there are three months in which to move them forward. This process helps us to prioritize what is important to the company, to our team, and to us as individual developers.

During Q2, the Webtools team (on which I work) has been super busy doing a lot of wonderful things. While I’ll leave it to our esteemed manager, Laura Thomson, to call out all the team accomplishments, there are a number of things that I participated in, am proud of, and would love to share.

RabbitMQ Queuing for Socorro

In April and early May, several of us held a workweek in Portland, OR where we implemented a proof of concept design for replacing the monitor app with a RabbitMQ queuing architecture. This proof of concept helps us eliminate a single point of failure, as well as eliminate what has been playfully called our “ghetto queue” in Postgres (which is really just a table that gets temporary writes). This was my first foray into the deep areas of Python, as well as concepts like multithreading and the backend of Socorro. I’m excited as it appears we’ll be moving it into production in Q3.

A new crashes per install report

One question that we’ve asked is how many crashes occur per install for a particular issue. We want to know if an issue affects a small number of people, or is causing multiple crashes per day for our users. This is a data point we can use to help improve how we prioritize Firefox issues. I added this report during Q2.

The switch from the old PHP application to the new Django application

For the past fifteen months, we have been working to develop a new version of the Socorro UI in Django. This project was started due to the incompatibilities between our chosen framework (Kohana) and newer versions of PHP, as well as the fact that to upgrade we would need an extensive rewrite of the PHP front end. If we were going to spend massive amounts of time rewriting the front end, the team thought it would be best to rewrite it in Django, the framework of choice in Mozilla webdev.

While I’m always sad to see a PHP application turned off, I’m extremely proud of the team for implementing this project so quickly and so well. The new Django app works almost identically to the old PHP app; the future will allow us to make improvements that the PHP app could never sustain, and we’ll be able to much more quickly add new features as well.

The release of Dragnet

When I was a contractor for Mozilla, I developed an application called Dragnet. This application is designed as a module directory, aimed at helping users and developers understand which modules (DLLs) are valid and which are not. The large antivirus vendors do not generally share their list of valid and invalid DLL files, and a search for any DLL file on Google will reveal a gamut of sites, some attempting to defraud users by convincing them that their computers are infected with malware for ordinary DLL files.

Instead, we want to provide a resource (and a trusted name) for understanding the difference between malware-related modules and valid modules. This project has been a long time coming, but with the 1.0 release it will provide valuable assistance to our team in identifying portentially harmful addons and code snippets.

It’s been a great quarter overall, and I’m extremely excited for what Q3 will bring us as a team.

Learning design patterns doesn't have to suck.

Design patterns open a whole new world of possibilities. So why are you avoiding them? This brand new book will help you finally understand these wonderful programming techiques!

Learn design patterns TODAY »

Samuel Sidler (@samuelsidler) wrote at 6/28/2013 2:51 am:

Dragnet is super interesting. It was something we wanted to do four (plus) years ago and I’m happy it’s finally live!

Is there already somebody (or some team) starting to fill in information? 2000+ pages seems pretty daunting, though I imagine most info will get filled in as it’s investigated. Still, the quicker data gets in there, the more useful it’ll be.