My one year anniversary at Mozilla
5 June, 2012 § 7 Comments
I started working at Mozilla on the Firefox team almost one year ago. As I am now nearing my 1-year anniversary, I’d like to go over my accomplishments for the previous year.
Features I’ve worked on
Visual refresh of Firefox audio/video player (including fullscreen support)
The first feature that I started working on was a visual refresh of the audio/video player for Firefox. This included new icons for the player as well as various bug fixes and new features for the native HTML5 player.
New features for the audio/video player include:
- For native fullscreen video I implemented the DOM API for document.mozFullScreenEnabled as well as the fullscreen button in the video player.
- Video playback statistics.
- My brother Matthew Wein implemented the Save Snapshot As… feature that lets you save a frame of an HTML5
- Centering standalone
<video>elements and displaying them on a dark grey background.
- Specialized video controls for small dimension media.
- Video controls now listen for and display to the user when the network connection is stalled.
- Add text to video controls to describe cause of errors.
- Fade out video controls if no mouse movement for > 2 seconds.
- Large play button over video when it’s not set to autoplay.
Conditional forward button
I got started working on the conditional forward button immediately after the Firefox work week in Monterey, CA. I spent time fleshing out some initial approaches for the conditional forward button and worked with Dão Gottwald to come up with a solution that would work well without affecting add-ons. I implemented the conditional forward button for OS X and Dão implemented the feature for Linux and Windows.
Centering standalone images
Carlo Alberto Ferraris filed a bug back in 2007 to render standalone images centered on the page and on a darker background. After four years of patiently waiting, he produced a patch that implemented this for Firefox. I helped get this patch moving and fixed a few hundred of our image-based reference tests so we could get this landed.
Smooth scrolling was implemented in Firefox around 2003 but stayed disabled for almost nine years. Much of this was due to the hardware limitations in 2003 and the change of computing power since then. There were some other bugs that had to be fixed first, so I worked on fixing those and also started a connection with Avi Halachmi who has fixed a bunch of smooth scrolling bugs. Avi also ported over his popular SmoothWheel algorithm to Firefox. Smooth scrolling is now enabled by default in Firefox 13 and Avi has even more improvements to scrolling on the way.
Site identity refresh
As part of our overall Australis refresh, we are looking at ways to clean up parts of our user interface and make Firefox easier to use and customize. The conditional forward button was one step, and refreshing our site identity was the next step. Since the forward button could be hidden at times, this occasionally made the site identity button look like the forward button. I worked on a refresh of site identity for Firefox which removed favicons from the location bar and added back the lock icon.
It is no secret that plugins are often a vector for attacks on users. Some users install NoScript, Adblock Plus, and other addons to prevent these attacks. As we work on securing Firefox and protecting our users, I implemented click-to-play plugins for Firefox. This feature is accessible through an
about:config flag, plugins.click_to_play, which when enabled will block the loading of plugins until the user explicitly allows the plugin to load. Much of this work will also be used by our future plugin softblock mechanism which is currently being worked on by David Keeler.
Throughout the Spring semester of 2012, Blair McBride and I mentored four students at Michigan State University as they participated in their Senior Capstone course. This was the students’ first experience contributing to open-source software, and by the end of the semester the students had ported over our windowed Preferences/Options to an in-content implementation. All of this work was done within 16 weeks and the students did a tremendous job. We held weekly status meetings and the students were involved on IRC as well as Bugzilla. There is still a bit of work to get done before the new implementation can be enabled by default, but if you would like to test it out on Nightly or Aurora you can go to about:config and enable browser.preferences.inContent as well as browser.preferences.instantApply.
Miscellaneous bugs fixed
- About dialog version string should be selectable. Notable since this was my first Firefox bug I fixed.
- Applying Fitts Law to the Back button
- I fixed one of the ugliest looking windows in Firefox: the Customize Toolbar dialog
-moz-touch-enabledfor Android and Boot2Gecko.
- New icons for the Windows 7 jumplist tasks.
- and 76 other bugs…
As of June 5th, I’ve filed 204 bugs. 73 of those bugs have been fixed.
I have mentored 25 bugs with over twelve different contributors. Mentored bugs are a good way for people to get involved with the Mozilla codebase, as someone with experience helps answer questions and provides quick feedback on patches.
I have provided code reviews and feedback on 122 bugs. I really enjoy giving feedback as well as receiving it. I think peer reviews are a crucial part of software development as they help find bugs, spread knowledge of the codebase, and increase the number of people who will be able to fix a bug in the future.
I have given talks at the Performance team work week in Brussels, Belgium, an Add-on SDK workshop at the Mozilla offices in Mountain View, CA, and two talks at Michigan State University about working in the open and the Firefox developer tools.
The talk that I gave at the Add-on SDK workshop was about Cheevos for Firefox, the add-on that I started which now has over 5,000 users and is one of Mozilla’s featured add-ons. Cheevos for Firefox gives out “cheevos”, or achievements, for using Firefox. Think of it like Foursquare meets your web browser
I’ve had a blast working at Mozilla this past year. It’s not everywhere where you can openly talk about the code that you write as well as have it be used by 400+ million people. Here’s to next year and many more