Re: Licenses and subterfuge

2004-02-29 Thread Alex Rousskov

On Sat, 28 Feb 2004, Arnoud Engelfriet wrote:

 If there's only one library in existence that implements the API,
 then you _must_ have used that library.

Technically, no. I do not _have to_ use any library to make a
dynamically linked executable. For example, I develop open source
software that links with proprietary modules. Usually, I have no idea
what those modules are. I just add hooks for them. Some hooks are
probably used by a single module only. That does not make my software
a derivative of the module or vice versa (I hope). The only thing we
really share is the interface, which is not copyrightable.

But let's assume that software developers did, in fact, use a viral
library to test their software. That fact should not make the
resulting software (that contains no pieces of the viral library!) a
derivative, IMO.

 Then I cannot see how your program can be anything other than a
 derivative of that library.

Using something does not automatically makes the result a derivative.
For example, benchmark results are not the derivative of the
benchmarking software although they can only be produced by that
software. Most programs are not derived from the software used by Mac
chips, even though many of them can use nothing but the instruction
command set supported by Apple software. Use is not derivation. Only
certain kinds of uses make the software a derivative.

Alex.
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-28 Thread Arnoud Engelfriet
Alex Rousskov wrote:
 On Thu, 26 Feb 2004, Arnoud Engelfriet wrote:
 Our software can be linked with any library supporting Foo
 API. Users report success with FooLib on Linux. Other Foo API
 libraries may be available in your environment. Known compatibility
 problems with Foo libraries are available by searching our bug
 database at ...
 
  Can you really say that seriously if the _only_ implementation
  available is GPL-licensed FooLib? And more importantly, will a
  judge believe you?
 
 IMO, you can say that seriously if your program can accept any
 implementation of a published API. Availability and licensing of
 libraries should be irrelevant.

If there's only one library in existence that implements the API,
then you _must_ have used that library. Then I cannot see how
your program can be anything other than a derivative of that
library.

Arnoud

-- 
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-26 Thread Arnoud Engelfriet
Alex Rousskov wrote:
 Of course, it would be foolish to provoke a law suite by attacking
 viral goals in software documentation. Documentation should focus on
 technical issues. For example, it would be foolish to write:

Absolutely right. Still, it could be problematic if there is only
a GPL-licensed library available to perform the functions you need.
In such a case you may be forced to have a similar library developed
to avoid having to link to such GPL-licensed software.

Arnoud

-- 
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-26 Thread Alex Rousskov

On Thu, 26 Feb 2004, Arnoud Engelfriet wrote:

 Absolutely right. Still, it could be problematic if there is only a
 GPL-licensed library available to perform the functions you need. In
 such a case you may be forced to have a similar library developed to
 avoid having to link to such GPL-licensed software.

I do not see a problem from copyright/licensing point of view, as long
as the resulting binary mix does not need to be distributed (by the
company or its clients). The software in question simply implements
one side of a published interface, which has nothing to do with GPL.
Documentation may say:

  Our software can be linked with any library supporting Foo
  API. Users report success with FooLib on Linux. Other Foo API
  libraries may be available in your environment. Known compatibility
  problems with Foo libraries are available by searching our bug
  database at ...

The only potentially gray area is availability of a published API. If
the only API documentation are viral headers, the company can publish
the interface on their own. In fact, they would have to do something
like that anyway, when developing their own non-viral headers to use
during compilation of the binary they intend to distribute.
Documenting/publishing such interface as an RFC may be a good idea for
some interfaces.

Alex.
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-26 Thread Arnoud Engelfriet
Alex Rousskov wrote:
 On Thu, 26 Feb 2004, Arnoud Engelfriet wrote:
 
  Absolutely right. Still, it could be problematic if there is only a
  GPL-licensed library available to perform the functions you need. In
  such a case you may be forced to have a similar library developed to
  avoid having to link to such GPL-licensed software.
 
 I do not see a problem from copyright/licensing point of view, as long
 as the resulting binary mix does not need to be distributed (by the
 company or its clients). The software in question simply implements
 one side of a published interface, which has nothing to do with GPL.

The issue I see is that your software requires that particular
GPL-licensed library to run. Normally, you would supply your
software together with that library (dynamically linked). Now,
for the sole reason to avoid having to comply with the GPL,
you omit that library. That sounds like a subterfuge.

   Our software can be linked with any library supporting Foo
   API. Users report success with FooLib on Linux. Other Foo API
   libraries may be available in your environment. Known compatibility
   problems with Foo libraries are available by searching our bug
   database at ...

Can you really say that seriously if the _only_ implementation
available is GPL-licensed FooLib? And more importantly, will a
judge believe you? 

