But I have yet to see a rational argument for why physical inventions but not virtual inventions should be patentable.
There are lots of clear rational arguments against software patents
Freedom of speech;
Software source code is a form of Speech; it is a method of communication from one programmer to another about mathematical concepts and their usage. Free software, in particular (though probably not most "Open Source" software) is often political speech. As such, under the UN Convention on Human Rights, the European Convention on Human Rights and the Constitution of the USA, it is the most highly protected form of free speech. Software patents attempt to interfere with that and are clearly criminal.
mathematics / algorithms
A program is; simply; a large integer. Running a program is, exactly running a series of mathematical operations on that large integer. Mathematics is explicitly recognised as non patentable in most patent regimes.
A similar argument can be stated in terms of algorithms. Software patents always claim a "method and aparatus". The reason for this that a pure algorithm is recognized as not patentable, only things with
the nature of software development
Software is developed differently from bridges electronics and other areas of physical engineering. In other areas we much more start with a design, apply known techniques and get to a given end. New forms of bridges come out of separate explicit research where prototypes are built and actual work is done separately from the development process. This means that advances come more slowly and explicitly from research to development. In software, every new software development effort includes and should include new ideas explicitly. Once these ideas are developed it is very easy to package them up into libraries and make them available. The same ideas are re-invented repeatedly. At the same time, it is almost unheard of for a software developer to benefit from reading a software patent. Finally, a bridge builder will probably take days or weeks to consider a single idea. A programmer will probably use a hundred patentable ideas in a single day. The only reason that the programmer is able to work at all is that software patents are a new idea so 99.9% of those ideas will already have been used by someone else. In other areas, a patent search taking several days may be done for every new idea.
- there is no need for patents because ideas are continually re-invented;
- software ideas are cheap; the loss of one single new idea is not a big worry
- patents do not provide the benefit they should to the software development process.
- software can be developed by home developers who can't afford patent lawyers.
- the cost of patents to software development is much higher than to other areas
- handling software patents properly would need 1000 lawyers for every programmer
I'm not nearly the first person to put these forward. If you haven't heard them before, then you might want to have a look at Groklaw, the league for programming freedom. There is a long list of reasons given on the end software patents web site.