Зачем участвовать в открытых проектах?

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

Почему люди вносят свой вклад в открытый исходный код? Множество причин!

Улучшайте программное обеспечение, на которое вы полагаетесь

Многие участники открытого кода начинают с того, что являются пользователями программного обеспечения, в которое они вносят свой вклад. Когда вы обнаружите ошибку в программном обеспечении с открытым исходным кодом, которое вы используете, вы можете посмотреть в исходный код, чтобы узнать, можете ли вы исправить его самостоятельно. Если это так, то возвращение патча - лучший способ убедиться, что ваши друзья (и вы сами, когда вы обновитесь до следующего выпуска) смогут извлечь из него пользу.

Улучшить существующие навыки

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

Знакомьтесь с людьми, которым интересны похожие вещи

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

Найдите наставников и научите других

Работа с другими над общим проектом означает, что вам придется объяснять, как вы это делаете, а также просить помощи у других. Акты обучения и преподавания могут быть полезными для всех участников.

Создавайте общедоступные артефакты, которые помогут вам повысить репутацию (и карьеру)

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

Изучите навыки работы с людьми

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

Это дает возможность вносить изменения, даже небольшие.

Необязательно становиться участником на протяжении всей жизни, чтобы получать удовольствие от участия в проектах с открытым исходным кодом. Вы когда-нибудь видели опечатку на сайте и хотели бы, чтобы кто-нибудь ее исправил? В проекте с открытым исходным кодом вы можете это сделать. Открытый исходный код помогает людям чувствовать свободу в своей жизни и в том, как они воспринимают мир, и это само по себе отрадно.

Что значит внести свой вклад (to contribute)

Если вы новичок в open source, процесс может быть пугающим. Как найти подходящий проект? Что делать, если вы не умеете программировать? Что если что-то пойдет не так?

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

Вам не нужно вносить код

Распространенное заблуждение об участии в разработке открытого исходного кода состоит в том, что вам нужно писать код. Зачастую есть другие части проекта, наиболее игнорируемые или упускаемые из виду. Вы окажете проекту огромную услугу, предложив поработать над этим!

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

Вы любите планировать мероприятия?

  • Организуйте семинары или встречи по проекту, как @fzamperin сделал для NodeSchool
  • Организуйте конференцию проекта (если она есть)
  • Помогите участникам сообщества найти подходящие конференции и подать предложения для выступления

Любите проектировать?

  • Реструктурируйте макетов для повышения удобства использования проекта.
  • Проведите исследование пользователей, чтобы реорганизовать и уточнить навигацию или меню проекта как предлагает Drupal
  • Составьте руководство по стилю, чтобы помочь проекту иметь единый визуальный дизайн.
  • Создайте изображения для футболок или новый логотип как это сделали участники hapi.js

Любите писать?

  • Напишите и улучшите документацию по проекту
  • Создайте папку с примерами, показывающими, как используется проект
  • Начните рассылку новостей по проекту или отредактируйте основные моменты из списка рассылки
  • Напишите учебники для проекта как это сделали участники PyPA
  • Напишите перевод документации по проекту

Любите организовывать?

  • Выставляйте ссылки на повторяющиеся вопросы (issues) и предлагайте новые ярлыки для вопросов, чтобы все было организовано
  • Просмотрите открытые вопросы и предложите закрыть старые например, @nzakas для ESLint
  • Задавайте уточняющие вопросы по недавно открывшимся вопросам, чтобы продвинуть обсуждение вперед

Любите кодить?

  • Найдите открытую проблему для решения например, @dianjin сделал для Leaflet
  • Спросите, можете ли вы помочь написать новую функцию
  • Автоматизируйте настройку проекта
  • Улучшите инструменты и тестирование

Любите помогать людям?

  • Ответьте на вопросы о проекте, например, на Stack Overflow (как в этом примере Postgres) или Reddit
  • Отвечайте на вопросы людей по открытым вопросам
  • Помогите модерировать доски обсуждений или каналы в чатах

Нравится ли вам помогать другим кодить?

  • Проверяйте код других людей
  • Напишите учебные пособия по использованию проекта
  • Предложите стать наставником другого участника как @ereichert сделал для @bronzdoc на Rust

Можно работать не только над программными проектами!

