Компания Canonical перевела проект LXD на лицензию AGPLv3

Компания Canonical опубликовала новую версию системы управления контейнерами LXD 5.20, которая примечательна изменением лицензии на проект и введением необходимости подписания CLA-соглашения о передаче имущественных прав на код при приёме изменений в LXD. Лицензия на код, добавленный в LXD сотрудниками Canonical, изменена с Apache 2.0 на AGPLv3, а код сторонних участников, на который у Canonical нет имущественных прав, остаётся под Apache 2.0. Так как Canonical не имеет возможность изменить лицензию на весь код LXD, проект теперь будет поставляться под смешанными условиями – часть кода под AGPLv3, а часть под Apache 2.0. Переход на новую лицензию объясняется желанием унифицировать лицензию с другими серверными продуктами Canonical, в которых используется AGPLv3.

Код старых выпусков как и раньше остаётся доступен под лицензией Apache 2.0, но все вносимые в перелицензированные компоненты изменения будут публиковаться только под лицензией AGPLv3, что не позволит форку Incus переносить изменения из LXD без перевода своей кодовой базы на лицензию AGPLv3. Лицензии Apache 2.0 и AGPLv3 имеют одностороннюю совместимость, которая сводится к тому, что код под лицензией Apache 2.0 может включаться в код под лицензией AGPLv3, но не наоборот. Изменение означает полное прекращение сотрудничества между проектами LXD и Incus, так как переносу изменений из LXD в Incus мешает новая лицензия, а из Incus в LXD необходимость подписания СLA-соглашения, которое разработчики Incus подписывать не намерены.

Особенностью лицензии AGPLv3 является введение дополнительных ограничений для приложений, обеспечивающих функционирование сетевых сервисов. При использовании AGPL-компонентов в работе сетевых сервисов, разработчик обязан предоставить пользователю исходный код всех внесённых в эти компоненты изменений, даже если лежащее в основе сервиса программное обеспечение не распространяется и используется исключительно во внутренней инфраструктуре для организации работы сервиса. Лицензия AGPL также накладывает условия копилефта, т.е. для включении AGPL-кода из LXD в свой проект, кодовая база собственного проекта должна быть перелицензирована под лицензией AGPL.

Среди добавленных в LXD 5.20 возможностей:

  • Во время создания пулов хранения на базе Cephfs предоставлена возможность создания метаданных и данных для пулов OSD (Object Storage Daemon), используя параметры cephfs.create_missing, cephfs.meta_pool и cephfs.data_pool. Например: lxc storage create mypool cephfs source=cephfs cephfs.create_missing=true cephfs.data_pool=xyz_data cephfs.meta_pool=xyz_meta
  • В snap-пакете LXD в прошивку EDK2 добавлена возможность настройки приоритета загрузки с разных дисков при использовании режима security.csm.
  • В прошивку EDK2 UEFI добавлен отладочный режим (boot.debug_edk2=true) для диагностики проблем при загрузке виртуальных машин. Отладочный лог сохраняется в файл $LXD_DIR/logs//edk2.log.
  • Код авторизации переведён на модульную основу, позволившую обеспечить поддержку OpenFGA в дополнение к авторизации по сертификатам TLS и Canonical RBAC.
  • Для компиляции LXD теперь требуется как минимум версия языка Go 1.20.
  • Удалена поддержка Shiftfs. Для маппинга идентификаторов пользователей следует использовать монтирование с idmap, поддерживаемое для Ext4, XFS, Btrfs, ZFS и Cephfs.
  • Удалена поддержка прошивок UEFI, размером 2MB (необходимо использовать прошивки, размером 4MB).
  • Из кодовой базы форка Incus перенесена поддержка создания хранилищ на базе технологии NVME. Для указания типа диска добавлен новый параметр конфигурации “io.bus”, который по умолчанию выставлен в значение “virtio-scsi”. При изменении значения на “nvme”, накопитель в виртуальной машине будет виден как NVME SSD.
  • Из кодовой базы форка Incus перенесена поддержка горячего подключения и горячего удаления (hot-plug/hot-remove) файловых путей или отдельных разделов, проброшенных из хост-окружения. Ранее подобный проброс при помощи драйвера virtio-fs или ФС 9p требовал остановки виртуальной машины. Для обхода этого ограничения задействована возможность QEMU по горячему подключению PCI-устройств и монтирование пути внутри гостевой системы через incus-agent.
  • Идентификатор устройства org.linuxcontainers.lxd переименован в com.canonical.lxd (для сохранения обратной совместимости поддержка старого идентификатора сохранена).
Release. Ссылка here.