Timothy B. McCormack, attorney at law, writes about: THE TASK OF COMPUTER PROGRAMMING AND SOFTWARE DEVELOPMENT
In a practical sense, understanding how copyright law affects software development requires an understanding of how lawyers, judges, and juries understand the task of computer programming. These groups ultimately determine whether a particular copyright lawsuit has merit and, if so, what the liability or money damages will be.
For example, in an older (but instructive) case one court described the task of creating a computer program in the following manner:
The creation of a computer program often takes place in several steps, moving from the general to the specific.
Because programs are intended to accomplish particular tasks, the first step in creating the program is identifying the problem that the computer programmer is trying to solve . . . . As the programmer learns more about the problem, she or he may begin to outline a solution. The outline can take the form of a flowchart, which breaks down the solution into a series of smaller units called “subroutines” or “modules,” each of which deals with elements of the larger problem . . . .
As the program structure is refined, the programmer must make decisions about what data is needed, where along the program’s operations the data should be introduced, how the data should be inputted, and how it should be combined with other data . . . . Once again, there are numerous ways in which the programmer can solve the data-organization problems that she or he faces. Each solution may have particular characteristics efficiencies or inefficiencies, conveniences or quirks that differentiate it from other solutions and make the overall program more or less desirable . . . .
Once the detailed designs of the program are completed, the coding begins. Each of the steps identified in the design must be turned into a language that the computer can understand. This translation process in itself requires two steps. The programmer first writes in a “source code,” which may be in one of several languages . . . . The choice of language depends upon which computers the programmer intends the program to be used by, for some computers can read only certain languages. Once the program is written in source code, it is translated into “object code,” which is a binary code, simply a concatenation of “0”s and “1”s. In every program, it is the object code, not the source code, that directs the computer to perform functions. The object code is therefore the final instruction to the computer.”
Generally speaking, “programs written outside the software engineering environment tend to be small and tend to contain few inventive elements. As such, protection against verbatim copying [is] probably all the programmer [can] hope for. As software systems become more complex and come to contain more creative algorithms, the engineering phase becomes essential. As that happens, it becomes necessary to provide the software developer a means to protect those high-level, inventive elements which have nothing to do with their eventual literal expression in computer code.” While patents are often used to protect such inventive elements, the law of copyright also helps in offering protection.
Provided by McCormack Intellectual Property PS and written by Timothy B. McCormack, attorney at law and intellectual property lawyer.