Участие в Open Source: полное руководство

0
1605
views

Перевод статьи «The Definitive Guide to Contributing to Open Source».

Участие в Open Source движении
Photo by Mimi Thian on Unsplash

Я расскажу вам все, что знаю об Open Source («открытый исходный код»). Давайте начнем с простого. Вы знаете, что такое продукт? Это нечто, что вы можете легко употребить, например, буррито в ресторане. Но для создания этого продукта вам нужно предпринять некоторые шаги.

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

В большинстве ресторанов, если вы подойдете к повару и скажете: «Простите, мне нравится ваше буррито, можно мне рецепт?», вам наверняка откажут. Это НЕ Open Source. Open Source это когда в дополнение к продукту вы также получаете доступ ко всем ингредиентам и самому рецепту, а значит, можете сделать буррито самостоятельно в домашних условиях.

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

Может оказаться, что ваше блюдо по вкусу лучше, чем ресторанное. Если бы этот ресторан был похож на проект Open Source, вы могли бы пойти к шеф-повару и сказать: «Слушай, у тебя отличное буррито, но я вот добавил авокадо, и оно стало даже еще лучше! Ты тоже можешь добавить его в свое меню».

В Open Source проектах роль шеф-повара играют люди, занимающиеся поддержкой этих проектов, – мейнтейнеры (англ. «maintainer»). Они могут принять предложенные вами изменения или решить, что это плохая идея, не подходящая их «ресторану» по концепции. В любом случае, поделившись своими изменениями к проекту, вы только что стали его участником – контрибутором (англ. «contributor»).

Мои поздравления!

Буррито
Буррито

Из чего состоит проект?

Браузер Firefox является примером Open Source проекта. Он состоит из тысяч строк исходного кода и инструкций. Следуя этим инструкциям, можно превратить исходный код в пригодный к использованию продукт, такой как веб-браузер. Этот код доступен публично, каждый может его открыть, почитать, проверить, собрать. Любой человек, имеющий желание изменить поведение Firefox, может внести изменения в исходный код и собрать кастомизированную версию. Более того, каждый может отослать эти изменения мейнтейнерам проекта.

Но Open Source проекты это больше, чем код. Ведь есть еще пользовательский интерфейс и графический дизайн. Да, даже программы для запуска в терминале (например, редактор Vim) имеют графические интерфейсы.

Помимо интерфейсов, есть еще действия пользователя, юзабилити и нечто под названием User Experience (UX) – все эти вещи в последние десятилетия приобрели значительную популярность. Если у вас бэкграунд в сфере дизайна, изящных искусств или психологии, вы можете найти себя в UI/UX.

Далее, в понятие продукта входят медиа-материалы, включая звуки, графику, видео. Они есть не во всех проектах, но их наличие — не редкость.

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

Затем, есть еще маркетинг, которого тоже часто не хватает в Open Source проектах. Если вы можете это исправить, выиграет все сообщество. Помогите проекту с маркетингом, и это привлечет еще больше потенциальных контрибуторов.

И, наконец, есть юридическая часть. Это скорее редкость, характерная для самых крупных проектов. Есть юристы, занимающиеся в основном проблемами Open Source, и большинство из них делают это на добровольных началах.

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

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

Зачем мне тратить на это свое время?

Что Open Source дает вам лично
Photo by Kyle Glenn on Unsplash

Зачем вообще участвовать в Open Source? Почему стоит проводить время за внесением предложений, программированием или переводами вместо того чтобы отправиться на прогулку? Причин для этого несколько. Все они связаны с тем, что участие в Open Source видно публично. Каждый может увидеть, что сделал другой. И это прекрасно!

Вы повышаете свою компетентность

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

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

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

Скажем, вы COBOL-разработчик, мечтающий заняться UX. Просто начните улучшать UX в Firefox и отошлите свои предложения. Как только их примут, вы сможете добавить еще один пункт в свое резюме: «UX-дизайнер в проекте Firefox». Таким образом вы научитесь чему-то новому и одновременно получите доказательство своих способностей.

Вы повышаете свою видимость

