Reverse Engineering 

Reverse engineering software is the act of decompiling the executable code of a program in order to understand how it works. This can be done for two main reasons: to allow a programmer to write compatible software to interface with the program or to show a programmer how to copy a program's functionality. Over the years, the use of reverse engineering of software has been extremely controversial. In fact, there have been two major lawsuits concerning products that were written with the help of decompilation.

The first major lawsuit was Atari vs. Nintendo. In this case, Atari Corporation reverse engineered Nintendo's game cartridges in order to create alternative games that could run on Nintendo's system. The judge in this case found that decompilation was acceptable to figure out unprotected elements of the software. However, Atari lost the case because they used fraud to obtain Nintendo's source code from the Copyright Office 7.

The next major case, Sega vs. Accolade, created a much stronger precedent because there were no fraud issues involved. In a similar manner to Atari, Accolade reverse engineered Sega's Genesis technology to discover how to make games for their system. Accolade then created a book with the relevant (and non-protectable) elements of Sega's technology, and passed the book on to their developers. These developers created a new game, Ishido, to compete with Sega's games.

In deciding the case, the court looked at many factors (including public policy concerns). In the end, the judge decided that reverse engineering software for the sole purpose of creating a compatible package is an acceptable use (under the "fair use" doctrine). In addition, the appeals court stated: "if disassembly of copyrighted object code is per se an unfair use, the owner of the copyright gains a de facto monopoly over the functional aspects of his work - aspects that were expressly denied copyright protection by congress" 1. Thus, the court decided to adopt the policy encouraging competition (as opposed to IP protection) in the software industry.