From 410170db963ea9b68a36e6fd04b3b763d9c8c4ee Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 20 May 2025 02:12:47 +0300 Subject: [PATCH] Add notes about VNPL in English --- docs/intro/author.en.md | 94 ++++++++++++++++++++++++++++++++++++----- docs/intro/author.ru.md | 2 +- 2 files changed, 85 insertions(+), 11 deletions(-) diff --git a/docs/intro/author.en.md b/docs/intro/author.en.md index 3d75f27b..d94a60f4 100644 --- a/docs/intro/author.en.md +++ b/docs/intro/author.en.md @@ -10,8 +10,17 @@ Copyright (c) Vitaliy Filippov (vitalif [at] yourcmc.ru), 2019+ Join Vitastor Telegram Chat: https://t.me/vitastor -All server-side code (OSD, Monitor and so on) is licensed under the terms of -Vitastor Network Public License 1.1 (VNPL 1.1), a copyleft license based on +License: VNPL 1.1 for server-side code and dual VNPL 1.1 + GPL 2.0+ for client tools. + +Server-side code is licensed only under the terms of VNPL. + +Client libraries (cluster_client and so on) are dual-licensed under the same +VNPL 1.1 and also GNU GPL 2.0 or later to allow for compatibility with GPLed +software like QEMU and fio. + +## VNPL + +Vitastor Network Public License 1.1 (VNPL 1.1) is a copyleft license based on GNU GPLv3.0 with the additional "Network Interaction" clause which requires opensourcing all programs directly or indirectly interacting with Vitastor through a computer network and expressly designed to be used in conjunction @@ -20,18 +29,83 @@ the terms of the same license, but also under the terms of any GPL-Compatible Free Software License, as listed by the Free Software Foundation. This is a stricter copyleft license than the Affero GPL. -Please note that VNPL doesn't require you to open the code of proprietary -software running inside a VM if it's not specially designed to be used with -Vitastor. +The idea of VNPL is, in addition to modules linked to Vitastor code in a single +binary file, to extend copyleft action to micro-service modules only interacting +with it over the network. Basically, you can't use the software in a proprietary environment to provide its functionality to users without opensourcing all intermediary components standing between the user and Vitastor or purchasing a commercial license from the author 😀. -Client libraries (cluster_client and so on) are dual-licensed under the same -VNPL 1.1 and also GNU GPL 2.0 or later to allow for compatibility with GPLed -software like QEMU and fio. +At the same time, VNPL doesn't impose any restrictions on software *not specially designed* +to be used with Vitastor, for example, on Windows running inside a VM with a Vitastor disk. -You can find the full text of VNPL-1.1 in the file [VNPL-1.1.txt](../../VNPL-1.1.txt). -GPL 2.0 is also included in this repository as [GPL-2.0.txt](../../GPL-2.0.txt). +## Explanation + +Network copyleft is governed by the clause **13. Remote Network Interaction** of VNPL. + +A program is considered to be a "Proxy Program" if it meets both conditions: +- It is specially designed to be used with Vitastor. Basically, it means that the program + has any functionality specific to Vitastor and thus "knows" that it works with Vitastor, + not with something random. +- It interacts with Vitastor directly or indirectly through any programming interface, + including API, CLI, network or any wrapper (also considered a Proxy Program itself). + +If, in addition to that: +- You give any user an apportunity to interact with Vitastor directly or indirectly through + any computer interface including the network or any number of wrappers (Proxy Programs). + +Then VNPL requires you to publish the code of all above Proxy Programs to all above users +under the terms of any GPL-compatible license - that is, GPL, LGPL, MIT/BSD or Apache 2, +because "GPL compatibility" is treated as an ability to legally include licensed code in +a GPL application. + +So, if you have a "Proxy Program", but it's not open to the user who directly or indirectly +interacts with Vitastor - you are forbidden to use Vitastor under the terms of VNPL and you +need a commercial license which doesn't contain open-source requirements. + +## Examples + +- Vitastor Kubernetes CSI driver which creates PersistentVolumes by calling `vitastor-cli create`. + - Yes, it interacts with Vitastor through vitastor-cli. + - Yes, it is designed specially for use with Vitastor (it has no sense otherwise). + - So, CSI driver **definitely IS** a Proxy Program and must be published under the terms of + a free software license. +- Windows, installed in a VM with the system disk on Vitastor storage. + - Yes, it interacts with Vitastor indirectly - it reads and writes data through the block + device interface, emulated by QEMU. + - No, it definitely isn't designed specially for use with Vitastor - Windows was created long + ago before Vitastor and doesn't know anything about it. + - So, Windows **definitely IS NOT** a Proxy Program and VNPL doesn't require to open it. +- Cloud control panel which makes requests to Vitastor Kubernetes CSI driver. + - Yes, it interacts with Vitastor indirectly through the CSI driver, which is a Proxy Program. + - May or may not be designed specially for use with Vitastor. How to determine exactly? + Imagine that Vitastor is replaced with any other storage (for example, with a proprietary). + Do control panel functions change in any way? If they do (for example, if snapshots stop working), + then the panel contains specific functionality and thus is designed specially for use with Vitastor. + Otherwise, the panel is universal and isn't designed specially for Vitastor. + - So, whether you are required to open-source the panel also **depends** on whether it + contains specific functionality or not. + +## Why? + +Because I believe into the spirit of copyleft (Linux wouldn't became so popular without GPL!) +and, at the same time, I want to have a way to monetize the product. + +Existing licenses including AGPL are useless for it with an SDS - SDS is a very deeply +internal software which is almost definitely invisible to the user and thus AGPL doesn't +require anyone to open the code even if they make a proprietary fork. + +And, in fact, the current situation in the world where GPL is though to only restrict direct +linking of programs into a single executable file, isn't much correct. Nowadays, programs +are more often linked with network API calls, not with /usr/bin/ld, and a software product +may consist of dozens of microservices interacting with each other over the network. + +That's why we need VNPL to keep the license sufficiently copyleft. + +## License Texts + +- VNPL 1.1 in English: [VNPL-1.1.txt](../../VNPL-1.1.txt) +- VNPL 1.1 in Russian: [VNPL-1.1-RU.txt](../../VNPL-1.1-RU.txt) +- GPL 2.0: [GPL-2.0.txt](../../GPL-2.0.txt) diff --git a/docs/intro/author.ru.md b/docs/intro/author.ru.md index aad73ff6..9a13d489 100644 --- a/docs/intro/author.ru.md +++ b/docs/intro/author.ru.md @@ -63,7 +63,7 @@ Vitastor Network Public License 1.1, основанная на GNU GPL 3.0 с д ## Примеры -- Kubernetes CSI-драйвер Vitastor, создающий PersistentVolume с помощью вызова vitastor-cli create. +- Kubernetes CSI-драйвер Vitastor, создающий PersistentVolume с помощью вызова `vitastor-cli create`. - Да, взаимодействует с Vitastor через vitastor-cli. - Да, создавался специально для работы с Vitastor (иначе в чём же ещё его смысл). - Значит, CSI-драйвер **точно считается** "прокси-программой" и должен быть открыт под свободной