License exception for `GPL-2.0 WITH Linux-syscall-note` file in containerd/btrfs
EDIT (March 28, 2023): See https://github.com/cncf/foundation/issues/174#issuecomment-1485584856 for the current situation
(Original post on Aug 2021)
We containerd maintainers would like to include a file that is machine-translated from a GPL-2.0 WITH Linux-syscall-note file, for the sake of calling btrfs-related ioctl syscalls.
https://github.com/torvalds/linux/blob/v5.13/LICENSES/exceptions/Linux-syscall-note
NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.
Also note that the only valid version of the GPL as far as the kernel
is concerned is _this_ particular version of the license (ie v2, not
v2.2 or v3.x or whatever), unless explicitly otherwise stated.
Linus Torvalds
We interpret that containerd/btrfs is a user programs that use kernel services by normal system calls mentioned in the Linux-syscall-note, and does not fall under the heading of "derived work" of the GPL-2.0 code.
- Original C source, with
GPL-2.0 WITH Linux-syscall-note: https://github.com/torvalds/linux/blob/v5.13/include/uapi/linux/btrfs_tree.h - Translated Go source, to be included in https://github.com/containerd/btrfs : https://github.com/AkihiroSuda/go-btrfs/blob/btrfs-v2.20210701/btrfs_tree_hc.go
- Translator, to be included in https://github.com/containerd/btrfs : https://github.com/AkihiroSuda/go-btrfs/blob/btrfs-v2.20210701/headers.go
cc @swinslow @caniszczyk
@swinslow @caniszczyk @amye Could you take a look?
@stevvooe Do we still need to keep this open, or do you find a way to avoid cgo without importing GPL-2.0 WITH Linux-syscall-note header?
@AkihiroSuda - connecting back in here, I'm getting a process set up for our next board meeting.
For all license exception requests, we need the following information in order to help make a decision to grant an exception.
- [ ] What is the alternative license?
- [ ] If this is newly created code, why can't it be under Apache-2.0?
- [ ] Is this an existing 3rd party open source project?
- [ ] How does this code integrate with or interact with, if at all, other components of CNCF?
- [ ] How will the code be maintained? Who is responsible?
- [ ] How will the code be kept up to date with security patches?