Software copyrights == patents
I've been reading Lawrence Lessig's weblog for a few days now, and I'm really interested by his proposal to reform software copyrights. The original post is here: the coke classic. The salient graf is here:
So I say: give the inventor of code a relatively "opaque" monopoly for a truly limited time -- 5 or 7 year terms, renewable to 10 or 14 years if the inventor wants. But as part of that bargain, require that the inventor escrow the code, so that at the end of the monopoly, the public gets something useful contributed to the public domain.
There are various responses to this post; Lessig links them in a followup here. His major detractor, Ted Shelton, seems to be arguing that there's a substantive difference between patents and the proposed software copyright, in that while an expired patent merely provides all the information required to reproduce the object or process covered by the patent, the new style software copyright would provide the object or process itself. I don't think this is a substantive argument.
First of all, it's wrong in a fairly simple way: merely having the source code to a program in no way automatically enables you to reproduce the effects of the program. First of all, you need a compiler. While there are several widely used free compilers, including GCC, many projects are written with non-free compilers; most projects written in Visual Basic, for instance, use Microsoft's Visual Basic compiler (in fact, I am unaware of any other compilers for the VB language), which is only available as part of the Visual Studio suite—which is not free. Additionally, most projects are not completely independent; they depend on or interoperate with other software, or special hardware, or some such. The source code to Windows 95, for instance, won't do you much good if you use a different compiler than Microsoft did, and if you don't have the source code to the hardware drivers, and if you don't have a computer to run it on (for a simple example).
In a less superficial sense, I think Ted is still wrong. Patents aren't about physical objects or end results. They're about protecting knowledge. You don't send the USPTO a physical cotton gin; you send them blueprints and a description of the operation of the device. Similarly, you wouldn't send them a CD with the (compiled) software on it. You'd send them design documents, use case diagrams, interface specifications, developers' notes, and the source code. These are all knowledge. In just the same was as I can tell you, step by step, the process to build a cotton gin, I can tell a computer how to perform the process instantiated by this software. Saying the cotton gin has three axles of such and such a size is not substantially different from saying that the software has three external interfaces with such and such methods and variables.
Ted says, "…the implementation, the source code, IS the cotton gin itself. Requiring the software developer to give away the source code is the equivalent of the government giving away a complete working cotton gin to everyone who wants one once Whitney's patent expires." I don't agree with him here. The source code is not an actual, working copy of the software. It may be trivially convertable to such, but then, if I were to patent the design of a paper airplane (which would be a valid patent, assuming no prior art), that would be trivially convertable to a working object as well. The source code is the maximally concise description of how to build the end product, not the end product itself. You don't ship source code, you ship compiled object code.
One last note. I'm not sure that a new copyright is actually needed. I think we could achieve the same effect by outlawing "copyrights" on source code (note that copyright on object code, such as to prevent unauthorized distribution etc, would be unaffected), and merely drawing up guidelines for how software patents are to be handled (by escrow of the source code in a digital, maximally accessible (usually ASCII) format).