Enterprise file systems

This discussion on file systems and this one on virtual memory are good starts.  See also the extent-like UFS paper and this.

Advertisements

Transaction costs are good: software patent debate continues

Don Marti is asking the wrong question when he writes:

The question is where you draw the line of what is or isn’t patent infringement. If Victor invents something, and I describe it in prose, I’m not infringing. If he invents something and I build it as hardware, I am. But if I do something in between between hardware and prose—”software”— where do you draw the line of where he can sue me?

Don keeps mixing in the question of copyright with patent. Copyright protects the expression – and Don cites David Touretzky’s case to show that it is possible to abuse copyright to limit free speech. The case that Touretzky describes is a dispute over the Digital Milenium copyright act and has nothing to do with patents. If you publish code that implements IBM’s circuit patent IBM should not complain – you are merely describing how their invention works, something that patents are supposed to encourage. As far as patents are concerned there is no line to draw unless you want to claim that prose itself can embody invented machinery –

All of the arguments for software patents work just as well for prose patents. Just as a software patent covers the algorithm, not the code, a prose patent could cover the literary device, sequence of topics, or ideas used to produce some effect on the reader.

Nice try, but a metaphor is not an equivalence. Both in theory and practice, circuits and software are fundamentally similar. To explain why software should not be patentable, you need to either argue that circuit methods should not be patentable or show that circuits are distinguishable from software methods in some fundamental way. The IBM patent shows that the inventors of at least one circuit method consider it to be implementable either as a program or some wires. That is, IBM’s lawyers are claiming that a patent on a circuit method implies a patent on software implementations of that method. If software patents imply prose patents, and you object to prose patents, then isn’t it incumbent on you to demand abolition of hardware patents too? That’s the line in question – not a line between prose and code.

I also want to object to Don’s example of himself as a possible infringer. The problem that patents are intended to address is the problem of businesses taking the works of inventors without paying them, not the problem of an individual making a machine in his basement. If Don patents an invention, the patent system is supposed to make sure that IBM cannot make products incorporating that invention without coming to terms with Don. I’m in favor of a “fair use” exemption for patents, so that tinkerers can’t be dragged off to jail and not just for software patents either. In fact, I’m in favor of a number of reforms of the patent system to address the issues raised by some critics of software patents. My objection is to the supposed “solution” of abolishing software patents.

The debate over software patents isn’t just an attempt to set one arbitrary line between the patentable and the unpatentable. It’s about resisting the slide toward higher and higher transaction costs that happens when patents creep into places where they don’t make sense.

I think this is certainly correct in terms of the intentions of most of the people who oppose software patents, but good intentions are not assurances of good results. Patents on business methods seem to me to be absurd. Patents on genetic sequences that have already been invented by evolution are worse. The patent system, in general, is gamed in favor of big companies and is abused by the granting of patents for trivial “inventions”. These are all real problems in need of real solutions. I don’t see how arguing that software is in some undefinable way a technology that is uniquely unsuitable for patenting addresses these problems.

Finally, I’m not at all convinced either that eliminating software patents would “reduce transaction costs” or that reducing transaction costs is always a good thing. Transaction costs for software seem to me to be dominated by lack of interoperability (technical/business problem) and license management (driven by contracts, not patents). There is a very interesting paper by Tim Wu on wireless that discusses the transaction costs imposed the reluctance of carriers to make wireless phones interoperable. That is a much more insightful analysis than “software patents are bad”. And who says it is always good to reduce transaction costs? One could reduce transaction costs on music by deciding that artists don’t need to get paid or reduce transaction costs in the transport of toxic chemicals by eliminating all that onerous paperwork that those terrible governments impose. All those labeling requirements on food ingredients and on the flammability of childrens’ clothing increase transaction costs etc. etc.

There is a common problem in engineering where we become so enamored of a technique that we forget the result we want. To me, the anti-software-patent folks have made that kind of mistake.

Enterprise operating systems

Can anyone name a single feature of “enterprise” operating systems available today that was not already working in VMS or Solaris or SGI’s system 10 or more years ago?

  1. Multi-processor support – practically prehistoric. Here’s a wise observation: ”Since the speed of light, the physical sizes of computer components, and the speeds of memories are intrinsic limitations on the speed of any single processor, it is clear that systems with multiple processors and multiple memory units are needed to provide greater capacity. This is not to say that fast processor units are undesirable, but that extreme system complexity to enhance this single parameter among many appears neither wise nor economic.” from a paper published 40 years ago! (See more here.)
  2. Dynamic kernel modules – shipped in SVR4.2 in 1992.
  3. Log structured/journaling FS – 1992 or before in BSD from Rosenblum/Ousterhout and others.
  4. Hypervisors – been around forever and still without a compelling use case.

One would think that the demands of, for example, e-commerce or financial trading or simulation were a simple matter of scaling up. But from the much lamented and long noticed problems caused by OS assumptions about storage to the inability of current operating systems to handle security well or to provide sensible fault-tolerance hooks for applications, it’s obvious that there are serious limitations to current systems. Fortunately, they are mostly fixable.

