Blog page 2
News and other things I find interesting
Last modified: Friday, August 03, 2012
Recently a question appeared on Quora:
What is it like to work as an engineer at Mozilla?
I broke down my answer into several sections, I'm probably forgetting to add some sections, but this should give you a good idea.
I can't imagine a company ever being as inclusive with remote employees as Mozilla. If you want to be part of any meeting, simply call in and be part of it.
If you want to chat with someone at any time, you can use video conferencing or IRC.
Every week you have a 1 on 1 meeting time with your manager. At least once a year you will have a performance evaluation discussion with your manager which is designed to help you grow and succeed.
There are team work weeks you get flown in for, and there are plenty of other opportunities to travel as much or as little as you would like for various get-togethers and conferences.
Control of your schedule
Mozilla has employees, contractors, and contributors in pretty much every time zone. It's best to have a mostly consistent schedule so people can find you, but no one will question you on exactly how often you work, or exactly what hours you work.
What you work on
There are quarterly goals, and to meet those quarterly goals you may be part of a project. So naturally you're expected to work on the goals you own, but otherwise you can work on anything you want.
I personally work mostly on bugs that I post. I've never had a bug I posted questioned, nor have I been questioned about what I work on. To work at Mozilla you have to have good judgment about what should be done since you have so much control.
A manager can probably force prioritization on you, but I've never had it happen.
There are no barriers put in place, if you want to do something, just do it. If you see a role that needs to be filled, no one will stop you. If you want to be awesome, no one will stop you or question what you do.
Just about everything is public at Mozilla. Sometimes company operational related information is protected behind a password, but as an employee you will have access to all of this information.
For example, if you want to know how you may get a raise, you can look up this information including data sheets, considerations, processes, and tools.
Sharing what you work on
If you work on something cool, you can not only talk about it, but you're encouraged to talk about it. There are rare cases where you will have to keep quiet, but only if it has security, legal or confidential corporate partnership implications.
There is a large community of Mozillians as well who will be reading what you post. It's also likely that several large news sites will pick up what you write and quote you.
Building a portfolio
Why do developers answer questions on sites like StackOverflow? Other than being a good person and helping the world, these people are building themselves an online portfolio that gives them credibility.
Almost everything you do at Mozilla is open, and therefore you build yourself a portfolio that is at least as valuable as the value you have from your University degree.
Everyone has a manager, and so in an abstract sense there is a hierarchy, but really there is no hierarchy.
Managers don't act like your boss, they act like your partner, counselor, facilitator, and if you need it, mentor.
You gain credibility from the work you do.
You can start to be a peer in certain parts of the code which allows you to review code based only on the contributions you've made to that section of code.
There is little to no distinction between contributors who pop out of nowhere, contractors, and employees. Mozilla is the community.
All decisions are made in terms of what is best for the community and the users.
Decisions are effected by neither market share nor profit. Seriously.
The people are awesome, intelligent, logical and make you proud to be part of the same team. There are plenty of opportunities to be mentored and to mentor others.
Bonus: How to get a job at Mozilla
Anyone can join the community and start helping Mozilla. If you want a job here, you'd be in a better position by simply jumping in and showing your value.
You won't be guaranteed a position, but at a minimum you're increasing your odds significantly, helping a non profit, improving your skills, and building yourself an online portfolio.
Last modified: Friday, July 27, 2012
An overview of the initial work
Creating website shortcuts with favicons was a Platform Integration task that has been pending development for almost a decade. Thanks to a new contributor named Parth Mudgal, they're now live on Nightly builds.
Having had done jump list icons built from favicons, I had a good idea of how to implement the task, but due to other priorities, I knew I wouldn't have time to work on it myself.
I knew this was a bigger than usual task for a new contributor, but I thought I might as well add the mentor=bbondy whiteboard flag. I honestly didn't expect someone to come along to take the bug, but to my surprise a brand new contributor, Parth Mudgal came along 2 months later and emailed me to begin development on the task.
Contrasting larger meaningful tasks to smaller trivial first bugs
Smaller bugs get users more accustomed to the process of contributing to Mozilla. I think in most cases this is the best way to start, but tackling a bigger bug first has more meaning and will make the contributor feel (and rightly so) like they are making an impact at Mozilla.
To help learn about a new contributor that worked on a large task first, I asked Parth for an interview, and he happily accepted.
An interview with the contributor
Why did you decide to contribute to an open source project?
I had multiple reasons:
- Initially, as a refresher
- I wanted to dive into the real world of C++ coding
- I suppose everyone wants to be a part of something big
- And as a bonus, it looks good on my Resume :p
Why did you pick Mozilla to contribute to?
I asked myself what the one open source application that I use most was? Firefox! I have always enjoyed Firefox and the effort by Mozilla to keep it up!
How was the process of contributing to Mozilla?
There are a ton of help documents in the developer section, so I could understand a lot of things easily.
Bugzilla was easy to use and straightforward as well.
Do you have any suggestions that we can use to meet the needs of contributors?
If developers understand the benefits of the contribution, they will contribute more. I got to learn so much and for me it was a sense of achievement when I completed it :D
You worked on a large bug as your first patch, did you like working on it, or if you could have done it over again would you have picked several small bugs instead?
Well, yeah. I had exams in between and other college things; there was a break many times during the course of development. On each break it would take a few days to get back on track. Perhaps some other people wouldn't come back after a break.
Do you have any other feedback you'd like to share?
Better reference information would have been most helpful. How to use a particular function X, so a new developer can refer it initially.
I had a hard time finding out how to do stuff like: How do I convert an object of type X to type Y. I know this will probably be a very big task considering the number of functions. I know we already have DXR and MXR for search, but it was still hard to find things.
Mentored bugs are great, if you haven't done any, then I would highly recommend that you mark bugs you know how to do with the mentor=yourusername whiteboard flag.
I can say for sure that this bug wouldn't be done if it wasn't for Parth coming along and working hard to complete the bug. I'd like to thank him from myself and from Mozilla for his hard work.
Having a meaningful task completed at Mozilla means that this contributor can point future employers to his real world work. Other than the intrinsic value, this is a great bonus for contributors.
When you are mentoring a bug, please always share with the contributor that they are making a difference, and explain to them why they are making a difference, it may not be obvious.
Last modified: Thursday, July 19, 2012
It's been a couple months since the last progress update on Firefox for Metro, but things have been progressing at a steady pace.
A new intern working under Frank Yan named Jonathan Wilde started working with us. He's focused on the Metro front-end code, and is really tearing through tasks fast. He's implemented the new URL bar and tab bar as seen here.
Since the last update we've also more or less finished work on the appbar control (the orange bar that appears when doing an edge gesture in Windows 8).
We determined that sharing the same Firefox profile in both Desktop and Metro is out of scope for the initial version, so instead we plan to sync the settings between 2 profiles using Firefox Sync augmented with some key local events to force a sync right away by using Windows Messages, events, and the registry.
We've cleaned up and tweaked a lot of the Windows 8 contracts work. Fixed soft keyboard issues, improved gesture input support, fixed support for invoking external applications, and more.
The graphics code has also been improved by getting rid of the Basic Layers support and moving to LayerManager.
The upgrade from Windows 8 Consumer Preview to Windows 8 Release Preview came with several changes as well that were fixed up.
We removed the XAML interop support because MS decided this was for Metro applications only and not Metro style enabled desktop browsers. To do this we had to change some startup code, gfx code, and re-implement the appbar using XBL/XUL/JS.
Tim Abraldes finished work on combining metrofirefox.exe with firefox.exe, so now there's only one shared exe that dynamically determines which front-end to use. Metro Firefox uses a modified copy of Fennec XUL front-end which is found in browser/metro/.
We also implemented various bugs to support the registration for default browser in Metro. In particular, Windows itself must be responsible for invoking the default browser UI, so we added code to get Windows to prompt for it. The code for detecting which browser is the default has also changed in Windows 8, so that was updated too.
An existing open question was how we would distribute one build that worked both with Windows XP and Windows 8. Microsoft announced that they will be providing support for this, so we won't have to worry too much about it.
Of particular note is Bug 755724 which is to split up platform and app resources so that they can be loaded individually. This is probably the main thing holding us up from landing on mozilla-central. It needs an owner so please reach out to us on #windev if you have time to help out with this task.
A new command line firefox.exe -metrodesktop can be used for viewing the metro front-end in desktop mode. This is useful for things like debugging since Windows kills your process if you have it paused for too long. We're also starting to use this now to get tests running with the Metro front end. There's another bug filed but not completed yet to get tests running actually in Metro mode.
Last modified: Wednesday, July 04, 2012
I put my heart and soul into it, and a couple months later I was offered a full time position. I started working as an employee under Robert Strong as my manager.
I was initially offered a position as a contractor for a 3 month term and no guarantee of anything past that. I was coming from a salaried position with benefits, and since I had twin 2 year old boys, this scared the !#$#!% out of me. I knew the personal growth opportunities at Mozilla exceed those at my current position though, so I decided to take a chance.
I'm happy to say that when looking back, I'm glad I took the risk, and consider it to be one of the best decisions I've ever made. I've had an amazing year.
Mozilla's values and principles are aligned with my own. They allow me to be open about what I work on. Hundreds of millions of people get to see my work, and I feel like I am not constrained in any way.
The people I work with are awesome, each in their own way, and I have an implicit trust in each of their abilities. QA, support, other developers, project managers, product managers... they've all taught me so much over the past year.
What I've completed over the past year:
Over the past year, not including any of the completed Windows 8 Metro work, I've pushed over 215 patches across over 170 resolved/fixed bugs.
I've also filed 200 bugs that need to be, or have been done.
Here's a list of some of the larger things I've completed over the past year:
- A ton of Windows 8 Metro work
- Initial ground work along with Jim Mathies
- Graphics code integration
- Metro file picker
- Metro contracts
- Dozens of other tasks
- Updater work:
- Silent updates - Mozilla Maintenance Service
- Security enhancement to the updater process, with and without the service.
- Startup performance tasks under the Snappy project.
- Dozens of platform integration tasks to better integrate with Windows
- Jump list icons generated from favicons
- ImageLib work:
- BMP encoder
- ICO encoder
- Adding Vista style PNG ICO support.
- Refactoring of ICO decoder to use the BMP decoder inside of it removing the duplicated code.
- Adding hundreds of reftests
- Adding a dozen different telemetry histograms
- Firefox enhancements
- Lots of crash fixes, memory leak fixes, and intermittent failure fixes
- The Mozilla development cheatsheet
- Windows 8 Lightning talk
Where I'd like to go from here:
As part of the coding stewards program, I'm starting work on a project to bring videos for code contributors. The plan is to have short 5-10 minute videos that each cover a single topic. This would be similar to Khan Academy videos in the 1 video per concept way, but will be more like a tutorial and will be focused on contributing to Mozilla.
In my past job I managed a team of developers and I expressed interest in doing this at Mozilla.
Lastly I want to continue doing what I'm already doing, I love making a difference and getting things done.
Last modified: Friday, June 08, 2012
Two weeks ago I wrote this tweet that generated over 1500 link clicks alone, as well as several retweets with different untracked links.
In this blog post I mentioned that actions speak louder than words and asked Microsoft to show us their commitment to open source.
I'm happy to say that today Microsoft announced that they listened to user feedback and will now be offering a Visual Studio Express for Desktop applications.
Not having a Visual Studio Express for Desktop applications would have had a negative impact on open source. Thanks to everyone who retweeted and voted!