My position is, if there's only one library that does that function
available as open source, either you use that and you comply with
that license, or you go and buy some commercial alternative. It's
the only safe way.

 The only potentially gray area is availability of a published API. If
 the only API documentation are viral headers, the company can publish
 the interface on their own. 

No such thing as a viral header because header files are usually
purely functional and so not copyrighted. And even then, does any
code from the header file end up in the compiled binary of your
code? 

Arnoud

-- 
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-26 Thread Alex Rousskov

On Thu, 26 Feb 2004, Arnoud Engelfriet wrote:

 The issue I see is that your software requires that particular
 GPL-licensed library to run. Normally, you would supply your
 software together with that library (dynamically linked). Now, for
 the sole reason to avoid having to comply with the GPL, you omit
 that library. That sounds like a subterfuge.

The software does not require any particular implementation of an API.
The fact that only one implementation is known to software writers
today should be irrelevant from copyright point of view, IMHO.

Our software can be linked with any library supporting Foo
API. Users report success with FooLib on Linux. Other Foo API
libraries may be available in your environment. Known compatibility
problems with Foo libraries are available by searching our bug
database at ...

 Can you really say that seriously if the _only_ implementation
 available is GPL-licensed FooLib? And more importantly, will a
 judge believe you?

IMO, you can say that seriously if your program can accept any
implementation of a published API. Availability and licensing of
libraries should be irrelevant.

 No such thing as a viral header because header files are usually
 purely functional and so not copyrighted. And even then, does any
 code from the header file end up in the compiled binary of your
 code?

This seems to be no longer true (if it ever was). There are entire
libraries written via headers (no .c files or equivalent) and most
headers I look at are copyrighted. So, yes, header code does end up in
binaries and can be viral.

Alex.

--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Licenses and subterfuge

2004-02-25 Thread Chris F Clark
I know this question is a little off-topic for this list, but this
list seems like the best place to get an answer to this question.  I
hope this question is at least tangentially relevant to this list as
it concerns when open-source license come into play and certain forms
of possible subterfuge one might use to avoid them.  I also want to
point out that I'm looking for opinions on this matter and not
specific legal advice--informed legal opinion is, of course, welcome.

Background: certain companies require that their suppliers ship them
non-virally(*) licensed code--e.g. BSD and MIT licenses are ok, GPL
and Sun licenses are not.  A group I work with is attempting to comply
with both the letter and spirit of the above rule and the licenses in
question.  That is we want to ship code that does not infringe on any
open source license.  We also want to ship our client a version which
runs on a typical open source platform (e.g. Linux), but again without
causing our client to open source their code.  In particular, the
client might wish to take sections of our code and include them in a
non-open source project, and we don't want our actions to make that
impossible (even when we are shipping our code under an open source
license).  More importantly, we want to keep the spirit also, and not
take actions which although technically legal violate the intent or
give the appearance of doing so.

(* I don't mean viral in any pejorative sense.  I would use some
synonym such as accretive (a license which grows the open source
software base), except that it is longer to type and viral is the most
commonly used term for such licenses.)

In most of the examples, I will refer to the open source license as
the GPL (as that is the specific license in question in most cases).
However, the same question would apply to any license (and I would
presume that any prospective license writer should consider these
questions reletive to their own license).

Example 1: readline

This is a typical subroutine that is distributed under the GPL (and is
apparently used by the FSF as an example of things that one might
incorporate that would cause ones software to become GPL).

I will take as a starting point that if one writes an application that
uses readline, using the GPL licensed header file, and links the GPL
licensed readline library into ones application, then ones application
is subject to the GPL.

I will also posit that if one writes ones own function called readline
that happens to implement the same interface, but which may or may not
be (completely) functionally equivalent, and one does it in an
appropriate clean-room fashion, so that no GPL code is referenced,
that function can be incoporated into ones code without making the
code GPL.

Gray area that needs clarification: 

Since readline on Linux is shipped as a dynamic library, what if the
application links to the implementation of readline dynamically. In
particular, what if the application goes out of its way and uses its
own prototype for readline (e.g. matching the version the application
author has written and which ships with the application) and invokes
the dynamic linker explicitly (e.g. using dlopen).

Questions: 

If one has provided a version of readline that is not GPL, can one
argue that the intent of the linkage is to access ones own verion of
readline, and thus argue that the application should not be subject to
the GPL?  Is that subterfuge (an attempt to evade the license)?  

What if someone shipped with the application instructions on how to
cause the dynamic linking to link the GPL version of readline?  Does
that make it subterfuge?  Particularly, consider the case where the
GPL version provides more functionality than the authors version and
is arguably preferable.

