Friday, August 21, 2009

Someone wants to patent three-year-old public research

My public three-year-old research, that is (well, five-year-old in the mean time, but the patent was filed in 2007). A couple of guys apparently read a paper that I presented at the very nice 2004 Workshop on Dynamic Analysis (WODA), held in conjunction with the International Conference on Sofware Engineering.

The paper was about the precise detection of memory leaks. Rather than only telling you when a program exits that you did not free a particular block of memory, the paper described a way to also report where exactly you lost your last pointer to said block. This is quite useful in complex programs where memory allocation may happen in an initialisation function, and as a result only knowing where it has been allocated is not really helpful in figuring out how to solve the problem.

The basic technique was/is based on plain reference counting with a couple of extra tricks to make it work in an uncooperative environment. Dynamic binary instrumentation of the target program enabled us to intercept all memory management routines and all memory accesses. We then recorded the addresses of all allocated memory blocks tracked them as they are passed around in the program.

If I understand the description in Patentese of their patent application correctly, they state that they refined the technique so that it can now also deal with the situation where the pointers passed around do not point to the beginning, but somewhere in the middle of an allocated memory block. Of course, this description is largely irrelevant when it comes down to determining what they are actually claiming a monopoly on.

The claims of the patent are what define its legal scope, i.e., what the applicants want exclusive rights to. This application has only 11 claims, of which three are independent. Furthermore, these three independent claims are basically identical:
  1. method claim: the algorithm itself (claim 1)
  2. system and method claim: a computer running a program containing the algorithm (claim 6)
  3. product claim: a program containing the algorithm (claim 11)

The reason for having these three claim forms is purely for litigation purposes. The first are applicable when someone is using the algorithm (i.e., the users of the software), the final one in case someone distributes a program the contains the algorithm (i.e., the programmer)

Next, there are eight dependent claims. Four depend on claim 1, the other four on claim 6. Again, these two sets mirror each other.

I'm not going to dissect the independent claims in detail, but in short: they claim exactly what we described in that paper. They will probably contest that there is one difference, described by this word soup from their claim:
the modifying of the reference count being capable of including modification for a memory location that is not at the start of the given allocation of the heap allocated memory
While in their description they claim that we did not consider that situation, let me cite from the paper:
Another kind of false positive can occur since we only track references to the start of a memory block. In practice, we only experienced this in the case of C++ code, where in some cases constructors return a pointer to sizeof(void*) bytes past the start of the allocated block. We compensated for this by treating such pointers also as references to blocks. After this adaption, we did not encounter any further reported false positives due to pointers not pointing to the start of a block.
Obviously, the above could be extended to treat pointers anywhere into the block as a valid pointer to said block. One person's omission of spelling something out is another person's invention, obviously.

The dependent claims, which you have to read as refinements of the independent claims they refer to, simply describe the (very well known) concept of reference counting and how they apply to tracking memory leaks. This is all explicitly described in the paper.

If the patent is ever granted, I doubt that it will be enforceable, except maybe before a Texas court. I also doubt that they will actually try to enforce it. It's probably just intended to embellish someone's resume, or to help enlarge the "IP" bubble of some company's assets. You can bet that it has nothing to do with innovation though.

Thursday, July 16, 2009

The need for software patents

While I'm not really active anymore in the software patents debate, I still have my Google alerts for various patent-related keywords. Occasionally, these alerts point to blog posts I can't resist answering.

Two days ago, Gartner's Brian Prentice argued Why We Need Software Patents. His argument is basically that copyright has become much less useful over time to protect software investments, particularly with the uptake of open source, and therefore not granting software patents will encourage IT companies to start lobbying for draconian trade secret enforcement laws.

I disagreed with some of his premises and posted a comment, but somehow it's still stuck in the moderation queue (update: after the discussion died out, he did allow it through). So I'll just post it here, slightly edited.

I think this premise is invalid:

“If you hope to have a viable, long-term commercial IT concern you had better be able to protect your ideas from being copied, not just the specific codification of them.”

Patents can obviously be a nice tool to help thwart competition (although the competition can do the same to you, unless you’re a basically non-producing entity, or a large company vs an equally large or smaller company), but I disagree that being able to patent the basic concepts underlying your software is a requirement in any way to “have a viable, long-term commercial IT concern”.

See for example the 2003 German survey on software patents by one of the Fraunhofer Institutes, slides 15 and 16 (the primary sector are software development companies, the secondary sector are traditional industries developing software for internal use such as machine control). These companies mention many other business tools besides patents (and copyright) that are much more important to maintaining their business success.

The 2003 FTC survey came to similar conclusions about the software sector, and even to some extent also for the computer hardware and semiconductor sectors.

Later on, he states:

It is critical to understand that copyright is in the middle of a transition in information technology. It is becoming primarily a mechanism to support community-owned assets. It is of rapidly diminishing value in protecting entity-specific assets. And that can be put done to one simple factor - Open Source Software!

I do not see how the increased usage of copyright in the context of open source software would inherently diminish its utility to cover closed source software. Where does this relation come from?

As far as I understand, a major reason for companies to increasingly work on and use open source software, is because it’s a good way to share (and thereby reduce) costs for basic infrastructure that, even if done exceptionally well, provides little or no competitive advantage in and by itself. As a result, they can focus more resources on stuff that does give them a competitive edge. For this latter category, they often can still use copyright in exactly the same way as before, witness e.g. Apple.

In fact, I think that the only thing that has severely weakened copyright protection of software over time is exactly the proliferation of software patents. In their absence, copyright guarantees that a company can sell/distribute software that it produced itself. With software patents in the picture, software copyright guarantees very little in terms of business value (only that people cannot copy or reverse engineer it willy-nilly, but who cares about that if you’re not allowed to distribute it yourself in the first place, or at least not without paying rent seekers?)