Открытый исходный код: что это и зачем?

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

Что означает “open source”?

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

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

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

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

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

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

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

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

Open source (открытый исходник) применимо не только к ПО, но и ко всему остальному: от наборов данных до книг. В Обзоре GitHub вы можете почерпнуть больше идей насчёт того, что можно заопенсорсить.

Open source - значит бесплатно?

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

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

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

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

Краткий ответ - да, потому что независимо от результата, запуск своего проекта - это хороший способ понять, как работает open source.

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

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

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

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

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

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

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

По мере роста проекта ваше сообщество будет нуждаться не только в коде. Ответы на вопросы (issues), проверка кода, распространение информации о себе - всё это важные задачи open source проекта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Составление README

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поставьте ссылку на файл CONTRIBUTING внутри README, так больше людей увидят его. Если вы разместите файл CONTRIBUTING.md в корне вашего проекта, то Гитхаб будет автоматически ссылаться на него, когда кто-то открывает новый вопрос (issue) или добавляет правку в проект (pull request).

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

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

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

Подробнее смотрите: Кодекс поведения - руководство.

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

По аналогии с лицензией, вам не обязательно писать кодекс самим, а можно скопировать один из существующих вариантов. Соглашение участника используется в более 40,000 open source проектах, включая Kubernetes, Rails, и Swift. Какой бы кодекс вы не использовали, вы должны быть готовы применить его при необходимости.

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

Именование и брендирование вашего проекта

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

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

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

  • Караул оповещает о падении приложения.
  • Дрищ быстрый и простой веб-сервер на Ruby.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверочный лист перед запуском

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

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

Код

Люди

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

Если вы юридическое лицо:

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

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