The Linux kernel is licensed under the GPLv2. The headers that it exports to user space, however, are not covered by the license. This is documented in the kernel's licensing rules:

The User-space API (UAPI) header files, which describe the interface of user-space programs to the kernel are a special case. According to the note in the kernel COPYING file, the syscall interface is a clear boundary, which does not extend the GPL requirements to any software which uses it to communicate with the kernel. Because the UAPI headers must be includable into any source files which create an executable running on the Linux kernel, the exception must be documented by a special license expression.

This special license expression is a note that clarifies which files the kernel's license applies to. It is also present in the kernel's COPYING file.

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".

User space code that uses the /usr/include/linux headers are not considered derived works. What are the implications of this? Is the use of incompatible licenses allowed?


[Note: I am not a lawyer]

When creating a derived work of a GPLv2-licensed piece of software, you must keep the original copyright, and license your own work as GPLv2.

This note helps clear up, or rather, prevent, contention on this point - any program running in user space that merely uses system calls (as opposed, e.g., to adding new system calls or modifying existing ones) is definitely not derived work of the kernel, as is not subject to the aforementioned restrictions.

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.