I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

April 11, 2007

The Pernicious Issue of Software Patents

A reddit user recently invoked link necromancy on a 1994 Donald Knuth letter to the U.S. Patent Office:

When I think of the computer programs I require daily to get my own work done, I cannot help but realize that none of them would exist today if software patents had been prevalent in the 1960s and 1970s. Changing the rules now will have the effect of freezing progress at essentially its current level. If present trends continue, the only recourse available to the majority of America's brilliant software developers will be to give up software or to emigrate. The U.S.A. will soon lose its dominant position.

Please do what you can to reverse this alarming trend. There are far better ways to protect the intellectual property rights of software developers than to take away their right to use fundamental building blocks.

You have to respect the opinion of Donald Knuth, because he's our homeboy.

Knuth is my Homeboy

Still, opinions vary. The software patent debate merits an entire Wikipedia article, and the ensuing comment debate on Reddit represents plenty of opposing viewpoints.

Paul Graham, surprisingly, thinks software patents don't matter:

I'm not saying secrecy would be worse than patents, just that we couldn't discard patents for free. Businesses would become more secretive to compensate, and in some fields this might get ugly. Nor am I defending the current patent system. There is clearly a lot that's broken about it. But the breakage seems to affect software less than most other fields.

In the software business I know from experience whether patents encourage or discourage innovation, and the answer is the type that people who like to argue about public policy least like to hear: they don't affect innovation much, one way or the other. Most innovation in the software business happens in startups, and startups should simply ignore other companies' patents. At least, that's what we advise, and we bet money on that advice.

Paul Heckel goes so far as to say responsible, rational use of software patents may actually encourage innovation:

In brief, what superficially looks like another problem to be dealt with in the increasingly competitive, commodities oriented software business, will prove to be what makes products less price competitive. Many industries have worked on this basis all along: patents make industries more diverse in their offerings, more profitable, more innovative, and ultimately will make the U.S. more competitive.

The essence of this article is simple: Software intellectual property issues are not inherently different in substance from other technologies; what motivates people is not inherently different; industry life cycle is not inherently different; marketing and business strategies and tactics are not inherently different; the law and policy issues are not inherently different. The technology is not even new. Software has been around for 40 years. The issues may be new to those who had no experience of them, but the only thing that is different is that software is a mass market industry for the first time and real money is at stake.

As much as I respect Knuth, I have to agree that the problem with software patents isn't the patents themselves. It's the sloppy, haphazard way the patents are granted and enforced. If anything needs reforming, it's the U.S. Patent Office.

Posted by Jeff Atwood    View blog reactions
« Usability Is Timeless
Twitter: Service vs. Platform »
Comments

I think software patents can help protect the "little guy", or at least a preliminary patent registration while they get their idea out into the marketplace.

And yes, the USPO can use some refomation.

Steve on April 12, 2007 10:55 PM

we're steadily getting to a phase in the technology sector where everything is patented and companies have to spend thousands just to make sure that their ideas haven't been thought of (and patented) before.

IP squatting is going to be the end of the little guys. I'm in Europe. No software patents to be seen.

Patents on software don't actually release anything into the public domain. Reverse engineering is so easy that a child could do it and see what makes something tick.

I think a lot can be learnt from the OSS movement in this respect. Open code, no secrets and moving faster than any of the other desktop operating systems. Go figure.

Oli on April 12, 2007 11:40 PM

One thing you shouldn't be able to do is to take a patent and then sit on it, there should be a clause that says that you need to use it within a certain time or sell it to someone that will use it.

Today there are companies that actually live on buying patents and then go after the big corps with lawsuits.

I have no problem with software patents if there would be such a rule built into it.

GH on April 13, 2007 12:40 AM

Actually, the current Patent process in regards software is more against the "little guy" than you would think; especially when clearly obvious (and unoriginal) patents are used as a club to whack them out of business.
And if you're a "big guy" company and a patent is in your way, the old trick of "stringing out the lawsuit until you crack" is easily applied. Deep pockets win those cases, not patents (or for that matter, the law).

The current style is to make the wording so wide and far-reaching, that even a patent for a mobile device can be easily applied to software without changing the context of the Patent (take the Microsoft double-click/delay-click patent for example).

