This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: tar and gzip


> > 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
> > krzysiek dot pawlik at people dot pl  | 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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]