Если вы задаете себе этот 👆вопрос (я знаю многих из вас), вы пришли в нужное место.

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

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

«Вклад в открытый исходный код может быть полезным способом учиться, преподавать и накапливать опыт практически в любых навыках, которые вы можете себе представить». (Руководство по открытому исходному коду)

Зачем вносить свой вклад?

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

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

Что нужно знать, прежде чем начать

Большинство проектов с открытым исходным кодом будут размещены на GitHub, поэтому вам нужно создать учетную запись там. Если вы не знакомы с GitHub, вы можете сразу перейти на официальную страницу, чтобы узнать, как начать работу.

Я предполагаю, что большинство людей, читающих этот пост в блоге, никогда не участвовали в проектах с открытым исходным кодом, поэтому я рекомендую вам использовать только интерфейс GitHub вместо того, чтобы клонировать репозиторий на свой локальный компьютер. Потому что, если вы это сделаете, вам нужно научиться использовать Git (что также ОЧЕНЬ важно), и это может быть слишком сложно, чтобы делать все сразу.

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

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

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

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

Способы внести свой вклад

Есть ТАК много способов, которыми вы можете внести свой вклад в Open Source. Вам даже не нужно быть программистом. Вы можете делать много вещей, которые не связаны с кодированием и не требуют (должны) много времени.

- Писать документацию

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

Как вы можете помочь:

  • Прочтите документацию, чтобы убедиться, что она понятна и полна. Если нет, предложите варианты, как его улучшить. Или хотя бы сообщить сопровождающим, что вам непонятно и почему.
  • Исправьте мелкие ошибки, такие как опечатки или мертвые ссылки. * Добавляйте недостающую информацию, особенно если это то, что вам нужно было найти самостоятельно (с помощью или без помощи сообщества). У кого-то еще может быть такая же проблема.
  • Добавьте (ссылки на) соответствующие записи в блоге (даже свои собственные).
  • Просмотрите все открытые PR (pull request) в документации. Ищите вышеперечисленное: понятно, полно, правильно? Видите ли вы какие-либо опечатки или другие ошибки? (Я упоминал, что трудно обнаружить опечатки в том, над чем вы работали какое-то время?)

- Перевести документацию (она же локализация)

Если вы не знаете, как работает проект, перевод документации — отличный способ научиться. Так я впервые начал вносить свой вклад и узнавать о Kubernetes. Конечно, нужно [свободно] говорить на другом языке, чтобы перевод соответствовал оригинальному тексту.

Многие люди не говорят или не чувствуют себя комфортно, работая по-английски, поэтому ваш вклад может иметь большое значение!

Некоторые проекты, которым нужна помощь с переводом:

*Подробнее об этих проектах в конце этого сообщения в блоге.

В приведенных ниже проектах используется инструмент под названием Crowdin, который предоставляет внешний интерфейс для управления всеми языковыми переводами:

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

- Ответить на вопросы

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

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

- Создавать проблемы

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

Прежде чем создавать задачу, убедитесь, что нет открытой задачи по той же проблеме (предотвратите дублирование). Если есть, вы можете добавить дополнительную полезную информацию к этой проблеме.

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

И еще раз, если это что-то, что вы можете исправить сами, пожалуйста, сделайте это!

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

- Проблемы с этикеткой

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

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

- Воспроизвести проблему

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

И если вы не можете, вы можете запросить дополнительную информацию у оригинального автора. А может тему можно закрыть!

- Обзор PR

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

- Добавить модульные тесты

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

- Тестировать новые функции

У сопровождающих и участников не всегда есть время для тщательного тестирования новых функций или версий. Здесь вы можете помочь! Создайте новый проект, чтобы протестировать новую функцию, или обновите существующий проект до новой версии (даже если он все еще находится в разработке). Дайте обратную связь людям, которые работают над этим.

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

- Очистить код

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

- Обновление зависимостей

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

- Другой

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