Software patents are so different from circuit patents (really!)

Updated (and again, and even again – below)

It should also be recognized that circuit arrangements are typically designed and fabricated at least in part using one or more computer data files, referred to herein as hardware definition programs, that define the layout of the circuit arrangements on integrated circuit devices. The programs are typically generated in a known manner by a design tool and are subsequently used during manufacturing to create the layout masks that define the circuit arrangements applied to a semiconductor wafer. Typically, the programs are provided in a predefined format using a hardware definition language (HDL) such as VHDL, Verilog, EDIF, etc. Thus, while the invention has and hereinafter will be described in the context of circuit arrangements implemented in fully functioning integrated circuit devices, those skilled in the art will appreciate that circuit arrangements consistent with the invention are capable of being distributed as program products in a variety of forms, and that the invention applies equally regardless of the particular type of computer readable signal bearing media used to actually carry out the distribution. Examples of computer readable signal bearing media include but are not limited to recordable type media such as volatile and non-volatile memory devices, floppy disks, hard disk drives, CD-ROM’s, and DVD’s, among others, and transmission type media such as digital and analog communications links. (Patent)

The argument that something intrinsic in software makes it less suitable for patents than circuits or chemical processing or any other form of technology has not been made in any coherent way. The entire point of all the mathematics that underlies computer science is that code/data/machine boundaries are conveniences, not fundamentals. One can cite many examples of software patents that seem to be on trivial or well known methods (although many claims of software patent triviality are based on very shallow readings), but that doesn’t make a general case except for reform of the patent process. What is interesting is that some of the anti-software-patent arguments are nearly naked claims that only highly capitalized companies need IP. The fact that a determined and ingenious (and/or lucky) individual or small company can invent new software methods without the blessing of a major investor is often cited as a reason why software patents should not be permitted – not in so many words, but in that sense. The anti-software patent argument, however, like the free software argument, is so cloaked in language that makes it appear to be anti-corporate, that it is easy to be mislead or to mislead onself.

Another update:

Don Marti tries to compare prose and code, not very persuasively in my opinion. Patents protect inventions not the expression of the invention (that’s for copyright). A book about circuit design may well express one or more patentable ideas. If you are going to argue that a circuit design should be patentable, but software methods should not, then you should explain when a circuit design is not a software method. The claim IBM makes above is that their circuit invention can be implemented in software and that distribution of that software should be considered to be practicing the invention they have patented. They are not trying to claim that prose descriptions of the invention come under protection – by patenting you explicitly permit others to describe how your invention works. Instead they are claiming that it is possible to make a software program that uses their method. And from a technical point of view – I don’t see how to refute them. A method for computing may be the same method whether it is implemented on a bread board, an IC, a pattern of bits for an FPGA, or a pattern of bits for a processor.

Low wage programming

Greenspan did put forward a proposal on how to reduce the growing inequality of incomes in the United States — admit more skilled immigrants into the country.

The former Fed chief said that increasing the number of immigrants with sought-after skills would increase the labor supply of these workers in the United States and hold down the wage gains of all workers with these skills.

In that way, Greenspan said, the gap between skilled and unskilled workers would be lowered. He said it was critical to find ways to address growing income inequality in the United States.

AP

See previous related notes on software economics.

UPDATE:  Here’s an interesting question. “What is the purpose of free software?”  Contrary to what is commonly claimed, the answer is not the same for everyone. The next question, left as an exercise for the reader, is “How does the previous question relate to this post?”

Watering down computer science, Java, and feminism

This old note by Spolsky explains why the shift to java-only in computer science classes is harmful and reminds me of two events in my old career as an academic. One was when a student came by my office to explain to me, in the most condescending manner, how the linked-list exercise I had given in class could have been done much more easily using the new operator instead of all that obsolete pointer stuff that I had learned back in the ice-ages (we had to chisel those pointers out of glaciers with flint spears and punch cards). The second event was during the only perq I ever got for being a “department chairman” (the worst job I ever had, and that includes a couple of horrible days planting tree saplings on a devastated hillside in Arkansas ). The perq was a visit to the CS department chairs meeting in Snowmass one summer. It was quite beautiful out there and I even went to a meeting or two for forms sake. At one meeting, there was a discussion about the drop in the number of women going into

Anita Borg
Anita Borg

computer science – the field started out not so bad and converged on the terrible engineering norm somewhere in the 1980s. Some poor sap stood up, and channeling Larry Summers in advance, suggested that reducing all that hard math content might be a good thing to do because, implicitly, girls aren’t so good in math. I was sitting near a professor from MIT and would have bet money that she was going vault out of her chair and hammer the speaker to the ground, but sadly enough she didn’t and perhaps the lack of a salutory example cost Dr. Summers his job later on. And the moral of these three different points, ahem, is that a variety of forces have lead to the watering down of the general computer science degree and none of it accomplishes any of the purposes the watering down was supposed to accomplish, but it has made life easier for CS professors who are just going through the motions.