The coverage from ZDNet says the patent is for the conversion of objects into XML files; but if you read the patent itself, the important “Claim 1” doesn’t even mention XML, it’s just about serializing objects based on using an annotated source file and a schema. I was trying to find a way to write about this without becoming shrill and using bad language, but failing. Fortunately, I ran across a good opinion, shrill but not obscene, penned by Greg Aharonian who’s a real actual patent lawyer and thus qualified. Herewith a little bit of my own shrillness, followed by Greg’s professional evisceration of this extreme case of patent bogosity. [Update: slight correction regarding Don Box.]
A Conversation · Let’s imagine a conversation in some Microsoft cafeteria between Keith, Eric, and Stefan:
Keith: What with everything being networked, we’re just gonna have to expose some way to serialize objects.
Erik: Isn’t serializing objects generally a terrible idea? You’re locked into a particular version of the object then, rev the code slightly and all the serialized objects are bit-rot.
Stefan: Yeah, but people want to do it, they want to ship ’em around the network.
Keith: If it’s going over the network these days, it’s gotta be XML. Blecch.
Erik: You can auto-serialize an object easy enough, Java and every other serious OO system have done it forever.
Keith: Suppose you wanted some control over the serialization, like your own custom XML schema?
Stefan: That would be hard. How would you do that?
Erik: You could put some annotations in the source code. Or you could put them off to the side somewhere. But in the code would be better.
Ladies and gentlemen of the US PTO, The process described above does not constitute an invention!
Greg Aharonian · He has a bunch of different patent-law-related Web sites (his preferred link is to bustpatents.com), runs an email newsletter, Internet Patent News Service, and has launched a court challenge to the notion that software can be copyrighted.
Greg On the Microsoft Patent · [The following is by Greg Aharonian, reproduced with his permission from the Internet Patent News Service. I am not a lawyer and can offer not professional commentary as to whether he’s right nor not, but I thought it worth reproducing.]
Last Tuesday, Microsoft was awarded the following patent for converting objects to XML and back. Within days, if not hours, there were the usual shrieks, howls, hairpulling and moaning wails from the anti-software patent world. What’s the fuss? This patent isn’t valid, and it won’t be asserted. Here is my three minute invalidity search report for the patent.
U.S. Patent 6,898,604 (filed 29 June 29 2001) Microsoft (Redmond, WA) XML serialization and deserialization 1. A method for serializing an object instance to a serial format, the method comprising steps of: generating a mapping between an arbitrary annotated source code file and a schema, the arbitrary annotated source code file containing at least one programming type that describes a shape of an object instance and the schema describing a format of a document having a serial format, the mapping defining a correspondence between the shape of the object instance and the format of the document having the serial format; and [the improvement comprising:] converting an object instance corresponding to the arbitrary annotated source code to the serial format by converting at least one of a public property, a public field and a method parameter of the object instance to a document having the serial format based on the mapping.
Claims drafting verbalese aside, this is pretty much a claim for converting C#/Java source code objects to XML and back. Columns 7 of the printed patent depicts this at lines 5 to 60, where a short C# code is converted to XML, and then some XML converted to C#. The claims mention neither C# nor Java, so the choice of the source code language is irrelevant in terms of prior art analysis - an utterly obvious feature (especially given the many similarities between C# and Java, and the appropriate automata theorems).
Now this patent was file on 29 June 2001, so anything before 29 June 2000 is killer prior art. Microsoft has to be complimented (almost) for its prior art searching (except for not hiring me): the patent cites 44 patent documents and 26 non-patent prior art items, and 4 (useless) EPO search reports. Not bad, better searching than for most software patents issuing (which also didn’t hire me - have I mentioned I do prior art searches for this stuff?)
But what the heck, I had three minutes of my life to waste, and lordy, lordy, look at what I found:
Integrating XML and object-based programming for distributed collaboration Proc. 9th IEEE Int. Work. on Enabling Technologies: Infrastructure for Collaborative Enterprises (WET ICE 2000), pages 254 to 259 14-16 June 2000, held at Linkoping University Abstract: .... the need for a generic one-to-one mapping between objects and XML constructs. Using object properties, we define two variants of a conversion scheme ....
What’s the title of the paragraph starting at the bottom of page 255 of this 2000 paper? “XML SERIALIZATION”. What’s the beginning of the title of the Microsoft 2001 patent? “XML SERIALIZATION”. What do Figure 2 and Figure 3 of the 2000 article depict? Converting a Java object into XML and back. What does column 7 of the 2001 patent depict? Converting a C# object into XML and back. You get the point, and if you don’t, read the full conference paper.
[Greg included the paper’s text in his email newsletter.]
Indeed, the 2000 conference paper might have been inspired by a Sept. 1999 paper titled “Lessons from the Component Wars: an XML manifesto”, which put forth that XML’s use as a gateway to allow software components/objects to interoperate. This position paper was also not cited as prior art for the patent, so I won’t embarrass anyone (of course I will) by pointing out that this 1999 statement was from Microsoft employee Don Box and freely available at Microsoft’s Developer Network site. [Update: it’s been pointed out to me that Don wasn’t a Microsoft employee at the time he wrote that article.]
Well I have exhausted my three minutes of searching (in fact, it took me longer to write the above paragraphs than it did to find this prior art). This patent is not valid, and it won’t be asserted—ever. Stop shrieking. Try Shreking.