[Project-managers] editing external codes
Matthew Galati
magh at lehigh.edu
Sat Apr 7 01:36:05 EDT 2007
Here's another similar scenario. Same problem. Concorde (ABCC's TSP
solver) has the same issue -- uses "new" in protos. I want to include
Concorde calls in DECOMP. I doubt Concorde team cares to support a new
version, so I'd need to patch or have an interface header like I mention
below.
More generally... what about these scenarios:
(1) The case where you have some open source code (say GPL) that is no
longer supported. The authors have retired. You use it in your COIN code
- and over time, you want to make adjustments to it - say, to make it
faster. How do you handle?
(2) The case where you have some open source code (say GPL) that changes
dramatically its API - and deprecates their old versions (doesn't
support or keep them online anymore). But, you are happy with the old
API and don't want to change anything. Can you keep a local copy of
their old version on your server and distribute with your COIN code? Or
are you SOL?
Matt
> You haven't talked much to lawyers yet, have you? Bless your innocent heart... :-).
I try my best to avoid them. My Dad (M.D.) use to have a T-Shirt that said "F-ck all the Lawyers". Apologies to anyone out there married to one. Disclaimer: I have a mind of my own and do not necessarily buy into the belief system of my father. Although, after growing up the son of a MD, I think he had the right idea. :)
>
>> FYI - cliquer is code for finding maximal cliques (its listed in COIN
>> resources):
>> http://www.coin-or.org/resources.html
>> http://users.tkk.fi/~pat/cliquer.html
>>
>> I'll write the author and ask if they want the fix. That would be easier.
>>
>
> Yes, that would be the easiest solution. If they accept the patches you might
> as well ask them to accept patches that make their code play nicely with C++
> compilers...
>
>
>> Here's a related question that brings into question the same issues of
>> licenses and distribution.
>>
>> My project is written in C++. Cliquer is C. I build cliquer with gcc and
>> the Makefile they provide - and it works fine. I call cliquer via extern
>> "C"... However, cliquer, like alot of "old" C code I've seen has some
>> bad habits that don't play nicely with C++ compilers (like g++). For
>> example, cliquer's prototypes include the name "new" and "set" as a
>> variable name. A C++ compiler won't have that. The way I get around this
>> kind of thing is to write an "interface" header where I wrote my own
>> prototypes for whatever I actually call from my code, then extern "C"
>> {#include "cliquerInterface.h"}. Then, of course, I distribute my
>> cliquerInterface.h. I presume this is all ok wrt to licenses. But, it
>> gets a little sticky when I start using macro defines that come from the
>> original cliquer.h. Since I am not including cliquer.h, but rather
>> cliquerInterface.h, I have to copy the macros over too - which for some
>> codes is a bunch of stuff. Is that now a license issue? I am taking bits
>> of the GPL code and distributing it with my code in my interface header.
>>
>
> IANAL, but this definitely sounds sticky. My gut feeling would be that if a
> small patch accomplishes what is needed to properly compile the code then
> distributing cliquerInterface.h under the CPL is a violation of the GPL (you
> just changed license without the permission of the copyright holder). If the
> patch is larger than the original file then cliquerInterface.h is
> significantly different so that you are the copyright holder, so you can
> release it as you want. But as I said, that's only my feeling and the law
> might say otherwise...
>
> So the cleanest (legally) solution is if they accept all the patches you make.
> Short of that you can host a copy of cliquer with the patches (giving them
> credit, of course), distribute it under the GPL, and link against that version
> of cliquer. This is perfectly OK, you have every right to fork a GPL code. The
> only sticky part is: where do you host it? You can certainly create a
> sourceforge project. Hosting it on COIN might be possible, too, but I have no
> idea what is the policy for such a project. It never came up and may or may
> not fly. In conclusion: try to convince the authors to accept patches :-).
>
>
>
>> This license stuff all seems very messy to me. Why can't I add GPL code
>> in my COIN code and just distribute my stuff GPL and CPL and
>> 'whoever-wants -it-feel-free-to-use-it- PL'.
>>
>
> You haven't talked much to lawyers yet, have you? Bless your innocent
> heart... :-).
>
>
>> Matt
>>
>
> --Laci
>
>
>>
>>> Hi Matt,
>>>
>>> I don't know what Cliquer is, but the ideal case would be that you get
>>> the Cliquer developers to include your changes in a new version. They
>>> would probably be grateful to get fixes that make it work on Windows...?
>>>
>>> Otherwise, you could include patch files in your distribution and tell
>>> users that want to use Cliquer on Cygwin how they have to apply the
>>> patches to Cliquer code that they download separately.
>>>
>>> Andreas
>>>
>>> On Fri, 6 Apr 2007, Matthew Galati wrote:
>>>
>>>
>>>> In one of the examples in my project DECOMP, I use a GPL licensed
>>>> code (Cliquer). In my INSTALL, I provide the user the option to
>>>> download and link with it or not (and give them www). It works fine
>>>> with unix flavors, but Cliquer was never written to run on Windows. I
>>>> can fix the Cliquer code to compile in Windows with a few ifdef's.
>>>>
>>>> But, now how does this work? I know I am not suppose to distribute
>>>> Cliquer via svn. If so, I could just provide my "adjusted" Cliquer.
>>>>
>>>> I guess, this is a general question -- how do I distribute
>>>> derivatives of other external codes to be used with my COIN project?
>>>>
>>>> Thanks,
>>>> Matt
More information about the Project-managers
mailing list