Если у вас есть способы внести свой вклад, которые не упомянуты здесь, сообщите мне об этом в комментариях!

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

Сайты:

Если вы не знаете, с чего начать, несколько веб-сайтов перечисляют проекты, которым нужна помощь:
* Сам GitHub предлагает несколько советов по выбору проектов.
* Посмотрите CodeTriage для проектов с открытыми проблемами.
* Ищите задачи по проектам, меткам (например, "хороший первый выпуск") и/или тегам (например, предпочитаемый вами язык программирования) в разделе "Выпускаемые"
* Вы также можете найти эти ссылки и многое другое на Только для новичков

Проекты, которые вы используете сами:

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

Сосредоточьтесь на гостеприимных сообществах!

Сосредоточьтесь на проектах, которые приветствуют новых участников. Некоторые из следующих могут помочь:

  • Посмотрите, есть ли проблемы с пометкой «только для новичков», «хорошая первая проблема» или что-то подобное; это будет означать, что они открыты / ищут новых участников, и даст вам представление о том, с чего начать.
  • Посмотрите, как они реагируют на созданные проблемы или открытые PR (вежливо или враждебно запрашивают дополнительную информацию, насколько конструктивна обратная связь по PR или проблемам)
  • Проверьте, есть ли кодекс поведения, рекомендации по внесению вклада или подобные вещи (и соблюдаются ли они)
  • Присоединяйтесь к коммуникационным каналам, чтобы увидеть, как взаимодействует сообщество. Знайте, что существует множество проектов и сообществ, которые будут любить, любить, ЛЮБИТЬ вашу помощь!

Когда не стоит вносить свой вклад в open source

Работодатель или контракт не позволяют

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

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

Не уверен, что это ошибка или как ее исправить

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

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

Нет времени

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

Быть нубом…

Пожалуйста, не недооценивайте ценность свежей пары глаз!

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

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

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

НАЧАТЬ СЕЙЧАС

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

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

Дополнительная информация о некоторых проектах OSS

Глоссарий проекта CNCF

Глоссарий Cloud Native призван объяснить концепции облачных приложений ясным и простым языком, не требуя каких-либо предварительных технических знаний.

Есть много способов стать участником этого сообщества. Вы можете добавить новые термины или помочь перевести глоссарий. Любой может внести свой вклад, и все вклады одинаково важны и помогают сообществу расти.

Перейдите на официальную страницу как внести свой вклад для получения более подробной информации, такой как стили, лучшие практики и т. д.

По этой ссылке вы можете просмотреть все термины, ожидающие перевода (измените метку на свой язык. Например, хинди будет label:lang/hi, французский будет label:lang/fr)

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

Официальный репозиторий проекта на Github можно найти здесь.

Вы также можете взаимодействовать напрямую со всеми участниками CNCF slack. Присоединяйтесь к каналам локализации на вашем языке, например #glossary-localization-portuguese или #glossary-localization-hindi.

Сайт проекта Kubernetes

Здесь применяется та же философия; любой может внести свой вклад в документацию. Любое улучшение существующего контента и перевода приветствуется.

Тем не менее, это интересный проект, потому что это уникальная возможность помочь сообществу и узнать больше о Kubernetes.

На этой странице вы найдете руководство о том, как внести свой вклад в документацию Kubernetes.

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

Официальный репозиторий проекта на Github можно найти здесь

Вы также можете напрямую общаться с вовлеченными людьми и с различными участниками через канал в слабине. Снова присоединяйтесь к группе на своем языке, например #kubernetes-docs-pt.

Если вам понравилась эта статья, рассмотрите возможность подписаться на меня на Medium, чтобы следить за моими последними публикациями. Я ежедневно чирикаю о своем путешествии в Twitter, еженедельно делюсь контентом в LinkedIn, и это мой IG :)

А пока вы можете помочь себе (и помочь мне), заглянув на мой YouTube-канал. Я размещаю там отличный контент, и у меня есть еще лучшие видео!