Brandon on April 13, 2007 1:17 AM

As I understand it from my University days, in the UK, a Patent can be granted even if it isn't valid. That is, it can be granted even if there isn't an aspect of 'innovation' that isn't obvious to a specialist in the field. And that's not unreasonable - you can't expect the patent office to be expert at everything, and the language in patents is often, well, obfuscated.

So if a patent holder believes that a patent has been infringed, they can take the matter to court. Here, the judge decides if the patent is valid, if it has been infringed, and what measures are to be taken (if any).

The problem is, litigation is expensive. It seems that some companies holding the patents on fairly basic technology (e.g. http://www.chillingeffects.org/ecom/notice.cgi?NoticeID=537) will demand money from others, but aimed at a cost that is less than litigation would be. This is either a protection racket, or a mugging. Only large companies can afford to fight such cases.

I mean, off the top of my head, there have been patents claimed for online shopping baskets, one-click buying, linked-lists, gif compression (I mean, run length encoding - come on!), online advertising, browser plug-ins... ...the list is massive.

Fair patents, for genuinely innovative ideas - fine. But otherwise, the only answer I see is that costs of litigation can be passed back to the patent holder, if the patent is judged to not be valid.

Of course, everything we write is covered by copyright anyway...

Andy on April 13, 2007 1:36 AM

Wow, lots of links, no original argument, and a random opinion at the end. Great!

Stephen on April 13, 2007 2:32 AM

*cough*SCO*cough*

Oli on April 13, 2007 2:36 AM

Stephen, you are free to share your visdom. Right now you just come off as being stupid.

GH on April 13, 2007 4:08 AM

Am I the only one who thinks that patents per se are wrong?

I think patents were started as an act of charity, to help the little guy grow. But now it's abused to the extreme.

Why oh why should I stop making something because you thought of it first? there is no rational argument for that. Patents were started to help the little guy survive "the big fish", after that it's his problem to survive in the market.

CapitalT on April 13, 2007 4:22 AM

If you have the patience/interest for a lengthy academic article dissecting software patents in detail, have a look at http://ssrn.com/abstract=959931 .

B on April 13, 2007 4:36 AM

I work for a very small software company (our R&D dept is four people). We have to spend money to get software patents to protect us if somebody were to attack us, so we could try to cross-license patents instead of simply being destroyed. Even so, we would probably be destroyed. The simply fact is that the existence of Software Patents ensures that any of the major players could demolish us with their patents whenever they chose to do so. It's not possible to write an application without violating patents of the big software companies (and some patents of patent trolls).

Software patents only cost us money and security and don't give us anything in return.

Software patents don't need to be fixed. They need to be taken out, shot, and then their heads need to be chopped off and wooden stakes need to be driven through their hearts just to be sure that they can never come back.

LKM on April 13, 2007 4:51 AM

Paul Heckel puts lots of baseless oppinions there:

"what motivates people is not inherently different"
Agree with that... But:

"industry life cycle is not inherently different"
Yes, it is. There is no way he didn't notice that the software indutry lacks an industrial facility.

"marketing and business strategies and tactics are not inherently different"
I can't say they are not inherently different. But they are currently very different. Most software sells because of lock-in, most consumers don't know what they are buying before the payment (and I can't see how they could) and hardly evaluate the concurrent options (since they know none of them, not even the one they are buying).

"the law and policy issues are not inherently different"
Software is protected by copyrights, and can be copyied by near nothing. How can he ignore that?

"The technology is not even new. Software has been around for 40 years."
Ok, maybe he thinks that 40 years is enough time to a society adapt to anything. Hint, the French Revolution created a "fast" instability period of more than 70 years until society stabilized. The Industrial Revolution happened through centuries (people disagree on the details). Society can adapt to most (small) changes on 40 years, but I really can't agree that software is one of them.

Marcos on April 13, 2007 4:55 AM

I'm not well read on this, admittedly, but from my point of view...

The problem isn't patents in general. It is the misapplication of patents to ideas that many people could have done. One of the basic principles in assigning a patent is that the average person in the industry could not have thought of it. But that principle seems to be ignored. Instead, people get patents for being first, not for being brilliant.

The second problem is people trying to get rich off patents. There is no reason a patent holder cannot just say, "Sure go ahead and use it... just give me credit."

I'd suggest two simple changes to fix things:
1) Disallow software patents on any technology/platform less than 5 years old. That gives everyone time to work with it, and develop it. THEN if you can revolutionize it more than everyone else has in years, get your patent.
2) Put a cap on licensing fees to use a software patent, and require patent holders to allow usage. I do think it is fair for brilliant programmers to gain from their work. But not at the cost of stifling others. Just a few hundreds dollars perhaps. And the money should go to the programmer, not their corporation. Corps make enough money already.

