On Reverse Engineering
It has been a bit horrifying to watch the BitKeeper saga unfold. Not that it’s surprising of course that Larry rescinded the BK Linux license; if you know Larry or even know of him, you know that Larry’s tragic flaws — hypersensitivity, volatility and vindictiveness — made this an inevitability of sorts.1 So the horrifying bit has not been the act itself, but rather the specific reason that Larry cited when rescinding the license: he seems to have taken issue with Tridge’s attempt to reverse engineer the BitKeeper protocols. This rankles; I (like many engineers, I suspect) view reverse engineering as a Natural Right. That is, I believe that we are endowed with certain unalienable Rights, and that among these are Life, Liberty and the pursuit of Understanding how the hell something works (or doesn’t, as is frequently the case). Perhaps perversely to some, it is my strong belief in the right to reverse engineer that leads me to my equally strong belief in the responsibility of government to establish a system of patents: if you use my product, you have the right to take it apart and understand its inner workings, but I have the right to protect my intellectual property by patenting the novel mechanism that represents a non-obvious advance in the state of the art. That is, it should be the protection afforded by patents — and not the obfuscation inherent in a running system — that prevents the rip-off artists.2 My belief reflects the fact that nearly all applications of reverse engineering do not in any way violate anyone’s intellectual property — and the act itself and alone can never violate intellectual property.
I believe strongly in reverse engineering in particular, but it plays an especially critical role in the development of software: in my experience, when developing a layer in the stack of software abstraction, you always need to understand at least one layer below you and you often need to understand at least one layer above you — and reverse engineering is often the primary means to achieve this understanding. More generally, software is usually reverse engineered to work around oversights or blunders, or to simply understand a software system sufficiently well to interoperate with it. It is in part out of the recognition of the importance of reverse engineering in software development and integration that we developed DTrace — a tool which many regard as the ne plus ultra of software reverse engineering.
Returning to the case at hand, if BitMover believes that Tridge violated one of its patents, fine — BitMover should sue for infringement.3 But to rescind the free BK license simply because someone dared to even understand how it works is just…cowardly. In doing this, BitMover is exhibiting classic Bad ISV Behavior: they are devoting their efforts to preserving their natural monopoly (such as it is) over their own users — joining the fetid ranks of the ISVs that have demanded that we disable DTrace for their application. And it adds insult to injury for Torvalds to condemn Tridge for “ruining it for everyone.” Tridge “ruined it for everyone” just like Rosa Parks and Helen Gahagan Douglas and Nathan Hale and anyone else who ever took a stand for what was right. And I don’t mean this comparison to diminish the courage that it took these others to stand up to tyranny, but rather to underscore the degree that I believe that reverse engineering is a Natural Right. So I, for one, hope that Tridge continues to reverse engineer BitKeeper — and I would be honored if DTrace helped him do it.
1 I actually like Larry — he’s sharp, forthright, and engaged and he can be very sweet — but I do view him as ultimately tragic…
2 I also believe that patents have gotten way out of hand, and that the proliferation of bad software patents represents a serious problem — but that doesn’t change my feelings about patents in the abstract.
3 Of course, BitMover is unlikely to do this, for several reasons. First, it seems highly unlikely that Tridge has violated any BitMover patents if he has only reverse engineered the protocol. Second, even if he has somehow managed to violate a patent, there’s the little problem of damages to BitMover — or rather, the lack of such damages; if there aren’t damages, treble damages still amount to nothing. Third, even if there were enormous damages, who would pay them Suing Tridge is not likely to be terribly gratifying; I can’t imagine that his pockets are deep enough to even pay the substantial expense of just prosecuting patent infringement. And both Tridge and OSDL claim that the work was done in his spare time; if it wasn’t done using OSDL equipment, there isn’t much of a case to be made against OSDL. Finally, there is a more practical reason that BitMover is unlikely to sue for patent infringement: suing a well-known White Knight in the open source world for patent infringement would likely cause several megacorps with large patent portfolios to carefully review both their patents on SCM and the prior art in same. If BitMover is lucky, this would only result in a deluge of amicus briefs; if BitMover is unlucky, it would find itself buried in enough counter-litigation to destroy the company.