Walter Rice wrote in a message to Mike Bilow:
WR> "Sec. 102. Subject matter of copyright: In general
WR> (b) In no case does copyright protection for an original
WR> work of authorship extend to any idea, procedure, process,
WR> system, method of operation, concept, principle, or discovery,
WR> regardless of the form in which it is described, explained,
WR> illustrated, or embodied in such work. "
WR> Protocol = process, procedure, system, method of operation
Right.
WR> From my indications, the protocol itself can't be copyrighted.
WR> His code can. Thus, you may reverse-engineer from observation,
WR> but if you use his code he can control how.
Of course one is on stronger ground to defend a "clean room" implementation
created without reference to the original source code, but source code is both
a set of instructions to a machine and a readable description of a process to a
human. In fact, source code is by definition the most readable and precise
possible description of a process for a human expert in the field.
While one cannot copy copyrighted source code literally, the nature of computer
programming necessitates that large areas of similarity will result when any
two programmers are called upon to implement similar functionality. This is
what the statute means by "...regardless of the form..." above.
The code which implements incidental features of the program, such as the
arrangement of the elements of the user interface, enjoys much stronger
copyright protection than the code which has a structure dictated by the design
of the protocol. The closer the code gets to being purely an implementation of
a process, the less copyright protection it has.
Tests of similarity for purposes of determining copyright violation therefore
focus on the most incidental aspects of programming, such as the choice of
variable and function names. This often produces bizarre results.
-- Mike