From 4a2dcf7b6b9032400ef8f293b6c3ed59b3097df1 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 6 Feb 2021 01:26:07 +0300 Subject: [PATCH] Update the license to VNPL 1.1 VNPL 1.1 is slightly reworded to make it clear that proprietary software interacting with Vitastor and providing some kind of service to end users isn't a "Proxy Program" if it's not specially designed to be used with Vitastor. For example, Windows OS running in a virtual machine stored in a Vitastor cluster clearly isn't. --- README.md | 17 +++++++++++------ VNPL-1.0.txt => VNPL-1.1.txt | 19 +++++++++++-------- allocator.cpp | 2 +- allocator.h | 2 +- base64.cpp | 2 +- base64.h | 2 +- blockstore.cpp | 2 +- blockstore.h | 2 +- blockstore_flush.cpp | 2 +- blockstore_flush.h | 2 +- blockstore_impl.cpp | 2 +- blockstore_impl.h | 2 +- blockstore_init.cpp | 2 +- blockstore_init.h | 2 +- blockstore_journal.cpp | 2 +- blockstore_journal.h | 2 +- blockstore_open.cpp | 2 +- blockstore_read.cpp | 2 +- blockstore_rollback.cpp | 2 +- blockstore_stable.cpp | 2 +- blockstore_sync.cpp | 2 +- blockstore_write.cpp | 2 +- cluster_client.cpp | 2 +- cluster_client.h | 2 +- debian/copyright | 13 +++++++------ debian/install | 2 +- dump_journal.cpp | 2 +- epoll_manager.cpp | 2 +- epoll_manager.h | 2 +- etcd_state_client.cpp | 2 +- etcd_state_client.h | 2 +- fio_cluster.cpp | 2 +- fio_engine.cpp | 2 +- fio_sec_osd.cpp | 2 +- http_client.cpp | 2 +- http_client.h | 2 +- lambda_size.cpp | 2 +- malloc_or_die.h | 2 +- messenger.cpp | 2 +- messenger.h | 2 +- mon/PGUtil.js | 2 +- mon/afr.js | 2 +- mon/lp-optimizer.js | 2 +- mon/mon-main.js | 2 +- mon/mon.js | 2 +- mon/test-nonuniform.js | 2 +- mon/test-optimize-undersized.js | 2 +- mon/test-optimize.js | 2 +- msgr_receive.cpp | 2 +- msgr_send.cpp | 2 +- nbd_proxy.cpp | 4 ++-- object_id.h | 2 +- osd.cpp | 2 +- osd.h | 2 +- osd_cluster.cpp | 2 +- osd_flush.cpp | 2 +- osd_id.h | 2 +- osd_main.cpp | 2 +- osd_ops.cpp | 2 +- osd_ops.h | 2 +- osd_peering.cpp | 2 +- osd_peering_pg.cpp | 2 +- osd_peering_pg.h | 2 +- osd_peering_pg_test.cpp | 2 +- osd_primary.cpp | 2 +- osd_primary.h | 2 +- osd_primary_subops.cpp | 2 +- osd_rmw.cpp | 2 +- osd_rmw.h | 2 +- osd_rmw_test.cpp | 2 +- osd_secondary.cpp | 2 +- osd_test.cpp | 2 +- pg_states.cpp | 2 +- pg_states.h | 2 +- qemu_driver.c | 2 +- qemu_proxy.cpp | 2 +- qemu_proxy.h | 2 +- ringloop.cpp | 2 +- ringloop.h | 2 +- rm_inode.cpp | 4 ++-- rpm/vitastor-el7.spec | 2 +- rpm/vitastor-el8.spec | 2 +- rw_blocking.cpp | 2 +- rw_blocking.h | 2 +- stub_bench.cpp | 2 +- stub_osd.cpp | 2 +- stub_uring_osd.cpp | 2 +- test_allocator.cpp | 2 +- test_blockstore.cpp | 2 +- test_pattern.h | 2 +- test_shit.cpp | 2 +- timerfd_interval.cpp | 2 +- timerfd_interval.h | 2 +- timerfd_manager.cpp | 2 +- timerfd_manager.h | 2 +- xor.h | 2 +- 96 files changed, 124 insertions(+), 115 deletions(-) rename VNPL-1.0.txt => VNPL-1.1.txt (98%) diff --git a/README.md b/README.md index b9c5107e..de9d2913 100644 --- a/README.md +++ b/README.md @@ -421,22 +421,27 @@ Copyright (c) Vitaliy Filippov (vitalif [at] yourcmc.ru), 2019+ You can also find me in the Russian Telegram Ceph chat: https://t.me/ceph_ru All server-side code (OSD, Monitor and so on) is licensed under the terms of -Vitastor Network Public License 1.0 (VNPL 1.0), a copyleft license based on +Vitastor Network Public License 1.1 (VNPL 1.1), 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 ("Proxy Programs"). Proxy Programs may be made public -not only under 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. +through a computer network and expressly designed to be used in conjunction +with it ("Proxy Programs"). Proxy Programs may be made public not only under +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. + 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.0 and also GNU GPL 2.0 or later to allow for compatibility with GPLed +VNPL 1.1 and also GNU GPL 2.0 or later to allow for compatibility with GPLed software like QEMU and fio. -You can find the full text of VNPL-1.0 in the file [VNPL-1.0.txt](VNPL-1.0.txt). +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). diff --git a/VNPL-1.0.txt b/VNPL-1.1.txt similarity index 98% rename from VNPL-1.0.txt rename to VNPL-1.1.txt index 5ad6462f..cdaba871 100644 --- a/VNPL-1.0.txt +++ b/VNPL-1.1.txt @@ -1,7 +1,7 @@ VITASTOR NETWORK PUBLIC LICENSE - Version 1, 17 September 2020 + Version 1.1, 6 February 2021 - Copyright (C) 2020 Vitaliy Filippov + Copyright (C) 2021 Vitaliy Filippov Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -540,12 +540,15 @@ License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction. - Notwithstanding any other provision of this License, if you provide -any user an opportunity to interact with the covered work directly -or indirectly through a computer network, an imitation of such network, -or an additional program (hereinafter referred to as a "Proxy Program") -that, in turn, interacts with the covered work through a computer network, -an imitation of such network, or another Proxy Program itself, + A "Proxy Program" means a separate program which is specially designed to +be used in conjunction with the covered work and interacts with it directly +or indirectly through any kind of API (application programming interfaces), +a computer network, an imitation of such network, or another Proxy Program +itself. + + Notwithstanding any other provision of this License, if you provide any user +with an opportunity to interact with the covered work through a computer +network, an imitation of such network, or any number of "Proxy Programs", you must prominently offer that user an opportunity to receive the Corresponding Source of the covered work and all Proxy Programs from a network server at no charge, through some standard or customary means of diff --git a/allocator.cpp b/allocator.cpp index a467dfa1..83a7229e 100644 --- a/allocator.cpp +++ b/allocator.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include "allocator.h" diff --git a/allocator.h b/allocator.h index fff057a2..76304340 100644 --- a/allocator.h +++ b/allocator.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/base64.cpp b/base64.cpp index 3dd5abc3..a5f04769 100644 --- a/base64.cpp +++ b/base64.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "base64.h" diff --git a/base64.h b/base64.h index f68d6e1a..68427e33 100644 --- a/base64.h +++ b/base64.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once #include diff --git a/blockstore.cpp b/blockstore.cpp index 6e11ed17..427d6222 100644 --- a/blockstore.cpp +++ b/blockstore.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore.h b/blockstore.h index 12ee1151..a16cd054 100644 --- a/blockstore.h +++ b/blockstore.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/blockstore_flush.cpp b/blockstore_flush.cpp index db64fa15..4bf229a5 100644 --- a/blockstore_flush.cpp +++ b/blockstore_flush.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_flush.h b/blockstore_flush.h index 73bc058a..adf09abc 100644 --- a/blockstore_flush.h +++ b/blockstore_flush.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) struct copy_buffer_t { diff --git a/blockstore_impl.cpp b/blockstore_impl.cpp index a2cd4615..390fa119 100644 --- a/blockstore_impl.cpp +++ b/blockstore_impl.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_impl.h b/blockstore_impl.h index 662987c9..d263d023 100644 --- a/blockstore_impl.h +++ b/blockstore_impl.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/blockstore_init.cpp b/blockstore_init.cpp index 64ee86f5..07ff3cb1 100644 --- a/blockstore_init.cpp +++ b/blockstore_init.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_init.h b/blockstore_init.h index b8931cf8..a3d2d010 100644 --- a/blockstore_init.h +++ b/blockstore_init.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/blockstore_journal.cpp b/blockstore_journal.cpp index 2d6054f2..334b674a 100644 --- a/blockstore_journal.cpp +++ b/blockstore_journal.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_journal.h b/blockstore_journal.h index a6c33418..5f8913b5 100644 --- a/blockstore_journal.h +++ b/blockstore_journal.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/blockstore_open.cpp b/blockstore_open.cpp index 93060155..1659f400 100644 --- a/blockstore_open.cpp +++ b/blockstore_open.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include "blockstore_impl.h" diff --git a/blockstore_read.cpp b/blockstore_read.cpp index dc2bfda8..6a5420cf 100644 --- a/blockstore_read.cpp +++ b/blockstore_read.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_rollback.cpp b/blockstore_rollback.cpp index b0cf9eb8..3040a360 100644 --- a/blockstore_rollback.cpp +++ b/blockstore_rollback.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_stable.cpp b/blockstore_stable.cpp index 02071780..3a520ee9 100644 --- a/blockstore_stable.cpp +++ b/blockstore_stable.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_sync.cpp b/blockstore_sync.cpp index ac08ad4c..348548f5 100644 --- a/blockstore_sync.cpp +++ b/blockstore_sync.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/blockstore_write.cpp b/blockstore_write.cpp index 238883aa..f9af715e 100644 --- a/blockstore_write.cpp +++ b/blockstore_write.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "blockstore_impl.h" diff --git a/cluster_client.cpp b/cluster_client.cpp index c392abcb..1095bdaf 100644 --- a/cluster_client.cpp +++ b/cluster_client.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include "cluster_client.h" diff --git a/cluster_client.h b/cluster_client.h index c84941ab..a46daad5 100644 --- a/cluster_client.h +++ b/cluster_client.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/debian/copyright b/debian/copyright index 70b0b166..84353a31 100644 --- a/debian/copyright +++ b/debian/copyright @@ -5,16 +5,17 @@ Source: https://vitastor.io Files: * Copyright: 2019+ Vitaliy Filippov -License: Multiple licenses VNPL-1.0 and/or GPL-2.0+ +License: Multiple licenses VNPL-1.1 and/or GPL-2.0+ All server-side code (OSD, Monitor and so on) is licensed under the terms of - Vitastor Network Public License 1.0 (VNPL 1.0), a copyleft license based on + Vitastor Network Public License 1.1 (VNPL 1.1), 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 ("Proxy Programs"). Proxy Programs may be made public - not only under 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. + through a computer network and expressly designed to be used in conjunction + with it ("Proxy Programs"). Proxy Programs may be made public not only under + 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. . Client libraries (cluster_client and so on) are dual-licensed under the same - VNPL 1.0 and also GNU GPL 2.0 or later to allow for compatibility with GPLed + VNPL 1.1 and also GNU GPL 2.0 or later to allow for compatibility with GPLed software like QEMU and fio. diff --git a/debian/install b/debian/install index 6b760e17..7efb7a0a 100644 --- a/debian/install +++ b/debian/install @@ -1,3 +1,3 @@ -VNPL-1.0.txt usr/share/doc/vitastor +VNPL-1.1.txt usr/share/doc/vitastor GPL-2.0.txt usr/share/doc/vitastor mon usr/lib/vitastor diff --git a/dump_journal.cpp b/dump_journal.cpp index 7bcc93cc..0c92516d 100644 --- a/dump_journal.cpp +++ b/dump_journal.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #define _LARGEFILE64_SOURCE #include diff --git a/epoll_manager.cpp b/epoll_manager.cpp index f25bf1c3..bc37409c 100644 --- a/epoll_manager.cpp +++ b/epoll_manager.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/epoll_manager.h b/epoll_manager.h index 57153e60..bb9161f6 100644 --- a/epoll_manager.h +++ b/epoll_manager.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/etcd_state_client.cpp b/etcd_state_client.cpp index 7d2240c9..2ad9c98f 100644 --- a/etcd_state_client.cpp +++ b/etcd_state_client.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include "osd_ops.h" #include "pg_states.h" diff --git a/etcd_state_client.h b/etcd_state_client.h index a55e80f7..d7ae52cc 100644 --- a/etcd_state_client.h +++ b/etcd_state_client.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/fio_cluster.cpp b/fio_cluster.cpp index 2c412042..97c6efdd 100644 --- a/fio_cluster.cpp +++ b/fio_cluster.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) // FIO engine to test cluster I/O // diff --git a/fio_engine.cpp b/fio_engine.cpp index 47b7ec24..ffc58e9d 100644 --- a/fio_engine.cpp +++ b/fio_engine.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) // FIO engine to test Blockstore // diff --git a/fio_sec_osd.cpp b/fio_sec_osd.cpp index 40f31e51..34af4ff3 100644 --- a/fio_sec_osd.cpp +++ b/fio_sec_osd.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) // FIO engine to test Blockstore through Secondary OSD interface // diff --git a/http_client.cpp b/http_client.cpp index ef818716..63b8bd5d 100644 --- a/http_client.cpp +++ b/http_client.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/http_client.h b/http_client.h index ab16a80f..04d78347 100644 --- a/http_client.h +++ b/http_client.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once #include diff --git a/lambda_size.cpp b/lambda_size.cpp index 1982e4eb..1d939238 100644 --- a/lambda_size.cpp +++ b/lambda_size.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/malloc_or_die.h b/malloc_or_die.h index af31cf10..dcc24baf 100644 --- a/malloc_or_die.h +++ b/malloc_or_die.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/messenger.cpp b/messenger.cpp index 7bbfc815..d2f08a49 100644 --- a/messenger.cpp +++ b/messenger.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/messenger.h b/messenger.h index 0d1ab4ca..54a9af55 100644 --- a/messenger.h +++ b/messenger.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/mon/PGUtil.js b/mon/PGUtil.js index e92b500f..b029b229 100644 --- a/mon/PGUtil.js +++ b/mon/PGUtil.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) module.exports = { scale_pg_count, diff --git a/mon/afr.js b/mon/afr.js index e3ffa5e8..95b1e84a 100644 --- a/mon/afr.js +++ b/mon/afr.js @@ -1,7 +1,7 @@ // Functions to calculate Annualized Failure Rate of your cluster // if you know AFR of your drives, number of drives, expected rebalance time // and replication factor -// License: VNPL-1.0 (see https://yourcmc.ru/git/vitalif/vitastor/src/branch/master/README.md for details) or AGPL-3.0 +// License: VNPL-1.1 (see https://yourcmc.ru/git/vitalif/vitastor/src/branch/master/README.md for details) or AGPL-3.0 // Author: Vitaliy Filippov, 2020+ module.exports = { diff --git a/mon/lp-optimizer.js b/mon/lp-optimizer.js index f73f4da6..8f2f1b1a 100644 --- a/mon/lp-optimizer.js +++ b/mon/lp-optimizer.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) // Data distribution optimizer using linear programming (lp_solve) diff --git a/mon/mon-main.js b/mon/mon-main.js index 929de095..5e83b181 100755 --- a/mon/mon-main.js +++ b/mon/mon-main.js @@ -1,7 +1,7 @@ #!/usr/bin/node // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) const Mon = require('./mon.js'); diff --git a/mon/mon.js b/mon/mon.js index a21877ad..bf7b79cf 100644 --- a/mon/mon.js +++ b/mon/mon.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) const http = require('http'); const crypto = require('crypto'); diff --git a/mon/test-nonuniform.js b/mon/test-nonuniform.js index 4bec0fe5..b2029ead 100644 --- a/mon/test-nonuniform.js +++ b/mon/test-nonuniform.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) // Interesting real-world example coming from Ceph with EC and compression enabled. // EC parity chunks can't be compressed as efficiently as data chunks, diff --git a/mon/test-optimize-undersized.js b/mon/test-optimize-undersized.js index 9890f9a1..306a5e3d 100644 --- a/mon/test-optimize-undersized.js +++ b/mon/test-optimize-undersized.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) const LPOptimizer = require('./lp-optimizer.js'); diff --git a/mon/test-optimize.js b/mon/test-optimize.js index 75aca0bb..309650b3 100644 --- a/mon/test-optimize.js +++ b/mon/test-optimize.js @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) const LPOptimizer = require('./lp-optimizer.js'); diff --git a/msgr_receive.cpp b/msgr_receive.cpp index 54c62953..121c9a90 100644 --- a/msgr_receive.cpp +++ b/msgr_receive.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include "messenger.h" diff --git a/msgr_send.cpp b/msgr_send.cpp index 4fa44b99..536eeec4 100644 --- a/msgr_send.cpp +++ b/msgr_send.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #define _XOPEN_SOURCE #include diff --git a/nbd_proxy.cpp b/nbd_proxy.cpp index 1280a6c8..89f6fa59 100644 --- a/nbd_proxy.cpp +++ b/nbd_proxy.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) // Similar to qemu-nbd, but sets timeout and uses io_uring #include @@ -111,7 +111,7 @@ public: { printf( "Vitastor NBD proxy\n" - "(c) Vitaliy Filippov, 2020 (VNPL-1.0)\n\n" + "(c) Vitaliy Filippov, 2020 (VNPL-1.1)\n\n" "USAGE:\n" " %s map --etcd_address --pool --inode --size \n" " %s unmap /dev/nbd0\n" diff --git a/object_id.h b/object_id.h index c6e97231..ff011e6b 100644 --- a/object_id.h +++ b/object_id.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/osd.cpp b/osd.cpp index 465e36cd..16c9ac85 100644 --- a/osd.cpp +++ b/osd.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/osd.h b/osd.h index db630793..4aa78f87 100644 --- a/osd.h +++ b/osd.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/osd_cluster.cpp b/osd_cluster.cpp index 554c8631..e61b4364 100644 --- a/osd_cluster.cpp +++ b/osd_cluster.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd.h" #include "base64.h" diff --git a/osd_flush.cpp b/osd_flush.cpp index a103b8c6..e9309181 100644 --- a/osd_flush.cpp +++ b/osd_flush.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd.h" diff --git a/osd_id.h b/osd_id.h index 33dfb666..2daf0b25 100644 --- a/osd_id.h +++ b/osd_id.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/osd_main.cpp b/osd_main.cpp index 1abd1416..6fe0f6df 100644 --- a/osd_main.cpp +++ b/osd_main.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd.h" diff --git a/osd_ops.cpp b/osd_ops.cpp index b453bd2d..3689cb8f 100644 --- a/osd_ops.cpp +++ b/osd_ops.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include "osd_ops.h" diff --git a/osd_ops.h b/osd_ops.h index 3a47c138..2ddad111 100644 --- a/osd_ops.h +++ b/osd_ops.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/osd_peering.cpp b/osd_peering.cpp index 52424e58..b99194aa 100644 --- a/osd_peering.cpp +++ b/osd_peering.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/osd_peering_pg.cpp b/osd_peering_pg.cpp index 00ef2da9..361c3b8d 100644 --- a/osd_peering_pg.cpp +++ b/osd_peering_pg.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include "osd_peering_pg.h" diff --git a/osd_peering_pg.h b/osd_peering_pg.h index bdea6958..4172ed35 100644 --- a/osd_peering_pg.h +++ b/osd_peering_pg.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/osd_peering_pg_test.cpp b/osd_peering_pg_test.cpp index 27c86596..a89884fa 100644 --- a/osd_peering_pg_test.cpp +++ b/osd_peering_pg_test.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #define _LARGEFILE64_SOURCE diff --git a/osd_primary.cpp b/osd_primary.cpp index dd257d2b..732a8cec 100644 --- a/osd_primary.cpp +++ b/osd_primary.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd_primary.h" diff --git a/osd_primary.h b/osd_primary.h index cda79bdb..66ed5645 100644 --- a/osd_primary.h +++ b/osd_primary.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/osd_primary_subops.cpp b/osd_primary_subops.cpp index 919c1799..e888b7a2 100644 --- a/osd_primary_subops.cpp +++ b/osd_primary_subops.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd_primary.h" diff --git a/osd_rmw.cpp b/osd_rmw.cpp index 432ddcf2..507ad87b 100644 --- a/osd_rmw.cpp +++ b/osd_rmw.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/osd_rmw.h b/osd_rmw.h index 89fa2d74..5f0e30ef 100644 --- a/osd_rmw.h +++ b/osd_rmw.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/osd_rmw_test.cpp b/osd_rmw_test.cpp index 426ec8ac..79e84042 100644 --- a/osd_rmw_test.cpp +++ b/osd_rmw_test.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #define RMW_DEBUG diff --git a/osd_secondary.cpp b/osd_secondary.cpp index eedd4f4f..b370dc39 100644 --- a/osd_secondary.cpp +++ b/osd_secondary.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include "osd.h" diff --git a/osd_test.cpp b/osd_test.cpp index 227f37eb..2581a34a 100644 --- a/osd_test.cpp +++ b/osd_test.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include diff --git a/pg_states.cpp b/pg_states.cpp index 9ab1156d..16938cf2 100644 --- a/pg_states.cpp +++ b/pg_states.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include "pg_states.h" diff --git a/pg_states.h b/pg_states.h index 89d0d7df..3d1281f1 100644 --- a/pg_states.h +++ b/pg_states.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/qemu_driver.c b/qemu_driver.c index c26a55c9..e7ea6bb8 100644 --- a/qemu_driver.c +++ b/qemu_driver.c @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) // QEMU block driver diff --git a/qemu_proxy.cpp b/qemu_proxy.cpp index 844124fd..4ea3c985 100644 --- a/qemu_proxy.cpp +++ b/qemu_proxy.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) // C-C++ proxy for the QEMU driver // (QEMU headers don't compile with g++) diff --git a/qemu_proxy.h b/qemu_proxy.h index ea835966..4a8d5554 100644 --- a/qemu_proxy.h +++ b/qemu_proxy.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #ifndef VITASTOR_QEMU_PROXY_H #define VITASTOR_QEMU_PROXY_H diff --git a/ringloop.cpp b/ringloop.cpp index c7ab4cbe..ccfba0ac 100644 --- a/ringloop.cpp +++ b/ringloop.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include diff --git a/ringloop.h b/ringloop.h index e52623f6..88b98645 100644 --- a/ringloop.h +++ b/ringloop.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/rm_inode.cpp b/rm_inode.cpp index e1ff14a3..6cae5c7f 100644 --- a/rm_inode.cpp +++ b/rm_inode.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) /** * Inode removal tool @@ -85,7 +85,7 @@ public: { printf( "Vitastor inode removal tool\n" - "(c) Vitaliy Filippov, 2020 (VNPL-1.0)\n\n" + "(c) Vitaliy Filippov, 2020 (VNPL-1.1)\n\n" "USAGE:\n" " %s --etcd_address --pool --inode [--wait-list]\n", exe_name diff --git a/rpm/vitastor-el7.spec b/rpm/vitastor-el7.spec index 647005b0..6e735902 100644 --- a/rpm/vitastor-el7.spec +++ b/rpm/vitastor-el7.spec @@ -3,7 +3,7 @@ Version: 0.5.4 Release: 2%{?dist} Summary: Vitastor, a fast software-defined clustered block storage -License: Vitastor Network Public License 1.0 +License: Vitastor Network Public License 1.1 URL: https://vitastor.io/ Source0: vitastor-0.5.4.el7.tar.gz diff --git a/rpm/vitastor-el8.spec b/rpm/vitastor-el8.spec index d8038d92..0fa9a3d0 100644 --- a/rpm/vitastor-el8.spec +++ b/rpm/vitastor-el8.spec @@ -3,7 +3,7 @@ Version: 0.5.4 Release: 2%{?dist} Summary: Vitastor, a fast software-defined clustered block storage -License: Vitastor Network Public License 1.0 +License: Vitastor Network Public License 1.1 URL: https://vitastor.io/ Source0: vitastor-0.5.4.el8.tar.gz diff --git a/rw_blocking.cpp b/rw_blocking.cpp index 0b0e2d23..9a98ce5c 100644 --- a/rw_blocking.cpp +++ b/rw_blocking.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/rw_blocking.h b/rw_blocking.h index f7bd7818..df2eafeb 100644 --- a/rw_blocking.h +++ b/rw_blocking.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/stub_bench.cpp b/stub_bench.cpp index c9fd7136..d995641a 100644 --- a/stub_bench.cpp +++ b/stub_bench.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) /** * Stub benchmarker diff --git a/stub_osd.cpp b/stub_osd.cpp index 12a20181..c38d8e5e 100644 --- a/stub_osd.cpp +++ b/stub_osd.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) /** * Stub "OSD" to test & compare network performance with sync read/write and io_uring diff --git a/stub_uring_osd.cpp b/stub_uring_osd.cpp index 2d8052a0..e780b1d0 100644 --- a/stub_uring_osd.cpp +++ b/stub_uring_osd.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) /** * Stub "OSD" implemented on top of osd_messenger to test & compare diff --git a/test_allocator.cpp b/test_allocator.cpp index f2bbf01b..736d3070 100644 --- a/test_allocator.cpp +++ b/test_allocator.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include "allocator.h" diff --git a/test_blockstore.cpp b/test_blockstore.cpp index ef46bbbd..d1a1ae88 100644 --- a/test_blockstore.cpp +++ b/test_blockstore.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #include #include "timerfd_interval.h" diff --git a/test_pattern.h b/test_pattern.h index 7a9c5313..cc6f4003 100644 --- a/test_pattern.h +++ b/test_pattern.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #pragma once diff --git a/test_shit.cpp b/test_shit.cpp index c0f0c44f..f42a7755 100644 --- a/test_shit.cpp +++ b/test_shit.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 (see README.md for details) +// License: VNPL-1.1 (see README.md for details) #define _LARGEFILE64_SOURCE #include diff --git a/timerfd_interval.cpp b/timerfd_interval.cpp index c433afc1..b18b1149 100644 --- a/timerfd_interval.cpp +++ b/timerfd_interval.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/timerfd_interval.h b/timerfd_interval.h index 51fc43d8..9e4f4a17 100644 --- a/timerfd_interval.h +++ b/timerfd_interval.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/timerfd_manager.cpp b/timerfd_manager.cpp index 11dcf89c..ba5b0f24 100644 --- a/timerfd_manager.cpp +++ b/timerfd_manager.cpp @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #include #include diff --git a/timerfd_manager.h b/timerfd_manager.h index e36689ae..45442fe7 100644 --- a/timerfd_manager.h +++ b/timerfd_manager.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once diff --git a/xor.h b/xor.h index 2b8a32fa..add2d403 100644 --- a/xor.h +++ b/xor.h @@ -1,5 +1,5 @@ // Copyright (c) Vitaliy Filippov, 2019+ -// License: VNPL-1.0 or GNU GPL-2.0+ (see README.md for details) +// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details) #pragma once