Ліцензування
Майже все в системі Ditana надходить із власних сховищ Arch на умовах Arch. Ця сторінка стосується пакунків, які Ditana збирає сама й роздає з ditana.org, — насамперед пакунків ZFS, оскільки з ZFS у Linux пов’язане ліцензійне питання, на яке дистрибутив має відповісти явно, а не випадково.
Вона описує, що робить Ditana, і дає посилання на першоджерела, щоб ви могли прочитати їх, а не вірити цій сторінці на слово. Це не юридична консультація.
Пакунки ZFS
Розділ «Пакунки ZFS»Що розповсюджує Ditana
Розділ «Що розповсюджує Ditana»| Пакунок | Вміст | Ліцензія |
|---|---|---|
zfs-utils |
Інструменти й бібліотеки простору користувача — zfs, zpool, zed, правила udev, модулі systemd. |
CDDL-1.0 |
zfs-dkms |
Лише вихідний код. Пакунок розпаковує вихідні файли модуля OpenZFS у /usr/src/zfs-<version>/ разом із dkms.conf. Скомпільованого модуля ядра він не містить. |
CDDL-1.0 |
zfs.ko, сам модуль ядра, компілює DKMS на вашій машині, для ядра, що працює на вашій машині, під час встановлення zfs-dkms і знову після кожного оновлення ядра. Його ніколи не збирають на сервері збирання Ditana, ніколи не підписує Ditana і ніколи нікуди не вивантажують. Ви можете перевірити це у встановленій системі:
pacman -Ql zfs-dkms | grep -c '\.ko$' # 0Ліцензійне питання
Розділ «Ліцензійне питання»OpenZFS поширюється за ліцензією CDDL. Ядро Linux поширюється за ліцензією GPL версії 2. Free Software Foundation відносить CDDL до ліцензій вільного програмного забезпечення, несумісних із GPL, і Software Freedom Conservancy дійшла такого самого висновку у своєму аналізі 2016 року. Того самого року Canonical опублікувала протилежну позицію. Цю суперечку ніколи не розглядали в суді, і вона досі не розв’язана.
Сама суперечка стосується вузького питання: чи можна розповсюджувати скомпільований двійковий файл, що поєднує код OpenZFS під CDDL з кодом ядра під GPL. Цей артефакт — zfs.ko.
Вихідний код не є таким поєднанням, як і простір користувача: zfs-utils не містить коду ядра й не скомпонований із ним. Жоден із пакунків, які постачає Ditana, не є тим артефактом, про який ідеться в суперечці.
Що це означає для Ditana
Розділ «Що це означає для Ditana»Ditana розповсюджує вихідний код та інструменти простору користувача, а модуль дає зібрати локально DKMS. Це та сама схема, яку використовує Debian: пакунок вихідного коду для DKMS, жодних попередньо зібраних модулів у сховищі.
Це свідомо не та схема, яку використовують проєкти, що постачають готовий зібраний модуль, — archzfs, наприклад, пропонує попередньо скомпільовані пакунки zfs-linux поряд зі своїм варіантом для DKMS, а Canonical постачає модуль разом з Ubuntu, спираючись на позицію, посилання на яку наведено вище. Ці проєкти розповсюджують поєднаний двійковий файл. Ditana — ні, і саме цей вибір є причиною існування цієї сторінки.
Практична ціна цього вибору реальна, і її не приховують: оновлення ядра в системі Ditana перекомпілює модуль локально, що займає хвилини й потребує відповідних заголовків ядра. Саме тому інсталятор пропонує ZFS лише разом з ядром із довгостроковою підтримкою: пункт ZFS з’являється в діалоговому вікні File System лише тоді, коли вибрано це ядро, і зникає, коли ви вибираєте інше, — ядро без LTS може випередити те, що підтримує OpenZFS, і тоді DKMS не зможе зібрати модуль. На сторінці Залежності між налаштуваннями показано два оголошення, які це забезпечують.
Інсталятор повідомляє ліцензію ще до того, як ви зробите вибір: у діалоговому вікні File System пункт ZFS позначено CDDL — так само, як вибір пакунків позначено їхнім ідентифікатором SPDX.
ZFSBootMenu
Розділ «ZFSBootMenu»ZFSBootMenu — це завантажувач, який Ditana встановлює в системах на ZFS. Він поширюється за ліцензією MIT і не містить коду OpenZFS — це набір сценаріїв оболонки та Perl, які викликають команди zfs і zpool. Наведене вище питання для нього не постає.
Завантажувальний образ на вашій машині генерується локально під час встановлення за допомогою generate-zbm, який працює в цільовій системі й використовує наявні в ній компоненти. На машині з UEFI це EFI-образ у /boot/efi/EFI/zbm/, скопійований також до /boot/efi/EFI/BOOT/BOOTX64.EFI; на машині з BIOS це /boot/syslinux/zfsbootmenu/initramfs-bootmenu.img.
Відповідний вихідний код
Розділ «Відповідний вихідний код»CDDL — це копілефт на рівні файлів: той, хто розповсюджує двійкові файли, зібрані з файлів під CDDL, має надати відповідний вихідний код і зберегти ліцензійні повідомлення недоторканими. Ditana розповсюджує zfs-utils як двійковий пакунок, тож це її стосується.
Для кожного пакунка у сховищі Ditana рецепт публічний. Пакунки, взяті з AUR без змін, і відгалуження, які Ditana зробила від них, містять у рецепті адресу оригінального джерела; власні пакунки Ditana збираються з однойменного сховища на github.com/acrion; а кілька пакунків, узятих із власного пакування Arch, містять адресу відповідного сховища на gitlab.archlinux.org. Рецепт називає точний архів оригінального джерела, який він отримує, і контрольну суму, за якою його перевіряють, — а це і є відповідний вихідний код у тому сенсі, який має на увазі ліцензія.
Для пакунків на цій сторінці:
| Пакунок | Рецепт | Оригінальне джерело |
|---|---|---|
zfs-utils |
aur.archlinux.org/packages/zfs-utils | github.com/openzfs/zfs/releases |
zfs-dkms |
aur.archlinux.org/packages/zfs-dkms | github.com/openzfs/zfs/releases |
zfsbootmenu |
aur.archlinux.org/packages/zfsbootmenu | github.com/zbm-dev/zfsbootmenu |
Рецепти ZFS у Ditana не містять жодних латок Ditana: пакунки збирають з оригінальних рецептів AUR у тому вигляді, в якому їх опубліковано. pacman -Qi zfs-utils показує точну версію, встановлену на вашій машині, а в історії рецепта в AUR є коміт для цієї версії. Кожен прогін, який створив ці пакунки, записано на сторінці Стан збирання.
Повний текст CDDL-1.0 є на opensource.org/license/cddl-1-0, а також у файлах COPYRIGHT і LICENSE дерева вихідного коду OpenZFS, посилання на яке наведено вище.
Якщо ви не можете знайти відповідний вихідний код для будь-якого пакунка, який розповсюджує Ditana, напишіть на [email protected], і вам вкажуть, де він, або надішлють його.
Власний код Ditana
Розділ «Власний код Ditana»Рушій інсталятора, його база знань та інструменти навколо них — власна робота Ditana:
| Проєкт | Ліцензія |
|---|---|
| ditana-installer | GPL-3.0-or-later |
| ditana-config | AGPL-3.0-or-later |
| ditana-build | AGPL-3.0-or-later |
| ditana-userns-guard | AGPL-3.0-or-later, крім самої програми BPF (userns_guard.bpf.c) і потрібних їй оголошень типів ядра (kernel_types.h), які мають ліцензію GPL-2.0-or-later, бо ядро не надає допоміжних функцій, доступних лише для GPL, програмі, яка сама не під GPL |
| zfs-autosnap | AGPL-3.0-or-later |
zfs-autosnap — це власний хук Ditana для створення знімків перед оновленням, а не код OpenZFS; його типово встановлено в кожній системі на ZFS.
Не юридична консультація
Розділ «Не юридична консультація»Цю сторінку написав супровідник Ditana, а не юрист, і вона описує пакування Ditana, а не висловлює думку про пакування інших. Питання CDDL/GPL справді є спірним між сторонами, які поставилися до нього серйозно, і на кожну згадану тут позицію дано посилання, щоб ви могли самі прочитати аргументи. Якщо ви повторно розповсюджуєте ці пакунки або створюєте на їхній основі продукти, отримайте власну консультацію.
Це машинний переклад. Читачі вдосконалюють його на Weblate.