The whole software patent storm has opened up again and is raining down on blogs across the Internet, folks like Stephen O’Grady over Redmonk and Tim Bray in his ongoing blog are trying to position and justify why they are against software patents, etc. and why the systems is broken. It is. As always, that bastion of rational thought on the process, and former colleague Simon Phipps has posted a blog entry with seven things he should be done to software patents, while we wait for nirvana.
I have no patents, I’ve deliberately taken a poistion not to have my name included on them when the opportunity arises. Of Simons seven proposals, most are very good, I really like the idea of Require sample code to be filed with the patent. However, I’m not comfortable with the ability to protect cleanroom implementations, for the same reason I’m not for software patents in the first place. While I understand you can’t patent an idea, once the idea, concept or feature is well enough understood even without access to the original implementation, it’s easy enough to sit down and reproduce it. And there lies the reason I’m against them.
I can literally claim to owe my technical career to being able to read someone elses source code. My first big break came from Stuart McRae, he gave me the source code to a Pascal compiler he’d written at Imperial College London, sometime around 1976. I learnt a number of things from it, not least it jumped started my programming career by giving me the chance to learn Pascal, which came in handy years later when the Borland Turbo Pascal compiler was the hottest thing on PCs. What followed for me was 30-years of innovation from mainframe I/O; terminal emulation on PC’s, client/server and on to the web, as I said when I left IBM “Standing on the shoulders of giants”, most of whom shared there source code with me.
Over the years my access to source code became an important, in fact I’d say fundamental part of my career, and many important implementations. However, I’m not confused about the difference between open source and patents, I understand they are two very different things, and that either one can live without the other. However, I would submit that where key parts of our infrastructure stack are based on open source, increasingly idea and design “pollution” is a real issue.
Where did the design come from?
I know that at least a couple of granted patents, that their design mirrors an earlier design. It uses different language, runs in a different environment, but ultimately does the exactly same thing. It copies the shared read-only, and shared-read/write memory designs from the VM/370 Operating System. Just this week I saw a perfectly good explanation of a concept, with a prototype model, which someone pointed out was almost exactly the same as another implementation found on the Internet with some careful searching. Would either of these been found as prior art? Probably not. Would someone implementing an idea even have a clue, with prior art searches, that the same idea and concept already existed in an operating system written 35yrs ago? Almost certainly not.
Now, I’m not accusing ANYONE of deliberate malfeasance or other wrong doing in the world of software. What I firmly believe is that in todays interconnected world, and with new generations bought up and taught by breaking down open source software, with lightening fast Internet access and globally defined search, it is nearly impossible to have an original idea in software. Now, of course you can’t patent ideas, only designs, and then, hopefully, turn those designs into product implementations.
Here is where the problem lies though. It’s all too easy to remember partial an idea or design in some form, to then have a “do over”, re-write and re-implement in a different software environment. Given the extraordinary breadth of the software industry, the vast number of programming languages, where the sometimes meaningless order of language statements and instructions is mearly pre-amble to the innovation, and the sometimes deliberately obtuse language used to describe innovations, how is anyone ever going to truly do an accurate “prior art” search?
And there’s the rub for me, and it always has been. Given a veracious appetite for knowledge, reading source code, how can I ever in good faith claim an idea and design were ever exclusively mine? How can we ever be sure, even with an exhaustive prior art search, that the design is ever actually new?
Defense is the best offense
Now, I also acutely understand a companies need to protect it’s innovation. Having been involved in a number of IP claims, at least one of which was from a patent troll and/or patent mining company, it is a scary and expensive process to defend. The best defense is to have a large portfolio which you can use as a hammer to crush any “nuts“. They say you are violating patents x/y/z – you turnaround and claim they are violating your patents a-w. This is a common game played out regularly it would seem in the software industry.
The big companies, to avoid endless mitigation, claim and counter claim, have a process to deal with this. They cross license each others patents either in specific or across the board. This works for even the fiercest competitors, it creates a dual dependency, or deadlock, while allowing them to cooperate on specific projects and sometimes, effectively locking out all others due to the combined might of the patent portfolio as well as the legal cost. Simon comes close to this when discussing injunctive relief and recovering license fees.
Clearly just declaring software patents bust is a step in the right direction, but it doesn’t solve anything. The real issue here how to protect companies both small and large, and how to move beyond simply wishing patents no longer existed. Simons proposals are a start.
However, I fear that they will come to little as companies look at the revenue and competitive threat that comes from the revocation of software patents and push back hard. It’s for that reason that I think that Simons item 2. Make them last no more than five years, renewable once (maybe, and only if used in products) – is the best, last hope. Lets declare that all existing software patents have a limit of 10-years from this year. New patents have a term limit of 5-years, and are renewable once, if as Simon says they are used in products. It’s a start.