Во-первых, вливаясь в сообщество, например в Open Source проект, вы немедленно обрастаете новыми знакомствами – с людьми, тоже занятыми в этом проекте. Вы можете учиться у них и обмениваться с ними идеями.

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

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

А если ваш GitHub-профайл ведет на вашу страницу в LinkedInили на домашнюю страницу вашего сайта, вы становитесь доступнее для рекрутеров и ваши шансы получить работу мечты повышаются.

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

Можно найти работу или новых клиентов

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

Можно найти сотрудников

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

Таким образом вы делаете что-то для других

Все «спасибо», которые вы получите в уведомлениях, убедят вас, что это стоило потраченного времени.

Вы получаете доступ к хорошей статистике

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

Каждое наше действие на GitHub – самом большом Open Source сообществе – отмечается зеленым квадратиком в огромном календаре. Чем больше вы делаем за отдельно взятый день, тем ярче квадратик. Если мы совершаем какие-то действия несколько дней подряд, GitHub считает это страйком и сохраняет ваш «счет» для будущих ссылок. Желание набрать побольше очков повышает мотивацию.

Активность на GitHub
Статистика участия на GitHub. Нет, не моя.

Как найти первый проект?

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

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

Самые "звездные" репозитории на GitHub

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

Тренды на GitHub
Тренды на GitHub

Еще один подход – стать первым контрибутором awesome-проекта. Этот подход можно назвать энергоэффективным. Awesome-проекты представляют собой собранные и организованные списки ссылок. Например, awesome-shell перечисляет классные CLI-открытия, а awesome-JavaScript касается всех блестящих новых фреймворков, которые появляются каждый день.

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

И последнее, что могу предложить. Когда проводятся Open Source мероприятия, в качестве «фейсконтроля» могут выступать пул-реквесты. Например, чтобы попасть на Hacktoberfest, нужно было иметь пять пул-реквестов. Для привлечения участников составляются списки проектов, в которых можно принять участие. Вот этими списками (даже прошлогодними) и можно воспользоваться при поисках.

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

Что делает ваш вклад ценным?

Ваш вклад должен представлять собой ценность
Photo by rawpixel on Unsplash

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

Уважение к условиям

Прежде всего, нужно уважать работу других людей. Во многих проектах можно найти такие документы как CONTRIBUTORS.md. В них представлены желанные виды участия. Если в проекте, в котором вы хотите поработать, нет такого документа, посмотрите в других местах, например в README.md или на wiki проекта.

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

Подумайте о том, насколько ваш вклад ценен для других людей

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

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

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

Будьте многословны в общении

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

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

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

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

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

Как избежать обескураживания

Как избежать обескураживания
Photo by Wes Hicks on Unsplash

Запомните: каждый раз, когда вы постите что-то онлайн, вы открываете себя для критики. Не важно, что это – комментарий, фотография, статья или код – вы теперь уязвимы. И вы должны в определенной степени принимать критику, потому что она помогает вам расти.

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

Наши лучшие идеи не для всех являются таковыми

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

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

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

Наша лучшая работа может не соответствовать стандартам

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

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

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

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

Можно получить отказ, даже если все сделано правильно

Порой вы в ответ получаете просто «нет», и ничего тут не поделаешь. Вы по-прежнему уверены, что открывалка, пришитая к костюму, это отличная идея? Начните воплощать эту идею самостоятельно! В Open Source создание нового проекта на базе существующего называется ответвлением (forking).

Соответственно, сам проект при этом называют форком оригинального. Например, Ubuntu это форк Debian. Если люди во главе проекта отказываются принимать ваши изменения, вы можете сделать форк их проекта и стать человеком, который его поддерживает.

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

Тролли повсюду

Интернет дает всем иллюзию анонимности. На этой почве возникла субкультура людей, получающих удовольствие от нападок на окружающих. Их называют интернет-троллями. Мне пока не приходилось сражаться с кем-то таким. Но на всякий случай можете почитать “The Complete Guide to Understanding and Dealing With Online Trolls” Рейгена Частейна. Это поможет вам подготовиться к такому неприятному открытию.

Заработок в Open Source