Хотя «открытый исходник» часто относится к программному обеспечению, вы можете сотрудничать практически над чем угодно. Есть книги, рецепты, списки и классы, которые разрабатываются как проекты с открытым исходным кодом.

Например:

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

Ориентация на новый проект

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

Прежде чем вслепую приступить к своим собственным предложениям, начните с изучения обстановки в сообществе. Это увеличивает шансы на то, что ваши идеи будут замечены и услышаны.

Анатомия проекта с открытым исходным кодом

Каждое сообщество с открытым исходным кодом отличается.

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

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

Типичный проект с открытым исходным кодом состоит из следующих типов людей:

  • Автор: Человек или организация, создавшие проект.
  • Владелец: Лицо, которое имеет административное право собственности на организацию или репозиторий (не всегда то же самое, что и первоначальный автор).
  • Сопровождающие: Соавторы, которые несут ответственность за формирование видения и управление организационными аспектами проекта (они также могут быть авторами или владельцами проекта).
  • Соавторы: Все, кто внес свой вклад в проект.
  • Участники сообщества: Люди, которые используют проект. Они могут быть активными в беседах или высказывать свое мнение о направлении проекта.

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

У проекта также есть документация. Эти файлы обычно перечислены на верхнем уровне репозитория.

  • ЛИЦЕНЗИЯ: По определению, каждый проект с открытым исходным кодом должен иметь лицензию с открытым исходным кодом. Если у проекта нет лицензии, он не является открытым исходным кодом.
  • README: README * это инструкция, которая приветствует новых членов сообщества в проекте. В нем объясняется, почему проект полезен и с чего начать.
  • УЧАСТИЕ (CONTRIBUTING): В то время как README помогают людям использовать проект, документация участников помогает людям вносить свой вклад в проект. В нем объясняется, какие виды помощи необходимы и как работает этот процесс. Хотя не у каждого проекта есть файл CONTRIBUTING, его наличие свидетельствует о дружелюбном отношении к участникам.
  • КОДЕКС ПОВЕДЕНИЯ (CODE_OF_CONDUCT): Кодекс поведения устанавливает основные правила поведения участников и помогает создать дружелюбную, гостеприимную атмосферу. Хотя не в каждом проекте есть файл CODE_OF_CONDUCT, его наличие свидетельствует о том, что это хороший проект, в который можно внести свой вклад.
  • Другая документация: Может быть дополнительная документация, такая как учебные пособия, пошаговые руководства или политики управления, особенно для более крупных проектов.

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

  • Отслеживание проблем (issue tracker): Где люди обсуждают вопросы, связанные с проектом.
  • Запросы на исправление (pull request): Где люди обсуждают и просматривают запросы на изменение кода.
  • Дискуссионные форумы или списки рассылки: Некоторые проекты могут использовать эти каналы для разговорных тем (например, “Как мне …“ или “Что вы думаете о …“ вместо отчётов об ошибках и просьбе новых функций). Другие используют issues для всех разговоров.
  • Синхронный канал чата: Некоторые проекты используют каналы чата (например, Slack или IRC) для спонтанного общения, совместной работы и быстрого обмена мнениями.

Поиск проекта, в который можно внести свой вклад

Теперь, когда вы разобрались, как работают проекты с открытым исходным кодом, пришло время найти проект, в который вы можете внести свой вклад!

Если вы никогда раньше не участвовали в разработке открытого исходного кода, прислушайтесь к совету президента США Джона Ф. Кеннеди, который однажды сказал: «Не спрашивайте, что ваша страна может сделать для вас - спросите, что вы можете сделать для своей страны».

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

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

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

Открытый исходный код - это не эксклюзивный клуб; это делают такие же люди, как вы. «Открытый исходный код» - это всего лишь причудливый термин для обозначения мировых проблем как решаемых.

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

28% случайных вкладов в открытый исходный код представляют собой документацию, такую ​​как исправление опечатки, переформатирование или написание перевода.

