Contributing to the Mozilla codebase

  • Revision slug: Introduction
  • Revision title: Contributing to the Mozilla codebase
  • Revision id: 303993
  • Created:
  • Creator: greybax
  • Is current revision? Нет
  • комментировать

Revision Content

Эта страница служит пособием для ваших первых шагов в сообществе Mozilla. Добро пожаловать, мы рады видеть Вас :)

Нужна помощь?

Сообщество Mozilla всегда приветствует новичков в нашей среде. Если у вас возникают какие-нибудь сложности, мы сможем ответить на ваши вопросы в IRC комнате #introduction chat room on irc.mozilla.org. Если у вас остаются еще какие-то вопросы, то вы можете обратиться к Kyle Huey at khuey@mozilla.com.

Не владеете языком C++?

У нас есть много задач и проектов, которые не требуют знания языка программирования C++. Проверьте нажи Альтернативные проекты.

Шаг 1 - Сборка Firefox, Thunderbird или других приложений

Следуйте нашей простой инструкции по сборке Firefox, или сборке Thunderbird. Это достаточно просто, но может занять некоторое время, поэтому вы можете перейти к следующим этапам пока происходит сборка.

Больше информации по сборке вы найдете тут.

Шаг 2 - Как помочь сообществу Mozilla

Смотри Mozilla Firefox: Development Process. Thunderbird оперирует похожими процессами.

Шаг 3 - Найти чем помочь

Исправить простую ошибку

Если есть что-то, что вы хотели бы исправить в Firefox, Thunderbird или других любимых приложений сообщества Mozilla, то это хорошее место для начала. Есть несколько способов сделать это:

  • Поиск в bugzilla по релевантным ключевым словам,
  • Figure out the bugzilla component in which your pet peeve is implemented, using the components list. Browse that component on bugzilla for related bugs.
  • Спросить в irc каналах #introduction or #developers на irc.mozilla.org.

Найденная ошибка - это уже неплохо для новичка

Разработчики Mozilla помечают некоторые ошибки как легкие (для новичков), чтобы начинающим было легче разобратсья в процессе после фикса этих ошибок:

  • Mentored bugs (or the alternative, less usable interface) have a mentor who commits to helping you every step of the way. Generally, there should be enough information in the bug to get started. Whenever you need help, contact the mentor over IRC, in the bug itself, or by email. When you've completed the bug, they will help you get your code into the tree.
  • "Good" first bugs may be a little stale, but at some point in their lives we considered that they would be a good first step for newcomers to Mozilla. We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs.
  • Student projects are larger projects, such as might be suitable for a university student for credit. Of course, if you are not a student, you should still feel free to fix one of these bugs.

Step 4 - Fix the bug

We leave this in your capable hands. We have some resources to help you here too:

