Как принять участие в разработке Mozilla Firefox?

Я студент CS grad, и я заинтересован в том, чтобы потратить некоторое свободное время на участие в разработке браузера Mozilla Firefox. Я хотел бы внести свой вклад в средство визуализации HTML, движок JavaScript и т.д. Но у меня нет достаточного опыта написания парсеров или подобных материалов, и я не знаю, с чего начать.

Есть, конечно, некоторые ссылки в https://developer.mozilla.org/En/Developer_Guide/, но поскольку Firefox уже является очень огромным проектом, я не знаю, откуда я должен начать учиться.

Итак, мой вопрос в том, какие основные вещи мне нужно изучить, чтобы начать работу с разработкой веб-браузера и откуда я могу это узнать (любые ссылки)? Должен ли я пересматривать, как писать парсеры/компиляторы? Как я могу научиться писать движок HTML-рендеринга/JavaScript? Возможно ли это, учитывая, что они уже очень большие проекты? Когда-то назад, я загрузил исходный код движка JavaScript V8 (http://code.google.com/p/v8/), но я не мог много понять из его исходного кода, поскольку он был очень оптимизированный код, и для начинающих, подобных мне, не было много полезных комментариев, чтобы понять, что происходит.

Обновление: Я довольно комфортно работаю с C, С++, Java, PHP, С#, VB.Net, JavaScript, и меня больше интересует, как веб-браузер анализирует веб-страницу, как она создает и поддерживает DOM, как применяется CSS, как HTML reflow engine работает, как он взаимодействует с движком JavaScript, как он взаимодействует с веб-сервером, как компоненты рисуются на экране и т.д.

Ответ 1

Прочитайте документы начало работы. Выходите на irc.mozilla.org в #developers и смотрите интересные разговоры. Представьте себя в #introduction и задайте вопросы. Перейдите в http://bugzilla.mozilla.org и начните поиск открытых ошибок в компонентах, которые кажутся интересными, а затем найдите ошибки, которые поймают вашу фантазию. Используйте инструменты, такие как http://mxr.mozilla.org/ и http://dxr.mozilla.org, чтобы помочь вы найдете соответствующий код и задаете вопросы в #developers. Изучите, взломайте, повторите.

Я написал сообщение о моем опыте, вовлеченном за последний год, и, похоже, он отражает путь, который значительное количество разработчиков Mozilla взял.

Ответ 2

Вы можете просмотреть список известных ошибок и посмотреть, сможете ли вы их исправить. Другим возможным способом получить ступню в дверь является вовлечение в задачи обеспечения качества, которые помогут вам лучше изучить внутренние приложения.

Ответ 3

Ошибки, отмеченные в Bugzilla со статусом [хорошей первой ошибки], являются хорошим местом для начала. Вы можете просмотреть список здесь.

Найдите то, что вам нравится, и попытайтесь его исправить! Разработчики IRC (#developers in irc.mozilla.org), как правило, рады помочь, когда вы застряли.

Ответ 4

Если вы заинтересованы в анализе, изучите автоматы с конечным состоянием и формальные граммы, он должен быть частью вашей учебной программы в какой-то момент, например, в классе компиляторов. Для части javascript изучите компиляторы JIT, особенно о том, как работает отслеживание JIT. Следуйте за блогами разработчиков Mozilla, вот хорошая стартовая статья: http://hacks.mozilla.org/2010/03/a-quick-note-on-javascript-engine-components/

Наконец, но не менее важно, попробуйте связаться с уже работавшими там людьми и попытаться построить отношения между учеником и учеником, они могут назначить вам задания и могут помочь, если вы застрянете при работе над кодом. Переход на конференции с открытым исходным кодом - отличный способ встретить людей, стоящих за проектом, и начать работу.