Rev Eng Short
Rev Eng Short
Rev Eng Short
Article 2B validates use restrictions in software licenses, including mass-market licenses. One
of the common use restrictions is a ban on reverse engineering, and 2B makes it presumptively
enforceable (enforceable unless federal law preempts the restriction). Before you say, "Yes,
yes, federal law will preempt this," let me remind you of Ray Nimmer's recent analysis of
federal preemption of contract clauses:
Some people say that reverse engineering is so difficult that no one really wants to (should
want to) (has time to) do it. Therefore, they say, banning it is no big deal.
Reverse engineering is time consuming, painstaking, but informative work. But, just as lawyers
learn much from examining briefs written by other lawyers, many programmers learn new
skills by studying other peoples' programs. That's what I was up to.
The three pages on this chart are examples of the kinds of work that John Vokey and I did to
analyze the Apple II Operating System in 1981.
• One page is from a tracking table that showed us how special locations in memory
were used by parts of the operating system. (At this time, we only knew those parts by
number. Over time, once we understood them, we assigned them names.)
• The next page shows a disassembled segment of memory and our notes about what
parts of the program are stored in this segment. Once we understood the function well,
we typed up the notes (see the final page).
• The third page shows our almost-completed analyses of two of the Operating System's
subroutines.
Chart 3: INTEROPERABILITY
In 1990-91, I was the Software Development Manager for several releases of a desktop
publishing program called Express Publisher. Express Publisher reads files that you created
with a word processing program and helps you lay out the files (format them in pretty ways).
Express Publisher must be able to understand your files. A memo that you write with Microsoft
Word is stored in a different file from the same memo, written in WordPerfect. How can
Express Publisher know how to read each of these program's data files?
Initially, I called several software publishers and asked them for their file format
specifications.
• One publisher sold us a set of documentation for about $70.
• A second publisher said that they didn't have a full specification, but we were welcome
to try to figure it out (by looking at how lots of different memos were stored -- this is
reverse engineering).
• One publisher told me that we could not (not, NOT, NOT!) reverse engineer its file
format because we were competitors and they didn't want us to be able to import their
files into our program. They wanted to prevent us from doing reverse engineering for
the purpose of making our program interoperable with (able to work with) their
program.
Having bought copies of each program in the mass market, we decided that we had the right to
reverse engineer their file formats whether the publishers of those programs liked it or not.
After a lot of work, we were able to read the main types of files that our customers would
expect of us.
Eventually, Express Publisher became the best seller in a crowded niche (under $100, DOS-
based desktop publishers).
We wouldn't have had this success -- or any success -- if we hadn't been able to reverse
engineer the file formats. No one would want to retype their documents just to work with our
program.
As a general principle, no new product can enter an existing category unless it can read data
files created by its leading competitors. If there is no ability to read, the cost of converting
from the old format to the new will be much too high to risk on a newcomer that isn't well
established. And few newcomers to the market will be able to read their competitors' files
without reverse engineering the competitors' file formats.
In our case, we were not competitors with the word processing companies, but we still could
not have succeeded in the market without reverse engineering other companies' data files.
This was an example of reverse engineering to achieve
interoperability. As far as I can tell, Article 2B will allow companies to
ban this. What public policy is served by that ban?
The Case of Syncronys SoftRAM95