The Tragedy of the Anticommons and Software Patents
This section describes some of the effects of software patents on software production. Most of these examples are taken from http://www.gnu.org/patent-examp/patent-examples.html. My comments are highlited in red.GNUstep example
This example illustrates the substitutability between algorithms. How easy is to invent-around some algorithm when it is covered by a software patent? It seems that it is very difficult, which leads one to think that software patents are very broad.By Adam Fedor fedor@doc.com Adam Fedor fedor@gnu.org
Attached is some text I wrote a few months ago that explains our position. The only change is that recently Apple has changed their interface somewhat which in effect makes parts of the entire GNUstep system open to patent 'violation' (not just the EOF and WO parts).
GNUstep, The Basics:
GNUstep, with regards to the current discussion, consists of three major parts: The OpenStep system, Enterprise Objects Frameworks (EOF), and WebObjects (WO). All three parts try to emulate interfaces originally designed by Next Computer, Inc (Now Apple Computer, Inc). All three parts use an Object-Oriented design and are primarily written in the Objective-C language.
The OpenStep system consists of basic foundation classes (dictionaries, arrays, etc) as well as GUI elements. While Apple claims it has a copyright over this API, there are no patents that we know of that affect the basic operation of this system (In fact, large parts of the system were released as an "Open" standard by Apple several years ago).
The EOF is designed to be an Object-Oriented interface to a database. This is the interface that Apple has significant patent claims on that we cannot work around without changing the interface in a fundamental way (thereby making it incompatibile with Apple's EOF, which ruins the stated goal of the GNUstep project). EOF depends somewhat on the OpenStep system.
WO is designed to be an Object-Oriented method of creating and maintaining dynamic web pages. WO depends on EOF.
EOF:
Here is a basic description of EOF taken from the Apple documentation. This description actually alludes to Apple's patent that is a key part of the EOF system.
"Enterprise Objects Framework brings the benefits of object-oriented programming to database application development. You can use the Framework to build feature-rich, database applications with reusable software components that tightly couple business information with the business processes managing that information.
One of the most significant problems developers face when using object-oriented programming languages with SQL databases is the difficulty of matching static, two-dimensional data structures with the extensive flexibility afforded by objects. The features of object-oriented programming-such as encapsulation and polymorphism-and their benefits-like fewer lines of code and greater code reusability-are often negated by the programming restrictions that come with accessing SQL databases within an object-oriented application.
Enterprise Objects Framework solves this problem by providing tools for defining an object model and mapping it to a data model. This allows you to create objects that encapsulate both data and the methods for operating on that data, while taking advantage of the data access services provided by the Framework that make it possible for these objects to persist in a relational database."
A More Detail Analysis (from Stephen MacDougall):
"From what I have read of the patent, my impression is that it only covers the creating of the EOModel, as evidenced by the first line in the abstract. This states that, "The present invention creates a model that maps object classes in an object-oriented environment to a data source." Thus, by interpreting the 20 claims with this in mind, it becomes apparent that the patent is for the creation of the model itself.
One can conclude from this that we can do every part of EOF except the EOModel, which creates the model in the first place. We can even read a pre-existing EOModel and use it, as far as I can determine. This would be similar to the LZW patent, in which you can freely create an LZW decoder, but creating an encoder would involve licensing to Unisys, as they hold the patent for the LZW encoding process.
So, if we can find a way to create a completely separate and distinctively unique method to perform a *similar* function, without violating the patent, then we could go forward, and then just create a conversion program that would convert from an EOModel to a GDFMap type of construct. (GDF = GNU Database Framework, the current working name unless someone comes up with something better.) "
Patents:
The key patents that cover the implementation of EOF are:
US6085197 07/04/2000 Object graph editing context and methods of use US5956728 09/21/1999 Object graph editing context and methods of use US5873093 02/16/1999 Method and apparatus for mapping objects to a data source US5898871 04/27/1999 Dynamic object communication protocol.
US5873093 involves the concept of Key-Value coding (i.e. storing relationships between two entities via a dictionary-like listing of keys and associated values). In EOF, that is how (dynamic) object models are associated with (static) database tables.
US5898871 also involves Key-Value coding, but deals more specifically with how to get information out of a database and present it in a uniform, context-free way to an Object-Oriented program. For example, one associates a database property ("FirstName") with an actual value ("Joe") in the database and presents it in a dictionary as a Key-Value pair. This applies to both EOF and WO.
US6085197 and US5956728 covers a system for managing changes to an object-graph that includes also an undo stack.
Possible Prior Art:
Rumbaugh, et al. "Object-Oriented Modeling and Design" published 1991, chapter 17 deals with mapping object-oriented models to relational databases. The book stems from actual research and someone should be able to turn up something like a lab note that even predates any patent that contains the word "object".
Objectpeople's product TOPLink for Java and Smalltalk, introduced in 1991.
Relational Object Framework (company bought by IONA). There are others, at www.object-relational.org, I believe.GCC Compiler
The next example shows that sometimes the project is nearly finished when it has to be stoped. They knew how to do the project. The problem was that they couldn't face the cost of the patents.However, the project was cancelled, because Pure Software owned patents on memory checking. It was not clear whether my code interfered with those patents, since their product was linker based, but based on reading the patents violation was a possibility.
Pure was known to be a litigious company, and had sued other companies to uphold their patents. At that time, Cygnus was a relatively small company, and a lawsuit would have been a serious drain on our resources. Therefore, the project was cancelled.
I estimate that I implemented about 80% of the required work. I developed a simple testsuite of some twenty or thirty cases which were all handled correctly. Most of the remaining required work was optimizing the data structures and implementing compiler optimizations based on known memory access checks-avoiding checking the same area of memory twice, coalescing memory checks when possible, etc. The goal was that checked code run at at least 50% of the speed of ordinary code; I don't know whether or not I would have reached that goal, as the project was cancelled before I did any serious speed testing.
Bill Gates 1991: Patents exclude competitors, lead industry to standstill
This was
quoted by Fred Warshofsky in "The Patent Wars" of 1994. The text is
from an internal memo written by Bill Gates to his staff. Part of has
appeared in another Gates memos.
If people had
understood how patents would be granted when most of today's ideas were
invented and had taken out patents, the industry would be at a complete
standstill today. ... The solution is patenting as much as we can. A
future startup with no patents of its own will be forced to pay
whatever price the giants choose to impose. That price might be high.
Established companies have an interest in excluding future competitors.
Why Patents Are Bad for Software?
From Issues in Science and Technology, Fall 1991: Simson L. Garfinkel, Richard M. Stallman and Mitchell Kapor.What's being patented?
Software patents do not cover entire programs; instead, they cover algorithms and techniques--the instructions that tell a computer how to carry out a specific task in a program. Thousands of instructions make up any one computer program. But whereas the unique combination of algorithms and techniques in a program is considered an "expression" (like a book or a song) and is covered by copyright law, the algorithms and techniques themselves are treated as procedures eligible for patenting.
[...]
But there's evidence that the patent system is backfiring in the computer industry; indeed, the system itself seems unsuited to the nature of software development. Today's computer programs are so complex that they contain literally thousands of algorithms and techniques, each considered patentable by the Patent Office's standards. Is it reasonable to expect a software company to license each of those patents, or even to bring such a legally risky product into the marketplace? To make things even more complicated, the Patent Office has also granted patents on combinations of algorithms and techniques that produce a particular feature. For example, Apple was sued because its Hypercard program allegedly violates patent number 4,736,308, which covers a specific technique that, in simplified terms, entails scrolling through a database displaying selected parts of each line of text. Separately, the scrolling and display functions are ubiquitous fixtures of computer programming, but combining them without a license from the holder of patent 4,736,308 is now apparently illegal.