Two quick, related, questions; totally unrelated to anything I'm doing or considering doing. I'm talking about C/C++ programs specifically, since I'm talking about header files, but, I guess the questions are development-platform independant.

It's a violation of the GPL to release closed-source software that dynamically links to a GPL licensed library ( talking GPL not LGPL here ); how? A dynamic link is established when a program is run, right? If so, distributing a program closed-source that relies on a library with the name of a GPLed library, couldn't be considered distributing a derived work, since any other library of the same name with the same interface could satisfy the dynamic linker.. I guess; that would be a derived work anyway though, since the header and interface would likely be covered by the GPL; and the closed-source program would have, in part, been derived from the GPL'ed headers.

However, what if the closed source program ISN'T compiled with headers from the library, but dynamically loads the GPL'ed library or program, implicitly, after dynamic linking, using something like dlopen ( on Linux ) or the Windows equivelent? Surely, the GPL cannot stop a closed source program from attempting to open something with the name of a GPL'ed library, and attempting to call any of the functions within that library.. That would be name squatting.

Ah.. I'm glad they have the LGPL and most decent libraries are under that.

Any thoughts, though? Is that ( second ) option a totally unstoppable way to circumvent the GPL?

Recommended Answers

All 6 Replies

for that very reason I won't touch any GPL'd code at any time. There is none on my system, I won't even look at any in an editor or print.

By linking to the library at runtime you're using it, which forces you to release your own code under GPL.
It is maybe unlikely claims like that would hold up in a court of law (but as we all know courts are not to be relied upon to act logically, many are ignorant of reality and especially jury trials are decided mostly by what the jurors perceive to be in their own personal interest rather than the law), but by the time you got that far you'd be out of a ton of money and be branded as a bad guy all over the internet.

So just avoid anything to do with the GPL. Use alternatives everywhere, if you do stumble upon GPL'd code or libraries by accident (it happens, not every file is recognisable as such before you open it and take a look) delete every trace of it immediately.

How do you manage this while using linux?

How do you manage this while using linux?

In short... that'd be quite difficult.

I don't avoid all GPL'd code/programs/etc on my system; but I do carefully read the licenses for any library I depend on in a project, because I wouldn't like to be forced to release under any specific license. If I did ever produce GPL'd code; it'd only ever be out of choice, but it does have the potential to taint a good re-useable production in the eyes of some, myself included; so it'd be never.

With re. to what jwenting said; I didn't think about how it might be interpreted in a court; I can't see how distributing programs that might potentially use functions of GPL binaries via dlopen could possibly be in breach of any term of the GPL; but a random jury could contain anyone; with any degree of specific knowledge, general world-view, and indeed interests..

I run one Linux box, but never install a single source package and never compile any software on it using any Linux tool or linking to any Linux library.
It's solely a CVS repository.

And yes, I'm considering replacing it with a Solaris box for the next server to avoid any problems.

Would you use linux ( more ) if it wasn't for the GPL, or do you have other misgivings about the platform?

I really like the GPL and other free movements most of the time; in that I can get most things I need for home and amateur use ( music development packages, IDEs, graphics tools, processing utilities ) for free, and up-to-date, from a command line. Although that's not really a 'goal' of the GPL, it's a result.

Hey have you ever able to figure it out that using dlopen() method doesn't bound your code under GPL terms.

Two quick, related, questions; totally unrelated to anything I'm doing or considering doing. I'm talking about C/C++ programs specifically, since I'm talking about header files, but, I guess the questions are development-platform independant.

It's a violation of the GPL to release closed-source software that dynamically links to a GPL licensed library ( talking GPL not LGPL here ); how? A dynamic link is established when a program is run, right? If so, distributing a program closed-source that relies on a library with the name of a GPLed library, couldn't be considered distributing a derived work, since any other library of the same name with the same interface could satisfy the dynamic linker.. I guess; that would be a derived work anyway though, since the header and interface would likely be covered by the GPL; and the closed-source program would have, in part, been derived from the GPL'ed headers.

However, what if the closed source program ISN'T compiled with headers from the library, but dynamically loads the GPL'ed library or program, implicitly, after dynamic linking, using something like dlopen ( on Linux ) or the Windows equivelent? Surely, the GPL cannot stop a closed source program from attempting to open something with the name of a GPL'ed library, and attempting to call any of the functions within that library.. That would be name squatting.

Ah.. I'm glad they have the LGPL and most decent libraries are under that.

Any thoughts, though? Is that ( second ) option a totally unstoppable way to circumvent the GPL?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.