Education/ComputerScience: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Overview=
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.
XXX
 
__TOC__
 
=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.


==[[Education/ComputerScience/Platform|Mozilla Platform]]==
==[[Education/ComputerScience/Platform|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.
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.
==Mozilla Applications==
<!--
==[[Education/ComputerScience/MozillaApplications|Mozilla applications]]==
-->
Firefox is only one of many applications built on the Mozilla platform. The
[https://developer.mozilla.org/En/List_of_Mozilla-Based_Applications list of Mozilla based applications] is quite long. If you want to build you own application on the platform, consider using [https://developer.mozilla.org/en/XULRunner XULRunner].


==[[Education/ComputerScience/Extending|Extending]]==
==[[Education/ComputerScience/Extending|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.
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.


==Embedding==
==Testing==
<!--
<!--
==[[Education/ComputerScience/Embedding|Embedding]]==
==[[Education/ComputerScience/Testing|Testing]]==
-->
-->
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 [https://developer.mozilla.org/en/Embedding_Mozilla Embedding] page at MDC.
[https://developer.mozilla.org/en/Developing_Tests 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 [https://developer.mozilla.org/en/Mozilla_automated_testing testing frameworks] for different types of code.


==Release engineering==
==Build and Release engineering==
<!--
<!--
==[[Education/ComputerScience/ReleaseEngineering|Release engineering]]==
==[[Education/ComputerScience/ReleaseEngineering|Release engineering]]==
-->
-->
A big part of getting a product like Firefox to market is the infrastructure for building and testing the code. Unfortunately, there isn't much documentation at [http://developer.mozilla.org MDC] describing the process, but changing that is a goal of Mozilla Education.
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 [http://developer.mozilla.org MDC] describing the process, but changing that is a goal of Mozilla Education.


==[[Education/ComputerScience/Tools|Tools used by Mozilla]]==
==Embedding==
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
==[[Education/ComputerScience/Embedding|Embedding]]==
* see older versions the Mozilla source code
-->
* track bugs reports and submit patches
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 [https://developer.mozilla.org/en/Embedding_Mozilla Embedding] page at MDC.
* see the status of the latest patches to the Mozilla source code
* share snippets of code


==Research==
==Research==
Line 50: Line 45:
* Mentors
* Mentors


==[[Education/ComputerScience/WorkingWithSource|Working with the source code]]==
==[[Education/ComputerScience/EssentialSkills|Essential Development Skills]]==
Learn how to get Mozilla source code, edit it and compile it.
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


==[[Education/ComputerScience/Testing|Testing]]==
==[[Education/ComputerScience/Tools|Tools used by Mozilla]]==
If you want to submit a patch and see it accepted you will probably need to write a test to go with it. Learn about all the different kinds of tests there are for Mozilla code.
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
==[[Education/ComputerScience/Debugging|Debugging]]==
* see older versions the Mozilla source code
Learn how to use tools available for any operating system to debug Mozilla.
* track bugs reports and submit patches
* see the status of the latest patches to the Mozilla source code
* share snippets of code


==[[Education/ComputerScience/LanguageReference|Language reference]]==
==[[Education/ComputerScience/LanguageReference|Language reference]]==
Tutorials and reference for C++ and JavaScript, the languages of the Mozilla platform.
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==
* [https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&keywords_type=allwords&keywords=student-project&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=REOPENED&chfieldto=Now&order=Bug+Number Available student projects, sorted by bug number] - [https://bugzilla.mozilla.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=REOPENED&chfieldto=Now&field-1-0-0=bug_status&field-1-1-0=keywords&keywords=student-project&keywords_type=allwords&query_format=advanced&remaction=&type-1-0-0=anyexact&type-1-1-0=allwords&value-1-0-0=UNCONFIRMED%2CNEW%2CREOPENED&value-1-1-0=student-project&title=Bug%20List&ctype=atom atom feed]
* [https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&keywords_type=allwords&keywords=student-project&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=REOPENED&chfieldto=Now&order=Last+Changed Available student projects, sorted by Last Changed] - [https://bugzilla.mozilla.org/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=REOPENED&bugidtype=include&chfieldfrom=&chfieldto=Now&chfieldvalue=&email1=&email2=&emailassigned_to1=1&emailassigned_to2=1&emailqa_contact2=1&emailreporter2=1&emailtype1=exact&emailtype2=exact&field-1-0-0=bug_status&field-1-1-0=keywords&field0-0-0=noop&keywords=student-project&keywords_type=allwords&long_desc=&long_desc_type=substring&query_format=advanced&remaction=&short_desc=&short_desc_type=allwordssubstr&status_whiteboard=&status_whiteboard_type=allwordssubstr&type-1-0-0=anyexact&type-1-1-0=allwords&type0-0-0=noop&value-1-0-0=UNCONFIRMED%2CNEW%2CREOPENED&value-1-1-0=student-project&value0-0-0=&votes=&title=Bug%20List&ctype=atom atom feed]
* [https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&keywords_type=allwords&keywords=student-project&bug_status=ASSIGNED&chfieldto=Now&order=Bug+Number Assigned student projects] - [https://bugzilla.mozilla.org/buglist.cgi?bug_status=ASSIGNED&chfieldto=Now&field-1-0-0=bug_status&field-1-1-0=keywords&keywords=student-project&keywords_type=allwords&query_format=advanced&remaction=&type-1-0-0=anyexact&type-1-1-0=allwords&value-1-0-0=ASSIGNED&value-1-1-0=student-project&title=Bug%20List&ctype=atom atom feed]
* [https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&keywords_type=allwords&keywords=student-project&bug_status=RESOLVED&bug_status=VERIFIED&chfieldto=Now&order=Bug+Number Resolved student projects]
==[[Education/ComputerScience/ProjectSuggestions|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.


[[Category:Education]]
[[Category:Education]]
[[Category:Computer Science]]
[[Category:Computer Science]]

Latest revision as of 20:49, 9 July 2009

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.