Как сделать свой проект открытым (open source)

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

  • Добавление лицензии в проект
  • Copyright notice
  • Зависимости (dependencies): как быть с их лицензиями
  • Делаем репозиторий открытым

Добавление лицензии в проект

Если проект не снабжен лицензией, он тем не менее защищен авторским правом. Причем это подразумевает, что никто, кроме автора, не может распространять проект в оригинальном или модифицированном виде, бесплатно или за деньги. Чтобы проект стал действительно открытым, надо в явном виде указать, какие права автор предоставляет остальным людям (будем называть из «пользователями»). Это делается при помощи лицензии. Лицензия — это как правило текстовый файл LICENSE.md или LICENSE.txt, который лежит в корневой папке проекта. В этом файле написано, что пользователям можно и чего нельзя делать с проектом. Лицензии отличаются по степени свободы, которая предоставляется пользователям. Наибольшую свободу предоставляет лицензия MIT. Она дает пользователю право распространять проект в исходном либо модифицированном виде, в том числе в составе более крупного проекта, бесплатно или за деньги. Единственным требованием лицензии MIT является требование поставлять вместе с проектом исходный файл лицензии, в котором указано имя автора исходного проекта (copyright notice). Таким образом автор получает в награду то, что его слава будет распространяться вместе с проектом 🙂

Copyright notice

Уведомление об авторских правах (знак охраны авторского права) или copyright notice — это текстовая строка следующего формата:

Copyright (c) <The year of first publication> <copyright holders>

Пример:

Copyright (c) 2018 Dmitry Savchenkov

Такая строка обязательно содержится в файле лицензии. Кроме того, в каждом файле исходного кода проекта желательно разместить (в виде комментария) текст вроде следующего (пример из моего проекта RenderingEngine):

Copyright (c) 2018 Dmitry Savchenkov

This file is part of RenderingEngine project which is released under MIT license.
See file LICENSE.md or go to https://mit-license.org/ for full license details.

В России авторские права регулируются частью 4 Гражданского Кодекса — там тоже упоминается copyright notice.

Зависимости (dependencies): как быть с их лицензиями

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

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

Пример. В моем проекте RenderingEngine я хотел воспользоваться исходным кодом, приведенным в статье на сайте Code Project. Однако, поскольку автор не снабдил свой исходный код лицензией, мне пришлось найти аналогичный проект с лицензией. Лицензия называлась The Code Project Open License (CPOL) 1.02. В этой лицензии есть положения касательно статьи на сайте Code Project, но меня они не интересуют, поскольку я использую только приведенный в статье исходный код. В отношении же исходного кода лицензия CPOL очень похожа на лицензию MIT. Единственное, что она добавляет, это ограничение:

You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.

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

Делаем репозиторий открытым

Сделать репозиторий открытым просто — надо изменить его настройки. Популярные хостинги репозиториев GitHub и BitBucket предоставляют соответствующие инструкции. Что произойдет после того, как вы сделаете свой репозиторий открытым? Любой человек сможет клонировать ваш репозиторий себе. Любой человек сможет модифицировать свою копию вашего проекта и отправить вам т. н. pull request — предложение применить его изменения к вашему собственному репозиторию. При этом все пользователи поучают доступ не только к текущему состоянию вашего проекта, но и ко всей истории коммитов, в том числе, той истории, которая имела место до того, как вы сделали свой репозиторий публичным. С этим может быть связана проблема: возможно вы не хотите делать публичной всю историю коммитов. Тогда самый простой выход для вас — не делать открытым старый репозиторий, а создать открытый новый и скопировать в него текущее состояние проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *