Заходите, тут открыто: как и зачем участвовать в Open Source проектах
Рассказываем, с чего начать путь в Open Source, как поддерживать связь с сообществом и грамотно рассказать в резюме о своем опыте.
![Заходите, тут открыто: как и зачем участвовать в Open Source проектах](https://media.tproger.ru/uploads/2024/07/950c5054-ad16-490d-b42e-68383818b9c0.jpg)
Ежедневно мы пользуемся продуктами на базе открытого кода. На Open Source проекте Chromium основаны Google Chrome, Яндекс.Браузер и Opera, операционная система Android — на базе ядра Linux, а Telegram выставляет всю кодовую базу в общий доступ и даже размещает модификации приложения на официальном сайте.
В развитии Open Source проектов может участвовать любой желающий. Принцип работы продуктов прозрачен, а поддержка происходит только за счет сил сообщества. И все это — без денежного вознаграждения. Зачем и как участвовать в Open Source инициативах — разбираемся вместе с наставниками Solvery — Артём Новичков и Анастасия Золотых. .
![Аватар эксперта Артём Новичков](https://media.tproger.ru/user-uploads/102704/2024-07-03/dbe1ae2c-a7f6-49cd-81a3-5f7d44a32961.jpg)
Артём Новичков
iOS-разработчик — Welltory
![Аватар эксперта Анастасия Золотых](https://media.tproger.ru/user-uploads/102704/2024-07-03/0abd5489-df00-4671-8af1-99ac0789abf3.jpg)
Анастасия Золотых
iOS Platform Team Lead — Звук
Зачем участвовать
Прежде всего — профессиональный рост и образование.
В Open Source ваш код постоянно ревьюят. Изменения попадают в оригинальный проект, только если ваше исправление сочтут важным — это решение принимает команда, управляющая репозиторием. А еще, пока разбираете чужой код, найдете для себя методы и пути решения задач.
Также Open Source — это про нетворкинг и вклад в развитие сообщества.
Причастность к хорошему делу деньгами не измерить, но участие в значимом и важном проекте может мотивировать. Кроме того, Open Source проект может принести полезные знакомства в индустрии (и, возможно, даже рекомендацию или оффер).
Строчка в резюме — еще одна причина, чтобы участвовать в Open Source проектах.
Если в вашем послужном списке есть, например, коммит к ядру Linux, при найме это оценят. Ведь это значит, что вас заметили не только в конкретной компании, но и в целом сообществе. Небольшие проекты тоже будут плюсом — сможете показать свой код на собеседовании. Ведь часто то, что пишется для коммерческих задач, находится под NDA.
С чего начать
Если вы решили стать контрибьютором — то есть участвовать в Open Source проекте — есть несколько советов.
Шаг 1
Прежде всего, при выборе проекта отталкивайтесь от своих интересов, чтобы коллаборация не была в тягость.
Самый простой вход — найти небольшую библиотеку, которую используете в своих проектах: например, для работы с сетью, с версткой. Можно посмотреть, какие есть Issues, вспомнить свои собственные «боли» при использовании библиотеки или баги, которые нашлись во время работы.
Проекты, к которым можно присоединиться, эксперты Solvery советуют искать на GitHub (в разделах популярных репозиториев и задач для новичков), GitLab и Up For Grabs. Еще загляните в руководство и на сайт для начинающих или подпишитесь на специальную рассылку.
Шаг 2
Начните с небольших задач — ищите их по тегам Good First Issue, Beginner, Easy. Их сделали специально для новичков.
Старт в проекте может быть пугающим. Начните с малого. Найдите несколько проектов, которые вам нравятся и подходят по навыкам
Анастасия Золотых советует обратить внимание на следующие типы задач.
1. Исправление мелких багов
- Исправление опечаток в коде или документации;
- Коррекция незначительных логических ошибок;
- Решение проблем с отображением или функциональностью пользовательского интерфейса.
2. Обновление и улучшение документации
- Обновление устаревших инструкций;
- Исправление грамматических и стилистических ошибок.
3. Добавление или улучшение тестов
- Написание юнит-тестов для функций и методов;
- Создание интеграционных тестов;
- Расширение существующих тестов для покрытия новых случаев.
4. Оптимизация кода
- Ускорение медленных алгоритмов;
- Оптимизация запросов к базе данных;
- Улучшение работы с памятью.
5. Реализация мелких новых функций (Enhancements) или улучшений существующего функционала
- Добавление новых опций в существующие команды;
- Улучшение пользовательского интерфейса;
- Реализация дополнительных настроек.
6. Обновление зависимостей проекта до последних версий
- Обновление библиотек и фреймворков;
- Тестирование проекта после обновлений;
- Исправление несовместимостей, вызванных обновлениями.
7. Внесение изменений в UI
- Исправление проблем с версткой;
- Улучшение адаптивности дизайна;
- Добавление новых элементов интерфейса.
Шаг 3
Перед стартом почитайте документацию: README, Contributing Guide и любую другие гайды, чтобы понять основную цель проекта, его структуру и правила участия. При настройке проекта следуйте инструкциям в документации.
Шаг 4
Ознакомьтесь со структурой проекта: начните с директорий и файлов. Поймите, как организованы основные модули и компоненты. Обратите внимание на такие директории, как src
(исходный код), tests
(тесты), docs
(документация).
Посмотрите, как проект инициализируется и какие модули загружаются. Можно начать с основного файла или с точки входа проекта. Определите и прочитайте ключевые модули и функции, чтобы понять основные механизмы проекта. Используйте отладчик для пошагового выполнения кода — это поможет вам увидеть, как код выполняется в реальном времени и понять поведение программы.
Шаг 5
Дальше клонируйте репозиторий и попробуйте решить одну из задач в новой ветке и после открыть Pull Request. Не стесняйтесь задавать вопросы и участвовать в обсуждении — например, в Slack или Discord.
Не забывайте про подробное описание изменений и ссылку на Issue, которую решаете. А еще будьте вежливы и следите за комментариями мейнтейнеров [Команда, поддерживающая проект. — Прим. ред.].
Шаг 6
Приготовьтесь к критике и относитесь к ней с пониманием.
Просмотр ваших изменений опытными разработчиками — это отличный способ учиться. Обратная связь на код ревью поможет улучшить навыки и лучше понимать проект.
Кстати, некоторые проекты предлагают менторство для новых участников — не отказывайтесь от этого. Это может быть полезным для ускоренного обучения.
Как выбрать проект
Во-первых, выбирайте активные сообщества: смотрите на частоту коммитов, активность в чатах, как давно был последний релиз (и как часто команда вносит изменения в проект).
Во-вторых, если вы хотите кодить, а не заниматься сторонними задачами, то выбирайте проекты с четкой документацией. Изучите, есть ли точная инструкция по установке, использованию и вкладу. Если нет — делайте выбор в пользу другого проекта (или возьмите задачу по составлению документации, если такой запрос есть у команды).
В-третьих, осознанно выбирайте размер проекта: лучше начать со средних, у маленьких и больших есть свои особенности.
В больших проектах
➕ Больше документации и высокая активность
➕ Можно получить опыт работы в большой команде
➖ Высокий порог входа: потребуется много времени для изучения архитектуры и кода
В маленьких проектах
➕ Низкий порог входа: кодовую базу понять легче
➕ Ваш вклад будет более заметным
➖ Как правило, почти нет документации, и архитектуру понять сложнее
➖ Мало человеческих ресурсов: помочь с вопросами или предложить поддержку смогут не всегда
Если вы только начинаете, небольшой проект будет более подходящим, так как он обычно легче для понимания и работы. Вы сможете быстрее получить фидбек и увидеть результаты своей работы. Со временем, когда вы почувствуете себя уверенно, вы сможете перейти к популярным проектам и получить пользу от работы в большом активном сообществе и изучения лучших практик разработки.
Как не потерять мотивацию, пока разбираешься в чужом коде
Идите последовательно: читайте документацию, изучайте структуру и тесты. Определите и прочитайте ключевые модули и функции. А еще задавайте вопросы — сообщество часто готово помочь новичкам.
Нередко новички сразу берутся за сложные задачи — это приводит к разочарованию и потере времени. Возьмите за правило идти по нарастающей в новых проектах: сначала мелкие баги, уже потом — серьезные задачи. И не забудьте про тесты, прежде чем отправлять Pull Request.
Еще одна распространенная ошибка — непонятные сообщения к коммитам и Pull Requests. Если в проекте есть принятые шаблоны, то используйте их. А также добавляйте ссылки на Issues и обсуждения по теме.
К чему нужно быть готовым
Ваш код будут ревьюить — приготовьтесь к правкам (и легкому удару по эго). Старайтесь не воспринимать отзывы как критику: они направлены только на улучшение проекта и прокачку ваших навыков. Вносите изменения оперативно.
К критике нужно быть готовым всегда. Самое плохое, что может случиться, ваши исправления просто не примут. Но если вам ответили токсично — посмотрите, может быть, команда общается так и с другими разработчиками, и проект не стоит вашего внимания.
Как показать Open Source проекты в CV
В резюме (или странице на LinkedIn) можно напрямую указать проекты, свои задачи и прикрепить ссылку на репозиторий. Также стоит добавить на GitHub свои Open Source проекты — иногда эта строка в портфолио помогает избежать тестового задания.
В резюме можно создать отдельный раздел Open Source вклад. По каждому проекту кратко опишите его, указав его цель, технологии и ваше участие. Укажите конкретные задачи, которые вы решили, и ваш вклад в проект. Опишите, какие проблемы вы решали и каких результатов достигли.
Если в резюме Open Source проектов нет — это никак не повлияет на принятие решения при найме. Но их наличие станет лишним плюсом в вашу пользу — особенно, если у самой компании есть свои открытые проекты, и она активно развивает это направление.
И самое важное: занимайтесь Open Source, только если действительно получаете от этого удовольствие. Также помните, что всегда можно получить поддержку от менторов на Solvery, чтобы улучшить свои навыки и проекты.
1К открытий9К показов