Статьи

Эффективное содействие проектам с открытым исходным кодом: Webmaker

Конечный продукт
Что вы будете создавать

Вклад в проекты с открытым исходным кодом имеет много достоинств. Внося свой вклад в такой проект, вы узнаете профессиональный путь развития, который используется крупными организациями. Такие навыки оказываются очень полезными для карьеры людей и помогают им изучать вещи, которые они не могут изучать во время обучения / работы.

Эта статья была разработана для начинающих и промежуточных разработчиков, желающих внести свой вклад в проекты с открытым исходным кодом. Я продемонстрирую вклад в проект Webmaker Фонда Mozilla , чтобы объяснить, как вы можете эффективно участвовать в проектах с открытым исходным кодом.

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

Прежде всего, вам нужно будет найти репозиторий проекта. Например, мы будем работать над компонентом Profile Webmaker.

https://github.com/mozilla/webmaker-profile-2

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

Форк проект

Например, у меня было следующее:

https://github.com/tanay1337/webmaker-profile-2

Вам нужно будет установить Git в вашей системе. Вы можете прочитать руководство о том, как это сделать .

В нижней правой части вы увидите поле, похожее на это:

Клонировать проект локально

Вы можете скопировать этот URL, чтобы клонировать хранилище в вашей системе. Теперь запустите Git в режиме командной строки и введите следующую команду.

git clone https://github.com/tanay1337/webmaker-profile-2.git

Это импортирует весь код в вашу систему в папке с именем webmaker-profile-2 . Руководящие указания обычно содержатся в файле с именем CONTRIBUTING.md а инструкции по установке находятся в README.md . Очень внимательно прочитайте эти два документа. Они содержат важную информацию для разработчиков.

Теперь вам нужно будет найти несколько важных и простых ошибок для начала. Для любых проектов, связанных с Mozilla, вы можете использовать Bugs Ahoy для поиска хороших первых ошибок, а также исправленных ошибок, специфичных для вашего набора навыков. Mozilla использует Bugzilla для регистрации ошибок и управления ими, а также для обработки запросов функций. Вы можете войти в Bugzilla, используя Persona . Как только вы найдете соответствующую ошибку, вы должны прокомментировать эту ошибку, показывая вашу заинтересованность в ее исправлении.

Запросить помощь по ошибке

Вы также можете обратиться за помощью в поиске определенного файла в исходном коде, где присутствует ошибка, от разработчиков в IRC Mozilla. Это действительно дружная группа людей, которые с радостью помогут вам решить вашу первую ошибку. Если никого нет в сети, попробуйте добавить needinfo   флаг для наставника, упомянутого в баге, и он вернется, чтобы помочь вам!

Добавление флагов needinfo

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

git status

Это даст подробную информацию об измененных файлах, а также о новых файлах, которые были добавлены в локальный репозиторий. Если вы удовлетворены файлами, которые были изменены, добавьте измененные / новые файлы в область подготовки.

git add names_of_files

Если все идет хорошо, то вы можете смело фиксировать файлы.

git commit -m " Your message here "

Убедитесь, что ваш коммит не содержит ненужных пробелов или новых строк. Хорошей практикой считается называть сообщение чем-то вроде «Исправление ошибки 1040556», по причинам, которые я объясню вам позже в этой статье. Сопровождающие хранилища предпочитают, если у вас есть один коммит на запрос на извлечение. Итак, если у вас есть более одного коммита локально, вы должны перебазировать их.

git rebase -i HEAD~2

Приведенная выше команда предполагает, что у вас есть две фиксации, и -i — флаг для интерактивной перебазировки. Он покажет две фиксации вместе с их сообщениями, к которым будет добавлен префикс pick слова. Просто замените pick на squash на одном из коммитов, и все готово. Следующий экран просто объединяет сообщения коммита.

Поздравляем, вы успешно отклонили коммиты. Теперь вам просто нужно отправить изменения в ваш репозиторий GitHub.

git push

Или, если вы уже выдвинули первый коммит и выполнили его повторную перезагрузку, попробуйте следующую команду.

git push -f

Теперь откройте свой онлайн-репозиторий и нажмите кнопку « Запросы на извлечение» и откройте новый запрос на извлечение.

Он автоматически заполняет заголовок запроса на получение из сообщения фиксации и показывает разницу (на рисунке ниже показан результат сравнения для моего запроса на получение).

Просмотр различий в Github

Поздравляем, вы сделали свой первый запрос на извлечение. Но вам все равно нужно сделать еще несколько вещей. Скопируйте URL-адрес вашего запроса и откройте ошибку в Bugzilla. Выберите Добавить вложение и вставьте туда URL-адрес запроса на получение. Установите флажок с надписью patch и добавьте флаг проверки для своего наставника.

Добавление вложения

Предполагая, что ваш патч был корректным, ваш наставник объединит ваш запрос на извлечение с основным репозиторием, и ошибка будет автоматически устранена роботом github в Bugzilla (это происходит только в том случае, если имя запроса на фиксацию и извлечение содержит номер ошибки).

Github робот закрывает ошибку

Нет ничего более радостного, чем видеть, как ваш код объединяется с основной кодовой базой и разворачивается на главном веб-сайте, который используется миллионами пользователей!

Объединенный запрос на извлечение

Я надеюсь, что вы смогли выполнить эти шаги, чтобы исправить вашу первую ошибку в Webmaker или любом другом подобном проекте с открытым исходным кодом.