Mike Novack wrote:a --- No, the custom version of pachi (the alterations you add to pachi so that goex could use it) must be open sourced. Not goex.
Wrong:
GPL FAQ wrote: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.
If you need to modify the program in order to make it compatible, then you're exchanging internal data structures. If you don't need to modify it, the data structures you're exchanging are not internal.
Ok, there is also the case where you just modify the program to make it more convenient to use, like implementing an IPC mechanism instead of stdin/out, but without changing the actually transmitted information. That would probably be ok.
Mike Novack wrote:b --- Would definitely not be. Come on now, you are implying that there is even the slightest question about whether the existence of an open source program X means any other program Y would have to be open sources whetehr Y ever interacted with X in any way.
I never said that needs to be GPLed, just that it hasn't been tested in court. I certainly hope it doesn't need to be

Mike Novack wrote:c --- If it was GTP that was modified those extensions must be open sourced. That my motivation for making those specific extensions was so that some non-open source program I planned to write would work easier would not "capture" my non-open program.
GTP is a just specification, so the modification to GTP is mostly irrelevant to the license of the programs using it.
What is relevant is whether the communication between the programs is "intimate enough". That's a good question, and I can't really answer it. Anyway, the relevant point is whether your commercial program is considered a derivative work of the GPL program. Static linking is a strong indication that it is. Needing to modify the GPL program so it works with your product is also an indication that it is. If your product also works without the GPL program, or with alternative programs, that's an indication that it isn't a derivative work.
Just linking it via pipes doesn't tell you anything. That's just a technicality. It's necessary for not being a derivative work, but not sufficient.
Mike Novack wrote:Look, you say you are a software developer. Can you not see that your arguement is akin to claiming that if a non-open source program is ever run under an open source operating system this would represent a violation? After all, when that program runs it will be making calls on the operating system for services, calling open source utilites, etc.
The glibc and many other standard system libraries are licensed LGPL exactly for that reason. Some libraries also have special licensing exceptions to allow using them in non-free tools.
Also, if you're programming only against a specification (e.g. the C language standard, the POSIX standard, the X11 protocol, ...), then you're clear. You don't need glibc specifically, just some library that implements the C standard.
Whether calling open source utilities is allowed is a good question. Of course, standard shell utilities are covered by various standards (POSIX, ...), so you don't specifically need the GNU utilities, just some utility that fulfills the specification. If you need a specific GPL utility, that's hairy...
Mike Novack wrote:I was using the specific example of pachi not only because this is a go forum but also because pachi is just an "engine", not intended or able to run all by itself. It is intended to be called by some go playing program or other as the vehicle that will call pachi (or some other go engine) for its engine. That the site suggests a particular one is besides the point. Yes of course, the distribution of a non-open goex that was going to use pachi in this way would have to include the source code of pachi to be in compliance.
Yes, and pachi uses the standard protocol GTP. So if your GUI is using that, you're fine.
The relevant point in your example is the *required* modification of pachi to make it compatible with your GUI. With that, you make your GUI a derivative work legally speaking. If the modification was not required, but only some sort of "improvement", and your GUI would also work with the original version, then you're ok.
All that is perhaps a bit easier to understand if you consider the intention of the GPL:
You get this program completely free, but if you build something on top of it, you have to give your users the same rights.
That could be considered the "cost" of the software. It doesn't cost money, but it costs a "promise" to give your users the same rights.
If the developer of the program wanted it to be usable in a commercial product, it would be licensed LGPL (you may use it commercially, but if you modify it, you have to give back the modifications) or even BSD (you may use it for whatever you want, i.e., free as in beer).