This week’s software patent is held by Skyline Software Systems, a “leading provider of network-based 3D Earth visualization software and service.” Naturally, Google Earth is one of its primary competitors. Google Earth was originally developed by Keyhole, which Google acquired in October 2004.
When Google acquired Keyhole, it inherited a legal spat with Skyline as well. Last week, the judge in the case declined to order Google Earth shut down pending the outcome of the litigation. But the case goes on.
A method of providing data blocks describing three-dimensional terrain to a renderer. The data blocks belong to a hierarchical structure which includes blocks at a plurality of different resolution levels. The method includes receiving from the renderer one or more coordinates in the terrain along with indication of a respective resolution level, providing the renderer with a first data block which includes data corresponding to the one or more coordinates, from a local memory, and downloading from a remote server one or more additional data blocks which include data corresponding to the one or more coordinates if the provided block from the local memory is not at the indicated resolution level.
Is this an obvious patent?
I think it clearly is. Organizing data hierarchically is a well-known computer science technique, and any reasonably smart programmer, if he were asked to write a flight simulator, would probably come up with a data structure like this to accomplish the task. If any of the geeks reading this think there’s a nuance I’m missing, please let me know.
But what I want to highlight about this patent is the bind it puts honest programmers in. Here’s one of the things claimed by the patent:
14. Apparatus for providing data blocks describing three-dimensional terrain to a render, the data blocks belonging to a hierarchical structure which includes blocks at a plurality of different resolution levels, the apparatus comprising: a local memory which stores data blocks corresponding to coordinates proximal to a current viewpoint of the renderer; a communication link, through which the memory receives the data blocks from a remote server; a processor which receives one or more specified coordinates along with indication of a respective resolution level from a renderer, provides the renderer with a first data block which includes data corresponding to the one or more specified coordinates from a local memory, and downloads over the communication link blocks of lower resolution levels before blocks of higher resolution levels which include data corresponding to the one or coordinates if the first block is not from the indicated level.
That’s one of 24 different claims, most of which are as long and complex as this one. Now, let’s say I was planning to write a flight simulator, and that I’d discovered this patent and wanted to avoid infringing it. (If I’m a hobbyist or startup, even finding the patent is implausible, given that I probably don’t have the resources to hire a patent lawyer to do the patent search, but let’s say I’ve done that) The question is: how different does my algorithm have to be to avoid infringing on Skyline’s patent?
After all, every flight simulator is going to have most of the elements claimed in this patent. Storing data about your terrain in “data blocks” and passing it to the renderer as needed is just the logical way to build this kind of program. And storing pre-rendered data blocks hierarchically at different resolutions is an obvious optimization trick. Are those elements broad enough to infringe the patent? If so, this patent effectively gives Skyline a monopoly on the creation of realistic flight simulators. Which seems weird, since there were lots of flight simulators on the market prior to Skyline’s patent filing.
If the fit has to be closer than that, how close does it have to be? Can I tweak some minor details of the design (say, having the “blocks” be hexagonal instead of rectangular) and avoid liability? If I don’t actually use a hierarchical data structure, but simulate one using some other data structure, does that make me safe? Most importantly, how would I know? The language of the patent is vague enough that it’s not clear what most of the terms mean.
In short, even if a programmer knows about this patent, he has no clear guidance on what counts as infringement. He could invest a great deal of time and effort coming up with weird ways to implement the same functionality without using “blocks” and “hierarchies,” but because those terms haven’t been defined clearly, he really has no way of knowing how a future judge might interpret them. As a result, he’s probably better off ignoring the patent, implementing the software in a straightforward manner, and hoping that his company will get bought out by a company with a good legal team by the time Skyline gets around to suing them.
Fortunately, there’s a much clearer language available for describing computer algorithms. It’s called source code. And, as luck would have it, our intellectual property system already has a robust mechanism for protecting source code: it’s called copyright. If Skyline’s “invention” is truly novel and non-obvious, then the copyright on its source code should prevent anyone from making unauthorized copies. On the other hand if I’m right that this is just the logical, obvious way to write a flight simulator, then lots of companies will independently “invent” the same data structure. That’s too bad for Skyline, but if lots of companies are independently “inventing” the same data structure, it’s probably too obvious to patent anyway!