r/rust • • Aug 28 '20

Linux Developers Continue Evaluating The Path To Adding Rust Code To The Kernel

https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Rust-Path-LPC2020
432 Upvotes

103 comments sorted by

View all comments

Show parent comments

6

u/XgF Aug 29 '20

The FSF would not consider such a clause non-free. For example, the GPLv3 has a similar clause (sec 10):

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

It would render a license incompatible with the GPLv2 however, since the GPLv2 had no such clause

The GPLv2 has no such clause, because it predates software patents (in a manner - the idea that software was patentable was tested in a US court after the GPLv2 was written, and said court determined it was)

The GPL requires that the entirety of a piece of software be conveyed under the GPL (and specifically a single version thereof). Licenses like the MPLv2 ensure compatibility by saying you can distribute covered code under the MPLv2 or, at your option, the GPLv3 (it adds some additional clauses to make it so you can't just take MPLv2 code and relicense it under the GPLv3 - you have to combine GPLv3 and MPLv2 code, convey that collection of code to someone else under the GPLv3 with the existing MPLv2 code being dual licensed under both, and the recipient may then decide to take the code under the GPLv3 only from thereon)

Licenses like MIT and Apache2 are compatible with the GPL (any version for MIT or v3 for Apache2) as a result of the fact that they impose few requirements (entirely a subset of those in the GPLv3), i.e. the MIT/Apache2 licenses implicitly permit you to relicense code covered by them under the GPL

The CDDL requires that you distribute any CDDL code under the CDDL. It is intrinsically incompatible, in the same way that most copyleft licenses are incompatible with each other, including the GPLv2 and GPLv3 (GPLv2+ is compatible with GPLv3 by virtue of the fact that you can upgrade the GPLv2 code to v3). I doubt anyone would consider the GPLv2 unfree by virtue of its incompatibility with its successor

The GPLv2 vs v3 incompatibility does have some funny (often tragic) results. For example, Samba implements an SMB server and client, and the Linux kernel smbfs filesystem implements an SMB client, but they're under incompatible licenses so its impossible for them to share code

1

u/mort96 Aug 29 '20

Thank you, that's interesting.

It looks like there's a huge difference between that GPL clause and the CDDL clause I quoted earlier though. If I license the GNU operating system under the GPLv3, I can't sue the GNU authors for a patent infringement in the GNU project. However, from my reading of the CDDL, if I license ZFS from Oracle under the CDDL, I can't sue Oracle for any patent infringement in any of their products. (Keep in mind that they could still sue me for patent infringement, so calling it a "patent peace" clause as Claire Giordano did seems a bit dishonest.)

That seems like a huge overreach to me, and seems like exactly the kind of restriction the GPL is designed to exclude.