Dave on April 13, 2007 5:37 AM

Those people saying patents were made to protect the little guy, you have to realize that this was never the rationale behind patents. Not now, not ever.

Patents were never supposed to be used as "proof" that "I thought of it first" for the sake of litigation. They were meant to encourage people and businesses to share their ideas for new inventions (so others could build on them), while still getting credit for the idea. In other words, they could make the information public while receiving protection against the possibility of any dummy - who would never have thought of the idea themselves - blatantly stealing the idea.

That worked for a long time, but in today's overly litigious society people eventually realized that they could get absurdly generic patents approved in order to stifle the competition. In a sense, patents have become more like copyrights than what patents were originally meant to be. And then you have these patent farms gaming the system, making an entire business out of hoarding them and suing everybody who comes up with anything even remotely similar. With software this becomes ridiculous because there are always 50 different ways to accomplish the same task; patents usually describe functional specifications and basic design, but in software, the real meat is in the implementation.

I'm not sure how the litigation works now, but I think that if a patent is ever struck down in court because it's too generic or not novel, the plaintiff should be required to pay for all the legal fees, plus any damages incurred to the defending individual/business as a result, plus punitive damages if they're caught doing this more than a couple of times.

Aaron G on April 13, 2007 6:15 AM

Mr. Bambrick over at SecretGeek comes at this from a different angle. It's one which I think is very important, and is probably one of the key reasons that Mr. Knuth held the position he did on software patents.

http://www.secretgeek.net/knuth_patents.asp

The argument is based around the idea that a software algorithm is essentially just math. I think Knuth's Pythagorean Theorem analogy is a great one, but I also think that offering such a simple example is just asking for it to be dismissed as ridiculous.

I think a much better example might be to consider what would have happened if Newton and/or Leibniz had been allowed to patent the algorithms for calculating integrals or derivatives. It's not as trivial as the Pythagorean Theorem, and yet without it, we'd probably never have made it through the industrial revolution.

WaterBreath on April 13, 2007 7:19 AM

re: "Why oh why should I stop making something because you thought of it first?"

Because otherwise, when you, the Small Up-And-Comer, invent the Next Big Thing, I, the Fancy-Pants-Corporation, can just steal your work (if you are very lucky, I might buy one or two to reverse-engineer), get one of my factories to crank out a few million copies, and bury you in the dust.

Congratulations, you've just given me free R&D.

That's the point of patents, folks - to make sure that the person who invents the Next Big Thing actually benefits from it.

Allen on April 13, 2007 8:00 AM

> That's the point of patents, folks - to make sure that the person who invents the Next Big Thing actually benefits from it.

That's not the _point_ of patents. That's the method used by patents to achieve their true end: Getting information into the public domain.

The problem with not having patents is that there's no expiration date on trade secrets.

WaterBreath on April 13, 2007 8:08 AM

The current problem isn't with patents... that's a philosophical discussion for another day. The current problem is patent abuse. Plain and simple.

USPO grants countless far-reaching, incredibly obvious, vague patents to Fancy-Pants-Cos with big lawyers. Trolls with small lawyers and even smaller R&D find obscure loopholes, patent them, then sit and litigate. The small guy with no lawyer invents something new, patents it, then is buried under the legal costs of defending that patent.

Fahgetabout patents as an *idea* for just a sec. Because the patent *system* is broke - and broke bad.

CuRoi on April 13, 2007 8:15 AM

I see a lot of arguments about the consequences of patents, good and bad, but not any real principled arguments. I'd like to make that here.

