Before patents we had the guild system, essentially secret societies that wouldn't share their skills, designs, or processes, and intentionally obfuscated their work. Patents were part of a program of reform that in part led to the industrial revolution. If instead of patenting the early steam engine designs each inventor had formed a secretive guild, worked in isolation, and produced intentionally convoluted designs, where would we be now?
Patents are a lottery system that rewards some inventors for publishing their designs, but has the effect of encouraging everyone to publish their designs in the hope of winning the lottery.
The problem with our IP law is that it is maladapted for the information age. Copyright, in particular, is the wrong kind of protection for software (which is machinery) especially since it is used to protect binaries and not source code (which is instead kept secret, meaning that copyright has the negative impact of creating monopolies without the offsetting positive impact of creating public goods).
Patents would be almost perfect for software if the patent required provision of working source code -- the ridiculous language of patent law exists because expressing the precise workings of machinery in words is difficult -- not so with software.
If software patents included source code, it would accomplish the goal of patents (making public goods) and make identifying infringement less arbitrary (and probably even establish stronger arguments for obviousness and prior art). "oh this algorithm is provably isomorphic to this trivial lisp expression, so yeah it's obvious."
Having software patents include source code is not a bad idea, but I don't think it would address the most serious problem.
The big problem, in my view, is that the obviousness bar is just way too low. The reality we have today is, the first practitioner to think of a given problem can straightforwardly produce, using standard techniques, a solution to that problem, and patent it. It's considered an invention because the solution, let's suppose, didn't previously exist, but that's only because no one had attempted to solve that particular problem before. The patent teaches nothing new; another practitioner, unaware of the patent, coming upon the same problem, is likely to solve it in a similar way and with no great difficulty.
I'm not saying all software patents are in this category, but I think the great majority of them are. And the reasons are not hard to find. First, software is, by its nature, a fantastically generative medium. All that is required to build a machine of any degree of complexity is to write down, in the mathematical formalism called "code", a sufficiently precise specification of how that machine should work.
And secondly, as has been lamented many times, when the PTO first started to grant patents on software under orders from the U.S. Supreme Court (in Diamond v. Diehr), they had no software experts. Even now, as I understand, they tend to hire new graduates who have little industry experience. What's more, patent examiners have no incentive to reject patents on the basis of obviousness; that's not how their performance is measured.
These two factors together are a recipe for disaster.
I think including source code in patents would (a) achieve the goal of creating a public good, and (b) provide a concrete mechanism for gauging prior art and obviousness. We already have tools for detecting plagiarism in computer science assignments.
Of course a patent application could include obfuscated code, but if the obfuscation were effective then it would be unenforceable -- oh the irony. (my new implementation is much more efficient...)
I agree with your points, but I don't see that they actually detract from what I propose relative to the status quo.
Patents are a lottery system that rewards some inventors for publishing their designs, but has the effect of encouraging everyone to publish their designs in the hope of winning the lottery.
The problem with our IP law is that it is maladapted for the information age. Copyright, in particular, is the wrong kind of protection for software (which is machinery) especially since it is used to protect binaries and not source code (which is instead kept secret, meaning that copyright has the negative impact of creating monopolies without the offsetting positive impact of creating public goods).
Patents would be almost perfect for software if the patent required provision of working source code -- the ridiculous language of patent law exists because expressing the precise workings of machinery in words is difficult -- not so with software.
If software patents included source code, it would accomplish the goal of patents (making public goods) and make identifying infringement less arbitrary (and probably even establish stronger arguments for obviousness and prior art). "oh this algorithm is provably isomorphic to this trivial lisp expression, so yeah it's obvious."