[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Defining 'preferred form for making modifications'




On Wednesday, Jun 25, 2003, at 11:22 US/Eastern, Joe Moore wrote:

Nick Phillips said:
In the situation where I take a simple GPL'd C program, compile it to
assembler, then hand-optimise the assembler before altering the code,
initially in small ways, eventually completely re-writing the whole
thing, adding huge amounts of new functionality, removing the initial
functionality entirely once it becomes obsolete, and then translating
the whole thing into assembler for a different architecture (the old
one likewise became obsolete), then there is no well-defined point at
which the C source ceases to be any kind of source for the end product,
but it most certainly does happen somewhere along the way.


So, you:
take the GPLd orig.c,
run gcc -s -o orig.s orig.c,
edit (optimize) orig.s -> modified.s,
eventually replace all the original functionality creating new.s,

orig.s is clearly a derived work,

Not at all. Title 17 USC §101 says that to be a derivative work, it qualify to be an original work of authorship. Running a compiler doesn't.

and distribution (if there is any) must
follow the GPL.

Yes, as it is object or executable form.

  In this case, it is clear that orig.c is the "source" for
orig.s and the preferred form for modification is the C programming language.

s/is the C programming language/is orig.c/ and we can agree. The GPL speaks of forms of the work; not languages.

When you have optimized orig.s to create modified.s, then you have created a
work that is derived from orig.s (and therefore orig.c) as well as your
copyright. I'm assuming that the changes are substantial enough to warrant
copyright.

Yes, we now have a derivative work.

  The "preferred form for modification" for your changes is
assembly code. The "preferred form for modification" for the rest of the work is the C programming language, so the source is both modified.s and
orig.c.[0]

If your derivative work can pretty much be seen as just patches to GCC's output, then that definitely holds. After all, it's quite reasonable and preferable to make changes in orig.c, recompile, and repatch.

At some point, however, it will no longer be reasonable to do so: Making any change in orig.c will require extensive manual work to re-add in the changes from the "patches." It is then clearly NOT preferred to to modify orig.c; rather, modified.s is the preferred form of modification.


By the time we get to new.s, all the original code has been removed and
reimplemented. Unless SCO is correct, at this point new.s will not be a
derived work from orig.c,

It depends on if new.s borrows an copyrightable expression from orig.c. SCO has little or nothing to do with it. However, it's not relevant; the GPL gives us permission to create derivative works. I think it's also very clear that orig.c is not the preferred form of modification in either case.



Reply to: