Software development as a research activityBernard Lang, INRIA, France
The most illuminating paradigm to understand software is the Curry-Howard isomorphism (1980). It essentially states that there is no difference between a mathematical theorem and a program specification, nor between a program (for a specification) and a proof (for a theorem). This, of course does not tell the whole story, since the uses of mathematics go beyond proving theorems, and uses of programs, in information systems for example, go beyond mere programming. However, keeping this correspondance in mind is a good guidance for consistent thought.
The kinship between software development and mathematical development led me to the belief that software development is a form of research activity. Indeed, it is now well understood that free software development does follow the general pattern of research activities: construction of models, cooperation and competition between actors, and peer evaluation. In the same way that scientific theories are regularly updated and reorganized, programs have to be regularly reorganized from scratch to take new knowledge into account.
Questionning the sustainability of the free software model seems, in this light, faintly ridiculous. The model of scientific research has proved its effectiveness over centuries. Actually, one should rather wonder whether the proprietary model is sustainable, and effective.
If free software and proprietary software can coexist, this is not a major issue. One will do whatever the other will not. And darwinism (aka market forces in various guises) will strike an economic balance to hopefully make both contribute. Indeed, while research needs freely exchanged information to progress effectively, many people think that occasional restrictions to that freedom lead to more needed investments in some expensive research areas. This is typically related to an argument commonly advanced to justify the need for enforcing patents, even when it is clearly unethical (patents on drugs). Copyright can ply that role too.
The economic and technical characteristics of software hardly justify such economic arguments for software patenting, according to many authors. But this is not a point I wish to discuss. A greater worry is that the existence of patents may altogether stifle computer software research.
Some reasons for that are also encountered in other fields. Typically, the monopoly exercized by Myriad Genetics on cancer genes detection will prevent all other laboratories from collecting genetic data on this topic, and hence may kill or render ineffective a sizeable part of the research in this critical area. A similar effect is more to be feared in software, because the economic laws of proprietary software production tend to create strong monopolies. For many software applications, there is not effective research without a community of users, and possibly a widely used technical infrastructure. If one company has a total monopoly on some families of applications, it will prevent any research this company does not condone, hence limiting the research and the areas explored.
Free software has proved to be the only known way to reintroduce some competition in the software development market. However, free software cannot sustain the economic distorsions caused by the extension of patenting to software. Unlike other industries, the legal costs of patenting, and even more of patent litigation, are exceedingly high compared to the cost of (free) software development. By eliminating free software, software patents become a threat to software research and development.
It is our belief, following the above Curry-Howard argument, that no clear distinction can be made between software research and software development. But even assuming the existence of such a distinction, the fact that any software that is distributed can be subject to patent infringement suit would be too much of a risk for software researchers, who need, as they have in the past, to publish their programs for peer trial, assessment and/or cooperation.
There is another issue in free (and proprietary) software that, although often talked about, is largely unsolved : the reponsibility of the author (or distributor) for malpractice, if it turns out that the software contains bugs or other mistakes that cause damage to a user. Much software in actual use being also produced by research, this danger is not acceptable since the activities of elaborating new technology and of ensuring its appropriateness for any purpose should be separated, as they generally are in engineering.
If we consider the case of mathematics, even though mathematical articles are protected by copyright, the techniques presented are free for anyone to use or to redescribe in another article. Furthermore, no mathematician will be held legally responsible for an error in a proof. It is up to the practitionners who use the result to ensure that it has been submitted to enough verification, and to take appropriate insurance protection.
The same holds true for other areas of the sciences. The techniques described may be patented, but the patent applies only to their actual use, not to the description. And researchers can (and probably do) make mistakes in their scientific publication without risking legal action.
Finally note that these points are independent of whether the publication is protected by copyright - or more accurately independent of the licence under which the publication is made available - and also of whether is is done for profit or not.
It might be worth exploring this idea futher, when considering software patentability (we skip here various detailed technical considerations, such as the necessity to run the code in order to test it, or the fact that object code is trivially derivable from source code, but not the reverse).
The basic principle should be:
software development is research
All nice and smooth ... ?
Well, no! ... not by a long shot.
Problems are not solved that easily. To begin with, I am not sur all of the above statements are fully true. And I do not think that this proposal is sufficient on several important accounts. For example:
Hence, it is not at all clear that this is really enough to break the monopoly risk and its dangers for effective research.
Furthermore, fundamental issues remain. As expressed explicitly in the Constitution of the USA, intellectual property is only justified inasmuch as it enhances general welfare. In fact, any other view is a call for civil disobedience, since it is a breach of the social contract.
Even if enabled, this scheme probably falls short of reaching that goal. But my reason for presenting it here is that I think the paradigm is a strong one, clearly defined, and at least worth analyzing, technically, economically and legally. Hopefully, it can be improved. And even if it is not a solution by itself, it can provide clues to what a proper solution should be, or define some criteria it should meet.