Mozilla's Good First Bugs and You
Josh Matthews (@lastontheboat)
Senior Research Engineer, Mozilla
Overview
- Why is Mozilla open source?
- What does open source mean in practice?
- "Good first bugs" and mentored bugs
- My experience as a student contributor
- Bugzilla highlights
- Helpful tips & resources
- Stretch goal: contributing to Servo
Why is Mozilla open source?
In the beginning, there was the browser:
Why is Mozilla open source?
In the beginning, there were the browser wars:
Why is Mozilla open source?
Netscape released the code for Netscape Communicator in 1998:
This was a radical departure from traditional wisdom around software.
Why is Mozilla open source?
This became the property of the Mozilla Foundation:
Why is Mozilla open source?
The Mozilla Foundation's manifesto:
Why is Mozilla open source?
The Mozilla Foundation's manifesto:
Why is Mozilla open source?
The Mozilla Foundation's manifesto:
Why is Mozilla open source?
Our community of volunteers allows us to compete with larger companies.
Thus, we have a seat at the table when the future of the Internet is at stake.
What does open source mean in practice?
- Anybody can propose changing code that ships to 100M users.
- The same processes are followed by employees and volunteers.
Reviewing changes
All code changes are reviewed by a module peer before merging.
New reviewers are nominated by existing ones.
(show list of modules and peers)
Automated testing
All code changes are must pass a battery of automated tests before merging.
(show example of automated tests)
Why should students contribute?
There are clear benefits for all parties involved!
For Mozilla:
- Firefox improves incrementally
- Potential for new repeat contributors
Why should students contribute?
There are clear benefits for all parties involved!
For the students:
- Feedback from experienced developers
- Contribute to a large, complex codebase
- Non-academic work that can be examined by employers
What a ridiculous notion
Sometimes people assume that contributing to Firefox is out of their league:
- It's more than 10M lines of code!
- You probably need to understand parsing and JIT compilers
- What if you have never written networking code?
- I don't know CSS or JavaScript; how could I work on something that implements them?
What a sensible notion
There are lots of ways to contribute that leverage existing knowledge:
- Fix low-priority but non-complex bugs (with guidance)
- Refactor older, messy code to use modern patterns
- Fix straightforward crashes
Good First Bugs
The oldest evidence of the good first bug concept is from 2003.
Historically, they were not well curated and of varying quality.
Good First Bugs
Since 2011 there have been efforts to improve the contribution experience.
We now emphasize:
- More information up-front
- A single point of contact for questions
- The most complicated part should be the process
Mentored Bugs
Grassroots effort to make it easy to search for appropriate bugs
Now officially part of issue tracker:
Mentoring means:
- I have a solution in mind
- I want to support someone in implementing it
My first Good First Bug
I came across it while lurking on recent Bugzilla activity
The last comment mentioned a solution and the file to look at.
Process:
- Read all the comments carefully before starting
- Multiple reviews from the same developer
- Wrote tests
- Shared tool that was useful for writing tests
Highlights of the Bugzilla interface
- Product/Component (see module list for associated directory)
- Assignee
- Mentor
Highlights of the Bugzilla interface
- Attachments
Highlights of the Bugzilla interface
- "Need more information from" (needinfo/NI)
- Attaching a patch; requesting review
Resources for learning/assistance
Strategies for getting stuck
When asking questions:
- Use needinfo fearlessly
- State what you have tried, what you expect, and what happened
- Attach non-working code or logs of failures when appropriate
- Do everything possible to minimize need for back-and-forth
Stretch goal: Servo
If contributing to a web browser no longer sounds challenging, why not contribute to a web browser written in a new programming language?
- Rebuilding everything from scratch
- Taking advantage of 20 years of experience
- Modular - integrated into Firefox piece by piece
- 10 employees, >917 contributors in 6.5 years
- It's on Github
- Rust makes "systems programming" accessible
- Really good story for mentoring and making meaningful contributions
- Surprising number of "This is my first Rust code" pull requests
- Dozens of students have written their first Rust code for Servo for class