Monday, April 12, 2010

The patents used by IBM against Hercules are a threat to several major FOSS projects

As I reported last week, IBM sent a list of 173 patents (67 of them applications) to the founder of the Hercules open source project.

Meanwhile I have taken a closer look at some of the patents. The patents IBM uses against Hercules are also a potential threat to other key FOSS projects. Based on a first analysis, those include (but are not limited to) OpenBSD, Xen, VirtualBox, Red Hat Enterprise Virtualization, MySQL, PostgreSQL, SQLite and Kaffe.

I will list below the relevant patent numbers and explain why I believe they could be used against certain projects. Considering that IBM has already used them in a threat letter to TurboHercules, those patents must be considered particularly dangerous. I just explained why IBM's attack on Hercules is an attack on interoperability and FOSS innovation in general. The fact that the patents in action here are also a threat to other key FOSS projects underscores the need to act.

At the end of this post, I am asking the FOSS community to contribute to this important analysis in various ways. I will then check on the material I receive and post the relevant contributions to this blog.

Note that the analysis below doesn't talk about actual or even likely infringement. It talks about potential issues. A wording like "patent A could read on program B" means that given what program B does, further analysis is required whether patent A covers a method used by program B. Even if that were to be the case, it's still possible that patent A could then be invalidated based on prior art.

Here's my initial analysis:

US Patent No. 5,953,520
(#65 on list IBM sent to TurboHercules)

This patent applies to any emulator that emulates a computer with virtual memory. This includes virtualization software, such as Xen, VirtualBox or Red Hat Enterprise Virtualization, as well as emulators and simulators.

US Patent No. 6,009,261
(#63 on list IBM sent to TurboHercules)

This patent reads on many emulators including virtualization software, such as Xen, VirtualBox or Red Hat Enterprise Virtualization. It teaches a method of reflecting the specifications of a guest instruction into the semantic routine of host instructions which emulate that guest instruction. That method is used by many emulators.

US Patent No. 6,654,812
(#46 on list IBM sent to TurboHercules)

This teaches a method for transferring network messages between partitions without going onto the network. This method or a very similar one is most likely used in virtualization systems, such as Xen, VirtualBox or Red Hat Enterprise Virtualization.

US Patent No. 5,875,336
(#70 on list IBM sent to TurboHercules)

This patent teaches a method for translating Java Bytecode. This could apply to Java Virtual Machines such as Kaffe.

US Patent No. 6,748,460
(#42 on list IBM sent to TurboHercules)

This patent describes a method that could be used in a virtualization system (such as Xen, VirtualBox or Red Hat Enterprise Virtualization) to present interrupts to a VM.

US Patent No. 6,615,373
(#47 on list IBM sent to TurboHercules)

This patent describes a method for resolving potential deadlocks. The resolution of deadlocks is key to the functioning of multi-threaded database servers. This could read on MySQL, PostgreSQL and SQLite in addition to any other database management system (still checking into object-oriented and other "NoSQL" databases). It is also possible but less likely that it could read on distributed caching software such as OSCache or JBoss Cache, which cache Java objects on servers. It is more likely that these use broadcast invalidates but needs checking.

US Patent No. 6,209,106
(#60 on list IBM sent to TurboHercules)

This patent describes a method for setting clocks on a variety of different Virtual Machines using offsets. This would be an obvious solution to the problem in a VM system such as Xen, VirtualBox or Red Hat Enterprise Virtualization.

US Patent No. 7,127,599
(#28 on list IBM sent to TurboHercules)

I'm still struggling to read the claims in this one. However, it could apply to managing I/O subsystems in a Virtual Machine system, such as Xen, VirtualBox or Red Hat Enterprise Virtualization.

US Patents No. 6,332,171 / 6,339,802 / 6,345,329
(#58, #56 and #55 on list IBM sent to TurboHercules)

These patents describe a method of using queues to handle data going to and from an I/O device. The use of queues is common in operating systems such as GNU/Linux and openBSD as well as in virtualization systems such as Xen, VirtualBox or Red Hat Enterprise Virtualization.

US Patent No. 6,971,002
(#34 on list IBM sent to TurboHercules)

This patent describes a method for booting a partition of a computer system without restarting the system. It would likely apply to Xen and VirtualBox to the same extent it would apply to Hercules.


CALL TO RESEARCH

This initial analysis requires further scrutiny and exploration. I therefore call on everyone in the FOSS community with an interest in this matter to help expand this.

Like I said further above, I will publish the input (to the extent it is relevant) on this blog. I will do so anonymously to protect all sources. I don't want anyone to have to fear that their project could make itself unpopular with IBM for contributing to this effort here. (If anyone wants to be credited for a contribution, you are free to blog about it yourself.)

The key areas of research that would help me are the following:
  • further detail related to the initial concerns identified above, leading to more specific explanations and possibly claim charts

  • any examples where additional ones of the patents IBM listed (the letter containing the list is available as a PDF file and in multiple PNG files) might read on FOSS projects

  • any examples of other IBM patents beyond the 173 asserted against Hercules potentially reading on FOSS projects

Please use the contact form to send your input.

Based on more analysis of all of this, we may then consider what kind of commitments we ask IBM to make. It's always been clear to me that IBM's pledge of 500 patents was a drop in the ocean. I criticized it on the day of the announcement. Later that year (2005), I wrote this Slashdot op-ed on the issue.

IBM has 50,000 patents or so, and gets 4,500 new ones every year.

As Richard Stallman puts it, if you have 100,000 mines in a park and you take out 1,000, the park is still not safe to walk.

It was a PR stunt by IBM and they weren't sincere about really reducing in any meaningful way the threat their patents represent to FOSS. Now that IBM has actually started to use patents against FOSS, it's key to understand the danger so it can be dealt with appropriately. For everyone developing or using FOSS, not just Hercules.