Is inherited class a derivative work?

Angelo Schneider angelo.schneider at oomentor.de
Thu Oct 18 16:38:22 UTC 2001


Hi all!

This a very good answer as it shows where the common missunderstanding
resides!
Please see below.

Michael Beck wrote:
> 
> > Von:  Michael Beck[SMTP:MBECK1 at COMPUSERVE.COM]

> > From: Angelo Schneider

> 
> > As I pointed out allready: linking to an API is not, I repeat: not a
> > derived work.
> > "derived work" is a legal term. You can not redefine it in
> > your license.
> 
> Why are in insisting that "deriving a new class" is equal to "linking to an
> API"? Unless you believe that a class cannot be copyrighted, please see the
> class as a copyrighted entity, the same way as you see a book.
> 

I'm not insisting on that.
I of course of the oposite opinion, I only liked to point out:
After you have created a derived class, which is your own work, you
usualy link the base class to it.
The resulting binary is legaly a "derived work" as it is an elaboration
of the original work. Note: teh binary is the derived work, not the
derived class.


> If we agree that class is a copyrighted entity, then inheritance is NOT calling
> individual functions of that class. If you make changes to the class via
> inheritance - you add new elements, you modify existing elements - you are
> adapting this class to be or do something different than it was designed to be
> or do.
> 

And this is unfortunatly wrong.

As you do not change the original class, that menas their source code,
you create no adaption.
You create a new entity -- the derived class --, that this entity is
useless without the base class is a "technical" issue, not a legal and
definitly not a copyright issue.

> All those elements are part of the class, the same as words are part of a book.

This is precisly wrong. Because again: this is a technical issue.
The derived class would be only under one situation a adaption of teh
original class:
This is when you put the derived class into the exact same source file,
because then you do moidify/adapt the original work, the original source
file.

Of course the same where true if yopu would only distribute it printed,
in fact if you distribute the original source code printed and add into
the same book derived class, the whoel book would be an
adaption/modification/elaboration, IMHO elaboration.

> Individual words cannot be copyrighted, and anyone is free to use them in a
> different combination. But as soon as your start to change them in a particular
> book, you are making modification to this book. So unless you deny me the right
> to copyright my class, from the CLASS perspective any changes to the class
> implementation (and not just to the class interface) should be treated as
> modification of this class, and as such, a "derivative work".
> 

But it is not treated as that. At least not as long as your derived
class is kept seperated and not tweaked into the original code base.

> > Probably you see that "the character of the original work" still is
> > easyly recognizeable in ane form of derived work.
> > You can say the essence of the original work shines through the
> > reworking (reworking creates a derived work).
> 
> Yes, the original class shines through reworking (a derived/inherited class).
> 

Nope it dos'nt!
Ant it can't. How should it?

public class AngelosSample extends MichalesSample {

	public void doSomething() {}
	public void doSomethingInteresting() {}

}

So, please how muich of your class is visible here?
What does your class?
What is the interface?
Do I overwrite something, or do I only add something?

As I did not change the source file with the class MichalesSample, my
class is no derived work.

And the character or essence of your class is no where visible!

> > How do you like to construct a case of derived work by calling an API?
> > Is that a "transaltion" of the library?
> > Is that a new [deleted musical] "arangement" of that library (source
> > code)?
> > Is that a "dramatization" of that librarty if you write code
> > calling it?
> > Is it a fictionalization?
> 
> It's an "adaptation" of an existing class, and as such, it creates a "derivative
> work".
> 

As I said allready: an adaption changes the original wording.
Reformatting your code and placing comments into it, renaming some
methods, thats an adaption.
Taking your code and adding a method, thats an elaboration.

NOTE: "your code"!!!!
I have to copy and to rework your code!
Then I create "derived work".

> > So: how may a call to an API, which surely may be a heavy
> > use, the whole
> > work may be unthinkable without that API, but how may this be
> > a "derived
> > work"? No modifications, adaptions, elaboratons. annotations,
> > recasting,
> > transforming of the original work!
> 
> Yes, by making changes to the class, you have made adaptation of this class.

I made no changes! Exactly that is teh point! I created an completle
independedn work, under copyright law. Technical it is necessary to
include your work for running the software. So during runtime the binary
in main memory is a derived work, the binary, not the derived class!

> 
> > In most programming languages you only use *one* keyword plus the name
> > of the base class to derive a class from: that would just be
> > a citation of the class name.
> > Citation is fair use, and a one word citation is (legaly) not even
> > considered to be a citation.
> 
> I think, it's a wrong premise. You can do it ONLY because the technology enables
> you to do it. Could you do it the same, if the compiler wouldn't do the dirty
> work for you? Since your "intent" was to modify this class, I don't think that
> you can claim a simple citation here.

I can. Technical issues have absolutly nothing to do with copyright law.

> 
> As the least (i.e. you don't do any changes), you are making a copy of the
> class. And as soon as you start to make additions/changes to the new class, you
> are making adaptation of the original class. Again, please see the class as a
> copyrighted entity, the same way as a book, or a chapter of a book.
> 
> > Finaly, (I said this at least 4 times on the list during the
> > alst days)
> > as long as you do not take one original source file from said library
> > and modify THAT file, you make no derived work. NO, this is not my
> > opinion, that is legal fact.
> 
> Can you show some court cases where this was clearly stated?
> 

Well, I copied the US law, and I can copy you german law.
However our law is not based on court rulings but on the law :-)

> Till I see something different, I have to assume that similarly to a book, you
> don't have to modify THAT file to create a derivative work - book translation
> into another language, movie based on a book, a script for that movie - all of
> it's a derivative work, even if you didn't modify the original book.
> 

That is covered explicitly in the paragraph of US law you have deleted
above.
There is defined: 'translation' constitutes a derived work.
In a translation the essence of the original work is still visible! Its
no matter wether you write "Alice kisses Willie" or I translate "Alice
küßt Willie".
The essence is visible. And the character of the rest of the book is the
same!

Same for movie etc. 
a) it is explicitly covered in copyright law: making a move from a novel
constitutes derived work.
b) the character of the original work is easyly recognizeable for teh
readcr and viewer of the book and movie.

OTOH: if I call functions from glibc my work is no derived work.
Only after linking with glibc it is.

> Michael
> 

Regards,
   Angelo

P.S. 
Of course the argument: you use my class by deriving from it, so you are
incorporating my work into your work, is a serious issue. But you have
to carefully look at what point -- usualy that is link time or execution
time -- the copyright relevant status is reached. As my sample class
above shows, you are easyly able to write the base class AFTER I made my
class. So, by providing a base class are you making a derived work of
mine?

----------------------------------------------------------------------
Angelo Schneider         OOAD/UML         Angelo.Schneider at oomentor.de
Putlitzstr. 24       Patterns/FrameWorks          Fon: +49 721 9812465
76137 Karlsruhe           C++/JAVA                Fax: +49 721 9812467
--
license-discuss archive is at http://crynwr.com/cgi-bin/ezmlm-cgi?3



More information about the License-discuss mailing list