If the bug you're fixing is likely to require an update to developer documentation once it's fixed, be sure to add the dev-doc-needed keyword to the bug (or ask someone to do it, if you don't have editbugs privileges on Bugzilla). This puts the bug on the radar of our documentation team to ensure that once the bug is resolved, the documentation will be updated appropriately. If you don't mark the bug, your work might go unnoticed by the docs team! You can mark the bug with this keyword at any time; you don't need to wait until it's actually fixed.

Of course, our documentation is a wiki; you can really help by updating the documentation yourself. Even if you're not comfortable with your writing skills, keep in mind that our helpful, happy documentation gnomes will follow along behind you and clean up for you.

Step 5 - Get your code reviewed

Once you fix the bug, attach a patch to the bug, and ask for review. Do this by clicking the Details link on your attachment, then setting the review flag to ? and entering the reviewer's bugzilla ID in the text field that appears (either their email address of the :UniqueName they provide). It is very important to attach a bugzilla ID, or the request will be missed. So how do you figure out the right person to ask for a review?

  • If you have a mentored bug, ask your mentor, they will know or can find out easily.
  • Run hg blame and look at the people who have touched the function's you've worked on - they will be a good candidate.
  • The bug itself may contain a clear indication of the best person to ask for a review.
  • Are there related bugs on similar topics? In that case, the reviewer in those bugs might be a good choice.
  • We have an out of date list of modules which lists peers and owners for the module, some of whom will be a good reviewer. In the worst case, set the module owner as the reviewer, and ask them in the comment to pick someone better if they don't have time.

Step 5b - Follow it up

If you've asked for review, but the reviewer hasn't said anything for a few days, don't be afraid to ping them. Just add a comment to the bug saying 'review ping?', and another a few days later if they still haven't responded. If they don't respond after that, ask for help in #introduction or #developers.

Step 6 - Respond to the review

Often, a reviewer will ask for changes, perhaps minor, perhaps major. In either case, fix what the reviewer asks for; if you're unsure how, be sure to ask! Attach the new patch to the bug again, and ask for review again from the same reviewer. If they give you an r+ that means that your bug is accepted into the tree!

Step 7 - Actually get the code into the tree

Since you don't yet have the ability to push the code into the tree, you should ask somebody for help. If you have a mentor, ask them. If not, ask the reviewer. If the reviewer is too busy, mark that a commit is needed by adding the checkin-needed keyword. A friendly person should be along within a few days and push the code to the repository, and they will mark the bug as fixed.

Step 8 - Repeat

Congratulations, you've fixed your first bug. Now go back to step 3 and repeat. Now that you've got your first bug in, you should request level 1 access to the repository so that you can push to tryserver and get automated feedback about your changes on multiple platforms. After fixing a nontrivial number of bugs, you should request level 2/3 access (depending on the repository you're using) so that you can push your own code after it has been r+ed.

В заключении

Мы находимся в процессе совершенствования информации на этой странице для новичков в проекте. Мы будем переводить остальные страницы в ближайшее время, а пока вы можете ознакомиться с ними в их нынешнем виде:

{{ languages( { "ru": "ru/введение" }) }}

Revision Source

<p>Эта страница служит пособием для ваших первых шагов в сообществе Mozilla. Добро пожаловать, мы рады видеть Вас :)</p>
<h2 id=".D0.9D.D1.83.D0.B6.D0.BD.D0.B0_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.3F">Нужна помощь?</h2>
<p>Сообщество Mozilla всегда приветствует новичков в нашей среде. Если у вас возникают какие-нибудь сложности, мы сможем ответить на ваши вопросы в IRC комнате&nbsp;<a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23introduction">#introduction chat room on irc.mozilla.org</a>. Если у вас остаются еще какие-то вопросы, то вы можете обратиться к Kyle Huey at <a class="link-mailto" href="mailto:khuey@mozilla.com" rel="freelink">khuey@mozilla.com</a>.</p>
<h2 id=".D0.9D.D0.B5_.D0.B2.D0.BB.D0.B0.D0.B4.D0.B5.D0.B5.D1.82.D0.B5_.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0.BC_C.2B.2B.3F">Не владеете языком C++?</h2>
<p>У нас есть много задач и проектов, которые не требуют знания языка программирования C++. Проверьте нажи&nbsp;<a href="/en/Introduction_(alternate)" title="En/Introduction (alternate)">Альтернативные проекты</a>.</p>
<h2 id=".D0.A8.D0.B0.D0.B3_1_-_.D0.A1.D0.B1.D0.BE.D1.80.D0.BA.D0.B0_Firefox.2C_Thunderbird_.D0.B8.D0.BB.D0.B8_.D0.B4.D1.80.D1.83.D0.B3.D0.B8.D1.85_.D0.BF.D1.80.D0.B8.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8.D0.B9">Шаг 1 - Сборка Firefox, Thunderbird или других приложений</h2>
<p style="margin: 0px 0px 1.286em; padding: 0px; color: rgb(51, 51, 51); font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', Lucida, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">Следуйте нашей <a href="/En/Simple_Firefox_build" title="Simple Firefox Build">простой инструкции по сборке Firefox</a>, или <a href="/en/Simple_Thunderbird_build" title="Simple Thunderbird build">сборке Thunderbird</a>. Это достаточно просто, но может занять некоторое время, поэтому вы можете перейти к следующим этапам пока происходит сборка.</p>
<p style="margin: 0px 0px 1.286em; padding: 0px; color: rgb(51, 51, 51); font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', Lucida, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">Больше информации по сборке вы<span class="Apple-converted-space">&nbsp;</span><a href="/En/Developer_Guide/Build_Instructions" style="text-decoration: none; cursor: default; color: rgb(51, 102, 153) !important; " title="https://developer.mozilla.org/En/Developer_Guide/Build_Instructions">найдете тут</a>.</p>
<h2 id=".D0.A8.D0.B0.D0.B3_2_-_.D0.9A.D0.B0.D0.BA_.D0.BF.D0.BE.D0.BC.D0.BE.D1.87.D1.8C_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D1.81.D1.82.D0.B2.D1.83_Mozilla">Шаг 2 - Как помочь сообществу Mozilla</h2>
<p>Смотри <a class="external" href="http://mozilla.github.com/process-releases/draft/development_overview/" title="http://mozilla.github.com/process-releases/draft/development_overview/">Mozilla Firefox: Development Process</a>. Thunderbird оперирует <a class="external" href="http://people.mozilla.org/~mbanner2/tbdevspecifics/" title="http://people.mozilla.org/~mbanner2/tbdevspecifics/">похожими процессами</a>.</p>
<h2 id=".D0.A8.D0.B0.D0.B3_3_-_.D0.9D.D0.B0.D0.B9.D1.82.D0.B8_.D1.87.D0.B5.D0.BC_.D0.BF.D0.BE.D0.BC.D0.BE.D1.87.D1.8C">Шаг 3 - Найти чем помочь</h2>
<h3 id=".D0.98.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.B8.D1.82.D1.8C_.D0.BF.D1.80.D0.BE.D1.81.D1.82.D1.83.D1.8E_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D1.83">Исправить простую ошибку</h3>
<p><span id="result_box" lang="ru"><span class="hps">Если есть</span> <span class="hps">что-то, что вы</span> <span class="hps">хотели бы</span> <span class="hps">исправить</span> <span class="hps">в</span> <span class="hps">Firefox, Thunderbird</span> <span class="hps">или</span> <span class="hps">других любимых</span> <span class="hps">приложений</span> сообщества <span class="hps">Mozilla</span><span>, то это&nbsp;</span><span class="hps">хорошее</span> <span class="hps">место для начала.</span> <span class="hps">Есть</span> <span class="hps">несколько способов</span> <span class="hps">сделать это:</span></span></p>
<ul>
  <li><a class="link-https" href="https://bugzilla.mozilla.org/query.cgi" title="https://bugzilla.mozilla.org/query.cgi">Поиск в bugzilla</a> по релевантным ключевым словам,</li>
  <li>Figure out the <a class="link-https" href="https://bugzilla.mozilla.org/describecomponents.cgi" title="https://bugzilla.mozilla.org/describecomponents.cgi">bugzilla component</a> in which your pet peeve is implemented, using the components list. Browse that component on bugzilla for related bugs.</li>
  <li>Спросить в irc каналах <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23introduction">#introduction</a> or <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23developers">#developers</a> на irc.mozilla.org.</li>
</ul>
<h3 id="Find_a_bug_we've_identified_as_being_good_for_newcomers">Найденная ошибка - это уже неплохо для новичка</h3>
<p>Разработчики Mozilla помечают некоторые ошибки как легкие (для новичков), чтобы начинающим было легче разобратсья в процессе после фикса этих ошибок:</p>
<ul>
  <li><a class="external" href="http://www.joshmatthews.net/bugsahoy/" title="http://www.joshmatthews.net/bugsahoy/">Mentored bugs</a> (or the alternative, <a class="link-https" href="https://bugzil.la/sw:%5Bmentor=" title="https://bugzil.la/sw:%5Bmentor=">less usable interface</a>) have a mentor who commits to helping you every step of the way. Generally, there should be enough information in the bug to get started. Whenever you need help, contact the mentor over IRC, in the bug itself, or by email. When you've completed the bug, they will help you get your code into the tree.</li>
  <li><a class="link-https" href="https://bugzil.la/sw:%5Bgood%20first%20bug%5D" title="https://bugzil.la/sw:[good first bug]">"Good" first bugs</a> may be a little stale, but at some point in their lives we considered that they would be a good first step for newcomers to Mozilla. We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs.</li>
  <li><a class="link-https" href="https://bugzil.la/kw:student-project" title="https://bugzil.la/kw:student-project">Student projects</a> are larger projects, such as might be suitable for a university student for credit. Of course, if you are not a student, you should still feel free to fix one of these bugs.</li>
</ul>
<h2 id="Step_4_-_Fix_the_bug">Step 4 - Fix the bug</h2>
<p>We leave this in your capable hands. We have some resources to help you here too:</p>
<ul>
  <li>Check out <a href="/En/Developer_Guide" title="En/Developer_Guide">https://developer.mozilla.org/En/Developer_Guide</a>,</li>
  <li>Ask for help in a comment on the bug, or in <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23introduction">#introduction</a> or <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23developers">#developers</a>.</li>
</ul>
<p>If the bug you're fixing is likely to require an update to developer documentation once it's fixed, be sure to add the <code>dev-doc-needed</code> keyword to the bug (or ask someone to do it, if you don't have editbugs privileges on Bugzilla). This puts the bug on the radar of our documentation team to ensure that once the bug is resolved, the documentation will be updated appropriately. If you don't mark the bug, your work might go unnoticed by the docs team! You can mark the bug with this keyword at any time; you don't need to wait until it's actually fixed.</p>
<p>Of course, our documentation is a wiki; you can really help by updating the documentation yourself. Even if you're not comfortable with your writing skills, keep in mind that our helpful, happy documentation gnomes will follow along behind you and clean up for you.</p>
<h2 id="Step_5_-_Get_your_code_reviewed">Step 5 - Get your code reviewed</h2>
<p>Once you fix the bug, <a href="/En/Developer_Guide/How_to_Submit_a_Patch" title="How to Submit a Patch">attach a patch to the bug</a>, and ask for review. Do this by clicking the <strong>Details</strong> link on your attachment, then setting the <strong>review</strong> flag to <strong>?</strong> and entering the reviewer's bugzilla ID in the text field that appears (either their email address of the :UniqueName they provide). It is very important to attach a bugzilla ID, or the request will be missed. So how do you figure out the right person to ask for a review?</p>
<ul>
  <li>If you have a mentored bug, ask your mentor, they will know or can find out easily.</li>
  <li>Run <code>hg blame</code> and look at the people who have touched the function's you've worked on - they will be a good candidate.</li>
  <li>The bug itself may contain a clear indication of the best person to ask for a review.</li>
  <li>Are there related bugs on similar topics? In that case, the reviewer in those bugs might be a good choice.</li>
  <li>We have an out of date <a class="link-https" href="https://wiki.mozilla.org/Modules">list of modules</a> which lists peers and owners for the module, some of whom will be a good reviewer. In the worst case, set the module owner as the reviewer, and ask them in the comment to pick someone better if they don't have time.</li>
</ul>
<h3 id="Step_5b_-_Follow_it_up">Step 5b - Follow it up</h3>
<p>If you've asked for review, but the reviewer hasn't said anything for a few days, don't be afraid to ping them. Just add a comment to the bug saying 'review ping?', and another a few days later if they still haven't responded. If they don't respond after that, ask for help in <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23introduction">#introduction</a> or <a class="link-https" href="https://chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23developers">#developers</a>.</p>
<h2 id="Step_6_-_Respond_to_the_review">Step 6 - Respond to the review</h2>
<p>Often, a reviewer will ask for changes, perhaps minor, perhaps major. In either case, fix what the reviewer asks for; if you're unsure how, be sure to ask! Attach the new patch to the bug again, and ask for review again from the same reviewer. If they give you an <strong>r+</strong> that means that your bug is accepted into the tree!</p>
<h2 id="Step_7_-_Actually_get_the_code_into_the_tree">Step 7 - Actually get the code into the tree</h2>
<p>Since you don't yet have the ability to push the code into the tree, you should ask somebody for help. If you have a mentor, ask them. If not, ask the reviewer. If the reviewer is too busy, mark that a commit is needed by adding the <em>checkin-needed</em> keyword. A friendly person should be along within a few days and push the code to the repository, and they will mark the bug as fixed.</p>
<h2 id="Step_8_-_Repeat">Step 8 - Repeat</h2>
<p>Congratulations, you've fixed your first bug. Now go back to step 3 and repeat. Now that you've got your first bug in, you should request level 1 access to the repository so that you can push to tryserver and get automated feedback about your changes on multiple platforms. After fixing a nontrivial number of bugs, you should request level 2/3 access (depending on the repository you're using) so that you can push your own code after it has been <strong>r+</strong>ed.</p>
<h2 id="More_information.C2.A0">В заключении</h2>
<p><span id="result_box" lang="ru"><span class="hps">Мы находимся в</span> <span class="hps">процессе совершенствования</span> <span class="hps">информации на этой странице</span> <span class="hps">для новичков в</span> <span class="hps">проекте.</span> <span class="hps">Мы будем</span> переводить <span class="hps">остальные страницы</span> <span class="hps">в ближайшее время,</span> <span class="hps">а пока</span> <span class="hps">вы можете ознакомиться с ними </span> <span class="hps">в их нынешнем виде</span><span>:</span></span></p>
<ul>
  <li><a class="external" href="http://www.joshmatthews.net/blog/2010/03/getting-involve-with-mozilla/">A guide to learning the mozilla codebase</a>.</li>
  <li><a class="link-https" href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">A beginner's guide to SpiderMonkey, Mozilla's Javascript engine.</a></li>
  <li><a class="external" href="http://www.brianbondy.com/mozilla/cheatsheet/" title="http://www.brianbondy.com/mozilla/cheatsheet/">Mozilla platform development cheatsheet.</a></li>
</ul>
<p>{{ languages( { "ru": "ru/введение" }) }}</p>
Revert to this revision