Coder Accuses IBM of Patenting His Work
ttsiod writes "Back in 2001, I coded HeapCheck, a GPL library for Windows (inspired by ElectricFence) that detected invalid read/write accesses on any heap allocations at runtime — thus greatly helping my debugging sessions. I published it on my site, and got a few users who were kind enough to thank me — a Serbian programmer even sent me $250 as a thank you (I still have his mails). After a few years, Microsoft included very similar technology in the operating system itself, calling it PageHeap. I had more or less forgotten this stuff, since for the last 7 years I've been coding for UNIX/Linux, where valgrind superseded Efence/dmalloc/etc. Imagine my surprise when yesterday, Googling for references to my site, I found out that the technology I implemented, of runtime detection of invalid heap accesses, has been patented in the States, and to add insult to injury, even mentions my site (via a non-working link to an old version of my page) in the patent references! After the necessary 'WTFs' and 'bloody hells' I thought this merits (a) a Slashdotting, and (b) a set of honest questions: what should I do about this? I am not an American citizen, but the 'inventors' of this technology (see their names in the top of the patent) have apparently succeeded in passing this ludicrous patent in the States. If my code doesn't count as prior art, Bruce Perens's Efence (which I clearly state my code was inspired from) is at least 12 years prior! Suggestions/cursing patent trolls most welcome."
Can I drop a hint about the patent office having no credibility any more?
When the foot seeks the place of the head, the line is crossed. Know your place. Keep your place. Be a shoe.
what should I do about this?
Disclaimer: I'm not a lawyer; this isn't legal advice. But you've got a few options. All or none of which you can pursue.
The first option is to simply contact IBM and ask them how their patent is novel or different or disjoint from your work. This could result in one of two things: no response or a response. If you are satisfied with the response, you might change your mind about your situation and congratulate them on putting some novel innovations on HeapCheck, patenting it and listing you in the claim references (do you own any patents related to it?). Now, assuming that it does not satisfy you as an explanation, you could indicate that you are going to pursue legal action (the I in IBM stands for International) but you are willing to settle and sign away your rights for some relatively nominal fee. You could choose to reveal you're not interested in a lengthy expensive court battle with them or you could make it sound like you are angry and this is all you have to do with 100% of your time. Either mentality will send them a message, that's up to you.
The second option is to get litigious. Judging by your ccTLD (and awesome name), I'm guessing you are from Greece. Which means that you would probably have to hire a patent lawyer in your home country who can work with the Greek or European Patent Office in order to discuss your options. There should be channels through the WIPO that allow things like these to be resolved almost exactly like they're on a local level. I'm guessing your options are going to amount to two things. Either pursuing your own patent on the technology in order to invalidate IBM's patent or presenting your evidence of prior art to invalidate IBM's patent. The former probably more expensive than the latter.
Normally patents are only valid in the country they are granted but lately there have been intellectual property laws that have tried to extend patents on a global scale. Normally on this site people seem to be against this, often applying the logic of following their local laws when it suits them. Example: Pirate Party. But now we're so concerned if suddenly this is American company gets an American patent on a foreigner's work.
cursing patent trolls
Um, that phrase has a particular meaning, one that I cannot find in your story. Who did IBM sue with your patent? Did they sue you? Did they wait for everyone to adopt HeapCheck and then sue them? If anyone in this story is considered the patent troll, it's going to be you if you waited a decade before ligating against IBM.
I would take Bruce Perens' approach and try working with IBM first. It's the cheapest, most sensible way to resolve this. You're angry but you just said you had forgotten about that work for seven years. Was your intention to leave that concept in the graveyard until you died, getting angry should anyone try to profit from it or license it?
My work here is dung.
FWIW, your site wasn't cited by IBM's application, but by the USPTO examiner.
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=1&f=G&l=50&co1=AND&d=PTXT&s1=7552305.PN.&OS=PN/7552305&RS=PN/7552305
No kidding!!! What do you say at this point?
As with all patents read Claim No 1. It should contain the novel element, you cannot leave it for later. The "novelty" in this one is that you do not need to recompile the program the way original efence worked.
However, times have changed since the days of the original Efence and things are linked dynamically at runtime on all OSes which in turn means that any LD_PRELOAD-ed Efence like debugging library which relies on OS R/W page management to control access is prior art. It satisfies literally the requirements of claim 1.
I do not recall off the top of my head what valgrind uses, but I would not be surprised if it fits the bill. The original Efence does not - it has to be linked in.
Baker's Law: Misery no longer loves company. Nowadays it insists on it
http://www.sigsegv.cx/
Back in 1990, I redid the Borland Pascal memory allocator so each block was given its own hardware-protected segment descriptor and length. Worked magnificently, as any reference outside a valid block would immediately fault. Only prob, you could only allocate about 4000 blocks as there were only 4,096 entries in the hardware segment table. So the next refinement was to allocate each block with short pre and postambles set to $12345678 and check thee for overwriting periodically. Worked almost as well, if not so immediately finding the errors.
And no, I did not try to patent this, as I knew the Burroughs machines, since 1961, allocated a fresh memory-protected segment for each array, and using pre and post safety zones sure sounded like an "obvious" thing to do..