Uptake of native Linux ZFS port hampered by license conflict

A group of software developers from LLNL have released a native Linux port of …

A group of open source software developers working at Lawrence Livermore National Laboratory (LLNL) have implemented a native Linux port of Sun's ZFS filesystem. Although the code is functional and available for download (but not production-ready yet), it cannot be merged upstream or shipped in binary form with the Linux kernel due to a licensing conflict. Sun distributes the OpenSolaris source code under its own Common Development and Distribution License (CDDL), which is incompatible with GNU's General Public License (GPL).

ZFS is an innovative 128-bit filesystem with a number of powerful features, such as a sophisticated storage pooling mechanism that simplifies volume management. The filesystem is arguably one of the crown jewels of the Solaris platform. Although ZFS is open-source software, licensing compatibility issues have prevented it from widely adopted on the Linux platform. Users who run ZFS on Linux today generally do so through FUSE, a framework that allows filesystems to run in userspace. This avoids the licensing issues because it provides a layer of separation between the CDDL-licensed ZFS code and the GPL-licensed Linux kernel.

Routing through FUSE is suboptimal in many ways, however, and introduces a performance penalty—particularly on write-heavy operations. The new native port will offer many advantages over the FUSE model as it matures, but is impractical due to the licensing constraints. It can't be distributed with the kernel itself, so it's unlikely that we will see it made available in mainstream Linux distributions any time in the near future. According to Brian Behlendorf, a developer who worked on the project, users can run the native ZFS port if they are willing to compile the kernel module themselves.

"While both the GPL and CDDL are open source licenses their terms are such that it is impossible to simultaneously satisfy both licenses. This means that a single derived work of the Linux kernel and ZFS cannot be legally distributed," he wrote in an FAQ about the project. "The CDDL does not restrict modification and release of the ZFS source code which is publicly available as part of OpenSolaris. The ZFS code can be modified to build as a CDDL licensed kernel module which is not distributed as part of the Linux kernel. This makes a Native ZFS on Linux implementation possible if you are willing to download and build it yourself."

The LLNL developers worked on the native Linux ZFS port in collaboration with Sun (now Oracle), with the aim of bringing together ZFS technology and the Lustre project. Used by some of the world's largest supercomptuers, Lustre is a highly scalable distributed file system that Sun obtained when it acquired Cluster File Systems in 2007. The ZFS port is available from the Github project hosting site.

In a message on the ZFS-Fuse mailing list, Behlendorf says that his team has unsuccessfully been urging Oracle to change the ZFS license in order to resolve the compatibility problem.

"We have been working on this for some time now and have been strongly urging Sun/Oracle to make a change to the licensing," he wrote. "I'm sorry to say we have not yet had any luck. However, we did feel it was time to move our efforts to a public forum."

The CDDL is based on Mozilla's MPL, a license that allows open-source code to be used in proprietary software but requires changes to the code itself to be disclosed on a per-file basis. It has a number of characteristics that conflict with the terms of the GPL, making it impossible to use CDDL-licensed code in a GPL-licensed project. Mozilla and most other major users of the MPL and MPL derivatives typically multilicense their source code, distributing it in parallel under the GPL. Sun (and now Oracle) has declined to do so for Solaris, creating artificial barriers for adoption of the code in Linux. A native Linux ZFS port has considerable technical value, but it won't see much adoption as long as the licensing conflict exists.