Yes, I agree that there are all sorts of issues with L/GPL.

As for the header files, I don't think you need to be so meticulous.  There is an explicit provision for interface specifications, a.k.a. header files (LGPLv3, section 3).

About the theoretical possibility of having two texts which are word-for-word identical, one a copyright violation, the other not, that is actually a well-established principle of copyright law in general (not just for software) as opposed to patent law, where, if you come up with the same thing independently and innocently, you can still infringe the patent. 


On Thu, Aug 30, 2012 at 5:04 PM, john skaller <> wrote:

On 31/08/2012, at 6:13 AM, john skaller wrote:

> On 31/08/2012, at 4:15 AM, Stavros Macrakis wrote:
>> On Thu, Aug 30, 2012 at 1:33 AM, john skaller <> wrote:
>> On 30/08/2012, at 3:13 PM, Bisht, Pradeep wrote:
>>> ... Can I link judy to my program statically ? ...
>> ...Technically if you do your program is LGPL too....
>> You are mistaken. Though the linked program is a "derived work" of the LGPL code (*), Pradeep's code does not have to be released under the LGPL.
> I am not mistaken, you just misread my comments.
> By "program" I meant binary executable. Thought that was clear.

Actually, GPL and LGPL are fraught with legal difficulties.
They're bad licences because they try to make logically unsustainable
distinctions .. although its not clear a naive judge would agree.

In theory, when you compile your C source the resulting
object file is a derived work because you included
an LGPL header file (in fact the pre-processed C code
is also a derived work: macro expansions and header
file inclusions are derivations).

If instead you copy the interface specification, your source
is a derived work.

However if you merely read the specification and write your
own interface based on the intellectual content, that is NOT
a derived work. The API itself is not copyrightable, established
for US domain at least by the very recent Google vs. Oracle
in respect of Google using Java library APIs in Android.

For that reason I have code which uses GMP, but I wrote the
interface (in Felix code) from the specs, rather than mechanically
deriving it: my interface is not a derived work and so is unencumbered.

I also distribute Judy with my product. Technically the claim that the
product is FFAU is incorrect. As a whole, it is FFAU, but each part
has a separate licence. This is the way it works for "compendium"
products that are aggregations rather than derivations. The best
known example of that is Linux distros: they can include GPL'd works
without themselves being GPL. The individual component remains GPL.

So we have the ludicrous situation where you can distribute non GPL
code containing a header file which is GPL, and all is OK, but if you physically
copy  the header file into one of your files, that file is now GPL -- despite
the two encodings being logically identical.

Similarly, you can distribute your code plus some other GPL'd code
and as long as the client compiles and links it into a program
there's no breach of licence. But if you do that, and distribute
the result, you're breaching the licence.  I know of commercial
companies that actually take the sources to the client's place
and do the building there for just this reason.

The whole concept of intellectual property is rubbish.
It is nonsense in the modern world. IMHO of course :)