Althoug it dates back to 2001, this speech by Richard Stallman on software patents has been recently referred by some legal and technology news sites (groklaw.net) and explains some of the fundamental basics any software engineer should know when thinking about how damaging the patent system is to his/her job. As the speech explains, the mainstream discourses about how convenient and useful the patent system and how nicely it allegedly “protects” software, are crafted by parties with vested interests in the system (usually patent lawyers or patent office bureaucrats or big corporations with an army of lawyers and legal counselors).
There are many interesting points:
-If you embed a patented algorithm into a popular format, then it might be near to impossible not to infringe a patent (the speech exemplifies this with the UNISYS-patented LZW compression algorithm used in the GIF image format). Keep this in mind when considering the dangers of proposed formats and technologies such as MSOOXML, Moon/Silverlight and .mono/.Net.
-Patents waiting in the pipeline for aproval are not publicly disclosed for at least 18 months, so any project could be in danger without the developers even being able to know it.
-Simple concept algorithms are being allowed to be patented with a wording totally unrelated to the idea and field they are intended to cover. So the information of the patent that is publicly available is totally useless for innovators, and are interpretable just by lawyers involved in the patent business:
Now, a few years ago somebody had a US patent - may be it's expired by now - on natural order recalculation in spreadsheets. Now, what does this mean ? It means the original spreadsheets did the recalculation always from top to bottom. Which meant, if a cell depends on a lower cell, then it wouldn't get recalculated the first time. You have to do another recalculation to get that one. Clearly it's better to do the recalculation in the order, you know, if A depends on B then do B first and then do A. This way a single recalculation will make everything consistent. Well, that's what the patent covered. Now if you search for the term spreadsheet you would not have found that patent because that term did not appear in it. The phrase "natural order recalculation" didn't appear either.
This algorithm, and it was indeed the algorithm they covered basically every imaginable way of coding this algorithm. The algorithm is called topological sorting and that term did not appear in the patent either. It presented itself as a patent on a technique for compilation. So reasonable searching would not have found this patent but it would have been a reason to sue you. In fact you can't tell what a software patent covers even roughly, except by studying it carefully.
This is different from patents in other areas because in other areas there is some physical thing happening and the details of that physical thing usually give you a sort of anger so that you can tell whether it relates or not. But in software there is no such thing and so it's easy for two totally different ways of saying something to cover, in fact, the same computation and it takes careful study to see that they cover the same one.