Is inherited class a derivative work?

David Johnson david at
Fri Oct 19 02:24:04 UTC 2001

On Thursday 18 October 2001 09:04 am, Michael Beck wrote:

> 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.

Deriving a new class is equivalent to linking to an API. No question about 
it. Just examine the mechanism. If anything, inheritance creates an 
additional level of indirection which should make inheritance *less* likely 
to cause derivation.

> 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

One does not inherit the implementation of the class, only its interface. And 
the interface is not modified. I cannot modify existing elements except by 
actually modifying the source code in the base class implementation.

The base class is in no way modified. All I have done is to create a *new* 
interface. Here is an example of inheritance:

class Snafu : public Fubar {
    int mogrify(int t);
    int n;

Snafu in no manner modifies class Fubar. Snafu is a wholly new and distinct 
class. Fubar is unchanged. Here is the same class without inheritance:

class Snafu{
    int fubarize() { return fubar.fubarize(); }
    int mogrify(int t);
    Fubar fubar;
    int n;

> - you are adapting this class to be or do something different than it was
> designed to be or do.

True, but it has little bearing on the issue of derivation. Instead of using 
inheritance to adapt the class, I could create a wrapper class with no 
functional difference. The second version of Snafu above is a wrapper, but 
it does exactly the same thing as the first version.

David Johnson
license-discuss archive is at

More information about the License-discuss mailing list