Написать пост

Заходите, тут открыто: как и зачем участвовать в Open Source проектах

Рассказываем, с чего начать путь в Open Source, как поддерживать связь с сообществом и грамотно рассказать в резюме о своем опыте.

Заходите, тут открыто: как и зачем участвовать в Open Source проектах

Ежедневно мы пользуемся продуктами на базе открытого кода. На Open Source проекте Chromium основаны Google Chrome, Яндекс.Браузер и Opera, операционная система Android — на базе ядра Linux, а Telegram выставляет всю кодовую базу в общий доступ и даже размещает модификации приложения на официальном сайте.

В развитии Open Source проектов может участвовать любой желающий. Принцип работы продуктов прозрачен, а поддержка происходит только за счет сил сообщества. И все это — без денежного вознаграждения. Зачем и как участвовать в Open Source инициативах — разбираемся вместе с наставниками Solvery — Артём Новичков и Анастасия Золотых. .

Зачем участвовать

Прежде всего — профессиональный рост и образование.

В Open Source ваш код постоянно ревьюят. Изменения попадают в оригинальный проект, только если ваше исправление сочтут важным — это решение принимает команда, управляющая репозиторием. А еще, пока разбираете чужой код, найдете для себя методы и пути решения задач. 

Также Open Source — это про нетворкинг и вклад в развитие сообщества.

Курс по Go-разработке от Kata Academy
  • постоянный доступ
  • бесплатно
  • онлайн
tproger.ru

Причастность к хорошему делу деньгами не измерить, но участие в значимом и важном проекте может мотивировать. Кроме того, Open Source проект может принести полезные знакомства в индустрии (и, возможно, даже рекомендацию или оффер).

Строчка в резюме — еще одна причина, чтобы участвовать в Open Source проектах.

Если в вашем послужном списке есть, например, коммит к ядру Linux, при найме это оценят. Ведь это значит, что вас заметили не только в конкретной компании, но и в целом сообществе. Небольшие проекты тоже будут плюсом — сможете показать свой код на собеседовании. Ведь часто то, что пишется для коммерческих задач, находится под NDA.

С чего начать

Если вы решили стать контрибьютором — то есть участвовать в Open Source проекте — есть несколько советов.

Шаг 1

Прежде всего, при выборе проекта отталкивайтесь от своих интересов, чтобы коллаборация не была в тягость.

Самый простой вход — найти небольшую библиотеку, которую используете в своих проектах: например, для работы с сетью, с версткой. Можно посмотреть, какие есть Issues, вспомнить свои собственные «боли» при использовании библиотеки или баги, которые нашлись во время работы.
Артём НовичковiOS-разработчик — Welltory

Проекты, к которым можно присоединиться, эксперты Solvery советуют искать на GitHub (в разделах популярных репозиториев и задач для новичков), GitLab и Up For Grabs. Еще загляните в руководство и на сайт для начинающих или подпишитесь на специальную рассылку.

Шаг 2

Начните с небольших задач — ищите их по тегам Good First Issue, Beginner, Easy. Их сделали специально для новичков.

Старт в проекте может быть пугающим. Начните с малого. Найдите несколько проектов, которые вам нравятся и подходят по навыкам 
Анастасия ЗолотыхiOS Platform Team Lead — Звук

Анастасия Золотых советует обратить внимание на следующие типы задач.

1. Исправление мелких багов

  • Исправление опечаток в коде или документации;
  • Коррекция незначительных логических ошибок;
  • Решение проблем с отображением или функциональностью пользовательского интерфейса.

2. Обновление и улучшение документации

  • Обновление устаревших инструкций;
  • Исправление грамматических и стилистических ошибок.

3. Добавление или улучшение тестов

  • Написание юнит-тестов для функций и методов;
  • Создание интеграционных тестов;
  • Расширение существующих тестов для покрытия новых случаев.

4. Оптимизация кода

  • Ускорение медленных алгоритмов;
  • Оптимизация запросов к базе данных;
  • Улучшение работы с памятью.

5. Реализация мелких новых функций (Enhancements) или улучшений существующего функционала

  • Добавление новых опций в существующие команды;
  • Улучшение пользовательского интерфейса;
  • Реализация дополнительных настроек.

6. Обновление зависимостей проекта до последних версий

  • Обновление библиотек и фреймворков;
  • Тестирование проекта после обновлений;
  • Исправление несовместимостей, вызванных обновлениями.

7. Внесение изменений в UI

  • Исправление проблем с версткой;
  • Улучшение адаптивности дизайна;
  • Добавление новых элементов интерфейса.

Шаг 3

Перед стартом почитайте документацию: README, Contributing Guide и любую другие гайды, чтобы понять основную цель проекта, его структуру и правила участия. При настройке проекта следуйте инструкциям в документации.

Шаг 4

Ознакомьтесь со структурой проекта: начните с директорий и файлов. Поймите, как организованы основные модули и компоненты. Обратите внимание на такие директории, как src (исходный код), tests (тесты), docs (документация).

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

Шаг 5

