- Keep it as a trade secret. You get one source for a product, and less innovation.
- Publish it and suffer the consequences of the big companies copying it and making profit on your work.
Let's take the funny example of Amzon vs B&N on the one-click system. Do you think Amazon would not use the one click system if it were unpatenable? In the case of modern software patents, keeping it a secret is equivalent to not using it all. Since you invented it in the first place, I find this outcome to be excessively unlikely.
You are also suffering under the misconception that a lone programmer or programming pair would be incapable of standing up to big markets with a software invention. If his invention is really worth it's muster, he can come out with a profitable product that blows big companies out of the water. I've seen it happen before.
Patents are (theoretically) a pragmatic compromise between 1) the benefits to society of having people publish their ideas, and 2) the drawbacks to society of giving someone a time limited monopoly on the exploitation of the idea.
For software I believe the drawbacks in general far outweigh the benefits. There might be examples of "nobody else would have thought of this within the patent period" inventions, but they are rare enough that it does not make sense to have special laws for those cases.
In the physical "better mousetrap" world the issue is different. The situation is similar to the Hacker News startup world in that ideas are plenty. However, the cost of productizing the ideas is high, and there is less of a first mover advantage, access to distribution channels is more important. So patents in the "better mousetrap" world protects not the idea, but the investment of turning the idea into a product. The drawbacks of patents here are also smaller, as you rarely build unrelated products upon the "better mousetrap", so the cost of a monopoly often stays limited to the specific market. Patents here might be a good compromise.
In medicine there is a similar situation in that many ideas are "free" from public funded research, but useless without the very expensive clinical trials. The patents basically protects the investment in clinical trials, and no so much original research. However the cost of patents is huge. People die because they can't afford patented medicine (which include initial cost for the clinical tests, marginal cost, distributed cost of failed products, and profit), even though they could easily afford the marginal cost alone. It would be good to get rid of patents here, but they must be replaced with another system to cover the cost of the clinical tests.
The argument you're making is basically that the system right now is broken, so we should just throw it out. I do agree that it's broken, but I argue that fixing the system is a better solution than throwing it out.
Do you honestly believe there is such a problem with sharing innovation in the software industry, that we need government intervention to encourage sharing?
if you have ever worked for a software company that has a competent legal department, you know that you must stay away from patents. under no circumstances are you allowed to communicate that you have looked at any given patent or even acknowledge the existence of a patent.
patents are treated with more fear than toxic waste in IPR sensitive businesses.
besides, if you don't publish and you do something clever, how long do you think it would take for the competition to figure out what you were doing? or for people in academia to publish something on it? or for some independent blogger with too much time on his or her hands?
I wish people would consider reality rather than some make-believe world that does not exist when thinking about patents. so much time, money and intellectual energy is wasted on this nonsense. not to mention that it is clogging up the courts with absolutely pointless legal battles.
we, as a society, have better things to do.
Let's take what I often here cited as one of the best software patents (personally, I think it is the worst.. but that's another story), RSA. Did that patent really prevent others from using/profiting on it? Hardly (although in most cases the "profiting off of" thing is a stretch, unless the explicit purpose of their product was cryptographic in nature.
Now, what if they had kept it a trade secret? Just look at their RC4. They kept it a secret and got a few years of exclusivity but eventually we all got the algorithm, because that's just how software works.
20 year exclusivity contracts are waaaay too long. I think the trade secrets route where "you have it until others figure it out" is far more fair and workable.
Also, hardly any secret can be kept for as long as a patent lasts.