Imagine that you are a computer programmer, and you have come up with a great idea. You would like to develop an ingenious program that will take any English document and translate it into Basque. You realize, however, that virtually everyone in the United States uses a program called WriteIt for their word processing. Unless your translator can accept documents created with WriteIt, it will be virtually unmarketable. Making your program compatible will likely be extremely difficult, and you will need to know a great deal of information about WriteIt in order to succeed. To make matters worse, the makers of WriteIt, fearing even the remotest possibility of competition, have refused to extend any support.
Will it be possible to develop your Basque translator? The necesary information cannot be obtained by examining the copies of WriteIt that are sold in stores--they are completely unreadable, consisting entirely of millions of zeros and ones that only the computer can understand.(3) It is possible to reverse engineer(4) the WriteIt program, transforming the ones and zeros to a form that is readable by humans. Your lawyers inform you, however, that this reverse engineering would be a very costly copywritht infringement. Your dreams of a Basque translator have been unceremonously dashed, and the world has lost a potentially great and innovative computer program.
While a Basque translator may not be a "must have" program for most users, many other innovative and useful programs are kept from the market because of their inability to achieve compatibility with existing software. The illegality of reverse engineering under current copyright law is a serious obstacle to developers who legitimately desire to create compatible software. This Comment addresses the problem of reverse engineering under current copyright law, and proposes that a "compatibility exemption" be added, allowing reverse engineering for the development of innovative, compatible programs.
Section I briefly describes the technology of computer software and the copyright laws under which it is protected. It then describes the basic dilemma which this Comment attempts to solve: a computer program cannot legally be analyzed because (1) programs cannot be understood by humans unless they are reverse engineered; and (2) reverse engineering is itself a violation of copyright law. Section II examines the scope of protection available for computer software and compares it to the protection available for other copyrighted works and other technologies. It concludes that the current protection of computer software is too strict, because it inadvertently allows the ideas of a program to be hidden. The subsequent effect is a restriction on development in the software industry, particularly in the development of compatible software. Section III discusses the costs and benefits of compatibility, and concludes that the development of compatible programs is essential to innovation in the computer industry. Section IV examines the problem of piracy, which is the primary fear of most software developers. It describes how the current ban on reverse engineering has been used to protect against piracy and suggests that a total ban causes more problems that it solves. Instead of banning all reverse engineering efforts, the law should instead focus on separating the legitimate development of software from unwanted pircy. Finally, Section V contains a proposal for a solution to the reverse engineering dilemma--a compatibility exemption, derived from copyright's fair use doctrine, which distinguishes between piracy and desirable efforts to create compatible software.
A DESCRIPTION OF THE PROBLEM: COMPUTER PROGRAMS, COPYRIGHT, AND REVERSE ENGINEERING
The Technology of Computer Programs
A computer program, as defined by copyright law, is "a set of statements or instructions to be used directly or indirectly in a computer in order to bring about a certain result."(5) These programs, also known as software, operate as a link between computers and the people using them, allowing users to perform very complex tasks without concern about circuits, chips, and the other mysteries hidden inside the machine. When stored within the memory of a computer, a program is kept as a long string of "ones" and "zeros," with each number represented as a high or low voltage. Each group of these binary digits is an instruction that causes the computer to perform a very basic task, such as "add" or "move." Programs in this format are said to be written in "machine language" or "object code."(6) Although it is possible for engineers to write software in machine language, the process is extraordinarily difficult and tedious, and virtually never done.(7) Instead, programs are written in easily understood, higher-level languages,(8) which are later translated into the object code that will operate the computer.(9) Software written in this format is known as source code.
Within the computer there are a number of layers of software, all working in unison to produce the result desired by the user.(10) At the top of this figurative hierarchy are the application programs ("applications")--the software that describes the precise task that the user wants to accomplish.(11) Beneath the applications is the operating system, which coordinates the running of the applications, handles the complex task of storing and retrieving information, and performs many of the standard functions needed by the application.(12) At the bottom of the pile is the microcode, which takes machine language instructions and converts them to the series of physical signals necessary to control the circuits of the computer.(13)
For each of these layers to work together, the programs in a computer must be compatible. Generally defined, programs are compatible when they can work together or work in place of each other. There are, however, many different types of compatibility, and the refusal to distinguish between these types has been a major stumbling block in the understanding of compatible software.(14) In order to achieve any form of compatibility, programs generally must share the same "interface"--the order and system by which data is stored, retrieved, and output.(15) Some programs will use another program's interface so that their program may "link up" to the other, usually to facilitate the exchange of information. Other programs will use the interface so that the compatible program and the original program will act identically--sending the two programs identical input will produce identical output. Knowledge of a program's interface is essential to the development of any compatible program, regardless of which form of compatibility is sought.
Application of Copyright Law to Computer Programs
Despite the obviously technical nature of computer programs, copyright law now protects software as a form of literary work.(16) This decision in large part is due to a detailed study made for Congress by the National Commission on New Technological Uses of Copyrighted Works (CONTU), which proposed copyright as a solution to the many problems of protecting software.(17) Copyright protection has been upheld for all different forms of software,(18) regardless of how they are stored(19) or whether they are written in object code or source code.(20) Computer programs do bear a number of similarities to more traditional literary works: they are written, they are easily duplicated,(21) and they are the product of creative, intellectual labor. Copyright protection offers a number of advantages as a protection scheme for software, because it can be attained with minimal cost,(22) has a long duration,(23) and it "creates exclusive legal rights to reproduce copies of a 'work.'"(24)
Idea v. Expression
Copyright protection does not, however, extend to every aspect of a copyrighted work. While copyright protects all of an author's expression of a given idea, it does not protect the idea itself. Section 102(b) of the Copyright Act provides: "[i]n no case does copyright protection for an original work of authorship extend to an idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work."(25) Everyone is thus free to take and use the ideas from a copyrighted work with impunity, so long as the author's expression remains uncopied. Furthermore, an author cannot copyright the expression of his work if there is only a limited number of ways in which the work's idea can be expressed.(26)
Enormous difficulties emerge when one tries to apply this doctrine, sometimes called the idea/expression dichotomy, to computer software. What exactly is the idea of a given program? The definition of an idea might be interpreted very narrowly, so that a program's idea would simply be its purpose--for example, to balance a checkbook or to simulate a typewriter. On the other hand, the term might be interpreted very broadly, so that the idea includes the sequence and organization of the program, and the expression is the author's specific description of the process in source or object code.(27) This issue was addressed in the landmark case of Whelan Associates v. Jaslow Dental Laboratory, Inc.,(28) in which the Court of Appeals for the Third Circuit held that: the line between idea and expression may be drawn with reference to the end sought to be achieved by the work in question. In other words, the purpose or function of a utilitarian work would be the work's idea, and everything that is not necessary to that purpose or function would be part of the expression of the idea.(29)
These definitions of idea and expression completely changed the scope of software protection, extending protection "beyond the programs' literal code to their structure, sequence, and organization."(30) A program may therefore infringe a prior...