Re: GPL Interpretation on load [Was: [bug #61594] suggest new $(hash ...) function]

2021-12-01 Thread Paul Smith
On Wed, 2021-12-01 at 09:33 -0500, rsbec...@nexbridge.com wrote:
> That is understood. Is this an official GNU Make policy because it is
> not specified that way in GPL. Has the GNU Make team modified their
> copy of the GPL license because it is not indicated as a modified
> version?

I'm not sure what you're asking here.  As Eli says, most GNU projects
that provide the ability to load modules like this, have a similar type
of restriction.

I don't see how this goes against the GPL license or would require an
extension or exception to the GPL license.  You, as the user of the
program, have received all your rights under the GPL.  There's nothing
in the GPL that says or implies that the implementation of a program
licensed under the GPL, must allow anything at all to be loaded
regardless of license.

Note that the GPL only applies to distribution, it doesn't apply to
use.  Just creating and using a plugin yourself doesn't mean it has to
also be provided to everyone under a GPL-compatible license. It's only
if you distribute the plugin that the GPL comes into play.  Whether
this is actually legally enforceable is not something I am qualified to
discuss... this is the way the GNU project wants plugins to be handled.

If you want to understand more about the process and philosophy here,
you can read about it in the GCC plugins section (GNU make uses the
same thinking):

https://gcc.gnu.org/onlinedocs/gccint/Plugin-API.html
https://gcc.gnu.org/wiki/GCC_Plugins




RE: GPL Interpretation on load [Was: [bug #61594] suggest new $(hash ...) function]

2021-12-01 Thread rsbecker
On December 1, 2021 9:41 AM, Eli Zaretskii wrote:
> To: rsbec...@nexbridge.com
> Cc: bug-make@gnu.org; bo...@kolpackov.net
> Subject: Re: GPL Interpretation on load [Was: [bug #61594] suggest new
> $(hash ...) function]
> 
> > From: 
> > Cc: , ,  m...@gnu.org>,
> > 
> > Date: Wed, 1 Dec 2021 09:33:22 -0500
> >
> > > The test doesn't check that the library is under GPL, it tests that
> > > it's
> > "GPL-
> > > compatible", which means it's Free Software.  GNU Make doesn't want
> > > to load non-free modules.
> >
> > That is understood. Is this an official GNU Make policy because it is
> > not specified that way in GPL. Has the GNU Make team modified their
> > copy of the GPL license because it is not indicated as a modified
version?
> 
> That's the official policy of the whole GNU project.  GCC does the same,
as
> does Emacs and others.

It might be policy, but it is not explicitly quantified in the GPLv3. I was
looking for clarification. Thanks.




Re: GPL Interpretation on load [Was: [bug #61594] suggest new $(hash ...) function]

2021-12-01 Thread Eli Zaretskii
> From: 
> Cc: , , ,
> 
> Date: Wed, 1 Dec 2021 09:33:22 -0500
> 
> > The test doesn't check that the library is under GPL, it tests that it's
> "GPL-
> > compatible", which means it's Free Software.  GNU Make doesn't want to
> > load non-free modules.
> 
> That is understood. Is this an official GNU Make policy because it is not
> specified that way in GPL. Has the GNU Make team modified their copy of the
> GPL license because it is not indicated as a modified version?

That's the official policy of the whole GNU project.  GCC does the
same, as does Emacs and others.



RE: GPL Interpretation on load [Was: [bug #61594] suggest new $(hash ...) function]

2021-12-01 Thread rsbecker
On December 1, 2021 9:25 AM, Eli Zaretskii wrote:
> > From: 
> > Date: Wed, 1 Dec 2021 09:09:55 -0500
> > Cc: bug-make@gnu.org, bo...@kolpackov.net
> >
> > On December 1, 2021 9:06 AM, Tim Murphy wrote:
> >
> > 
> > > -load $(XTRA_OUTPUTDIR)/hash$(XTRA_EXT)
> >
> > This thread brings up a question. The load function checks for GPL
> compatibility.
> >
> >   /* Assert that the GPL license symbol is defined.  */
> >   symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible");
> >   if (! symp)
> > OS (fatal, flocp,
> >  _("Loaded object %s is not declared to be GPL compatible"),
> >  ldname);
> >
> > I am wondering why that is the case. A DLL that is loaded by GNU Make is
> not necessarily subject to GPLv2 or GPLv3. GPLvx makes it clear that you
are
> subject to GPLvx if you include portions of the code from the project
under
> license. However, an external DLL that is loaded by GNU Make via dlopen
> does not have to use any code from the code base. Using a published API,
> which would be the function interface has precedent for being excluded
> from license enforcement - the UNIX kernel API is an example that is
purely
> public domain itself, while the individual header files are subject to
licenses.
> 
> The test doesn't check that the library is under GPL, it tests that it's
"GPL-
> compatible", which means it's Free Software.  GNU Make doesn't want to
> load non-free modules.

That is understood. Is this an official GNU Make policy because it is not
specified that way in GPL. Has the GNU Make team modified their copy of the
GPL license because it is not indicated as a modified version?




Re: GPL Interpretation on load [Was: [bug #61594] suggest new $(hash ...) function]

2021-12-01 Thread Eli Zaretskii
> From: 
> Date: Wed, 1 Dec 2021 09:09:55 -0500
> Cc: bug-make@gnu.org, bo...@kolpackov.net
> 
> On December 1, 2021 9:06 AM, Tim Murphy wrote:
> 
> 
> > -load $(XTRA_OUTPUTDIR)/hash$(XTRA_EXT)
> 
> This thread brings up a question. The load function checks for GPL 
> compatibility.
> 
>   /* Assert that the GPL license symbol is defined.  */
>   symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible");
>   if (! symp)
> OS (fatal, flocp,
>  _("Loaded object %s is not declared to be GPL compatible"),
>  ldname);
> 
> I am wondering why that is the case. A DLL that is loaded by GNU Make is not 
> necessarily subject to GPLv2 or GPLv3. GPLvx makes it clear that you are 
> subject to GPLvx if you include portions of the code from the project under 
> license. However, an external DLL that is loaded by GNU Make via dlopen does 
> not have to use any code from the code base. Using a published API, which 
> would be the function interface has precedent for being excluded from license 
> enforcement - the UNIX kernel API is an example that is purely public domain 
> itself, while the individual header files are subject to licenses.

The test doesn't check that the library is under GPL, it tests that
it's "GPL-compatible", which means it's Free Software.  GNU Make
doesn't want to load non-free modules.