One of the principles involved in patent law is whether the item being considered for patent protection is a creation or a discovery. That is, is this thing under consideration a unique product of human creativity, or is it simply a discovery about the underlying nature of the universe that would have come about eventually anyway.

This question goes to the heart of what software development is: is it an engineering discipline, or is it applied mathematics. Engineering is full of patents, mathematics is not. There's no absolute answer, and different kinds of software probably fall in different spots on the spectrum, but my experience tells me that software is more applied mathematics than engineering.

Take patterns for example; although we look at the Gang of Four as having documented the design patterns, do we consider them to have invented them? I certainly don't. This doesn't detract from their work, any more than it detracts from Isaac Newton's work to say that he didn't invent gravity.

Engineering is the application of the principles of nature. A piece of software (as opposed to software in general) is also the application of the principles of nature, in the sense that it's applied mathematics (which no one, save God, can claim to have created). As a piece of engineering can be patented, but not the principles upon which it was based, so it seems that a piece of software should be protected thusly, but not the principles that allowed it to be created. This kind of protection exists in the form of copyright.

So it comes down to player b not being allowed to copy reams of code from player a, but if player b can examine the behavior of the application, whether through decompilation or external instrumentation, it should be fair game.

Chris B. Behrens on April 13, 2007 8:24 AM

> The argument is based around the idea that a software algorithm is essentially just math.

I'm not sure I agree with that. Maybe in the strict case where you are talking about a single algorithm, but many software patents cover a larger set of functionality in the software.

http://www.codinghorror.com/blog/archives/000298.html

--
With math, and I’m not talking about the crazy number-theory math philosophy “Do numbers really exist?” side of things, but with the applied stuff, there are correct answers. You’re either correct or you’re incorrect.

With coding, the best you can hope for is to do something well. With so many different ways to effect a single outcome, it’s up to some very right-brained sensibilities to determine if you’ve met your goal, as there isn’t anybody (except [another more experienced developer]) who can tell you if you’re right or not.
--

Jeff Atwood on April 13, 2007 8:27 AM

Jeff, from post #298 which you just linked to...

> Unlike math, software can't be objectively, formally verified to be correct.

Respectfully, I think Mr. Knuth would disagree with you. In fact, one of his more famous quotes is "Beware of bugs in the above code; I have only proved it correct, not tried it."

> many software patents cover a larger set of functionality in the software

I can see an argument for this. But that's not how a lot of software patents are being used.

This is obviously a complex issue, and I don't think any of us has "the right answer" at this point in time. Law relating to patents, copyrights, trade secrets, took centuries to evolve to the point it has. But art and mechanical inventions have been around for centuries. Software, on the other hand is only about 60 years old. It is a _new thing_, both very alike and very different from both art and machinery. And it's going to take us, as a society, a long time to get the related laws right.

WaterBreath on April 13, 2007 8:47 AM

You can't patent creativity or code.

I'm patenting this line of code so no one else can ever use it!

string data = string.empty;

Most systems I worked on never had much documentation anyway, so how are you going to patent that??

Ideas shouldn't be patented, they should be kept secret until the implementation of the idea is produced. Implementations, I can see patents on that, but the innovation has to be documented.

You shouldn't be allowed patent something like Google, Online Checking or Amazon because even though they are products, what they really are is services and if someone else comes up with a better way to do Internet Search or do Online Checking your company will just have to deal with it and innovate a new solution.

If the US patent office is allowing for silly patents, then I agree it need to be reformed.

You can patent machines, designs or methods

Jon Raynor on April 13, 2007 9:31 AM

There's one other issue that people have missed: whether you love or hate software patents, startup companies will almost never get substantial funding from inventors unless they have patents (pending or issued).

Venture capitalist firms, in particular, demand patents. Otherwise a big company can come along, rip off the little guy's products, and the investors are left holding a worthless company. If the company doesn't have patents that protect its products, it will almost never get funding.

No funding and the company will most likely dry up, or scrape along but not hit it big. I'm sure there are exceptions to this rule, but it's much harder to get investors without some way to protect your new product.

The bottom line is that even though the people in the trenches (the coders) tend to dislike software patents, many of their jobs depend on them.