Дальше клонируйте репозиторий и попробуйте решить одну из задач в новой ветке и после открыть Pull Request. Не стесняйтесь задавать вопросы и участвовать в обсуждении — например, в Slack или Discord.

Не забывайте про подробное описание изменений и ссылку на Issue, которую решаете. А еще будьте вежливы и следите за комментариями мейнтейнеров [Команда, поддерживающая проект. — Прим. ред.].
Анастасия ЗолотыхiOS Platform Team Lead — Звук

Шаг 6

Приготовьтесь к критике и относитесь к ней с пониманием. 

Просмотр ваших изменений опытными разработчиками — это отличный способ учиться. Обратная связь на код ревью поможет улучшить навыки и лучше понимать проект.
Анастасия ЗолотыхiOS Platform Team Lead — Звук

Кстати, некоторые проекты предлагают менторство для новых участников — не отказывайтесь от этого. Это может быть полезным для ускоренного обучения.


Как выбрать проект

Во-первых, выбирайте активные сообщества: смотрите на частоту коммитов, активность в чатах, как давно был последний релиз (и как часто команда вносит изменения в проект).

Во-вторых, если вы хотите кодить, а не заниматься сторонними задачами, то выбирайте проекты с четкой документацией. Изучите, есть ли точная инструкция по установке, использованию и вкладу. Если нет — делайте выбор в пользу другого проекта (или возьмите задачу по составлению документации, если такой запрос есть у команды).

В-третьих, осознанно выбирайте размер проекта: лучше начать со средних, у маленьких и больших есть свои особенности.

В больших проектах

➕ Больше документации и высокая активность

Курс по Go-разработке от Kata Academy
  • постоянный доступ
  • бесплатно
  • онлайн
tproger.ru

➕ Можно получить опыт работы в большой команде 

➖ Высокий порог входа: потребуется много времени для изучения архитектуры и кода

В маленьких проектах

➕ Низкий порог входа: кодовую базу понять легче

➕ Ваш вклад будет более заметным

➖ Как правило, почти нет документации, и архитектуру понять сложнее

➖ Мало человеческих ресурсов: помочь с вопросами или предложить поддержку смогут не всегда

Если вы только начинаете, небольшой проект будет более подходящим, так как он обычно легче для понимания и работы. Вы сможете быстрее получить фидбек и увидеть результаты своей работы. Со временем, когда вы почувствуете себя уверенно, вы сможете перейти к популярным проектам и получить пользу от работы в большом активном сообществе и изучения лучших практик разработки.
Анастасия ЗолотыхiOS Platform Team Lead — Звук

Как не потерять мотивацию, пока разбираешься в чужом коде

Идите последовательно: читайте документацию, изучайте структуру и тесты. Определите и прочитайте ключевые модули и функции. А еще задавайте вопросы — сообщество часто готово помочь новичкам.

Нередко новички сразу берутся за сложные задачи — это приводит к разочарованию и потере времени. Возьмите за правило идти по нарастающей в новых проектах: сначала мелкие баги, уже потом — серьезные задачи. И не забудьте про тесты, прежде чем отправлять Pull Request.

Еще одна распространенная ошибка — непонятные сообщения к коммитам и Pull Requests. Если в проекте есть принятые шаблоны, то используйте их. А также добавляйте ссылки на Issues и обсуждения по теме.

К чему нужно быть готовым

Ваш код будут ревьюить — приготовьтесь к правкам (и легкому удару по эго). Старайтесь не воспринимать отзывы как критику: они направлены только на улучшение проекта и прокачку ваших навыков. Вносите изменения оперативно.

К критике нужно быть готовым всегда. Самое плохое, что может случиться, ваши исправления просто не примут. Но если вам ответили токсично — посмотрите, может быть, команда общается так и с другими разработчиками, и проект не стоит вашего внимания.
Артём НовичковiOS-разработчик — Welltory
Заходите, тут открыто: как и зачем участвовать в Open Source проектах 1

Как показать Open Source проекты в CV

В резюме (или странице на LinkedIn) можно напрямую указать проекты, свои задачи и прикрепить ссылку на репозиторий. Также стоит добавить на GitHub свои Open Source проекты — иногда эта строка в портфолио помогает избежать тестового задания.

В резюме можно создать отдельный раздел Open Source вклад. По каждому проекту кратко опишите его, указав его цель, технологии и ваше участие. Укажите конкретные задачи, которые вы решили, и ваш вклад в проект. Опишите, какие проблемы вы решали и каких результатов достигли.
Анастасия ЗолотыхiOS Platform Team Lead — Звук

Если в резюме Open Source проектов нет — это никак не повлияет на принятие решения при найме. Но их наличие станет лишним плюсом в вашу пользу — особенно, если у самой компании есть свои открытые проекты, и она активно развивает это направление.

И самое важное: занимайтесь Open Source, только если действительно получаете от этого удовольствие. Также помните, что всегда можно получить поддержку от менторов на Solvery, чтобы улучшить свои навыки и проекты.

Следите за новыми постами
Следите за новыми постами по любимым темам
1К открытий9К показов