I wanted to let you know why I was so quiet for a bit. I was preparing an article for LWN on reverse engineering. What can you do and what can't you do? It was a massive project, and you can read the result here if you have a subscription. If not, you can either get one quite easily or wait a week to read the article.
I wanted to share one thing I found in my research here on Groklaw. A lot of people have come to think of reverse engineering as a criminal activity, and while it can be, there are many legitimate reasons to do reverse engineering, as my article highlights. Reverse engineering is just figuring out how something works. We all took apart clocks and radios as kids, I imagine. Why? Just for fun, to see how they worked.
Gaining knowledge is normally viewed as a positive thing. Yet, more and more, there are laws being passed to prevent this kind of knowledge when it comes to software. If that subject interests you, you will enjoy reading Professor Ed Felton's Freedom to Tinker blog. Part of the problem, then, is the phrase and all the negative associations attached to it, but another issue is that taking apart a clock and figuring out how a software program works are not really comparable as far as the process is concerned.
I found an article in my research, which I listed in a separate LWN page, Additional readings on reverse engineering law (also subscriber content), that suggests that a new word or phrase is needed to replace "reverse engineering":
There are three good reasons to rethink the term reverse engineering: (1) it implies unethical behavior, (2) it lacks meaning, and (3) it conjures up inaccurate images from the past. While the problem is easy to define, the solution is not. The challenge lies in defining a new term. . . .
The first meeting of the Data Capture/Reverse Engineering technical group-part of the RTAM (Rapid Technologies and Additive Manufacturing) technical community-was held in July 2004. The participants were charged with defining the roles and goals of the technical group. However, within a matter of moments, the group discovered that the interests of the participants were varied and the definitions of reverse engineering diverse. The disparity was so great that it became impossible to chart a course and define the tech group's mission.
The discussion rapidly regressed to a few simple questions. What is RE? What technologies does it include? What are the applications? This group of experienced professionals, each with hands-on experience in RE, was unable to define the technology in the context of its many applications. It concluded that if the tech group could not come to a consensus, there is no possibility for a clear understanding in industry. Therefore, the tech group decided that reverse engineering needed to be renamed and redefined.
With agreement to do so, the conversation turned to resolving this dilemma. The question arose. "If it isn't RE, what is it?" The answer to this simple question is deceptively complex.
To date, the Data Capture/Reverse Engineering tech group has yet to come up with the answer. Although the industry has pondered the question for years, it has not fared any better in renaming the technology.
So, that group struck out in finding a new term. Three of the possibilities considered were data capture, digital duplication and reverse modeling, but no consensus was reached. Samba's Dan Shearer supports the idea that a new name is needed, and he suggested that I ask you for ideas. I also wanted to ask you to list for me what you think are the best projects that resulted from "reverse engineering." Here is his contribution, but we are seriously wondering if any of you can do better:
Constructive Exploration/Complementary Engineering
~ by Dan Shearer
"If I have been able to see further, it was only because I stood on the
shoulders of giants." http://en.wikiquote.org/wiki/Isaac_Newton
This well-known quote 1
embodies respect for intellectual effort of
others and giving due credit. In considering any artificial work it is
usual to wonder about the creative effort, and often as not to touch it
or -- as we do from babyhood -- learn by taking it apart.
The term "Reverse Engineering" can be examined from legal and technical
points of view. Here I am instead trying to capture the feeling of what
is meant, in order to find a better term, a term that conveys meaning to
I think "Reverse Engineering" has almost exactly the wrong implication.
We're not taking something away from the sum of human knowledge, we're
adding something to it -- even if I don't publish my results, if I
produce something that artifact represents a mine of knowledge to others
just as the original did to me. In Reverse Engineering we're not
stealing someone else's hard work, we're being inspired by it. In short,
the process of developing somewhat parallel thinking is moving forwards,
not backwards. So the name should reflect that general attitude. It is a
term that should probably apply much more widely than just fields with
"Engineering" in their title.
Going back to Isaac Newton, a common thread is the notion of
exploring how someone has expressed an idea. All of the following
involve exploration of the expression of an idea, be it out of need, or
for fun, desire to learn or many other motivations:
A locksmith buys a house, and out of curiosity first picks then
dis-assembles the front door lock.
A musician hears a recording played from sheet music and immediately
tries to re-create the sound with whatever instrument is to hand.
An anthropologist hears a rare language and attempts to deduce its
A software developer is told to use a program that does not run on his
computer and tries to learn how the program works in order to make it
So what about "Constructive Exploration"? If I had to have a second
choice it would be "Complementary Engineering". Clear enough to impart
some meaning, vague enough to fit most uses.
Or, maybe "Complementary Engineering" should be the term, and
"constructive exploration" be something you can use to explain what
complementary engineering really is. As in:
I do complementary engineering for a living. What that involves
is constructive exploration to learn the nature of things and
then usually some engineering to express the results of that
1written to a scientist who was not very tall :-)