Subject: cygwin licensing [was: [re: tar and gzip]]
From: Greg Freemyer <[email-masked]>
To: Chris January <[email-masked]>, BB <[email-masked]>, "[email-masked]" <[email-masked]>
Date: Fri, 28 Mar 2003 11:18:17 -0500

Good write-up.

Is any portion of cygwin covered by the LGPL instead of the GPL?

http://www.gnu.org/copyleft/lesser.html

The LGPL explicitly allows proprietary software to be built on top of opensource libraries.

TIA
Greg
-- 
Greg Freemyer

 >>  > > Hi all!
 >>  > >
 >>  > > I wrote a small script in Python, but it requires two programs to run
 >>  > > correctly: tar.exe and gzip.exe. Both are in CygWin package.
 >>  > And that's my
 >>  > > question: can I bundle both programs and cygwin1.dll with my script?
 >>  > Script
 >>  > > is free, but the program that the script comes with is not.
 >>  > >
 >>  > > --
 >>  > > Krzysiek 'Nelchael' Pawlik | C/C++, PHP, OpenGL, WinAPI
 >>  > > [email-masked]  | Network Administrator - BAFH
 >>  > > http://www.ps.nq.pl/pcfaq/ | http://www.ps.nq.pl/nelchael/
 >>  > >
 >>  > These are just my thoughts and I'm not a lawyer.
 >>  >
 >>  > It doesn't sound like your proprietary program is derived from or based
 >>  on
 >>  > any Cygwin source code.  Does it execute the Python script which
 >>  executes
 >>  > tar.exe?  If it does, I don't think even that would put it under the
 >>  GPL.
 >>  > The GPL states that the "act of running the Program is not restricted".
 >>  > Your program can execute Cygwin binaries without it becoming GPL
 >>  software.
 >>  >
 >>  > If you link to Cygwin source code, then your program would be a
 >>  derivative
 >>  > work under the GPL.  However, I believe you could also link to another
 >>  > proprietary third party library without providing it's source code.  For
 >>  > instance, you could link to a Microsoft library without being required
 >>  to
 >>  > provide Microsoft source code.

 >>  This is not true. It is ok to link with certain Microsoft DLLs because the
 >>  GPL makes the following exception:
 >>  However, as a special exception, the source code distributed need not
 >>  include anything that is normally distributed (in either source or
 >>  binary form) with the major components (compiler, kernel, and so on)
 >>  of
 >>  the operating system on which the executable runs, unless that
 >>  component itself accompanies the executable.
 >>  However this exception does not apply to other DLLs, only those considered
 >>  part of the operating system.

 >>  >
 >>  > Going one step further, you could put your proprietary code into a
 >>  > standalone DLL built using Microsoft tools.  You could market the DLL as
 >>  a
 >>  > separate product.  The DLL would have no dependencies on any Cygwin
 >>  source
 >>  > or binary.  Your Cygwin based application could us it just like any
 >>  other
 >>  > third party library without providing source code for the DLL.  I
 >>  > don't see
 >>  > GPL language that would prevent this.

 >>  >From the GPL FAQ
 >>  (http://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL):

 >>  You have a GPL'ed program that I'd like to link with my code to build a
 >>  proprietary program. Does the fact that I link with your program mean I
 >>  have
 >>  to GPL my program?
 >>  Yes.

 >>  and:

 >>  What is the difference between "mere aggregation" and "combining two
 >>  modules
 >>  into one program"?
 >>  Mere aggregation of two programs means putting them side by side on
 >>  the
 >>  same CD-ROM or hard disk. We use this term in the case where they are
 >>  separate programs, not parts of a single program. In this case, if one of
 >>  the programs is covered by the GPL, it has no effect on the other program.

 >>  Combining two modules means connecting them together so that they form
 >>  a
 >>  single larger program. If either part is covered by the GPL, the whole
 >>  combination must also be released under the GPL--if you can't, or won't,
 >>  do
 >>  that, you may not combine them.

 >>  What constitutes combining two parts into one program? This is a legal
 >>  question, which ultimately judges will decide. We believe that a proper
 >>  criterion depends both on the mechanism of communication (exec, pipes,
 >>  rpc,
 >>  function calls within a shared address space, etc.) and the semantics of
 >>  the
 >>  communication (what kinds of information are interchanged).

 >>  If the modules are included in the same executable file, they are
 >>  definitely combined in one program. *** -----> If modules are designed to
 >>  run linked together in a shared address space, that almost surely means
 >>  combining them into one program. <----- ***

 >>  By contrast, pipes, sockets and command-line arguments are
 >>  communication
 >>  mechanisms normally used between two separate programs. So when they are
 >>  used for communication, the modules normally are separate programs. But if
 >>  the semantics of the communication are intimate enough, exchanging complex
 >>  internal data structures, that too could be a basis to consider the two
 >>  parts as combined into a larger program.

 >>  and:

 >>  I'd like to incorporate GPL-covered software in my proprietary system. Can
 >>  I
 >>  do this?
 >>  You cannot incorporate GPL-covered software in a proprietary system.
 >>  The
 >>  goal of the GPL is to grant everyone the freedom to copy, redistribute,
 >>  understand, and modify a program. If you could incorporate GPL-covered
 >>  software into a non-free system, it would have the effect of making the
 >>  GPL-covered software non-free too.

 >>  A system incorporating a GPL-covered program is an extended version of
 >>  that program. The GPL says that any extended version of the program must
 >>  be
 >>  released under the GPL if it is released at all. This is for two reasons:
 >>  to
 >>  make sure that users who get the software get the freedom they should
 >>  have,
 >>  and to encourage people to give back improvements that they make.

 >>  However, in many cases you can distribute the GPL-covered software
 >>  alongside your proprietary system. To do this validly, you must make sure
 >>  that the free and non-free programs communicate at arms length, that they
 >>  are not combined in a way that would make them effectively a single
 >>  program.

 >>  The difference between this and "incorporating" the GPL-covered
 >>  software
 >>  is partly a matter of substance and partly form. The substantive part is
 >>  this: if the two programs are combined so that they become effectively two
 >>  parts of one program, then you can't treat them as two separate programs.
 >>  So
 >>  the GPL has to cover the whole thing.

 >>  If the two programs remain well separated, like the compiler and the
 >>  kernel, or like an editor and a shell, then you can treat them as two
 >>  separate programs--but you have to do it properly. The issue is simply one
 >>  of form: how you describe what you are doing. Why do we care about this?
 >>  Because we want to make sure the users clearly understand the free status
 >>  of
 >>  the GPL-covered software in the collection.

 >>  If people were to distribute GPL-covered software calling it "part of"
 >>  a
 >>  system that users know is partly proprietary, users might be uncertain of
 >>  their rights regarding the GPL-covered software. But if they know that
 >>  what
 >>  they have received is a free program plus another program, side by side,
 >>  their rights will be clear.

 >>  and:

 >>  I'd like to modify GPL-covered programs and link them with the portability
 >>  libraries from Money Guzzler Inc. I cannot distribute the source code for
 >>  these libraries, so any user who wanted to change these versions would
 >>  have
 >>  to obtained those libraries separately. Why doesn't the GPL permit this?
 >>  There are two reasons for this.

 >>  First, a general one. If we permitted company A to make a proprietary
 >>  file, and company B to distribute GPL-covered software linked with that
 >>  file, the effect would be to make a hole in the GPL big enough to drive a
 >>  truck through. This would be carte blanche for withholding the source code
 >>  for all sorts of modifications and extensions to GPL-covered software.

 >>  Giving all users access to the source code is one of our main goals,
 >>  so
 >>  this consequence is definitely something we want to avoid.

 >>  More concretely, the versions of the programs linked with the Money
 >>  Guzzler libraries would not really be free software as we understand the
 >>  term--they would not come with full source code that enables users to
 >>  change
 >>  and recompile the program.

 >>  > According to the GPL, you can "aggregate" your proprietary program with
 >>  a
 >>  > GPL'd program on a CD or disk without it being brought under the GPL.
 >>  > Therefore, delivering them together does not automatically make
 >>  > your program
 >>  > GPL software.  I think you only need to satisfy the GPL requirements
 >>  only
 >>  > for the portions of Cygwin delivered by you in binary form (tar.exe,
 >>  > gzip.exe, cygwin.dll).

 >>  This is correct.

 >>  >
 >>  > If you deliver your application along with tar.exe, gzip.exe and
 >>  > cygwin.dll
 >>  > on a CD, you could include the source code for the Cygwin
 >>  > components on the
 >>  > CD.  They don't need to be installed by anyone.  Or you could
 >>  > follow the GPL
 >>  > and "3b) Accompany it with a written offer, valid for at least
 >>  > three years,
 >>  > to give any third party, for a charge no more than your cost of
 >>  physically
 >>  > performing source distribution, a complete machine-readable copy of the
 >>  > corresponding source code, to be distributed under the terms of Sections
 >>  1
 >>  > and 2 above on a medium customarily used for software interchange;".
 >>  >
 >>  > Based on the number of GPL applications distributed only via the
 >>  > internet, I
 >>  > would assume that the internet is satisfactory as "a medium
 >>  > customarily used
 >>  > for software interchange".  Therefore it could be used to satisfy the
 >>  > written offer of section "3b)".   If you allow your application and
 >>  Cygwin
 >>  > binaries to be download from your web site, simply keep a copy of
 >>  > the source
 >>  > there for download.  I think that you only need to provide access to the
 >>  > source to only those that download the binaries.

 >>  I believe the "medium customarily used for software interchange" refers to
 >>  floppy disks, CD-ROMs and the like.

 >>  Again from the FAQ:

 >>  I want to distribute binaries without accompanying sources. Can I provide
 >>  source code by FTP instead of by mail order?
 >>  You're supposed to provide the source code by mail-order on a physical
 >>  medium, if someone orders it. You are welcome to offer people a way to
 >>  copy
 >>  the corresponding source code by FTP, in addition to the mail-order
 >>  option,
 >>  but FTP access to the source is not sufficient to satisfy section 3 of the
 >>  GPL.

 >>  When a user orders the source, you have to make sure to get the source
 >>  to that user. If a particular user can conveniently get the source from
 >>  you
 >>  by anonymous FTP, fine--that does the job. But not every user can do such
 >>  a
 >>  download. The rest of the users are just as entitled to get the source
 >>  code
 >>  from you, which means you must be prepared to send it to them by post.

 >>  If the FTP access is convenient enough, perhaps no one will choose to
 >>  mail-order a copy. If so, you will never have to ship one. But you cannot
 >>  assume that.

 >>  Of course, it's easiest to just send the source with the binary in the
 >>  first place.

 >>  >
 >>  > I'm not sure if an electronic written notice is sufficient or
 >>  > not, but based
 >>  > on the number of legal notices I've read and agreed to on the Internet,
 >>  > maybe it is.  I've never seen a hardcopy version of the GPL and somehow
 >>  it
 >>  > remains in force when I download an electronic version of the source.
 >>  I'd
 >>  > ask a Lawyer about that one.

 >>  I think "written offer" here refers to a paper copy.
 >>  As for the GPL remaining "in force" when you download an electronic
 >>  version
 >>  of the source: the GPL grants you *extra* rights over and above those
 >>  normally afforded to you by copyright law. You can choose not to agree to
 >>  the license. However then you may not exercise those extra rights. So
 >>  whether the GPL remains "in force" is up to you. However if you decide it
 >>  doesn't, you may not redistribute the binaries or source you downloaded
 >>  (as
 >>  well as othe restrictions).

 >>  > If an electronic notice is ok, you could present downloader's a
 >>  statement
 >>  > satisfying the language of section (3b), allow them to print the text to
 >>  > save a hardcopy version. Then require them to check a box that they have
 >>  > read the notice and agree to it.  If they ever request a copy of
 >>  > the source
 >>  > code, you could either send out a CD for a fee or provide them with the
 >>  > private web site address.  Just make sure any email address or
 >>  > web site you
 >>  > give out is good for three years.

 >>  Allowing them to print the text to hardcopy is an interesting idea. I
 >>  think
 >>  you could mount an interesting defence based on this if someone accused
 >>  you
 >>  of violating the GPL.

 >>  >
 >>  > Lastly, the GPL does not require you to cover the cost of performing the
 >>  > source distribution.  If it takes you an hour to burn a CD for someone,
 >>  > charge for an hour's worth of work.

 >>  Chris

 >>  --
 >>  Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
 >>  Bug reporting:         http://cygwin.com/bugs.html
 >>  Documentation:         http://cygwin.com/docs.html
 >>  FAQ:                   http://cygwin.com/faq/

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/