Ones and Zeros Do the Darnedest Things
Philips, one of the amici in Microsoft v. AT&T, demonstrates some of the same conceptual confusions as Seth Waxman did in oral arguments:
[Not] every computer program is a component of a patented invention. But a program that has the same technical effect as an electronic hardware component surely is. In particular, there are two factors that illustrate that executable software or firmware code is in fact a component of a patented invention.
First, executable code is distributed in its final form such that it cannot be changed. The software developer designs the software in the form of source code, and then fixes it in an executable form by compiling it. The act of compiling manufactures the executable code. In order to modify the executable code, it must be decompiled, modified, then recompiled–a process similar to using a sample to manufacture new copies of a gear. Although the software developer may allow the installer to customize certain parameters, the installer is not allowed to modify the executable code. For example, Microsoft requires original equipment manufacturers (”OEMs”) to attach a Certificate of Authenticity to each fully assembled computer system. This
certificate assures customers that they have acquired “genuine Microsoft Windows software.”
Whatever contractual requirements Microsoft may place on its distributors, it seems exceedingly unwise to base any sort of Supreme Court precedent on the notion that “executable code is distributed in its final form such that it cannot be changed.” As I alluded to in my previous post, some software is distributed as source code, and presumably we don’t want to make patent liability contingent on the details of how software is encoded. Moreover, although it’s certainly true that the most convenient way to change object code is to decompile it first, but it’s entirely possible (albeit extremely tedious) for someone to learn to read object code and modify it directly.
Philips continues:
It is incorrect for Microsoft and its amici to continually refer to software code as mere “design information,” similar to a mold, blueprint, or specification. The executable code of Windows, for example, is not just an abstract idea or design information, it is functioning software that actually operates the computer–that is why it is called the computer’s operating system.
Strictly speaking, the software doesn’t “actually operate” anything, any more than a recipe “actually operates” a chef. The computer, not the software, is the active agent. Every computer program is, by definition, an abstract idea. Specifically, a sequences of ones and zeros. The fact that we have marvelous machines that can use the information encoded in those ones and zeros to do amazing things doesn’t change the fact that it’s the machine, not the ones and zeros, that is acting.
Add New Comment
Viewing 25 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
You couldn't be more wrong. The operating system operates the hardware, including the CPU, the page tables that connect physical memory to to the CPU, the clocks that enable the CPU to schedule programs, and the hardware that does all the I/O. An operating system is tightly bound to a CPU and a whole raft of supporting hardware devices, and is not so abstract that it will run on any CPU and any set of I/O devices. And while an OS is inert without its hardware, the hardware is also inert without its OS. They're two parts of a system.
And if you understood how modern hardware devices are actually constructed, you'd know how absurd it is to try and draw a bright line between hardware and software. CPU's have embedded code, called "microcode" inside them that enable them to execute the machine instructions in compiled code. And the logic in I/O devices is written in another highlevel language, such as Verilog or SystemC and the compiled into another lower-level logic system.
And in any case, the "abstract idea" isn't the ones and zeros, it's the thing represented in a high level language that's compiled into ones and zeros. Hardware is logic, and logic is ones and zeros and various operations on them.
Your understanding of computers is by analogy only, and every time you try and take this hard line on software you blow it.
I dare say you've never in your life read any binary machine code and modified it. If you had, you'd know that the process is always to disassemble it into machine instructions (at the very least) and variables, and to go from there. You don't go "um, here's a 0x1A, I wonder what happens if I increment that?" You so "OK, 0x1A is a "load register" instruction, so the next word is a address of memory operand, and I'll go look at that."
You're the one with the conceptual confusions here, not the Philips people.
Do you already have an account? Log in and claim this comment.
Obviously, the software includes instructions that tell the various components of the computer how to interact with one another. And yes, a computer can't "operate" without software telling it how to do so. But that doesn't change the fact that, literally speaking, the hardware, not the software, is the active agent. A chef is equally useless without a recipe (either one that's written down or one that's memorized) but we wouldn't say the recipe operates the chef.
If you understood how modern hardware devices are actually constructed, you'd know how absurd it is to try and draw a bright line between hardware and software.
How's this for a bright line: software is anything that can be transmitted as a string of ones and zeros. Hardware is anything that can't be.
And in any case, the "abstract idea" isn't the ones and zeros, it's the thing represented in a high level language that's compiled into ones and zeros. Hardware is logic, and logic is ones and zeros and various operations on them.
Richard, I'm sorry, but you're the one who's confused. Both the high-level program and the ones and zeros of the machine code are abstract ideas. We can get into a debate about whether one is "more abstract" than the others, but the dictionary defines "abstract" as "disassociated from any specific instance." So the ones and zeros are abstract, while a particular copy of the software--embedded in a hard drive, a CD-ROM, RAM, etc--is concrete.
Hardware is not logic. It is a physical thing that sometimes instantiates logic. The logic itself is an abstract idea. So (to get back to the Supreme Court case we were talking about) sending a electronic copy of a schematic for a logic board (abstract) would not constitute "supplying a component" while sending an actual, manufactured logic board would.
I dare say you've never in your life read any binary machine code and modified it. If you had, you'd know that the process is always to disassemble it into machine instructions (at the very least) and variables, and to go from there. You don't go "um, here's a 0x1A, I wonder what happens if I increment that?" You so "OK, 0x1A is a "load register" instruction, so the next word is a address of memory operand, and I'll go look at that."
Again, I don't know how this contradicts what I wrote. I said "it's entirely possible (albeit extremely tedious) for someone to learn to read object code and modify it directly." I didn't say that anyone would actually do that--that's why I included the "albeit extremely tedious--just that it would be possible to do so if someone were so inclined. And therefore, it would be silly for the Supreme Court to make law that rests on something as fuzzy as the distinction between "abstract" source code and "concrete" object code.
I notice you didn't mention my argument about that. Do you agree with Waxman that computers can't understand source code? Do you think the source/object code distinction is a good basis for drawing the line between abstract and concrete?
Do you already have an account? Log in and claim this comment.
Tim - I notice that whatever you say, there's a kinda strange commentor that will always hop up and say the opposite. Nice to have such built-in traffic bumpers. He probably convinces no one but himself, but produces loud and silly enough squacks to add a little humor to the world. (And, here it comes.....)
Do you already have an account? Log in and claim this comment.
Thanks for commenting. I think the reason the question matters in this case is that Mr. Waxman needed to convince the court that software is more than just a "blueprint" for how the computer should operate--that it's more than just intangible information about what the computer should do. Otherwise, he winds up on the wrong side of the distinction that Congress drew in 1984: that information about a patented invention could be sent abroad, but "components" of that invention could not be. The discussion of the software "operating" the computer is meant to give the impression that the software is more than just a list of instructions, that it's a physical thing that's "doing something."
And yes, Richard definitely adds a little humor to the world.
Do you already have an account? Log in and claim this comment.
My favorite part of the Philips brief came on p.8 (p.13 in PDF) where the brief quotes from Eolas Techs. Inc. v. Microsoft Corp.:
The implied gloss on this “morph” seems to be “PFM” (pure magic).
Do you already have an account? Log in and claim this comment.
I agree that treating executable code as somehow permanent is questionable from a technical (as opposed to legal) standpoint. I haven't dug deeply into Windows recently, but both DOS and Linux modify the executable image of the software on disk as they load it, or portions of it, into RAM--they perform segment fixups, link in the necessary libraries, and so on. I believe a similar process happens as the OS loads device drivers. Also from that same technical standpoint, trying to create some clear dividing line between hardware and software seems difficult. For example, an FPGA straddles that fuzzy line: a series of ones and zeros rewires the device's components.
What I don't understand, though, is how these issues fit into patent law in this case. If you have time to write it, I'd love to see a post that provides a some context, summarizing the issues in the case and how this discussion plugs into them.
Do you already have an account? Log in and claim this comment.
Does my Ars article clear any of this up for you? If not, I'll see if I can write something up over the weekend.
Do you already have an account? Log in and claim this comment.
I'll just make one more observation before leaving you to your delusions. "Information" is a component of many systems, including life itself. DNA, you see, can be described as information, and it's possible, or will be shortly, to describe the human body in terms of the information carried by its DNA. This information shapes the hardware of the human body.
And just as it's not possible for the human body to form without the information that shapes it, so too is it impossible for a logic-based system such as a computer to function without the information embedded in its various parts.
Consequently, the legal distinction between "information" and "components" is specious. There are no components without information. Consequently, it's all information, embedded and instantiated in various ways.
Do you already have an account? Log in and claim this comment.
So I still don't see how anything you've said contradicts any of the points I made in this post. Patent law permits people to transmit information about a patented invention overseas without incurring liability, so if you truly believe there's no difference between information and components--between, say, a blueprint and the machine the blueprint describes--then your quarrel is with Congress.
The statement:
"There are no components without information. Consequently, it's all information, embedded and instantiated in various ways."
is just a non-sequitur. The fact that ever X contains Y does not demonstrate that every X is Y. Compare:
"There are no cars without steering wheels. Consequently all cars are steering wheels, embedded and instantiated in various ways."
Do you already have an account? Log in and claim this comment.
Can we agree that in an SRAM-based FPGA, charges on the gates of CMOS devices control the operation of the transmission gates comprising the interconnect fabric?
Can we further agree that the arrangement of these charges, at a sufficient level of abstraction and generality can be modelled by the elements in a boolean algebra?
And finally, can we agree that while money may be fungible, and electrons may be quantum indistinguishable, and the elements of a set may be unique—notwithstanding all that, a homeomorphism is not necessarily a physical identity?
Do you already have an account? Log in and claim this comment.
Ha ha, ho ho, hee hee. Software doesn't exist in this universe unless it's encoded in a physical medium, whether that's a disk, a ROM, a sequence of symbols in a medium, or in some programmer's brain. If I ship a ROM to China that contains software that's meant to be reproduced, or I transfer a file across the Internet that contains software that's meant to be reproduced I've done nothing different.
There should be no loophole in the law that treats some representations of information differently than substantially similar ones.
And by the way, if I use a program to disassemble some code I've done nothing different than what I do when I disassemble it in my head. It's reverse engineering in either case, and from time to time I've done both.
And by the other way, homeomorphisms should have the status of physical identities under the law, of course.
Do you already have an account? Log in and claim this comment.
<li>The Supreme Court allowed software patents provided the software meets a funky § 101 requirement.</li><li> AT&T; has a patent on a codec.</li><li> Microsoft sent a gold copy of the codec overseas so their affiliates could reproduce it.</li><li> AT&T; claims Microsoft has violated a law against exporting components of patented inventions.</li><li> (Presumably said law also has teeth to prevent someone from sending one copy of the component overseas for copy and reproduction by overseas affiliates.)</li><li> Microsoft says, "software is not a component, it's more like a blueprint, so we're not liable for overseas reproductions." </li><li>AT&T; counters, "no, it's a component, therefore you're liable for the overseas reproductions."</li></ul>
My (fuzzy) understanding of the § 101 requirement is that the software must accomplish a particular purpose in the real world. Do I have it now?
I hope so, because my next question is going to be whether the Supreme Court is likely to distinguish between software for embedded systems and software for general purpose computers.
Do you already have an account? Log in and claim this comment.
No, this is actually the key point. If you send a single physical widget to German, and your German business partner takes that widget and makes a million copies, you only have to pay royalties on the one you shipped overseas, not the million copies of the widget. The law only applies if you manufacture the components in the United States, and then ship them abroad.
The key issue then, is whether (as Microsoft would have it) the "component" is each individual copy of Windows (which was manufactured overseas and therefore does not trigger liability) or if the "component" was (as AT&T; has it) the Windows code in the abstract, which was "supplied" by Microsoft.
Or to put it another way, the issue is whether software "component" was manufactured in Redmond when Microsoft's engineers wrote the source code and compiled it into object code, or whether it was manufactured when the German firm made a copy of the golden master. That's why Waxman is talking about the fact that "The act of compiling manufactures the executable code." He wants to say it was the development of the software, not the making of the copy, that constitutes manufacturing.
Do you already have an account? Log in and claim this comment.
From the oral arguments (p.13):
And on p.27:
And on p.29
So petitioner, respondent and the United States all agree that software is not patentable in the abstract.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
If any graph A is homeomorphic to some graph B, then THE LAW should regard A exactly as if it were B? Under all circumstances, or only in the context of patent law?
Please explain further.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
And yes, I think Microsoft has the better of the argument in this case.
Do you already have an account? Log in and claim this comment.
Microsoft claims NO to both questions. However, and quite interestingly, many of its supporters argue that software CAN BE a component of a patented invention under 271(f), and thus differ with Microsoft on the first question.
There seems to be two branches of the view that software can comprise a "component:" 1) software has physical bearing, 2) a "component" need not have physical bearing. Yes, I know, these two arguments conflict with one another:)
Also, Tim, on another post you refered to Theodore Olson as "Microsoft's lawyer." I believe Ted Olson is the US Solicitor General arguing for Microsoft, rather than being outside counsel retained by Microsoft or one of its inhouse counsels. Correct me if I'm wrong.
Do you already have an account? Log in and claim this comment.