Автор: Виталий Филиппов (vitalif [at] yourcmc.ru), 2019+

Заходите в Telegram-чат Vitastor: https://t.me/vitastor

Лицензия: VNPL 1.1 на серверный код и двойная VNPL 1.1 + GPL 2.0+ на клиентский.

Серверные компоненты распространяются только на условиях VNPL.

Клиентские библиотеки распространяются на условиях двойной лицензии VNPL 1.0 и также на условиях GNU GPL 2.0 или более поздней версии. Так сделано в целях совместимости с таким ПО, как QEMU и fio.

VNPL

VNPL - “сетевой копилефт”, собственная свободная копилефт-лицензия Vitastor Network Public License 1.1, основанная на GNU GPL 3.0 с дополнительным условием “Сетевого взаимодействия”, требующим распространять все программы, специально разработанные для использования вместе с Vitastor и взаимодействующие с ним по сети, под лицензией VNPL или под любой другой свободной лицензией.

Идея VNPL - расширение действия копилефта не только на модули, явным образом связываемые с кодом Vitastor, но также на модули, оформленные в виде микросервисов и взаимодействующие с ним по сети.

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

На Windows и любое другое ПО, не разработанное специально для использования вместе с Vitastor, никакие ограничения не накладываются.

Пояснение

Сетевой копилефт регулируется пунктом лицензии 13. Удалённое сетевое взаимодействие.

Программа считается “прокси-программой”, если верны оба условия:

  • Она создана специально для работы вместе с Vitastor. По сути это означает, что программа должна иметь специфичный для Vitastor функционал, то есть, “знать”, что она взаимодействует именно с Vitastor.
  • Она прямо или косвенно взаимодействует с Vitastor через абсолютно любой программный интерфейс, включая любые способы вызова: API, CLI, сеть или через какую-то обёртку (в свою очередь тоже являющуюся прокси-программой).

Если в дополнение к этому также:

  • Вы предоставляете любому пользователю возможность взаимодействовать с Vitastor по сети, опять-таки, через любой интерфейс или любую серию “обёрток” (прокси-программ)

То, согласно VNPL, вы должны открыть код “прокси-программ” таким пользователям на условиях любой GPL-совместимой лицензии - то есть, GPL, LGPL, MIT/BSD или Apache 2 - “совместимость с GPL” понимается как возможность включать лицензируемый код в GPL-приложение.

Соответственно, если у вас есть “прокси-программа”, но её код не открыт пользователю, который прямо или косвенно взаимодействует с Vitastor - вам запрещено использовать Vitastor на условиях VNPL и вам нужна коммерческая лицензия, не содержащая требований об открытии кода.

Примеры

  • Kubernetes CSI-драйвер Vitastor, создающий PersistentVolume с помощью вызова vitastor-cli create.
    • Да, взаимодействует с Vitastor через vitastor-cli.
    • Да, создавался специально для работы с Vitastor (иначе в чём же ещё его смысл).
    • Значит, CSI-драйвер точно считается “прокси-программой” и должен быть открыт под свободной лицензией.
  • Windows, установленный в виртуальную машину на диске Vitastor.
    • Да, взаимодействует с Vitastor “прямо или косвенно” - пишет и читает данные через интерфейс блочного устройства, эмулируемый QEMU.
    • Нет, точно не создан специально для работы с Vitastor - когда его создавали, никакого Vitastor ещё и в помине не было.
    • Значит, Windows точно не считается “прокси-программой” и на него требования VNPL не распространяются.
  • Панель управления облака, делающая запросы к Kubernetes CSI-драйверу Vitastor.
    • Да, взаимодействует с Vitastor косвенно через CSI-драйвер, являющийся “прокси-программой”.
    • Сходу не известно, создавалась ли конкретно для работы с Vitastor. Как понять, да или нет? Представьте, что Vitastor заменён на любую другую систему хранения (например, на проприетарную). Работа панели управления изменится? Если да (например, перестанут работать снапшоты) - значит, панель содержит специфичный функционал и “создана специально для работы с Vitastor”. Если нет - значит, специфичного функционала панель не содержит и в принципе она универсальна.
    • Нужно ли открывать панель - зависит от того, содержит она специфичный функционал или нет.

Почему так?

Потому что я одновременно верю в дух копилефт-лицензий (Linux не стал бы так популярен, если бы не GPL!) и хочу иметь возможность монетизации продукта.

При этом использовать даже AGPL для программной СХД бессмысленно - это глубоко внутреннее ПО, которое пользователь почти наверняка не увидит вообще, поэтому и открывать код никому никогда не придётся, даже при создании производного продукта.

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

Поэтому для сохранения достаточной “копилефтности” и придумана VNPL.

Тексты лицензий