Dispelling BSD License Misconceptions (fwd)
Chuck Swiger
chuck at codefab.com
Thu Jan 18 02:05:42 UTC 2007
On Jan 17, 2007, at 3:45 PM, Matthew Flaschen wrote:
>> You're welcome to decide
>> for yourself that you don't want to use proprietary software,
>> Matthew,
>> but you seem curiously unwilling to acknowledge that people using
>> BSD-licensed software to write proprietary software are also users of
>> BSD software.
>
> They are users (sometimes in the sense of both end users and
> redistributors). However, my point was end users of proprietary
> BSD-based software generally have no way to extract the free BSD code.
> Thus, they can no longer redistribute the BSD code in that version.
It's certainly common for people to statically link in BSD code into
a proprietary program in a fashion that makes it difficult to extract
or update.
On the other hand, it's not uncommon for even highly proprietary
software (I'm thinking about things like Windows-based games, which
tend to be copy-protected & come with obnoxious forms of DRM like
Starforce, SecuROM, SafeDisc, etc) to have a zlib.dll or similar,
where you actually can swap that out for a newer version of the ZLib
compression software you build yourself.
>>> Thus, for example, much of OS X is under a BSD license, but
>>> difficult to
>>> extract out the BSD code and use it separately. There's also
>>> usually no
>>> reason, since it's available untainted straight from the source.
>>
>> It's not hard to get the BSD-licensed portions of OS X from Apple:
>>
>> http://www.apple.com/opensource/
>>
>> ...and I know that a number of changes and improvements Apple have
>> made
>> their way back into the BSDs, to the Apache projects, to the ISC's
>> software (BIND, DHCP, etc), and elsewhere.
>
> Okay, that was probably unfair, and a bad example. I don't think
> Apple
> has separately released all the BSD code they're using (but I may be
> wrong).
Perhaps you might ask Ernie Prabhakar; I cannot answer that question
myself.
> However, Microsoft for instance has been less cooperative
> still. Early versions of Microsoft used the BSD stack extensively
> (they
> may still, though I'm not sure). Even though that code is under
> the BSD
> license, it is impossible (I think) to extract and redistribute the
> BSD
> code MS uses. Thus, the BSD license for the TCP stack doesn't affect
> endusers of Windows NT; they can't become redistributors (of
> WinNT's TCP
> code).
Microsoft's licensing actually lists a number of BSD contributors who
have worked on the TCP/IP stack and firewall capabilities, and this
is still true of XP/2003/Vista, so it's reasonable to assume that
there's still a fair amount of BSD-derived code lurking in their
network stack.
It would be difficult to extract that code, agreed, although it is
quite possible to replace the CLI binaries for things like ping, ftp,
telnet, and so forth with alternatives. That's part of what Cygwin
does.
>>> I misread "as part of a compilation" as the vague and totally
>>> different
>>> "when compiled together". Excuse me for this foolish mistake.
>>
>> I see-- very well.
>
> My apology sounds sarcastic now. It wasn't meant to be.
A legitimate confusion about what someone meant happens sometimes
even with the best of intent on both sides; no problem.
>>> My understanding (I admittedly did not originally interpret the
>>> license
>>> this way) is that BSD doesn't apply for even derivative works,
>>> only for
>>> the original code.
>>
>> I would not agree with that position at all.
>
> This is certainly an important issue, and I would appreciate hearing
> from others or being pointed to some resources to clarify. When I
> first
> read BSD, I interpreted it your way, but have since been steered to
> the
> view I gave above. I should clarify that I don't think it applies to
> *new code* in the derivative work.
Ah, that's a critical distinction. I would now agree with your
statement with regard to *new code* added to BSD-licensed software;
that does not need to be under the BSDL.
>> The BSD license is a simple, permissive license which allows you
>> to add
>> your own software or make changes, and license the derivative work
>> formed thereby under *both* the BSD license and your proprietary
>> license--
>
> So this means that for instance the WinNT TCP stack is all under
> BSD (or
> at least the parts derived from BSD code)?
The unmodified portions of the Windows NT TCP stack which came from
BSD were and are under the BSD license. The combination of that
original software and Microsoft's changes are distributed under
Microsoft's proprietary EULA, but that EULA still lists the terms of
the original BSD license, including some attribution requirements in
the case of the "old" form of the BSDL.
Search most of the way down for "Acknowledgements" in:
http://support.microsoft.com/kb/306819
> How is this different from the GPL, which also allows new code (in
> a distributed derivative work)
> to be dual licensed under the GPL and a proprietary license? Is the
> only difference source availability?
That's an interesting question. The main differences I see are that
the GPL requires source code availability and places requirements
upon the distribution & licensing of all subsequent derivative works.
>>> This is not a question of whether you can change the terms of
>>> existing
>>> code. It is a question of the terms for derivative works, or the
>>> question of copyleft. Critically, the BSD and GPL give different
>>> answers to this answer. The BSD license allows derivative works
>>> to have
>>> any license (as long as the BSD is preserved for the original code).
>>
>> That's right.
>
> But we disagree on whether new code in derivative works must also be
> under BSD. I think it need not.
We're actually in agreement here; see above. :-)
[ ... ]
>>> Seems to you. It depends on whether shared library linking
>>> creates a
>>> derivative work. This is a matter of opinion and interpretation
>>> thus
>>> far.
>>
>> I am not aware of any court decision which has indicated that dynamic
>> linking produces a derivative work.
>
> I'm not well versed in case law; you're probably right. However, I
> don't think there has been a decision the other way either. In any
> case, many (including some experts) do assert this.
I wonder if you might name these experts and point to their reasoning
for closer evaluation?
For what it's worth, I've served as an expert witness in a software
copyright infringement case [1] and have performed the "abstraction-
filtration-comparison" testing to identify copyrightable program code
required by the Computer Associates v. Altai decision. This doesn't
make me even slightly qualified to hold or provide legal opinions,
BTW, but the Honorable Richard Conway Casey, U.S.D.J. was willing to
accept my opinions with regard to computer software in his court.
YMMV. :-)
>>>> which will dynamically link libreadline.so (if available), or run
>>>> without it, if libreadline.so is not available. Both Perl and
>>>> Python do this,
>>>> for example. Perl is dual-licensed under the GPL, but Python is
>>>> not-- nor does it
>>>> need to be.
>>>
>>> Again, this still may create a derivative work, since program (or
>>> the
>>> part that can use readline) is written to so tightly depend on
>>> readline.
>>
>> Please re-read what I said, especially the part "or run without it".
>
> That's why I said "the part that can use readline)". This code may
> be a
> derivative work of readline, which would mean the whole program was.
Well, that's simply not how the analysis for copyright infringement
works.
The filtration test requires one to analyze the program modules via a
flowchart, and decide whether each distinct module or section "shows
only an idea" (if yes, the material is not copyrightable, but might
be patentable), or is an expression of an idea. If the latter, the
analysis requires consideration of whether the expression is (a)
dictated by efficiency, (b) dictated by external factors
(specifically interfaces, APIs), or (c) whether the expression is
taken from the public domain. Unless the answer to (a)-(c) are all
no, and it does not represent a "protected combination", and it
constitutes "enough copying to be a wrongful taking", it is
considered "lawful copying" and not "copyright infringement".
Notice (b) & (c) in particular; publicly published APIs generally
cannot qualify or be used as grounds for software copyright
infringement... [2] ( IANAL, TINLA. )
>> If your position is correct, would you care to explain how Cygwin
>> redistributes GPL-licensed software compiled for Windows without
>> running
>> afoul of the GPL-immiscibility of the Microsoft EULAs?
>
> I think the EULAs allow derivatives to be distributed under any terms,
> as long as the DLLs themselves are not distributed.
Absolutely not; this isn't a matter where you have to guess, go to:
http://www.microsoft.com/about/legal/useterms/default.aspx
...and choose your favorite version of Visual Studio. One version of
the EULA states:
"2.4 Redistributable Code-Visual C++: Microsoft Foundation Classes
(MFC), Active Template Libraries (ATL), and C runtimes (CRTs). If
this EULA accompanies Visual C++, then in addition to the rights
granted in Section 1, Microsoft grants you a license to use and
modify the source code version of those portions of the Software that
are identified as MFC, ATL, or CRTs (collectively, the "VC
Redistributables"), for the sole purposes of designing, developing,
and testing your software product(s). Provided you comply with
Section 3.1..."
...and section 3.1(b) says:
"3.1 [ ... ]
(b) If you use the Redistributables, then in addition to your
compliance with the applicable distribution requirements described
for the Redistributables, the following also applies. Your license
rights to the Redistributables are conditioned upon your not (i)
creating derivative works of the Redistributables in any manner that
would cause the Redistributables in whole or in part to become
subject to any of the terms of an Excluded License; or (ii)
distributing the Redistributables (or derivative works thereof) in
any manner that would cause the Redistributables to become subject to
any of the terms of an Excluded License. An "Excluded License" is any
license that requires as a condition of use, modification and/or
distribution of software subject to the Excluded License, that such
software or other software combined and/or distributed with such
software be (x) disclosed or distributed in source code form; (y)
licensed for the purpose of making derivative works; or (z)
redistributable at no charge."
You can't mix this EULA with the GPL under any circumstances,
including the exception mentioned in GPL #3.
>> Is every program that runs under Windows a derivative of Microsoft's
>> software? If the same exact program source code also runs on
>> MacOS X,
>> or Linux, or FreeBSD, does this same program somehow become a
>> derivative
>> work of MacOS X, Linux, FreeBSD, etc-- all at the same time? Such a
>> position seems absurd....
>
> If the library is so simple that the API is shared among all these
> systems, it would probably not result in a derivative work. Of
> course,
> this is a gray area, and we again must await legal decisions.
It doesn't have to be a library, simple or otherwise: any program
written against only the ANSI-C/POSIX 1003.x APIs is portable to a
very wide of systems. Such programs are not derivative works of any
specific operating system.
--
-Chuck
[1]: UNITED STATES DISTRICT COURT/SOUTHERN DISTRICT OF NEW YORK/Civil
Action No.: 02 CV 354x (RCC)
[2]: The exact text of the decision reads:
"Professor Nimmer points out that "in many instances it is virtually
impossible to write a program to perform particular functions in a
specific computing environment without employing standard
techniques." 3 Nimmer s 13.03[F][3], at 13-65. This is a result of
the fact that a programmer's freedom of design choice is often
circumscribed by extrinsic considerations such as (1) the mechanical
specifications of the computer on which a particular program is
intended to run; (2) compatibility requirements of other programs
with which a program is designed to operate in conjunction; (3)
computer manufacturers' design standards; (4) demands of the industry
being serviced; and (5) widely accepted programming practices within
the computer industry. Id. at 13-66-71."
More information about the License-discuss
mailing list