The difference between linkage by function call and linkage by inlining
is that inlining involves copying of a portion of the work linked to,
while linkage by function call most certainly does not.

Put another way, inlining is both linkage at the level of SOURCE CODE,
as opposed to linkage in binary (which is what function call linkage
is), and it requires copying of source codee into the work linking.

By the terms of the GPL, then, linkage by inlining makes the work doing
the inlining a "work based on the Program" and thus it becomes GPL'ed as
a whole (Linus' preamble to GPL V2, which is the only change to GPL V2,
doesn't affect this).  By contrast, work linking by function does not
require access to any portion of the source code of the work linked to,
nor does it require copying of that work in any way, shape, or form.

The three actions that cause application of the GPL are copying,
distribution, and modification of a prior GPL work in whole or part.
The GPL leaves the definition of copying to copyright law, and a
reasonable interpretation of that law does include inlining (though
I can't speak to US case law without doing some research).

An OS subsystem like LiS doesn't itself do any distribution of the
kernel with which it interacts, nor does it modify that kernel, so it
is exempt from GPL'ing on those points, and it is only copying which is
of concern.  And on the issue of copying, which the GPL leaves to
copyright law to interpret, it is indeed reasonable to expect that
a court will see these two mechanisms differently.

-John

Brian F. G. Bidulock wrote:
Dave,

This statement from the link you gave is incorrect:

  "Thirdly, if a STREAMS driver writer makes his/her driver loadable as a
   separate module, not linked with LiS, and if he/she uses only LiS
   constructs without utilizing any inline code from any kernel header
   files then that driver is completely free of any possible reach of the
   full GPL of the kernel."

It makes no difference whether the code is called via LiS or inlined.

What makes you think that linkage by function call rather than inlining
affords any additional protection whatsoever?

Either the module writer had the right to inline it (under Linus GPL) or
LiS did not have the right to wrapper it (under pure GPL).

So, the STREAMS module writer is able to inline all of the code that LiS
inlines (except fattach).  LiS is just currently requiring that STREAMS
modules run slower than necessary, and to no purpose.

It might be time to start that Linux STREAMS Lite (LSL) branch that does
not include overheads for ports (that do not openly exist) nor include
performance reductions without purpose...

Anyone interested?

--brian


On Thu, 07 Aug 2003, Dave Grothe wrote:



Here is a summary of these issues published some time ago. It includes some opinion from our attorneys.
http://www.gcom.com/home/support/whitepapers/linux-gnu-license.html


The only addition at this point in time might be that the fattach code of LiS uses some exported kernel functions in the VFS section of the kernel which was written by Al Viro. If someone wants to argue that the simple act of using those functions imports the viral nature of the GPL into LiS then LiS can be made compliant by simply de-implementing the fattach functionality.

For the sake of protecting Gcom code (in some cases written a decade prior to the onset of the Linux project) from any arguable claim of GPL infringement I am prepared, if necessary, to fork a version of LiS with all fattach functionality removed, leaving code that only uses parts of the kernel that fall under the Linux LGPL.

-- Dave

At 12:52 AM 8/7/2003 Thursday, Brian F. G. Bidulock wrote:

Dave,

On Wed, 06 Aug 2003, Dave Grothe wrote:


Because LiS is LGPL, anyone can link proprietary object modules with
it. Those modules do not have to be STREAMS drivers. They can be modules
that accomplish a port to some other operating system environment. No

LGPL


license violation there.

The module linking with LiS does not violate LiS's LGPL, it is LiS that violates the Linux kernel GPL for code that is pure GPL. For kernel code that is LinusGPL, the module had the right to use in the first place, and LiS did nothing, except, in this case, make the module run slower because it did not permit the module to inline functions that can be inlined in proprietary code under LinusGPL.


LiS is intentionally structured in such a way as to make such things
possible, and even halfway straightforward.

In that case, it appears that LiS might in fact be in violation of licensing of the Linux kernel to which it links. If there are any pure GPL parts of the kernel that are used by it, it is necessary that LiS be GPL not LGPL. If there are no pure GPL parts (just LinusGPL parts) then LiS offers no more capability than the Linux kernel itself.

I think we need to straighten this out.  Logically LiS cannot afford the
protection claimed.  GPL software cannot be made LGPL software by
wrapping the functions.  If that were the case, all GPL software would
be LGPL software using simple wrappers (even macros) and compiler flags
(to suppress inline functions).  We can take this discussion up with
someone from the FSF and on the lkml if the above is not obvious and
apparent.

--brian


-- Dave

At 12:01 AM 8/6/2003 Wednesday, Brian F. G. Bidulock wrote:

Dave,

I should hope nobody else has a proprietary port.  Would that not be a
violation of the LGPL license (and the GPL licenses of some components)?

This begs a question: a significant contribution made under LGPL should
not be propagated to your proprietary QNX port, anyway.  The reason
being that to do so would break the licensing terms under which the
contribution was offered.

Another thought is to start a branch dividian LiS, rip the "portable"
out proceed from there.

Other thoughts?

--brian


On Tue, 05 Aug 2003, Dave Grothe wrote:



At 12:03 AM 8/5/2003 Tuesday, Brian F. G. Bidulock wrote:



Also, I am confused with your comments regarding Linux kernel-isms.
Does LiS run on anything other than Linux?

I have a proprietary port to QNX. There may be others that I don't

know


about. I want LiS to be able to serve as a base for *portable*

STREAMS as


well as *Linux* STREAMS.

Also, any changes should be tested by doing a build in user mode. The

user


mode code should always be the debug version since it is used for

testing


STREAMS algorithms in user space.

Also, see my response to Matt concerning licensing considerations.

-- Dave


_______________________________________________ Linux-streams mailing list [EMAIL PROTECTED] http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

-- Brian F. G. Bidulock ¦ The reasonable man adapts himself to the ¦ [EMAIL PROTECTED] ¦ world; the unreasonable one persists in ¦ http://www.openss7.org/ ¦ trying to adapt the world to himself. ¦ ¦ Therefore all progress depends on the ¦ ¦ unreasonable man. -- George Bernard Shaw ¦

_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

-- Brian F. G. Bidulock ¦ The reasonable man adapts himself to the ¦ [EMAIL PROTECTED] ¦ world; the unreasonable one persists in ¦ http://www.openss7.org/ ¦ trying to adapt the world to himself. ¦ ¦ Therefore all progress depends on the ¦ ¦ unreasonable man. -- George Bernard Shaw ¦

_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams


_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams




_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

Reply via email to