I've been thinking about the
Sun - NetApp lawsuit, which is an interesting case that highlights what is wrong with the Patent Office in the US. I don't necessarily think that all software patents are bad, and that innovation
should be rewarded with temporary monopoly on a piece of technology.
However, this lawsuit shouldn't have
happened, because at least one of the patents in question should probably not have been granted in the first place. David
Hitz, founder of
Network Appliance, has a blog in which
he contends that Sun's ZFS violates patents held by NetApp for their WAFL. If that's truly the case, Sun should certainly be held liable, and should stop publishing
ZFS as open source code. You can't give away what isn't yours.
The larger issue, in my opinion, is that it seems significant claims of the
WAFL patent should never have been granted. There exists a significant amount of prior art in the use of a "tree of block pointers" to maintain logical consistency in data storage. Relational database management systems (Oracle, Microsoft
SQL Server, IBM DB2,
Sybase,
PostgreSQL, etc.) have been using the same techniques for decades to maintain transaction-consistent indexes and relational data inside databases.
WAFL may indeed be the first
implementation of the idea where the "tree of blocks" points to files in a general-purpose
file system. But in an
RDBMS, the tree of blocks (tree of index pages) typically points to arbitrary row data in the database. What's the difference? Not much, bits are just bits. The application to a file system seems obvious to me (reasonably skilled in the art), meaning the patent should likely be challenged. Heck, not-so-innovative Microsoft was kicking the same ideas around back in the early 1990s as part of the
WinFS file system for the "Chicago" project.
In fact, I personally designed the database for a document management system that used a "tree of blocks" to store and organize arbitrary file data in Microsoft
SQL Server back in the late 1990s. This system had point-in-time recovery and
look-up capability, based on
valid time-stamps in the block pointers (folder and file tables with their indexes). I suppose you could call this a "snapshot" capability. The database took care of transaction logging,
check-pointing, and referential integrity, all of which seem to be additional claims in the
WAFL patent.
I have passable programming skills, I am not an algorithm design guru, and I had certainly never read the
WAFL patents before implementing this "file system on a database". The basic ideas were widely known and used frequently in the database arena. I am not an intellectual property lawyer, but experience leads me to believe there isn't much innovation in the "always-consistent tree of blocks" described in
WAFL patent. They devil may be in the details, I suppose - I have only
reviewed the patent abstract at this point.
Still, in my opinion, the U.S. Patent Office, as currently constituted, is incapable of identifying true innovation. It grants far too many patents on obvious or derivative technology, especially in the software arena. If they can't get it right, even with the enormous resources at their disposal, they should probably not grant any software patents at all.
As a side note, this in-house document management system was never widely used, and the project was considered a failure. I believe this was largely the result of a cumbersome legacy ASP-based web front-end, though, not because of deficiencies in the storage engine.