derivative work

Angelo Schneider angelo.schneider at
Wed Oct 17 13:48:45 UTC 2001


I tend to write lenghty maisl, sorry.

In short: bring the question if a piece is derived work or not down to
the source code.

You are deriving work if you take original source code and modify it.

You are making a derived work if you incorporate source code in any way,
compiling, loading and interpreting, linking, dynamic linking,
translating in a different language (if tehre is no paradigm change)
into one single piece of final work.

Becaus your final work 'containes' the original work.

Being in any way dependened on an original work
.   calling subroutines of that library
.   reffereing to classes in that library
.   deriving from classes in that library
legaly that all is *NOT* making a derived work.

This is not my stand point and I know most people somewhat working with
the GPL also have not that "stand point".

But that does simply not matter. Its aquestion of law and not of stand
points, making a derived work means you copy (hence the term copyright)
parts or whole of some one else into your work.

So: look at the cases above, and then link with that library, this
constitutes a derived work. Reason: the source code of that library is
incorporated (after compiling and archiving in a library) into your
finla product(work).

Sidenote: dynamic linbking constitutes a copy of the work in main
memory, it copies also the libraries into main memory. They are linked
in main memory(that has no meaning, linking just means here and above:
put together) so they are a drived work in memory, due to the copying
and putting together.

Yes I know, RMS himslef does dynamic linking not consider being a
derived work, well, law sees it different.

Sidenode 2: You can use process boundaries, e.g. CORBA or similar
constructions (RPC) to overcome those restrictions. Calling a library
which is in its own proces from a different process does not construct a
derived work, as they are not "put together". Why is that? Well,
"derived work" means all parts are put together into one thing. The new
one thing is then a derived work of the parts.

Hope that helps,


Angelo Schneider         OOAD/UML         Angelo.Schneider at
Putlitzstr. 24       Patterns/FrameWorks          Fon: +49 721 9812465
76137 Karlsruhe           C++/JAVA                Fax: +49 721 9812467
license-discuss archive is at

More information about the License-discuss mailing list