Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com From: "Chris January" To: "BB" , "Cygwin AT Cygwin DOT Com" Subject: RE: tar and gzip Date: Fri, 28 Mar 2003 01:21:11 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal In-Reply-To: Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 > > 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/