Originally asked in Software Engineering but a user raised it is more a legal question than an engineering one.
Let's suppose there is a software at version a1
in code repository A
on an online code hosting website. Let's suppose
- the original author updated it and made a version
a2
, thena3
. - Another person comes along, forked
a1
to another code repositoryB
, then modified it resulting their ownb2
, then modifiedb2
again and resulted inb3
. - All versions are available online -
a1
,a2
,b2
are available in the code commit history, anda3
,b3
are available on the home page.
a1 -- a2 -- a3
`-- b2 -- b3
Question: how many derivative works of the software exist in this scenario?
My initial instinct is one, because there is the original code repository A
, and a forked-and-modified repository B
which is the derivative work. But I realized the answer might be four (that is, a2
, a3
, b2
, b3
all count as derivative works of the original code -- but not sure), given that in the copyright law (using US copyright law as an example):
A “derivative work” is a work based upon one or more preexisting works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work”.
The definition given in the Apache 2.0 license is more direct:
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.
I think a key point a software is different from a book/painting/movie is that software is very much a "live" thing - that is, software is constantly being updated after being "published". Especially, each small iteration (commit) of an open source project is accessible publicly, instead of periodically being made public after accumulating a few months' works behind the scene.
b2
andb3
count as one derivative work, or two different derivative works.