Shop OBEX P1 Docs P2 Docs Learn Events
Cygwin Licensing — Parallax Forums

Cygwin Licensing

RossHRossH Posts: 5,514
edited 2011-11-08 14:33 in Propeller 1
Not meaning to be troublesome, but someone will eventually raise this, so it may as well be :)

It seems the propgcc distribution includes Cygwin binaries and the Cygwin DLL. This is fine if Parallax have negotiated a license exception, otherwise it would appear to be non-compliant with the Cygwin licensing terms.

Not the end of the world - there are at least three quick and easy solutions:
  1. Negotiate the above-mentioned license exception with Red Hat
  2. Include the Cygwin sources (and GPL license terms, which I also couldn't find) with the distribution of propgcc.
  3. Give propgcc users the link to Cygwin and tell them to download and install it themselves (which is what most people who develop software that depends on Cygwin or MinGW end up doing).
As I said - not a big issue, and very easy to fix - but open source software licenses can be a potential landmine if you're not careful.

I haven't checked the GCC licensing terms, but I would expect the situation to be similar. I just happen to know a bit about the limitations of distributing the Cygwin DLL in binary form because a few years ago I wanted to do this myself and found I couldn't. I don't think the situation has changed since then.

Ross.
«1

Comments

  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-03 19:44
    This is a good point. You say you found you couldn't distribute the Cygwin DLL with Catalina. How do you build your executables? Are you using MinGW?
  • Dave HeinDave Hein Posts: 6,347
    edited 2011-11-03 19:54
    Ross,

    From what I can tell, binaries can be distributed as long as the source is made available. For unmodified Cygwin DLLs we would just need to reference the Cygwin source repository. If we modify a DLL we would have to provide the source. Is this the way you understand it?

    Dave
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 20:06
    Dave Hein wrote: »
    For unmodified Cygwin DLLs we would just need to reference the Cygwin source repository. If we modify a DLL we would have to provide the source. Is this the way you understand it?
    This is the way most people understand it. Regardless of "someone's" interpretation if Parallax gets nervous there are other avenues like MinGW, etc... The project will continue and what we do today makes it better for tomorrow.
  • RossHRossH Posts: 5,514
    edited 2011-11-03 20:11
    David Betz wrote: »
    This is a good point. You say you found you couldn't distribute the Cygwin DLL with Catalina. How do you build your executables? Are you using MinGW?

    Hi David,

    It wasn't for Catalina - I used to distribute some open source Ada software. Catalina doesn't use either Cywgin or MinGW.

    Ross.
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 20:15
    I do appreciate the concern expressed in the original thread post.
  • RossHRossH Posts: 5,514
    edited 2011-11-03 20:17
    Dave Hein wrote: »
    Ross,

    From what I can tell, binaries can be distributed as long as the source is made available. For unmodified Cygwin DLLs we would just need to reference the Cygwin source repository. If we modify a DLL we would have to provide the source. Is this the way you understand it?

    Dave

    The license terms are fairly explicit:
    If you distribute a (possibly modified) version of the Cygwin™ DLL, you must adhere to the terms of the GPLv3+, including the requirement to provide sources for the Cygwin™ DLL, unless you have obtained a special Cygwin™ license to distribute the Cygwin™ DLL in only its binary form

    My reading of that is that even if you distribute an unmodified version of the DLL you are also required to also provide the source. I don't think just providing a reference is acceptable (Parallax should probably check with Red Hat themselves about that).

    But the omission of the GPL license itself is probably a bigger problem.

    Ross.
  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-03 20:22
    RossH wrote: »
    Hi David,

    It wasn't for Catalina - I used to distribute some open source Ada software. Catalina doesn't use either Cywgin or MinGW.

    Ross.
    So do you compile Catalina with LCC itself?
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 20:27
    RossH wrote: »
    But the omission of the GPL license itself is probably a bigger problem.
    Where else do you think the GPL license is required? GCC sources have it. Cygwin sources have it.
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 20:31
    I'll have to talk with other members of the team to make sure we are straight up with some things. Alpha test is for finding problems, if there really is a problem, in that respect Alpha has served us well. Thanks for your input.
  • Dave HeinDave Hein Posts: 6,347
    edited 2011-11-03 20:34
    RossH wrote: »
    My reading of that is that even if you distribute an unmodified version of the DLL you are also required to also provide the source. I don't think just providing a reference is acceptable (Parallax should probably check with Red Hat themselves about that).

    But the omission of the GPL license itself is probably a bigger problem.
    It seems like it is common practice to provide binary distribution packages and an optional package that has everything in it, including the source. I agree that we need to include the GPL license in all distribution packages. I'm confident that this is something that will be resolved by people in Parallax with the relevant licensing expertise.
  • RossHRossH Posts: 5,514
    edited 2011-11-03 20:55
    jazzed wrote: »
    Where else do you think the GPL license is required? GCC sources have it. Cygwin sources have it.

    It is a requirement of the GPL that you include a copy of the actual GPL - i.e. the actual file that starts out with the lines:
    [CENTER]GNU GENERAL PUBLIC LICENSE
    Version 3, 29 June 2007. 
    [/CENTER]
    
    
    
    A link is not good enough, nor is just saying you comply with the GPL.

    I didn't find such a file, but I have to admit I relied on the windows search function and didn't manually search all the subdirectories.

    Ross.
  • Ken GraceyKen Gracey Posts: 7,401
    edited 2011-11-03 21:06
    Thanks Ross - you're part of the team and appreciate that you are helpful with the solutions. Thankfully we can resolve this one without legal input too. The lawyers aren't around today anyway. . .

    We will be sure to include the GPL file as you suggested. Sounds like one for Daniel.

    Ken Gracey
  • RossHRossH Posts: 5,514
    edited 2011-11-03 21:08
    David Betz wrote: »
    So do you compile Catalina with LCC itself?

    All the Catalina executables are native Windows executables. They don't need the Cygwin DLL (or any other DLLs for that matter).

    As for building Catalina, this can be done with any ANSI C compiler. I did once compile it with LCC, but I have no x86 C library for LCC, so I couldn't link it or run it on my PC. Interestingly, I could run it on a Propeller - but in fact there is not enough RAM available even on the largest Propeller I have to actually do so.

    Ross.
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 21:20
    Thanks for your time Ross. I'm busting my knuckles trying to make more progress with demos and docs. I can't catch every detail.

    So, are you interested in sharing our library? It's pretty small and flexible. It could be a win-win situation.
  • RossHRossH Posts: 5,514
    edited 2011-11-03 21:26
    jazzed wrote: »
    Thanks for your time Ross. I'm busting my knuckles trying to make more progress with demos and docs. I can't catch every detail.

    So, are you interested in sharing our library? It's pretty small and flexible. It could be a win-win situation.

    Thanks for the offer. I'll have a look at it and maybe compile a few parts to see if it ends up smaller than the ACK library I currently use.

    Ross.
  • jazzedjazzed Posts: 11,803
    edited 2011-11-03 21:36
    RossH wrote: »
    Thanks for the offer. I'll have a look at it and maybe compile a few parts to see if it ends up smaller than the ACK library I currently use.

    Ross.
    You are welcome.

    We are doing library I/O differently, so you may have to hook up some things for testing.
    Read about the library here: http://code.google.com/p/propgcc/wiki/PropGccLibrary
    Dave Hein just hooked up a driver for C3 SD cards in LMM - it demos the I/O model.
    The code is all public domain as I recall.
  • __red____red__ Posts: 470
    edited 2011-11-04 07:50
    Unfortunately I have experience of this licensing issue first hand when I worked on an open source embedded OS distribution.

    We were contacted and informed under threat of "legal love" that we were required to store locally to our project every single source file that we compiled from. Since we were building an embedded linux OS that meant over a 10G repo. We asked why a link to the individual project websites was unacceptable and the reasoning they gave was that if one of our downstream projects go away then the users of our binaries would be unable to re-built it from souces. So, the provider of the binary packages is required to retain and provide all the sources too.
  • trodosstrodoss Posts: 577
    edited 2011-11-04 08:09
    I am pretty sure there are things like the Arduino IDE that uses (at least) cygwin1.dll in their distributions without including the entire source. Doesn't mean it is legitimate--just means that it is overlooked quite frequently.

    Maybe it would be worth it to see what other GCC ports (like WinAVR) use to build their executables?
  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-04 08:17
    trodoss wrote: »
    I am pretty sure there are things like the Arduino IDE that uses (at least) cygwin1.dll in their distributions without including the entire source. Doesn't mean it is legitimate--just means that it is overlooked quite frequently.

    Maybe it would be worth it to see what other GCC ports (like WinAVR) use to build their executables?
    I don't think we need to include the source in the Windows binary install package. I just think we need to have it available on a server for interested users to download. I don't think this is a major problem.
  • trodosstrodoss Posts: 577
    edited 2011-11-04 08:22
    David Betz wrote: »
    I don't think we need to include the source in the Windows binary install package. I just think we need to have it available on a server for interested users to download. I don't think this is a major problem.
    Hopefully that is all that is required. I think though that Google Code has size limits on it's individual repositories. Would the source code to the entire GCC toolchain fit in the repository?
  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-04 08:25
    trodoss wrote: »
    Hopefully that is all that is required. I think though that Google Code has size limits on it's individual repositories. Would the source code to the entire GCC toolchain fit in the repository?
    We already have GCC, binutils, newlib, gdb, the test suite and a number of our own programs checked in. I guess I should check to see how close we are to the Google Code limit.
  • __red____red__ Posts: 470
    edited 2011-11-04 08:26
    It doesn't have to be in the same repository(0) as our code, it just needs to be in a repository(1) that we control.

    (0) As in VCS - ie, hg.
    (1) As in http or ftp server.
  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-04 08:27
    I don't think we have a problem with Google Code space yet. Here is what it says about our project:
    Your project is using approximately 768 MB out of 4096 MB total quota.
  • RossHRossH Posts: 5,514
    edited 2011-11-05 18:54
    __red__ wrote: »
    Unfortunately I have experience of this licensing issue first hand when I worked on an open source embedded OS distribution.

    We were contacted and informed under threat of "legal love" that we were required to store locally to our project every single source file that we compiled from. Since we were building an embedded linux OS that meant over a 10G repo. We asked why a link to the individual project websites was unacceptable and the reasoning they gave was that if one of our downstream projects go away then the users of our binaries would be unable to re-built it from souces. So, the provider of the binary packages is required to retain and provide all the sources too.

    Yes, this is my understanding as well. Links, addresses, hosting on another site or offers to provide the source code by other means (e.g. on CD) are all often used to try and circumvent the need for doing this, but as far as I know none of them are really satisfactory. The general rule is that if you provide the binary, you must also provide the source the same way (e.g. hosted on the same site). I think the main reason many people get away without doing so is that it can simply go unnoticed for quite a long time. Then one day you get the nasty letter in the post.

    However, I'm sure Red Hat will be happy to advise Parallax on the best solution.

    Ross.
  • 4x5n4x5n Posts: 745
    edited 2011-11-06 13:01
    David Betz wrote: »
    I don't think we need to include the source in the Windows binary install package. I just think we need to have it available on a server for interested users to download. I don't think this is a major problem.

    Dave, That the source had to be available upon "request" was the requirement. Not that the complete source tree be included with the binaries.
  • David BetzDavid Betz Posts: 14,516
    edited 2011-11-06 13:10
    4x5n wrote: »
    Dave, That the source had to be available upon "request" was the requirement. Not that the complete source tree be included with the binaries.
    Yes, that was my interpretation as well.
  • RossHRossH Posts: 5,514
    edited 2011-11-06 15:14
    David Betz wrote: »
    Yes, that was my interpretation as well.

    I found a very useful web site about this topic - http://gpl-violations.org/faq/vendor-faq.html. It seems to cover most of the cases that vendors routinely fall into.

    It discusses the fact that a link is not acceptable, nor is distribution of source from another server. It also has an extensive discussion of the GPL "written offer" alternative source distribution mechanism here. This is generally regarded as a burdensome alternative for vendors, as it requires the vendor to pass a written offer on to anyone who may receive the binary, and the offer must be to provide exactly the source code that generated that binary. You cannot simply (for instance) say something like "we use the open source software from company X - you can download the source from their website at www.X.com" etc)

    Ross.
  • 4x5n4x5n Posts: 745
    edited 2011-11-06 16:22
    RossH wrote: »
    I found a very useful web site about this topic - http://gpl-violations.org/faq/vendor-faq.html. It seems to cover most of the cases that vendors routinely fall into.

    It discusses the fact that a link is not acceptable, nor is distribution of source from another server. It also has an extensive discussion of the GPL "written offer" alternative source distribution mechanism here. This is generally regarded as a burdensome alternative for vendors, as it requires the vendor to pass a written offer on to anyone who may receive the binary, and the offer must be to provide exactly the source code that generated that binary. You cannot simply (for instance) say something like "we use the open source software from company X - you can download the source from their website at www.X.com" etc)

    Ross.

    I don't see any of that being a major issue or burdensome for Parallax. After all GCC is already GPL which means that source code must be made available. In my real life I'm a Unix sys admin (degree in EE with 10 years working as an EE in factory automation) and it's not unusual for companies distributing GPL software either via cd/dvd .iso images or packages for download. It's very rare for the source code to be bundled with the binaries. The source is always available for download however.
  • RossHRossH Posts: 5,514
    edited 2011-11-06 17:27
    4x5n wrote: »
    I don't see any of that being a major issue or burdensome for Parallax. After all GCC is already GPL which means that source code must be made available. In my real life I'm a Unix sys admin (degree in EE with 10 years working as an EE in factory automation) and it's not unusual for companies distributing GPL software either via cd/dvd .iso images or packages for download. It's very rare for the source code to be bundled with the binaries. The source is always available for download however.

    Yes, I agree it is not burdensome once you understand your obligations - the main one being that you have to provide the entire source code for all the binaries you include - or provide (and be prepared to fulfill) the appropriate "written offer" included with your downloadable binary-only version).

    Reyling on someone else providing source code is the trap that many vendors fall into - e.g. assuming that you don't need to provide the source code because it is freely available elsewhere, or that you only need to provide changes to source code that is already publicly available elsewhere. This is explicitly addressed on the GPL violations site as one of the "common mistakes".

    Ross.
  • 4x5n4x5n Posts: 745
    edited 2011-11-06 17:57
    RossH wrote: »
    Yes, I agree it is not burdensome once you understand your obligations - the main one being that you have to provide the entire source code for all the binaries you include - or provide (and be prepared to fulfill) the appropriate "written offer" included with your downloadable binary-only version).

    Reyling on someone else providing source code is the trap that many vendors fall into - e.g. assuming that you don't need to provide the source code because it is freely available elsewhere, or that you only need to provide changes to source code that is already publicly available elsewhere. This is explicitly addressed on the GPL violations site as one of the "common mistakes".

    Ross.

    The written offer can be text in a file or as far as I can tell located in a website. I've downloaded a lot of disk images containing GPL binaries (not technically correct but I hope people get the idea. :-)) as well as packages for Linux, Solaris, SunOs, Irix, etc, etc ,etc and it's rare for the packages containing the binaries to have the sources. They ALL do have the GPL license in a file with an URL to get the source code from. That includes packages that I've downloaded from the free software foundation's site like gcc, emacs, etc!!

    I have seen more then one person/company get into trouble over violations of the GPL. Things get ugly when selling software compiled with GCC. As you've pointed out software released under the GPL isn't unlicensed "freeware" or public domain. The license is very clear and enforceable in court! It is something the legal dept of Parallax is going to have to look at to make sure there aren't any violations.
Sign In or Register to comment.