Education/ComputerScience

From MozillaWiki
Jump to: navigation, search

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

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.