Serious Legal question - TLB(S)

Troy Rollo wine at
Thu May 26 18:22:38 CDT 2005

On Thu, 26 May 2005 20:34, Boaz Harrosh wrote:

> > Therefore, I would suggest that you could use the generated .idl file
> > to write your own .idl file that has the same interface, but would not
> > be considered a copy or derived work. This is similar to what is often
> > done for Platform SDK header files in Wine. Naturally, once you have
> > your own .idl file that is free of copyright restrictions you can do
> > whatever you want with it, including (4 and 5).
> Again, Must it be Human made or can I use a program that does all the
> above automatically? Is there in the law a distinct separation between
> Human hand made, or machine generated. Given that the output is the same?

It depends more on what is done than how it is done. If it's OK to do 
manually, it's OK to do with a program. But the real question is whether the 
file you create could be regarded as a derivative work of the original file, 
which means asking if it contains any copyright-protected elements of the 
original file.

It is often convenient to say that the interface is not protected by 
copyright, but that's not quite true. The elements that are dictated by 
function are what is not protected. If there's only one way to correctly 
write something, that thing will not be protected. If there is more than one 
reasonable way to implement something, then copyright will apply.

In most cases that we care about for this purpose, interface is determined by 
functionality(*). There may be other bits that are determined by 
functionality, but if you go back to the interface and then develop the rest 
from that, you will normally be safe, and if you're not a lawyer of any 
description, that's probably the best approach to take.

(*) It is not impossible for an interface to be independent of functionality - 
for instance an interface that is entirely internal to a GPL program will be 
protected under the GPL since no other application needs to use that 
interface for interoperability. Interfaces requiring IDL will normally exist 
for interoperation with other programs, and so will determine, to that 
extent, the code implementing it.

More information about the wine-devel mailing list