What if the application failed if no version of readline were
supplied?  That is that some version of readline was necessary to
application or some portion of the application.

What if someone neglected to ship the non-GPL version of readline?
What if that deficiency were later corrected?

Consider these question in terms of our intent to ship a non-viral
version of our software that provides some basic functionality, but
where the functionality can be improved by the user linking our
software with GPL libraries.  

The last questions cover cases where we weren't entirely scrupulous in
the process.  If omitting certain steps is going to be problematic, I
want to inform them so that they don't take shortcuts.

Example 2: C++ functions in string

Recent versions of the C++ standard header files (and presumably the
underlying implementations) have also come under the GPL.  However,
the header files have an specific exemption listed in their source
that allows the header to be included without making the application
GPL.

Would one have to verify the the implementation is distributed under
the LGPL (or some other not-as-viral license)?  What about the fact
that non-GPL versions of the same header 

Re: Licenses and subterfuge

2004-02-25 Thread Ian Lance Taylor
Chris F Clark [EMAIL PROTECTED] writes:

I am not a lawyer.  Moreover, your questions relate to the issue of
when one piece of software is a derivative work of another, which is
not clearly settled.

 If one has provided a version of readline that is not GPL, can one
 argue that the intent of the linkage is to access ones own verion of
 readline, and thus argue that the application should not be subject to
 the GPL?  Is that subterfuge (an attempt to evade the license)?  

I would say not.  There is no GPL code here at all.  In fact, there
are already non-GPL versions of readline, in, e.g., NetBSD, and there
is non-GPL code which uses those versions of readline, and I think
it's pretty clear that those programs are not covered by the GPL.

 What if someone shipped with the application instructions on how to
 cause the dynamic linking to link the GPL version of readline?  Does
 that make it subterfuge?  Particularly, consider the case where the
 GPL version provides more functionality than the authors version and
 is arguably preferable.

A grey area.  I think this is probably OK.  Arguably the resulting
binary which is dynamically linked against readline is covered by the
GPL--that is, that binary may not be distributed without distributing
sources.  But my guess is that if you build and distribute a binary
dynamically linked against your non-GPL readline, and then somebody
swaps in a GPL readline, you are OK.  If you give clear instructions
that people should swap in the GPL readline, then you are probably not
OK.  But if you give instructions that this is possible, then you are
probably OK.  I think.

 What if the application failed if no version of readline were
 supplied?  That is that some version of readline was necessary to
 application or some portion of the application.

That is, you distribute the application, dynamically linked against
readline, but you don't provide a readline library?  And you
distribute it on a platform which provides a GPL readline?  I think
your application is covered by the GPL at that point.

 What if someone neglected to ship the non-GPL version of readline?
 What if that deficiency were later corrected?

Impossible to say, really.

 Consider these question in terms of our intent to ship a non-viral
 version of our software that provides some basic functionality, but
 where the functionality can be improved by the user linking our
 software with GPL libraries.  

Definitely a tricky issue.  Best to avoid it if at all possible.

 Recent versions of the C++ standard header files (and presumably the
 underlying implementations) have also come under the GPL.  However,
 the header files have an specific exemption listed in their source
 that allows the header to be included without making the application
 GPL.
 
 Would one have to verify the the implementation is distributed under
 the LGPL (or some other not-as-viral license)?  

Yes.

 What about the fact
 that non-GPL versions of the same header files (i.e. having the same
 name and describing the same standard conforming functions) and
 underlying implementations are available and shipped on different
 platforms?  Does that somehow make shipping the software on a GPL
 based platform cause the software to be subject to the GPL?

No.

 The existence of the exception tends to imply that that isn't the
 authors intent.  Can carelessness on a GPL software authors part cause
 that worry to become a reality--the old FUD factor, do we have to fear
 this happening?  

Yes.

 It is clear the some license authors do intend their licenses to work
 that way, that they want to restrict all applications in their
 language to be open source.  How does one step carefully in such cases
 (where the intention of the author may not be clear)?  Especially when
 not only ones missteps, but those of the library authors may impact
 the software?

When the case is unclear, check with the copyright owner of the
software and ask them to clarify.

 The same question applies to industry standard header files, of
 which pthreads is an example.  Again, there exist non-GPL versions of
 such libraries.  However, if one ships ones application on a platform
 that provides the library and the platform uses a GPL implementation,
 does that makes ones code subject to the GPL?

I think the pthreads is arguably a component of the operating system,
particularly since it is standardized by POSIX, and hence does not
affect the GPL status of an application which dynamically links
against a pthread library.

Ian
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3


Re: Licenses and subterfuge

2004-02-25 Thread Alex Rousskov
Chris,

