Stallman is against software patents, of course. However, his case here
is
better than many open-source-related arguments; in fact, it is squarely
aligned with the interests of software-development businesses.
3.Paul Graham, a
computer scientist and one of the partners of the venture-capital firm Y
Combinator, wrote a 2006 essay Are Software
Patents Evil?
History of software patents
For a long time, software was held to be unpatentable,
as mathematical algorithms are unpatentable. Any fundamental
mathematical or physical laws are unpatentable.
1972: Gottschalk v Benson (wikipedia): You can't patent a mathematical algorithm (in this case a number-format-conversion algorithm). More below.
1973: ATT somehow manages to patent the setuid bit, claiming it's
hardware. This patent was dedicated to the public domain in 1979. This
patent is certainly a deep idea: if a certain bit is set in the
filesystem information node for a file (not in the file itself), then
when the file is executed,
it runs with the privileges of its owner and not the user. Before then
(and after; see what Windows does), there were complex ad-hoc methods
for running selected programs with elevated (or alternative) privileges.
1981: Diamond v Diehr: computer + machine IS patentable. For a
long time after, software patents always described the software in
combination with some hardware device. This patent dealt with the
curing of rubber, using a computer to guide the process.
Diamond v Diehr: SCOTUS says that an invention isn't automatically unpatentable just because it contains an algorithm But PTO & lower courts read in the converse: algorithms are patentable
Note that the current business-world baseline thus rests on USPTO policy and lower-court case law, NOT congress or SCOTUS.
Problem of "non-obviousness" the rules state that it's not enough to prove it's obvious today. Uh oh. That becomes an extremely difficult burden.
To be patentable, an invention must be "novel". Novelty is usually
challenged by the presentation of "prior art":
did someone else discover it first? Often there are arguments about
this.
If prior art is published,
it can invalidate a patent. However, if it was used privately, those
users can continue to use their idea without paying royalties to the
owner of the patent, but the patent may still stand. The patent can be challenged on the grounds of
not being novel, but this is harder.
Broad patents for fundamental new ideas, narrow patents for improvements
compatibility issues: What if the default, standard implementation
is patented? Two cases where there was at least some movement away from a
patented format:
GIF => PNG
MP3 => ogg vorbis
software patent v copyright
Supreme-court cases limit the word "process" in USC Title 35, Chapter
10, §101:
Inventions Patentable: Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Here the "process" claim is so abstract and sweeping as to cover both known and unknown uses of the BCD to pure binary conversion. The end use may (1) vary from the operation of a train to verification of drivers' licenses to researching the law books for precedents and (2) be performed through any existing machinery or future-devised machinery or without any apparatus.
Applications of computer algorithms may indeed be general. In retrospect, should this be an issue? The end-uses above are all for software using the algorithm; and anyone could always use a different algorithm.
Here's an interesting list of some software patents, supposedly
"random" though some particularly famous ones are sprinkled in:
http://bat8.inria.fr/~lang/hotlist/free/licence/patents.html
Another list can be found at: http://www.textfiles.com/law/softpat.txt
xor cursor, patent 4197590 (below)
Method for dynamically
viewing image elements stored in a random access
memory array
cpu Stack Pointer register, patent 3794980, to George Cogar,
1971. Supposedly, though I can't find the source, this was purchased by
DEC [?] and eventually placed in the public domain. Or not enforced. Or,
possibly, it was in fact licensed by Intel/motorola/everyone_else.
ATT setuid-bit patent, # 4135240, invented by Dennis Ritchie,
applied for in 1972 and later placed by AT&T in the public domain.
Using an xml document to describe the grammar of another xml document (Part of Scientigo's patent suite on xml)
British Telecom patent on the hyperlink, files 1976, granted 1989.
Patent number 4,873,662. In 2000 they attempted to sue a large number
of websites. The
patent itself apparently refers to a system in which multiple remote
users can access "blocks" of data on a central computer.
Altavista patents on "web searching". Altavista did have several
such patents on basic web "crawling". Most were predated by the
"archie" archive-searcher for ftp sites, developed by Alan Emtage in
1989. Altavista was purchased by CMGI, which some claim is a patent
troll.
RSA encryption: patent 4405829
RSA uses standard high-precision arithmetic in its calculations; the underlying number theory has been well-known for centuries. The patent was for the APPLICATION of these standard methods to encryption. That application was certainly novel.
The RSA patents finally expired, after much controversy. Part of
that controversy was self-induced; the patent owner at one point appeared to grant a general license
for noncommercial use, but then backed away from that.
The RSA idea is not "obvious-in-context". In fact, RSAis, for many
people, the classic Good Example for why software patents are needed.
Compton 1989 patent on multimedia, despite Apple Hypercard in ~1987.
Steir's patent 5,060,171 on artificially adding hair to a person's image [Garfinkel article; obvious-in-context]
Eolas v Microsoft:
About a way for running "applets" in a browser window. See below.
NTP v RIM: the blackberry patent
mp3: lots of development went into this
Lempel-Ziv / LZW compression, patents 4464650 [?], 4558302
This is the compression scheme in GIF file formats. The gif format was
developed by CompuServe in 1987. A year later, they noticed that the
algorithm was patented, and that the patent was currently held by
Unisys. Allegedly, Unisys told Compuserve at that time that they would
not need to pay royalties.
In 1999, Unisys demanded that some noncommercial websites pay a
$5000 fee for hosting files in the gif format (an interesting strategy,
given that the sites were not themselves rendering the images). Some
commercial sites
were asked for even more. It's not clear whether anyone paid it; most
affected sites rapidly switched to .jpeg or .png. Some observers were
especially offended by the fact that Unisys allowed the use of the GIF
format as a free standard until it became well-established, and then demanded fees.
There's some question as to whether this was the only or even the
dominant reason for the shift to PNG format; the latter does offer more
features (especially alpha and gamma) than GIF, and is a lossless
format unlike JPEG.
Note that LZW compression is not "obvious-in-context"; you can realize you need compression and still work very hard to develop LZW.
Natural-order recalculation in spreadsheets:
Patent 4398249
More below.
Rene K. Pardo and Remy Landau filed for a patent in 1971: U.S. Patent 4,398,249. This was an important case in allowing software patents (initially their request was denied as an "algorithm")
Spreadsheets were a brilliant idea (Dan Bricklin, VisiCalc?), but not order of recalculation.
MS has patented the FAT disk format. Here is a summary of the
events from the Public Patent Foundation, which had challenged that
patent:
The fact that PubPat can't appeal or even respond to the decision is
a serious due-process issue. If you are sued by Microsoft for using the
FAT format, you will be allowed
to respond to Microsoft's post-2004 amendments to the patent claims.
But you will probably not.
Microsoft is now actively licensing the format to flash-card
manufacturers. Why not switch to the free ext2 filesystem? Because that
just is impossible, that's why.
It is unclear which patents Microsoft is most interested in pushing.
While there are legitimate reasons for thinking that FAT itself might
not be patentable, Microsoft later introduced a strategy for supporting
both long filenames and also "8.3" filenames (8 char name, 3 char
extension). The patent that covers the dual-name strategyis less
vulnerable to "obviousness" or "prior art" challenges.
Microsoft sued the TomTom people (http://arstechnica.com/microsoft/news/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device.ars),
because TomToms, although they are based on linux, use the FAT
filesystem internally. The suit was settled
two months later, after TomTom agreed to cut the FAT.
FAT is a good example of an idea that is obvious to anyone presented
with the problem of how to
create a simple filesystem suitable for small devices. However, there is
the added problem of it's being standard
(although an unofficial one); you can't just implement a workaround.
PTO (Patent & Trademark Office) problems:
ignorance is no defense: "submarine" patents
The entire process is secret: you can be making good-faith effort
to be noninfringing and get hit with a huge verdict.
Infringement is considered willful if you had advance notice of infringing. Your belief that the patent was invalid is NOT a defense. Damages automatically triple.
Three groups of stakeholders:
Where do we fit in?
How large corporations manage:
small inventors:
Open source: voip
Legal advantage of small inventor: somewhat diminished with rise in legal fees & increased ambiguity
But small inventors can still sell to patent-holding companies.
Legal situation of large corporations:
Eolas v Microsoft
Patent 5838906: Distributed
hypermedia method for automatically invoking external
application providing interaction and display of embedded objects
within a hypermedia document, filed in 1994.
The alleged invention is about a way for running "applets" in a
browser window.
Is this really an "invention" at all?
Back in 1992, browsers just displayed images and static text.
However, it was clear by then that applications could display content in
windows created and "owned" by other applications; for example, MS Word
could at that time display an Excel subwindow.
What was not foreseen was that browsers would become universal
viewers of just about everything.
Microsoft v Eolas (+ Univ of California, as part of UCSF):
MS lost this case in 2004; was ordered to pay $521 million.
They then won the right to a new trial, but settled in 2007 before the
beginning of the new trial.
Patent covers
Patent filed 1994, granted 1998, USPTO review 2004, upheld 2005
See http://cse.stanford.edu/class/cs201/projects-99-00/software-patents/hypermedia.html
"Viola" prior art: may or may not be relevant: see http://www.viola.org
The Viola browser project was found by the district court to have been "abandoned", but the circuit court found that Viola version 1.0 was "abandoned" only in the sense that it was replaced with version 2.0.
Part of the technical issue was about the meaning of the term "executable application". The court allegedly gave this broad meaning. Microsoft claimed it only meant "standalone applications".
Eolas started by Michael Doyle, faculty member of UCSF.
UC Berkeley is apparently the owner of the patent.
Doyle certainly had some early ideas, that came before Java applets.
Had the Eolas patent been more aggressively enforced, it would have
been a huge impediment to the world-wide web.
2007: MS has claim they
invented it; this loses in Sept,
but Eolas & MS settle in August
October 2009: Eolas has launched a major lawsuit against just about
everyone: press
release. The list of defendants includes lots of sites that use
web-embedded objects: amazon, apple, eBay, and youtube.
View 1: Eolas developed some early web-embedding technology, and got
really lucky
View 2: Eolas patented Microsoft's 1990 Object Linking and Embedding
idea, and got a 20-year license to fleece us
View 3: Eolas may control a "critical" piece of the web standards.
Filed 1994, granted July 1998
A system and method for the separate
manipulation of the architecture and
content of a document, particularly for data representation and
transformations. The system, for use by computer software
developers,
removes dependency on document encoding technology. A map of
metacodes
found in the document is produced and provided and stored
separately from
the document. The map indicates the location and addresses of
metacodes in
the document. The system allows of multiple views of the same
content, the
ability to work solely on structure and solely on content, storage
efficiency of multiple versions and efficiency of operation.
The great mystery is what this has to do with XML. Virtually all
flavors of xml use embedded tags, <foo>like this</foo>. The
whole point of the i4i patent is that it doesn't use embedded tags.
Except that there are suggestions that Microsoft did in fact develop
a format for creating "custom XML schemas" that used the i4i method.
Any xml schema that lets you set the tag values in one place and one
place only, as opposed to doing a global search-and-replace, could be
said to violate the spirit of the i4i patent.
The following is from the blog of an Office product manager at
Microsoft, Brian Jones, http://blogs.msdn.com/brian_jones/archive/2005/11/04/integrating-with-business-data-store-custom-xml-in-the-office-xml-formats.aspx.
XML Data Store
In Office 12, we've introduced a new feature to the formats that we're currently calling the XML data store, and the way it works is really simple. As you should all know by now, the new format consists of a ZIP file with a bunch of XML parts (files) inside. Up until now we've talked about all the parts that we in Office have defined to create our documents. You as a developer also have the ability to add your own parts though. You can take any XML file and put it inside the ZIP package. Then all you need to do is create a relationship from the main document part to your XML part, and the Office applications will roundtrip your XML with the file, which means:
Roundtripping your data: The ability to put your XML in the ZIP package means that you now have a place to store any data your solution may need. The data will travel with the document, but will always be stored as a separate XML part in the ZIP package. This means it's really easy to get to and modify without dealing with any of the application's data....
Separating data from the document:
As well, because the
information is stored in the data store, you benefit from the fact that
the user cannot directly edit your data by editing the document
(they
can’t accidentally delete part of your data, since it’s stored
separately.
This is kind of vague, but note that it may allow a separate
XML area that is connected to the main document only via tags. However,
the original i4i patent appeared to involve using the separate area for
tag values; the Microsoft strategy on the face of it is for a separate area for entire XML files. The
last paragraph is all about the real-world importance of separating the
tags and storing them elsewhere.
See also Joe Wilcox's article at www.betanews.com/joewilcox/article/Is-Microsoft-violator-or-victim-in-i4i-patent-dispute/1250119565,
in which he suggests that the Microsoft customers most interested in
this new Office feature were those in the pharmaceuticals industry, which is exactly what i4i writes software
for.
At the page www.afterdawn.com/news/article.cfm/2009/08/13/update_microsoft_knew_about_i4i_s_xml_patent,
there is an alleged quote from Microsoft "newly leaked emails":
That would make the '449 a defensive patent: one where the purpose is not to be a patent troll, but instead to allow you to launch defensive attacks against competitors that horn in on your market. This does not legitimize the patent completely, but does put it in a different context.
Another technical blog on the '449 patent is at http://broadcast.oreilly.com/2009/08/mircrosoft-and-the-two-xml-pat.html.
There's a good example of what metacodes are all about, but also a
somewhat cryptic discussion of point tags (like <b> in html)
versus range tags (like <title> ... </title>, strictly
hierarchical).