unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
To: "pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de>
Cc: guix-devel@gnu.org, raid5atemyhomework@protonmail.com,
	Domagoj Stolfa <ds815@gmx.com>
Subject: Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)
Date: Mon, 22 Nov 2021 17:50:49 +0100	[thread overview]
Message-ID: <20211122175049.27479125@primarylaptop.localdomain> (raw)
In-Reply-To: <20211121103548.yi5lo6ymcnm22gfm@pelzflorian.localdomain>

[-- Attachment #1: Type: text/plain, Size: 4876 bytes --]

On Sun, 21 Nov 2021 11:54:15 +0100
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> wrote:

> Hello Denis.  Thank you for your write-up.
Hi,

> raid5atemyhomework wrote patches to add ZFS to Guix
> <https://issues.guix.gnu.org/45692>.  I put them in CC.  That there is
> no decision on ZFS and their patches is bad.  Maybe their patches
> would be for the RFC model to decide?
> 
> As for Denis’ arguments
> <https://lists.gnu.org/archive/html/guix-devel/2021-11/msg00101.html>:
> 
> IANAL but I would dispute this:
> 
> On Sun, Nov 21, 2021 at 02:33:24AM +0100, Denis 'GNUtoo' Carikli
> wrote:
> > If I take individual drivers from Linux which are under the GPLv2 or
> > the GPLv2 or later, and I combine them in a new combined work on a
> > new git repository with code under the CDDL license, this is not
> > legal either. And here too I hope that there is some consensus on
> > that too.
> 
> If we are talking about source code, the GPLv2 files and the CDDL
> files are not intertwined into a combined work at all.  They are just
> in the same git repo on the same file-system.
Just adding GPLv2 and CDDL files in the same repository should not be a
problem as far as I know. 

For instance you can have a kernel module under the GPLv2, and a
userspace tool under the CDDL license that doesn't use code from the
GPLv2 driver, and in that case both don't constitute a combined work.

If the userspace tool uses syscalls from the kernel, the kernel headers
license has an exception for that so it shound't be an issue either.

However I've reviewed a bit the ZFS kernel driver and some files are
under the CDDL license, and that driver also uses functions from the
Linux kernel, and it needs to be directly linked to Linux to uses these
functions.

I didn't take into account the fact that the ZFS driver also has
GPLv2(+?) code or the structure of the repository because having
files under the CDDL licenses that are compiled in the ZFS driver and
having that driver use Linux function (through linking) is sufficient
to make sure that this is a combined work of Linux and that driver.

And since Linux's GPLv2[1] and the CDDL[2] are incompatible, even in
source code form the ZFS driver is not legal as it violates Linux's
GPLv2 license.

Adding extra layer(s) of indirection with code under GPLv2 compatible
licenses won't change anything here as the ZFS driver links with Linux
anyway and it uses functions in Linux.

As for the GPLv2 in the ZFS driver, in the module directory of
zfs-2.1.1, we have several files under the GPLv2 license or compatible
licenses.

If I "grep -i gpl" in the module directory, it gives several files, but
all the files I found are OK with that are OK with regard with the
GPLv2:
- lua/lapi.c has 'ZFS_MODULE_LICENSE("Dual MIT/GPL")', so we can can
  probably assume that GPL is the GPLv2 and use it under the GPLv2 here.
- The following files are under the GPLv2 or BSD 2 clauses, here we can
  use them under the GPLv2, so it's OK:
  - zcommon/zfs_fletcher_aarch64_neon.c
  - zcommon/zfs_fletcher_intel.c
  - zcommon/zfs_fletcher_sse.c
  - zcommon/zfs_fletcher_superscalar4.c: 
  - zcommon/zfs_fletcher_superscalar.c
- Finally, zstd/zfs_zstd.c is under the BSD 3 clauses, and also has
  "ZFS_MODULE_LICENSE("Dual BSD/GPL");" inside. In any case that BSD
  license isn't incompatible with the GPL, and we can use the GPL in
  "Dual BSD/GPL", so we're good in either cases.

As for the problematic symbols, for instance dequeue_signal is exported
by Linux and it's used by the ZFS driver.

To find about that you can use the following command in a Linux git
checkout to find the list of exported symbols:
> git grep -P "EXPORT_SYMBOL(_GPL)?\(.*\);"

And then the idea is to grep for them in the module directory, and
check if they are reimplemented by the ZFS module or not.

Another way to do that check would be to look at the module (the .ko
file) with nm or a similar tool and look at the undefined symbols (U).

As I understand from what Bradley Kuhn told me, the EXPORT_SYMBOL_GPL
macro name is misleading and It doesn't mean that one can use symbols
exported by EXPORT_SYMBOLS without having to abide by the GPL, and I
need to look at EXPORT_SYMBOLS_GPL history to understand that in more
details.

But we don't need to do that either here as the dequeue_signal is
exported with EXPORT_SYMBOL_GPL anyway (it's in kernel/signal.c Linux)
and AFAIK it's not reimplemented by the ZFS driver either.

And I didn't check how many symbols from Linux are used but one is
enough to be an issue.

References:
-----------
[1] Many files that are being compiled in Linux are under the GPLv2
    only or compatible licenses.
[2] The ZFS driver has code under the CDDL license that is compiled in
    the ZFS driver.

Denis.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2021-11-22 16:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-03 19:33 Effectively force all GNOME users to locally compile ZFS? Mark H Weaver
2021-07-03 19:53 ` Tobias Geerinckx-Rice
2021-07-05  9:53   ` Ludovic Courtès
2021-07-05 17:48     ` Mark H Weaver
2021-07-07 11:59       ` Tobias Geerinckx-Rice
2021-07-11 20:07         ` Mark H Weaver
2021-07-07 11:34     ` Tobias Geerinckx-Rice
2021-07-03 20:01 ` Maxime Devos
2021-07-03 20:16   ` Tobias Geerinckx-Rice
2021-07-03 20:46     ` Domagoj Stolfa
2021-07-03 21:38       ` Tobias Geerinckx-Rice
2021-07-03 21:53         ` Tobias Geerinckx-Rice
2021-11-20  1:09       ` Denis 'GNUtoo' Carikli
2021-11-20  2:34         ` Tobias Geerinckx-Rice
2021-11-21  1:33           ` Denis 'GNUtoo' Carikli
2021-11-21 10:54             ` ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?) pelzflorian (Florian Pelz)
2021-11-22 16:50               ` Denis 'GNUtoo' Carikli [this message]
2021-11-22 18:10               ` pelzflorian (Florian Pelz)
2021-11-23 16:37                 ` Denis 'GNUtoo' Carikli
2021-11-23 17:29                 ` Ludovic Courtès
2021-11-23 23:50                   ` Denis 'GNUtoo' Carikli
2021-11-24  0:45                     ` Denis 'GNUtoo' Carikli
2021-11-24 12:03                       ` pelzflorian (Florian Pelz)
2021-11-24 12:32                         ` pelzflorian (Florian Pelz)
2021-11-24 12:51                           ` zimoun
2021-11-24 14:40                             ` pelzflorian (Florian Pelz)
2021-11-24 20:25                               ` zimoun
2021-11-24 13:33                         ` Denis 'GNUtoo' Carikli
2021-11-24 20:02                           ` ZFS part of Guix? RFC? Vagrant Cascadian
2021-11-26 15:28                             ` Denis 'GNUtoo' Carikli
2021-11-26 20:02                               ` Denis 'GNUtoo' Carikli
2021-11-26 20:34                                 ` Vagrant Cascadian
2021-11-27 15:19                                   ` Denis 'GNUtoo' Carikli
2021-11-30 15:22                               ` raid5atemyhomework
2021-11-30 21:22                                 ` Denis 'GNUtoo' Carikli
2021-11-24  1:24                     ` ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?) zimoun
2021-11-24 17:24                 ` Leo Famulari
2021-11-21 22:18             ` Effectively force all GNOME users to locally compile ZFS? zimoun
2021-07-04 20:11     ` Mark H Weaver
2021-07-05 10:21       ` Giovanni Biscuolo
2021-07-05 17:59         ` Mark H Weaver
2021-07-07 12:20       ` Tobias Geerinckx-Rice

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211122175049.27479125@primarylaptop.localdomain \
    --to=gnutoo@cyberdimension.org \
    --cc=ds815@gmx.com \
    --cc=guix-devel@gnu.org \
    --cc=pelzflorian@pelzflorian.de \
    --cc=raid5atemyhomework@protonmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).