Let me offer a simpler non-lawyer and non-legal advice.  I
will try to state it so that there are no (or fewer) gray areas :-).
Please interpret the three clauses below as a whole.

0) Interface (a published API) is not copyrightable and,
   hence, cannot be a viral component. However, header files
   or any other software component implementing an interface
   is copyrightable and hence, may be viral.

1) Your software that does not use viral components is
   not viral unless you use a viral license yourself.

2) If your client takes your non-viral software, links or
   otherwise mixes it with viral software, and distributes
   the result, then your client may have to open their sources.
   This has nothing to do with your software, only with
   clients' derivative work (the mix) and only when the mix
   is distributed with viral components.

Thus:

Using any interface, including an interface that is supported by some
GPL library (e.g., readline) or even an interface that is supported
only by a GPL library, will not make your software viral.

If static linking is the only option, do not use any interfaces that
the client will not be able to find non-viral libraries for. Warn the
client not to use any viral libraries when building static software
binaries for distribution.

If binaries are linked dynamically by end users, then your client does
not distribute viral libraries and, hence, does not have to open
sources. For example, you can use interfaces that have only viral
implementations. However, this assumes that end-users will not want to
distribute the _binaries_ further (they would not be able to).

If you like the interface, but your client cannot find a non-viral
library for it, you can write your own non-viral library for that
interface and give that to the client (for dynamic or static linking).

For example, it is absolutely safe to use C++ STL API for your code.
STL has nothing to do with GPL or FSF. However, your client should not
staticly link with viral implementations of STL before distributing
binaries. AFAIK, GCC implementation of STL is not viral.

Note that the above rules imply that what you say in documentation is
irrelevant. For example, if you write software that uses published
readline interface and instruct all your users to dynamically link
with GPL readline (for whatever reason), _your_ software is not
subject to GPL. Only the resulting mix is. Again, your software would
not know anything about readline; it will only know about some
published interface that readline implements.

Whether the linking is dynamic or static is relevant only as far as
binary distribution is concerned. The only question is whether
_distributed_ software has viral components. If your client staticly
builds and uses a viral component, they may have to open sources. If
your client distribution does not contain any viral components, then
the licenses for those unused viral components are irrelevant for your
client (but relevant for end users).

Whether non-viral libraries exist or whether viral libraries are used
by your client's clients is irrelevant for the entity distributing
software without viral components.


HTH, IANAL, TINLA,

Alex.

P.S. The above is not to be interpreted as a message against or for
 viral libraries and other attempts to force humankind into
 happiness.

On Wed, 25 Feb 2004, Ian Lance Taylor wrote:

 Chris F Clark [EMAIL PROTECTED] writes:

 I am not a lawyer.  Moreover, your questions relate to the issue of
 when one piece of software is a derivative work of another, which is
 not clearly settled.

  If one has provided a version of readline that is not GPL, can one
  argue that the intent of the linkage is to access ones own verion of
  readline, and thus argue that the application should not be subject to
  the GPL?  Is that subterfuge (an attempt to evade the license)?

 I would say not.  There is no GPL code here at all.  In fact, there
 are already non-GPL versions of readline, in, e.g., NetBSD, and there
 is non-GPL code which uses those versions of readline, and I think
 it's pretty clear that those programs are not covered by the GPL.

  What if someone shipped with the application instructions on how to
  cause the dynamic linking to link the GPL version of readline?  Does
  that make it subterfuge?  Particularly, consider the case where the
  GPL version provides more functionality than the authors version and
  is arguably preferable.

 A grey area.  I think this is probably OK.  Arguably the resulting
 binary which is dynamically linked against readline is covered by the
 GPL--that is, that binary may not be distributed without distributing
 sources.  But my guess is that if you build and distribute a binary
 dynamically linked against your non-GPL readline, and then somebody
 swaps in a GPL readline, you are OK.  If you give clear instructions
 that 

Re: Licenses and subterfuge

2004-02-25 Thread jcowan
Alex Rousskov scripsit:

 Note that the above rules imply that what you say in documentation is
 irrelevant. For example, if you write software that uses published
 readline interface and instruct all your users to dynamically link
 with GPL readline (for whatever reason), _your_ software is not
 subject to GPL. Only the resulting mix is. 

However, a judge might decide that an instruction to the customer to
do your own linking was a transparent attempt to bypass the GPL, and
decide to treat it as a violation.  Saying I can't do this and send
you the result, but I can tell you how to do it instead is a fishy
thing to do.  IANAL, TINLA, but I'd say Don't do that.

-- 
Business before pleasure, if not too bloomering long before.
--Nicholas van Rijn
John Cowan [EMAIL PROTECTED]
http://www.ccil.org/~cowan  http://www.reutershealth.com
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3