Christopher Vance wrote:

On Thu, Dec 11, 2003 at 11:46:47PM +1100, Benno wrote:

The part that particularly annoys me at the moment is the definition
of derivative work. So if anyone feels like clarifying just jump right
in. Its not a derivative work if you fork/exec something to interface with it, but if you dynamically link against it, it is.
This seems so, well, arbitrary, and not pertaining to any logic that
I can understand. <sigh>. Defining a derivative work in terms of address space/process boundaries just seems wrong to me.


Some of us are paid to write commercial software.


Me too.


One of our products, including kernel patches and kernel modules, was first released on Compaq Tru64, and is also sold on Solaris. A related product is even sold on Microsoft. But when we port our Unix code to Linux, some people seem to think it gets to be a derived work of the OS which isn't a derived work of Unix.

One difference here is that MS and other OSes are licensed on a 'use' basis. They don't care how integrated you stuff is, so long as you or your customer pay their OS license.

The 'payment' required under the GPL license is the contribution of more GPL code, but at the same time all use of GPL works is totally unrestricted. Unlike the proprietary OSes, or middleware, the original developers gain nothing from sales of operating systems or hardware or whatever. I think this is a good reason for GPL contributors to be quite harsh on enforcing the terms under which they actually do receive 'payment'.

As a perhaps silly example, say some guys write a very good media player which links against the OS provided multimedia components, Microsoft says 'Great, another good app for our platform, that means more sales'. If someone writes a very good media player, linked against a GPL'd OS provided mutimedia component, the GPL developers should have a right to say "Great, another good app for our platform, that means more GPL code is available to us, and everyone else".

(For those who know the company or the product, this is new code,
written from scratch, with no sources derived from earlier products we
sold on other brand-name Unixes.)

I have no idea what it is btw.

The argument I've seen quoted about inlines in kernel headers
sprinkling generated GPL code through one's object files seems
spurious to me, being a coincidental consequence of choosing a
particular compiler.  (Some people use other compilers for free OS
kernels, you know.)  The C standard requires the behaviour of inlines
to be equivalent (modulo performance) to putting the generated code
elsewhere as if it weren't inline.

For a standard library, unless it was LGPL, it wouldn't matter where the inlines ended up, your code must also be GPL. I get the impression that binary kernel modules have been pretty much defined as 'runtime use' of the kernel, as an exception to the rule. Of course, once you start including GPL object code in your module, it's no longer just 'use', hence the inline concerns.

Using POSIX or C headers doesn't make your code a derived work of the
POSIX or C standards, so I fail to see why this should be different
for Linux.

Because Linux developers *want* it to be different, and they have a right to say what is allowed or not.


Consider this scenario (as far as I know, this is entirely
fictional): somebody writes some really good documentation for certain
kernel interfaces of Linux (unlikely given the general standard of
Linux documentation); somebody else writes some headers defining these
interfaces, using only the document just generated.  Neither the
documentation nor these headers would be a derived work of the
original kernel headers, and the new headers are not a derived work of
the documentation, at least in terms of copyright law.  The document
and new kernel headers would therefore have whatever license the
authors chose to apply.  To avoid issues of "contamination", one would
probably arrange for the document writer not to participate in the
writing of the headers, and vice versa.  If the license chosen for the
new headers was not the GPL, somebody writing a Linux kernel module
against these new headers would have used no GPL code, and therefore
the module would not be GPL unless its author chose so.

If I got someone to write a very detailed summary of a novel, and then 'rewrote' it based on the summary, it would still be plagiarism, and a copywrite violation if I sold it.



Given the argument that one can get an equivalent result without using GPL headers, I fail to see how the fact that the headers are GPL would in itself contaminate the resulting code. (Yes, I know that linking GPL code into the same kernel module would contaminate the resulting code anyway, but if one can avoid such linking, the issue is not so clear.)

Headers are irrelevant, not every language uses them. It's the fact that you are linking at all, not the method.

Before you get upset at me, I would probably agree that while the
previous two paragraphs may indicate a legal path, this is probably
contrary to Linus's expressed intention.  (Not everything legal is
moral; not everything moral is legal.  I prefer to satisfy both where
possible.)

I don't think anything like that is legal. Try this scenario:

I have a license for MS SQL Server, and a 5 user license for same. I write a custom network server which takes user requests for data, in Swedish, translates these requests into ANSI SQL, retrieves data from MSSQL, retranslates it into Swedish, and sends it off to the user.

Do you think MS will be happy if I connect 250 users to my custom server without buying more licenses? No, I'm only trying to weasel out of my agreement with them.

In the BSD world, we have freedom to port our product in without
somebody's license attempting to restrict our use of our own original
code.  In my more exasperated moments (and speaking personally) I find
the GPL's restriction of rights to be just as offensive as SCO's
attempts to control IBM's distribution of stuff they (IBM) wrote.  I
do use GPL stuff, and comply with the license, but I wouldn't
particularly want to spend any time on fixing it.

I reckon that if you think long term, more people have more rights under the GPL. What rights do you have to the BSD code that MS modified for NT?

Just as some of the more doctrinaire GPL anti-BSD people rewrite code
from scratch rather than contributing to existing BSD code, some of
the more doctrinaire BSD anti-GPL people do the same to avoid GPL
code, just so they can have their stuff under a freer license.  It's
all a bit silly, eh?

Not quite as silly as if everyone rewrote everything every single time, as is often done with closed source.

Back to the practical: for our Linux product, we are pushing code from
kernel to user space, modifying the gross structure of the whole thing
(changing from event driven to polling).  Yes, we are GPLing what's
left in the Linux kernel, but only after the significant IP is moved
to somewhere safe.

Are you 100% convinced that this is totally unlike weaselling out of the GPL license?
It seems a little that way to me.


Just because we're doing this, doesn't mean we think it was always the
best way to do it - it could be we're just sick of arguing the point,
and have chosen to comply not just with the obvious and direct
interpretation of the GPL but with some of the less certain and more
arguable parts of the thing.

Has anyone there considered making the Linux version GPL? That would really be complying with the spirit of the license.

Oh yes, my personal choice is to run *BSD at home.  Trying to get
Fedora working at home recently (specifically for Planet CCRMA)
reminded me why it's only at work I run on Linux.

Horses for courses =)

Thanks for discussing this stuff.


Felix







-- SLUG - Sydney Linux User's Group - http://slug.org.au/ More Info: http://lists.slug.org.au/listinfo/slug

Reply via email to