Skip to content

Licensing

Almost everything on a Ditana system comes from Arch’s own repositories under Arch’s terms. This page is about the packages Ditana builds itself and serves from ditana.org — in particular the ZFS ones, because ZFS on Linux carries a licence question that a distribution has to answer explicitly rather than by accident.

It describes what Ditana does and links the primary sources so you can read them instead of taking this page’s word for anything. It is not legal advice.

Package Contents Licence
zfs-utils The userspace tools and libraries — zfs, zpool, zed, udev rules, systemd units. CDDL-1.0
zfs-dkms Source code only. It unpacks the OpenZFS module sources into /usr/src/zfs-<version>/ together with a dkms.conf. It contains no compiled kernel module. CDDL-1.0

zfs.ko, the kernel module itself, is compiled by DKMS on your machine, against the kernel running on your machine, when zfs-dkms is installed and again after every kernel update. It is never built on a Ditana build host, never signed by Ditana, and never uploaded anywhere. You can check this on an installed system:

Terminal window
pacman -Ql zfs-dkms | grep -c '\.ko$' # 0

OpenZFS is licensed under the CDDL. The Linux kernel is licensed under the GPL version 2. The Free Software Foundation lists the CDDL as a free software licence that is incompatible with the GPL, and the Software Freedom Conservancy reached the same conclusion in its 2016 analysis. Canonical published the opposing position that same year. The disagreement has never been tested in court and remains unresolved.

What the disagreement is about is narrow: whether a compiled binary that combines CDDL-covered OpenZFS code with GPL-covered kernel code may be distributed. That artefact is zfs.ko.

Source code is not such a combination, and neither is userspace: zfs-utils contains no kernel code and is not linked against any. Neither package Ditana ships is the artefact under dispute.

Ditana distributes the sources and the userspace tools, and lets DKMS build the module locally. That is the same arrangement Debian uses: a DKMS source package, no prebuilt modules in the repository.

It is deliberately not the arrangement used by projects that ship a ready-built module — archzfs, for example, offers precompiled zfs-linux packages alongside its DKMS variant, and Canonical ships the module with Ubuntu on the strength of the position linked above. Those projects distribute the combined binary. Ditana does not, and the choice is the reason this page exists.

The practical cost of that choice is real and is not hidden: a kernel update on a Ditana system recompiles the module locally, which takes minutes and needs the matching kernel headers. This is why the installer offers ZFS only together with the long-term support kernel, and switches the kernel selection to it automatically when you choose ZFS — a non-LTS kernel can move ahead of what OpenZFS supports and leave DKMS unable to build.

The installer states the licence before you choose: the File System dialog carries CDDL on the ZFS entry, the same way every other package selection carries its SPDX identifier.

ZFSBootMenu is the bootloader Ditana installs on ZFS systems. It is licensed under the MIT licence and contains no OpenZFS code — it is a set of shell and Perl scripts that call the zfs and zpool commands. The question above does not arise for it.

The boot image on your machine (initramfs-bootmenu.img) is generated locally by generate-zbm after installation, from the components present on that system.

The CDDL is a file-level copyleft: whoever distributes binaries built from CDDL-covered files has to make the corresponding source available and keep the licence notices intact. Ditana distributes zfs-utils as a binary package, so this applies.

Every package in the Ditana repository is built from a publicly available recipe. For a package that also exists in the AUR, that is the AUR recipe of the same name — used unmodified in most cases, and otherwise as a fork published under github.com/acrion. The recipe names the exact upstream archive it fetches and the checksum it is verified against, which is the corresponding source in the sense the licence means.

For the packages on this page:

Package Recipe Upstream source
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

Ditana’s ZFS recipes carry no Ditana patches: the packages are built from the upstream AUR recipes as published. pacman -Qi zfs-utils names the exact version installed on your machine, and the recipe’s AUR history has a commit for that version. Every run that produced these packages is recorded under Build status.

The full text of the CDDL-1.0 is at opensource.org/license/cddl-1-0 and in the COPYRIGHT and LICENSE files of the OpenZFS source tree linked above.

If you cannot locate the corresponding source for any package Ditana distributes, write to [email protected] and you will be pointed at it or sent it.

The installer engine and its knowledge base are Ditana’s own work:

Project Licence
ditana-installer GPL-3.0-or-later
ditana-config AGPL-3.0-or-later

This page is written by Ditana’s maintainer, not by a lawyer, and it is a description of Ditana’s packaging rather than an opinion on anyone else’s. The CDDL/GPL question is genuinely contested by parties who have taken it seriously, and every position referenced here is linked so you can read the argument yourself. If you are redistributing these packages, or building products on top of them, get your own advice.