Robert on April 13, 2007 10:05 AM

Sorry, typo... substantial funding from "investors."

Robert on April 13, 2007 10:08 AM

I have seen a lot of discussions saying patents are broken,stifles innovation but the discussions so far have been pretty short on fixes. I really havent seen any pragmatic approaches that even begin to stem the abuses of the current system I can think of several things that the USPTO needs to do:

0) public comment period after the initial due dilligence of the patent examiner to determine if there are other sources of prior art before allowing the patent.

1) use or lose it. either by filing a business plan that demonstrates intent to exploit and commercialize the patent.

2) licensing arbitration. to prevent abuse in setting patent fees so high as to stifle innovation or cause crib death to start ups. either via cross licence agreements or sliding scales on compensation.

I am sure there are detractors of this but we certainly need to do something rather than nothing but whine about it.


Mike Johnson on April 13, 2007 10:51 AM

Those who think that patents hurt the little guy or that without patents you won't get investors fail to see the fact that most businesses are not new or innovative at all. The best way to make money and be successful is to simply do what has been done before but do it better. You don't need patents to make a hamburger. And you don't need patents to create basic CRUD applications. And both can make you millions if you simply do them well. Granted, you won't get any attention from the likes of Paul Graham. But then again, who wants that anyway?

Companies and their investors who stake their money on the presence of patents or on coming up with something new and novel are usually the one's that fail miserably.

Matt on April 13, 2007 11:14 AM

I tell you what, what programmer do you know that hasn't stolen code (leaked or provided for non commercial use)? I have, and for commercial uses. If I can find it and not have to write it myself, I will use it... That is the porogrmmer's way, am I right?

Jeremy on April 13, 2007 1:53 PM

Uhh.. no I don't think that is the programmer's way. Most of the code I have to sift through is complete crap, I don't trust any code unless I wrote it. I hate when I have to fix something or redo something someone else wrote, it is always garbage.

Ryan on April 13, 2007 3:02 PM

The idea that patents protect the "little guy" is just false. One need only look at who gets the most patents to determine that. I deal with patents a great deal, and let me tell you than MANY patent attorneys won't even deal with "the little guy" because their expectations are entirely unrealistic. (Case in point, here in Chicago a month or so ago, one of the "little guys" was so pissed off about his lack of success, he burst into the attorney's office and shot a bunch of people.)

The idea that the little guy having a patent prevents Big Mega Corp coming along and reverse engineering your patent and screwing you is also almost always completely false. A good patent lawyer can string the "little guy" along for years, until he bankrupts him, or more likely settles in a completely unbalanced way. Often, I might add, that it is a lot of work for Big Mega Corp to reverse engineer (both the item and the production process) so Big Mega Corp buys out the "little guy." In doing so, he buys the method, the product and the IP (which he then uses to squash the next "little guy")

Patents, despite their reputation do nothing for the little guy. The number of "little guys" who made their fortune off one patent is very, very small. The idea of Uncle Joe working in his garage to discover the next big thing, then patenting it and making a billion or two is a romantic wrongheaded notion, that again, almost never actually happens.

Patents are a tool for big guys to squash medium guys (who don't have enough patents of their own to protect themselves with cross licensing deals.) Patents are also a tool used by dying corporations (or corporations that should die) to try to survive a little longer. Patents are also tools used by big guys to hamper competition from other big guys (not stop it, because patents aren't strong enough to do that.) Patents are finally a tool used by patent trolls to drain the blood our of our economy.

Despite their original intent, patents do not encourage innovation. Just recently, the GAO (hardly a shill for the anti patent movement) released a study that indicated that the poster boy for patents, the drug industry, had their innovativeness significantly decreased by the patent laws.

There is nothing positive about patents of any kind, and software patents are the worst kind of all. They are a Damoclesian sword hanging over the heads of every innovative start up in the country.

JB on April 13, 2007 3:06 PM

On the matter of principle, sure patents seem justifiable, but their application is so bad the only option most people see is to scrap the whole system.

It sure looks like the problem is the USPTO, but while I think they could do a better job, they're fighting a losing battle. Firing every USPTO employee and replacing them with 5 times as many examiners, every one 5 times as smart will make things better. But it will still suck.

