You might think I'd be in favour of software patents, as I am the named inventor on a few myself. They were filed when I worked for a previous employer. However, I'm really not keen on them, for a number of reasons. I'll explain one of them here.
"Embrace and extend" is a phrase usually used derogatively when talking about software standards, but it applies well to a tactic that can be used for patents too. Let me tell you a story, which I was told as an anecdote and may not be true, but certainly could happen.
A company, let us call then Xenon, invents the photocopier and patents it. Another company, Argon, sees this idea, and thinks, "Hey, this could really be improved by adding a memory to the photocopier, that way every copy would be the same if you made more than one copy, and you wouldn't have to scan so often." Argon duly file a patent on their extension.
Now, the Argon can't sell a photocopier without licensing the patent from the Xenon. The Xenon would like to add a memory, as they think it's a fantastic idea, but can't add the feature without licensing the patent from the Argon. Both companies are pragmatic, and so decide to swap patents, knowing that no third company can compete with them, without paying for two patents. They both get well rewarded for their inventions.
You might think this is a fair outcome because they both invented something. Or you might think it is unfair, because the first company had the much more important idea. However, if the extension was so unimportant, the first company doesn't have to use it. The situation becomes much more serious though if the invention is software, and the first company doesn't patent.
Suppose I have a great idea for a piece of software - like a web browser. But I decide I don't want to patent it because I don't believe in software patents. So I release my web browser, but while it only supports text web pages. I'd like to have pictures and sounds though, so I say "soon I'll release a version with full multimedia pages."
You might see my web browser, and extend it by designing a way of loading images and sounds, and patent this extension. It will probably be very similar to the way I planned to add the feature, but that does not allow me to add the feature to my browser. How I was going to add images and sound was not public, and has not been done already. Even though I said I was going to include "multimedia", patents are always on a method or physical item, so I cannot claim prior art. If I had patented my web browser I could have trade the patent with you, but because I didn't want to patent, there is nothing I can do. I have to give up on having a full-featured free web-browser and cry.
Almost any good free idea can be taken over by this "embrace and extend" method. The big patent filers know this, and the standards set out by standards bodides are their favourite playground. Software is particularly vulnerable, because how it works can claim to be a trade secret. A good programmer can look at most programs and guess exactly how they work internally, but officially the code is not public, and so releasing software is treated very differently from selling a physical device. Anyone can take apart a physical device, but software normally comes with a clause against reverse engineering.
It would be fantastic if there was a cheap way of making a software idea public, with a GNU style copyleft, so that any extension of the idea would have to be allowed free use as well, but I cannot see any practical way of making this happen. Never mind - just keep lobbying against software patents.