Заработок в Open Source
Photo by rawpixel on Unsplash

Вероятно, вам интересно, можно ли заработать что-нибудь, занимаясь Open Source проектами. Естественно!

Несмотря на то что программы сами по себе обычно бесплатные, есть и другие способы заработать себе на жизнь. Open Source в этом смысле напоминает искусство. И, как и в случае с искусством, некоторые методы могут вам подойти, а другие – нет. Это неточная наука.

Методы постоянного заработка

Мой любимый «постоянный» метод – кнопка «Пожертвовать» («Donate»). Вы можете видеть пример на одном из моих проектов – Songcorder. В зависимости от ожидаемого размера пожертвований можно рассмотреть разные варианты перевода денег. Например, Paypal (платежи больше $15) или Buy me a Coffee (меньше $15).

Сбор пожертвований
Songcorder tip button

Кнопка «Buy me a Coffee» выглядит вот так (кстати, можете кликнуть, если считаете, что я заслужил):

Помимо кнопок общего назначения, есть методы, предназначенные именно для Open Source проектов, например, Gittip/Liberapay (этот проект любит менять названия). Любопытно, что один из популярных репозиториев, поддерживаемых Liberapay, это awesome.

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

Скажем, вы решили, что можете себе позволить тратить на Open Source $5 ежемесячно. Если вы за месяц одобрили четыре проекта (поставив им «звезду» с помощью кнопки Flattr), то каждый из авторов получит по $1,25. Все просто.

Репозитории, подключенные к Liberapay
репозитории, подключенные к Liberapay

Можно поддерживать не проекты целиком, а перечислять деньги непосредственно (ну, почти) контрибуторам. Таким образом работает Tip4Commit. Желающие поддержать проект кладут на депозит проекта некоторую сумму в Bitcoin, а каждый контрибутор проекта получает что-то из этой суммы.

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

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

Сюда может относиться продажа pro-функционала корпоративным клиентам или помощь им в деплое и кастомизации ваших продуктов. Во многих организациях нет специалистов с достаточным уровнем навыков для адаптации Open Source проекта под их нужды. А кто справится с этим лучше, чем человек, занимающийся поддержкой этого проекта?

Если можете помогать другим и получать за это деньги, – вперед!

Разовые методы

Один из популярных методов поддержки Open Source проектов это краудфандинг. Для этой цели создано множество платформ. Kickstarter, например, помог запустить Mycroft Mark II (голосовой помощник). Другой крупный игрок, Indiegogo, размещал кампанию для почтового клиента Geary.

Если вы опасаетесь, что не найдете достаточно желающих для успешного краудфандинга, можете попробовать гранты. Я знаю по крайней мере две организации, занимающиеся такими грантами. Одна из них – Travis Foundation (детище компании, занимающейся Travis CI). Другая – Mozilla Foundation (создатели браузера Firefox).

Большинство названных инструментов фокусируются на тех, кто ведет проекты в Open Source. Но и контрибуторы могут подзаработать, став «охотниками за головами». «Головы» в данном случае это фичи, запрашиваемые какой-то третьей стороной, обещающей за это финансовое вознаграждение. Чтобы «поохотиться», вам нужно заполнить запрос по фиче и потребовать награду. Самая популярная платформа для «Охоты за головами» на данный момент – Bountysource.

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

Еще один подходящий способ заработка – платная стажировка. Здесь есть два популярных варианта:

  • Google Summer of Code – нацелен на студентов
  • Outreachy – нацелен на меньшинства в сфере технологий.

А если вы в самом деле увлечены этой темой, почему бы вам не пойти работать в компанию, занимающуюся разработкой Open Source программ? Их довольно много. Как и в случае с консультациями, вы будете получать оплату и одновременно делать что-то полезное для общества.

Поиск единомышленников

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

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

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

Можно присоединиться к группам в социальных сетях, например, к группе Linux & Open Source в LinkedIn. Можно обратить внимание на каналы Gitter – это система мгновенных сообщений для Open Source сообществ. Есть форумы и такие платформы как GitHub, где можно сотрудничать и общаться.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here