Если вы ищете существующие проблемы, которые можно исправить, в каждом проекте с открытым исходным кодом есть страница /contribute, на которой освещаются проблемы, удобные для начинающих, с которых вы можете начать. Перейдите на главную страницу репозитория на GitHub и добавьте в конец URL-адреса «/contribute (например, https://github.com/facebook/react/contribute`).

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

Контрольный список перед тем, как внести свой вклад

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

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

Соответствует определению открытого исходного кода

Проект активно принимает взносы

Посмотрите на изменения (commits) в основной ветке. На GitHub вы можете увидеть эту информацию на домашней странице репозитория.

Затем посмотрите на проблемы (issues) проекта.

Теперь проделайте то же самое с запросами на изменение проекта.

Проект приветливый

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

Как отправить вклад

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

Эффективное общение

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

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

Дайте контекст. Помогите другим быстро освоиться. Если вы столкнулись с ошибкой, объясните, что вы пытаетесь сделать и как ее воспроизвести. Если вы предлагаете новую идею, объясните, почему вы думаете, что она будет полезна для проекта (не только для вас!).

😇 “Х не происходит, когда я делаю Y”

😢 “X не работает! Исправьте это.”

Сделайте домашнее задание заранее. Это нормально не знать что-то, но показать, что вы пробовали. Прежде чем обращаться за помощью, обязательно проверьте README проекта, документацию, проблемы (открытые или закрытые), список рассылки и поищите ответ в Интернете. Люди оценят, когда вы продемонстрируете, что пытаетесь учиться.

😇 “Я не знаю, как реализовать X. Я проверил справочную документацию и не нашел никаких упоминаний.”

😢 “Как мне сделать X?”

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

😇 “Я хотел бы написать руководство по API.”

😢 “На днях я ехал по шоссе и остановился заправиться, и тогда у меня возникла замечательная идея, чем мы должны заняться, но прежде чем я это объясню, позвольте мне показать вам …“

Держите все сообщения общедоступными. Хотя это заманчиво, не обращайтесь к сопровождающим в частном порядке, если вам не нужно делиться конфиденциальной информацией (например, о проблеме безопасности или серьезном нарушении поведения). Если вы сделаете общение публичным, больше людей смогут узнать о нем и извлечь из него пользу. Обсуждения сами по себе могут быть вкладом.

😇 (в качестве комментария) «@-сопровождающий Привет! Как нам обработать этот запрос на изменение?»

😢 (по электронной почте) «Привет, извини, что побеспокоил тебя по электронной почте, но мне было интересно, была ли у тебя возможность просмотреть мой PR»

Можно задавать вопросы (но будьте терпеливы!). В какой-то момент каждый был новичком в проекте, и даже опытным участникам нужно время освоиться, когда они смотрят на новую задачу. Даже давние сопровождающие не всегда знакомы со всеми частями проекта. Проявите к ним такое же терпение, какое вы бы хотели, чтобы они проявили к вам.

😇 “Спасибо, что разобрались с этой ошибкой. Я последовал вашим предложениям. Вот результат.”

😢 “Почему вы не можете решить мою проблему? Разве это не ваш проект?”

Уважайте решения сообщества. Ваши идеи могут отличаться от приоритетов или видения сообщества. Они могут предложить обратную связь или отказаться от реализации вашей идеи. Хотя вам следует обсуждать и искать компромисс, сопровождающие должны жить с вашим решением дольше, чем вы. Если вы не согласны с их направлением, вы всегда можете работать над собственным ответвлением проекта (fork) или начать собственный проект.

😇 “Я разочарован, что вы не можете поддержать мой вариант использования, но, как вы объяснили, он затрагивает только небольшую часть пользователей, я понимаю почему. Спасибо за внимание.”

😢 “Почему вы не поддерживаете мой вариант использования? Это недопустимо!”

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

Сбор контекста

Прежде чем что-либо делать, сделайте быструю проверку, чтобы убедиться, что ваша идея больше нигде не обсуждалась. Просмотрите README проекта, проблемы (открытые и закрытые), список рассылки и Stack Overflow. Вам не нужно тратить часы на все, но быстрый поиск нескольких ключевых слов имеет большое значение.

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

  • Проблемы похожи на начало разговора или обсуждения
  • Запросы на изменение предназначены для начала работы над решением.
  • Для легкого общения, например, уточняющего или практического вопроса, попробуйте задать вопрос в Stack Overflow, IRC, Slack или других каналах чата, если он есть в проекте.

Прежде чем открывать задачу или запрос на изменение (pull request), проверьте документацию проекта (обычно это файл с именем CONTRIBUTING или README), чтобы узнать, нужно ли вам включать что-нибудь конкретное. Например, они могут попросить вас следовать шаблону или потребовать, чтобы вы использовали тесты.

Если вы хотите внести существенный вклад, задайте вопрос, прежде чем работать над ним. Полезно некоторое время понаблюдать за проектом (на GitHub вы можете нажать «Смотреть», чтобы получать уведомления обо всех разговорах) и перейти знакомству с членами сообщества, прежде чем выполнять работу, которую могут не принять.

Открытие проблемы (issue)

Обычно вам следует открывать проблему в следующих ситуациях:

  • Сообщить об ошибке, которую вы не можете решить самостоятельно
  • Обсудить общую тему или идею (например, сообщество, видение или политику)
  • Предложить новую функцию или другую идею проекта

Советы по общению по проблемам (issue):

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

Открытие запроса на изменение (pull request)

Обычно вы должны открывать запрос на изменение в следующих ситуациях:

  • Отправляйте тривиальные исправления (например, опечатку, неработающую ссылку или очевидную ошибку)
  • Начните работать над тем, что уже было запрошено или что вы уже обсуждали в вопросе (issue)

Запрос на исправление не обязательно должен представлять законченную работу. Обычно лучше открывать запрос на изменение на раннем этапе, чтобы другие могли наблюдать за вашим прогрессом или оставлять отзывы о нем. Просто отметьте это как “WIP” (Work in Progress) «незавершенное производство» в строке темы. Вы всегда можете добавить больше коммитов позже.

Если проект находится на GitHub, вот как отправить запрос на перенос:

  • Скопируйте репозиторий и клонируйте его локально. Подключите ваш локальный компьютер к исходному «вышестоящему» репозиторию, добавив его как удаленный. Часто вносите изменения из «восходящего потока», чтобы оставаться в курсе последних событий, чтобы при отправке запроса на включение конфликты слияния были менее вероятными. (См. Более подробные инструкции здесь.)
  • Создать ветку для ваших правок.
  • Ссылайтесь на любые относящиеся к делу проблемы (issues) или подтверждающую документацию в своем PR (например, Закрывает #37»).
  • Включите скриншоты до и после, если ваши изменения включают различия в HTML/CSS. Перетащите изображения в тело запроса на изменение.
  • Протестируйте свои изменения! Запустите свои изменения в сравнении с любыми существующими тестами, если они существуют, и при необходимости создайте новые. Независимо от того, существуют тесты или нет, убедитесь, что ваши изменения не нарушают существующий проект.
  • Внесите свой вклад в стиль проекта в меру своих возможностей. Это может означать использование отступов, точек с запятой или комментариев иначе, чем в вашем собственном репозитории, но упрощает для сопровождающего объединение, а другим - для понимания и поддержки в будущем.

Если это ваш первый запрос на изменение, ознакомьтесь с Сделать запрос на извлечение, который @kentcdodds создал как пошаговое видео-руководство. Вы также можете попрактиковаться в создании запроса на изменение в репозитории Первые вклады, созданном @Roshanjossey.

Что происходит после того, как вы отправите свой вклад

Вы сделали это! Поздравляем, вы стали участником программы с открытым исходным кодом. Надеемся, это первый из многих.

После того, как вы отправите вклад, произойдет одно из следующих событий:

😭 Вы не получите ответ.

Надеюсь, вы проверили проект на наличие признаков активности перед тем, как внести свой вклад. Однако даже в активном проекте возможно, что ваш вклад не получит отклика.

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

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

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

🚧 Кто-то просит изменить ваш вклад.

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

Когда кто-то просит изменений, будьте отзывчивы. Они нашли время, чтобы проанализировать ваш вклад. Открывать PR и уходить - дурной тон. Если вы не знаете, как внести изменения, изучите проблему, а затем обратитесь за помощью, если она вам понадобится.

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

👎 Ваш вклад не принят.

Ваш вклад может быть принят или не принят в конце. Надеюсь, вы уже не вложили в это слишком много усилий. Если вы не уверены, почему он не был принят, вполне разумно попросить разработчика оставить отзыв и разъяснения. В конечном итоге, однако, вам нужно будет уважать, что это их решение. Не спорьте и не становитесь враждебными. Вы всегда можете сделать ответвление (fork) и работать над своей собственной версией, если не согласны!

🎉 Ваш вклад принят.

Ура! Вы успешно сделали вклад с открытым исходным кодом!

Вы сделали это!

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