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
- Another person comes along, forked
a1to another code repository
B, then modified it resulting their own
b2, then modified
b2again and resulted in
- All versions are available online -
b2are available in the code commit history, and
b3are 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,
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.