Table of Contents:


Introduction to the online version

Foreword

Preface to the printed version

Copyright Overview


Software Copyright

- History

- Copyrights or Patents?

- Object Code

- RAM Copies

- Beyond Mere Copying

   - Abstraction, Filtration, Comparison

   - Methods of Operation

   - Applying The AFC Test

- Reverse Engineering

- Other Issues

   - New Software from Old

- Summary


Digital Copyright

Patent Overview

Software Patents


Full treatise table of contents

Home             Copyright/Other Information             Send Comments


Chapter 2: Copyright of Computer Programs

VII. Summary

It is now well-accepted that copyright protects computer programs and other digital information, whether they are in human-readable source code or are an executable program that is intended to be understood only by a computer. Copyright provides protection for computer programs that is both easy to obtain (it occurs automatically as the computer program is written) and effective against someone who is making or distributing copies of the program, as would be the case with bootleg copies of commercial software packages such as Microsoft Windows or WordPerfect.

Beyond the verbatim copying of a computer program, the scope of copyright protection is quite limited. It does not protect the functional aspects of the program, just its expression. But as computer programs have become more complicated, that protection may be sufficient in most instances. Most, if not virtually all, copyright infringement of today’s operating systems or applications programs consists of the complete copying of that program onto a compact disc or other distribution medium, the preloading of the program onto the hard disk of a computer being sold, or the distributing of the program over the Internet without authorization. There is little difficulty in finding that such acts are copyright infringements.

It also does not protect the functional aspects of the program, just its expression. But it is much easier to state that rule than determine how to apply it, since a computer program combines expression and functionality much, much more than any other copyrighted work. The most-accepted way of determining whether something is unprotectable function or protectable expression is the abstraction-filtration-comparison test, which, after determining a number of parts of the program to consider (abstraction), filters out elements not protectable by copyright, and then compares the remaining elements to determine if they are similar.

Elements are filtered because:

·   The element’s expression was dictated by reasons of efficiency, such as when it is the best way of performing a particular function.

·   The element’s expression was dictated by external factors, such as using an existing file format or interoperating with another program.

·   The element’s expression is a conventional way of writing something in the particular programming language or machine running the program.

·   The element, at the particular level of abstraction, is an unprotectable process and not protectable expression.

·   The element is taken from the public domain, or is an unprotectable fact.

When writing a program similar to an existing program, you can copy any element of that program that would be filtered without infringing the copyright of the existing program. But you have to worry if you are using too many of the filtered elements. It could be that the selection or arrangement of a large number of filtered elements could itself have sufficient originality to warrant copyright protection. Remember, in the abstraction-filtration-comparison test, abstraction is done before any filtration of elements at a particular level of abstraction, and elements that may be filtered out at one level may be of primary importance at another.

And you must always remember that if you have had access to the source code of the existing program under a confidentiality agreement, such copying would likely be trade secret misappropriation even if it is not copyright infringement. Because it may be difficult to determine whether something should be filtered or not, and because unconscious copying can constitute infringement just as if you were looking at the program when you wrote yours, the more exposure you have to an existing computer program, the more care you need to take when writing a similar program.

In the three major cases that have considered reverse engineering of computer programs, Atari v. Nintendo, {FN111: 975 F.2d 832, 24 USPQ2d 1015 (Fed. Cir. 1992)} Sega v. Accolade, {FN112: 977 F.2d 1510, 24 USPQ2d 1561 (9th Cir. 1992)} and Sony v. Connectix, {FN113: 203 F.3d 596, 53 USPQ2d 1705 (9th Cir. 2000)} the appellate courts found that the intermediate copies produced during reverse engineering were a fair use and therefore did not infringe the copyright of the computer program being disassembled. The intermediate copies were necessary to see and understand the unprotected functional aspects of the computer program, and even though the entire program was copied, that was necessary to locate those unprotected expressions.

However, the fact that it is not copyright infringement to produce the intermediate copies necessary in reverse engineering doesn’t mean that it will not be a copyright infringement to use protected expression that was learned through reverse engineering in the final computer program.


Copyright © 2002, Lee A. Hollaar. See information regarding permitted usage.