By Jack Ganssle
Brave New World
Published 3/302005
Your code is utterly bug-free. It's structured beautifully with low coupling and strong cohesion. Maintenance is a breeze and management is awed with how quickly you add new functionality. You've built the perfect software product.
Until the lawyers arrive.
Ohmygod - the compiler's runtime package uses copyrighted material purloined from a litigious outfit that just can't make money on their products, but who reap millions from pursuing cases of patent infringement. The cease and desist letter has brought production to a halt while your CEO looks for scapegoats and furiously negotiating with the "victim." The court orders a remedy that shutters the business and puts 200 people out of work.
And it's your fault.
I was sort of amazed when a reader recently asked for permission to use a little 50 line bit-banging UART program I'd published in 1991. But nothing on the web site said the code was in the public domain, though I'd assumed it was, so he, acting with admirable honor, solicited permission before adding the snippet to his product.
If only everyone were so forthright. More than a few outfits have been caught in recent years trying to turn GPLed code into proprietary firmware, which suggests many more as-yet-undetected violations exist.
Yet open source is the easy part. Furtively stashing Linux into ROM, at least you know about the violation. But what if your code infringes on some obscure patent that IBM or Microsoft filed decades ago? Can you be sure that all purchased software components are clean?
Software patents, trade secrets and IP may turn our industry into a wasteland. Innocent infringements will be the norm if the current mad rush to patent every minor tweak to an algorithm continues.
Don't get me wrong - patents, trademarks and trade secrets are crucially important tools that enhance innovation. But the rules have changed. When the big three automakers infringed on the intermittent windshield wiper, well, it was pretty easy to see the violation. Now patents cover tiny elements buried inside hugely complex systems. An awful lot of these are by no means novel, so will get reinvented by many teams many times. Yet the patent owner holds all of the aces.
How will we balance the need for IP protection versus the US's hugely litigious society? What tools will we need to ensure that our code is squeaky-clean and immune from infringement suits?
Will IP vendors - and even companies supplying compiler runtime packages - have to certify their code is clean? It's hard to imagine that happening, as it essentially moves the legal liability onto the vendor's shoulders. That doesn't happen much in the embedded world. Check IC datasheets - most explicitly say the products shall not be used in life-critical applications. The manufacturers in no way want to be held liable for, well, anything.
Eric Raymond of the Open Source Initiative recently (http://www.linuxinsider.com/story/40752.html) suggested that developers should do enough review of the code to show - and document - that the company at least tried to not steal IP. and then ignore the problem unless/until you get sued. Few businesspeople treat big risks so cavalierly. Just wait till a few big awards appear. The CEOs will panic. Something will change.
Extreme Programming mandates peer programming. Two developers share a single computer. One types while the other audits and thinks strategically. Perhaps in the Brave New World of programming one of the peers will be. a lawyer.
What do you think? How will software patents and other forms of protection change the industry?