Education/ComputerScience
The majority of contributions to Mozilla come from people who don't work directly for Mozilla. Why do people choose to donate their time and skills to Mozilla? The commitment to keeping the web free and open motivates people. But there is also to the opportunity to learn and to build you reputation as a developer. Mozilla Firefox, for instance, is used by millions around the world. You could be one of the authors of its success. Because the Mozilla development process is open and participatory, new developers can gain access to some of the most skilled and experienced developers in the industry. Working on a large project and interacting with professionals in a meritocracy is a kind of experience that you can't get from a small classroom project.
Study areas
Mozilla is a big project. There is code for the rendering engine, networking, document parsing, the JavaScript language interpreter, image and codec decoders, unit testing frameworks and more. Whatever your interest or abilities, there is almost certainly an opportunity for you to contribute. Knowing where to start can be confusing. A typical path for beginners to learn how to code Mozilla is to start by making extensions. Writing an extension in JavaScript, then writing an extension with binary components, and then integrating you extension code directly into the Mozilla platform are progressively more difficult tasks. But there's no reason you can't start by writing unit tests instead.
Mozilla Platform
Firefox, Thunderbird and many more applications are built on a common Mozilla platform. This is where you can find the rendering engine, document parsers, JavaScript interpreter and cross platform methods of interacting with the local operating system.
Extending
Mozilla based software is extensible through four types of add-ons: extensions, plug-ins, themes and now Jetpack. Learn how you can change the behavior of a Mozilla application without changing the code.
Testing
Unit testing is essential to a project as large as Mozilla. If you hope to make a contribution to the core platform, you will need to learn to create a unit test that will prove it works and warn developers if someone else breaks it. Mozilla uses a variety of testing frameworks for different types of code.
Build and Release engineering
A big part of getting a product like Firefox to market is the infrastructure for building and releasing the code. Unfortunately, there isn't much documentation at MDC describing the process, but changing that is a goal of Mozilla Education.
Embedding
Parts of Mozilla code can be separated from the platform and used inside your own applications. For instance, the Gecko rendering engine. For embedding basics and instructions visit the Embedding page at MDC.
Research
Mozilla Education expects that many visitors to this site will be academics and students looking for research opportunities. Mozilla has a wealth of data that it is willing to share. What is needed is to connect research that academics want to do with research Mozilla may find useful. Mozilla wishes to support research that is open, collaborative and advances the goal of building an open web. Please join #Education or the weekly status call if you wish to discuss research opportunities.
Survival skills
How to get help from the community
Learn how to get help directory from other Mozilla contributors using
- Wikis
- Mailing lists
- Blogs and Planets
- IRC
- Mentors
Essential Development Skills
You can't do anything with Mozilla if you can't download and compile the source code. For many, Mozilla may be the largest project they have ever built. Start here for the essential skill set:
- getting the source code
- compiling the source code
- navigating the source code
- debugging
- creating patches
Tools used by Mozilla
Learn how to use the tools that Mozilla developers use. Using only a browser, it is possible to:
- browse and search source code for all Mozilla projects
- see older versions the Mozilla source code
- track bugs reports and submit patches
- see the status of the latest patches to the Mozilla source code
- share snippets of code
Language reference
Tutorials and reference for C++ and JavaScript, the languages of the Mozilla platform.
Finding a good student project
List of bugs with "student-project" keyword
- Available student projects, sorted by bug number - atom feed
- Available student projects, sorted by Last Changed - atom feed
- Assigned student projects - atom feed
- Resolved student projects
Project Suggestions
Collecting ideas for student projects. Developers who have ideas for projects that they would like to share with student may add them here.