If you want software patents to survive, you have to change the system the USPTO supports and is supported by. I don't think it's a little tweak here, or there of wait times, injunction limitations, filing costs, etc. You need some new options.

A little under a year ago I was thinking on this topic, and had two such ideas. Everyone I've talked seems to think they make sense, but thinks no one would ever agree to them. I disagree however. It's hard to break past that initial barrier with unconventional ideas.

Anyhow the first idea, was to setup the system so that most patents would be severely limited, and thus the impact of a mistake by the USPTO limited. If that sounds interesting, the whole idea is at:

http://ryan-technorabble.blogspot.com/2006/07/why-we-need-multi-tiered-patent-system.html

And the other one was to make a concerted effort to bring patents back to the public domain, while compensating the patent holders. You can find the rest of the idea at:

http://ryan-technorabble.blogspot.com/2006/07/why-national-governments-should-buy.html

Ryan Baker on April 13, 2007 7:03 PM

The patent office is much slower than the rapid pace at which software progresses. How can you expect them to be aware of all the prior art and know whether to grant patents to software or not?

Algorithms could not be patented originally. What could be patented are mechanical "embodiments" of these algorithms. Then recently new patent categories opened up such as the method patent. Now we can patent one-click technology, YAY!

Companies should compete on what they offer to people, not prevent others and form effective IP monopolies. Squatting IP is now possible, in fact pretty lucrative if done right. Kind of seems like Standard Oil and AT&T back in the day.

GregMagarshak on April 13, 2007 7:48 PM

I LIKE THE IDEA OF SOFTWARE PATENTS LASTING 2-3 YEARS INSTEAD OF 17.

Let's talk about THAT!

(btw it wasn't my idea originally, but I forgot to attribute it to)

GregMagarshak on April 13, 2007 7:49 PM

I don't really like the solution that I am proposing, but I think that it is the most workable given the situation:

Make patent duty like jury duty. However instead of opening it up to all citizens open it up to all engineers. Got a new mechanical device? You're going to have to defend it in front of a jury mechanical engineers. The question then becomes, do we ditch software patents or do we license software engineers? Licensing software engineers wouldn't mean that everyone has to be licensed. We could have Computer Scientists as scientists, Software Engineers as engineers, and umm script kiddies to write boilerplate for web stuff.

Tom on April 14, 2007 2:50 PM

Why does a patent for organic dust compression last as long as a patent for one-click buying?

GregMagarshak on April 15, 2007 11:59 AM

In Australia you can not patent software under the Australian regulations. (Nor ideas, concepts etc. etc.)
Therefore we have to rely on Copright© which is adequate for small developers but doesn't protect from overseas too well.
We still suppose to pay all these american companies countless thousands if we infringe on their so-called patents, like clicking a mouse, having a button etc etc.
This in turn has created a very insecure and secretive industry in Australia. I'm working on software but can not even release a demo of it to the open world in fear of someone stealing my ideas, and patenting them.
Thanks to the American Patent legislation many small and individual developers can't afford to offer new software in fear of repercussions.
Control should be on the physical code and not the idea. This garbage of patents for mouse clicks, and on screen buttons etc is purely done to limit future development by other companies.
Companies should be promoting and endorsing their new developments and striving for creativity and advancement, not locking everything away.
Money should be in the code, not the idea! Ideas are free!

Dazza on April 16, 2007 3:11 PM

> Unlike math, software can't be objectively,
> formally verified to be correct.

This from the guy who thinks experience can make up for education :-)

You're wrong, of course.

LKM on April 17, 2007 1:03 AM

I too am in the Reddit wormhole. I always knew you were a redditer. You seem to hit many of the topics there on this blog. Its quite a unique set of people there.

ryan on April 17, 2007 1:15 AM

Software patents do no good, and in fact do harm. See this video for an explanation:

http://video.google.com/videoplay?docid=6390784544771380326

Bottom line, the only people software patents benefit is big companies with lots of money, and they don't need the benefit anyway, and they hurt the small guy very badly.

AndyCR on April 18, 2007 6:08 AM






(no HTML)


Verification (needed to reduce spam):


Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.