Опенсорс — что это и зачем?

Итак, вы думаете о запуске своего опенсорс-проекта? Поздравляем! Мир ценит ваше участие. Давайте поговорим о том, что такое опенсорс и почему люди им занимаются.

Что означает “опенсорс”?

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

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

Свободное ПО относится к тем же проектам, что и опенсорс. Иногда вы можете встретить комбинации этих терминов: “Свободное и открытое ПО” (free and open source software FOSS или free, libre, and open source software FLOSS). Слова free и libre здесь означают “свободное”, а не “бесплатное”.

Почему люди делают свою работу открытой?

Есть много причин почему человек или организация открывают исходники своего проекта. Вот некоторые из них:

  • Сотрудничество: В опенсорс-проект может внести изменения любой человек, где бы он ни находился. Например, платформа для упражнений по программированию Exercism насчитывает 350 контрибьюторов.

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

  • Прозрачность: Любой может проверить опенсорс-проект на наличие ошибок и несоответствий. Прозрачность важна даже на государственном уровне. Например, правительство Болгарии и США законодательно предписали прозрачность для таких отраслей как банковское дело, здравоохранение, и программ безопасности, вроде Let’s Encrypt.

Опенсорсом может быть не только ПО, но и многое другое: от наборов данных до книг. В разделе GitHub Explore можно ознакомится с идеями проектов, которые можно заопенсорсить.

Опенсорс — значит бесплатно?

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

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

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

Стоит ли мне запускать свой опенсорс-проект?

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

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

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

Если вы ещё не решились, найдите время подумать о ваших возможных целях.

Постановка целей

Цели помогут вам определиться, над чем работать, от чего отказаться, и где вам понадобится помощь со стороны. Спросите себя: “зачем мне нужен этот опенсорс-проект?”.

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

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

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

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

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

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

Участие в чужих проектах

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

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

Запуск собственного опенсорс-проекта

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

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

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

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

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

Выбор лицензии

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

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

MIT, Apache 2.0, и GPLv3 — это самые популярные лицензии, но есть и другие варианты.

Когда вы создаёте новый проект на GitHub, вам дается на выбор несколько лицензий. Выбрав опенсорс-лицензию, вы сделаете свой проект открытым.

Выберете лицензию

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

Написание README

Файл README (“прочитай меня”) не только рассказывает, как использовать ваш проект, но и объясняет, почему он важен, и что пользователи могут с ним делать.

Постарайтесь ответить в README на следующие вопросы:

  • Что делает этот проект?
  • Чем этот проект полезен?
  • Как начать работать с ним?
  • Где получить помощь, если понадобится?

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

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

Для вдохновения, можете ознакомиться с руководством “Сделай README” от @dguo или взять на вооружение Шаблон README от @PurpleBooth.

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

Написание руководства для участников

Файл CONTRIBUTING говорит вашей аудитории, как стать участником вашего проекта. Например:

  • Как сообщить об ошибке (попробуйте использовать шаблоны для ишью и пул-реквестов)
  • Как предложить реализацию новой функциональности
  • Как настроить среду выполнения и запустить тесты

Помимо технических деталей, в файле CONTRIBUTING только приветствуется изложить свои ожидания относительно участия других людей. Например:

  • Какого рода участие вы ждёте?
  • Ваши планы и видение развития проекта
  • Как участники могут (и не могут) связываться с вами

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

Например, Active Admin начинает своё руководство по участию с таких слов:

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

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

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

Чтобы вам было проще написать файл CONTRIBUTING, ознакомьтесь с шаблоном руководства по сотрудничеству от @nayafia или прочтите “Как создать файл CONTRIBUTING.md” от @mozilla.

Поставьте ссылку на файл CONTRIBUTING внутри README, так больше людей увидят его. Если вы разместите файл CONTRIBUTING.md в корне вашего проекта, то GitHub автоматически предложит ознакомиться с ним когда кто-то открывает ишью или отправляет пул-реквест.

Руководство по сотрудничеству

Разработка норм поведения

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

Подробнее смотрите на странице Руководство по нормам поведения.

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

По аналогии с лицензией, вам не обязательно писать нормы самим, а можно скопировать один из существующих вариантов. Contributor Covenant используется в более 40.000 опенсорс-проектах, включая Kubernetes, Rails, и Swift. Какие бы нормы вы не выбрали, будьте готовы применить их при необходимости.

Вставьте текст в файл CODE_OF_CONDUCT.md в корне проекта, так его будет проще находить и ссылаться на него, например, из README.

Название и брендирование вашего проекта

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

Выбор правильного названия

Придумайте название, которое легко запоминается и, в идеале, даёт представление о сути проекта. Например:

  • Sentry (с англ. — караул) — сервис для мониторинга приложения
  • Thin (с англ. — худой) — быстрый и простой веб-сервер на Ruby

Если вы создаете что-то, опираясь на уже существующий проект, то добавьте его название в виде префикса к своему проекту, — это даст больше деталей о нём. Например node-fetch реализует window.fetch в Node.js.

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

Конфликт имён

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

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

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

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

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

То, как вы пишите (и кодите) тоже влияет на ваш бренд!

За всю жизнь проекта вы будете много писать: README, руководства, документы сообщества, ответы на вопросы, возможно даже информационные бюллетени и списки рассылки.

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

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

Не только слова, что вы пишете, но и стиль кода может стать частью бренда вашего проекта. Angular и jQuery — только два примера проектов со строгими стилями написания кода и рекомендациями.

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

Чеклист перед запуском

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

Документация

Код

Люди

Если вы частное лицо:

Если вы компания или организация:

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

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