Texas jury finds Google infringes a patent: $5,000,000 damage award
fosspatents.blogspot.com
fosspatents.blogspot.com
As a middle finger, here's me infringing on it.
typedef struct node {
struct node *next;
void *data;
} node_t;
void *find(node_t *head, void *what, int (*cmp)(void *, void *)) {
while(*head != NULL && cmp(head->data, what) != 0) {
head = head->next;
}
return head;
}
Of course, there is an age old infringer on this patent: (define (find ll what)
(if (or (null? ll) (eq? (car ll) what))
ll
(find (cdr ll) what))) void expire(node_t **head) {
node_t *next = (*head)->next;
free(*head);
*head = next;
}
In terms of using a linked list as an LRU cache, this is done in the Java SDK by LinkedHashMap:http://download.oracle.com/javase/6/docs/api/java/util/Linke...
http://grepcode.com/file/repository.grepcode.com/java/root/j...
#define EXPIRE_LOOKUPS 500
typedef struct node {
struct node *next;
void *data;
int age;
} node_t;
void *find(node_t *head, void *what, int (*cmp)(void *, void *)) {
while(*head != NULL && cmp(head->data, what) != 0) {
if (head->next == NULL)
return NULL;
if (head->next->age > EXPIRE_LOOKUPS)
head->next = head->next->next;
++head->age;
head = head->next;
}
return head;
}
(I didn't see the patent specify an actual expiry mechanism in any specific detail, so here's a useless, but patent-infringing one.)I also don't think the last element ages, but since aging is unrelated to reality that is ok. On second thought, it protects you from the SEGFAULT because the last element can never expire. Very cunning of you.
Good point re: age. ++head->age should be the first operation of the while loop.
Let's come into the while loop body with data like this where H is the head pointer, C and E are elements of the list...
H -> C /* head points to current node */
C->next -> E /* expired node is next*/
E->next -> NULL /* expired node is last */
if ( head->next == NULL)... /* no, head points to C, C->next is E */
if ( head->next->age > EXP...) /* yes, head->next is E and is expired */
head->next = head->next->next /* C->next is now NULL (E->next) */
head = head->next; /* head is now NULL */
/* back to the top of the loop */
while( *head != NULL... /* BANG! a NULL value just got dereferenced */http://docs.justia.com/cases/federal/district-courts/texas/t...
If so, it should be easy to excise from future kernels with minimal performance impact. (I was suspecting filesystem entry caches, but that doesn't show up when I google.)
In a perfect world the patent would not have been issued since it is obvious to anyone skilled in the art that considers when to purge expired entries from a hash table with linked list overflow, especially in a world where systems are constrained by memory access times more than computation. But we are not legislated by that world.
Because of this, I just want to make sure I understand the patent properly:
From what I can tell, its a patent on a hash table that resolves collisions using chaining, implemented using linked lists. On top of this, each entry has an expiration time and it can remove them as it does lookups for entries.
I think the reason for this is that it moves the patent from an idea/algorithm to one that runs on a physically manifested device.
So software patents are usually written as if one had invented some special-purpose device, that just happens to consist of hardware that looks remarkably like a standard PC, running software.
There are two reasons so many patent suits are filed there.
1. It has judges that have experience with patent suits and like handling them. Whether you are plaintiff or defendant, you want this.
2. There isn't much federal crime there. Criminal cases always take precedent over civil cases on the court calendar. In some districts, especially those where the stupid "war on drugs" is highly active, it can take a long long time to get any court time for civil cases.
Now, you will find stats saying that patent holders don't win disproportionately often there. What those leave out is how many EDT cases settle beforehand. Basically, only the strongest cases even go to trial there and they still lose about half the time.
I can't remember if there's a rule requiring local counsel or not, but I know that several firms have set up shop in or near Marshall, Texas.
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sec...
If you read those and skim to see passages like these:
"The problem, then, is to provide the speed of access of hashing techniques for large, heavily used information storage systems having expiring data and, at the same time, prevent the performance degradation resulting from the accumulation of many expired records. Although a hashing technique for dealing with expiring data is known and disclosed in U.S. Pat. No. 5,121,495, issued Jun. 9, 1992, that technique is confined to linear probing and is entirely inapplicable to external chaining. The procedure shown there traverses, in reverse order, a consecutive sequence of records residing in the hash table array, continually relocating unexpired records to fill gaps left by the removal of expired ones.
Unlike arrays, linked lists leave no gaps when items from it are removed, and furthermore it is not possible to efficiently traverse a singly linked list in reverse order. There are significant advantages to external chaining over linear probing that sometimes make it the method of choice, as discussed in considerable detail in the aforementioned texts, and so hashing techniques for dealing with expiring data that do not use external chaining prove wholly inadequate for certain applications. For example, if the data records are large, considerable memory can be saved using external chaining instead of linear probing. Accordingly, there is a need to develop hashing techniques for external chaining with expiring data. The methods of the above-mentioned patent are limited to arrays and cannot be used with linked lists due to the significant difference in the organization of the computer's memory."
The triviality of the patent should be fairly evident (but if I've jumped to a bad conclusion, I'm happy to be corrected). Fair point though!
Seriously, though, software patents do not involve patenting math. They involve patenting at most the use of math in specific circumstances. By the same token, you can't patent physics or chemistry, but you can patent the application of physics (mechanical and electrical devices) and the application of chemistry (drugs).
It's pretty trivial to show that software is in fact math. Not "approximative with math", like a mechanical device with the laws of physics perhaps, but actually math^.
If you want to express OpenOffice.org terms more easily recognizable to the layman as "math", simply translate the program from whatever it may be written in to lisp, at which point a conversion to lambda calculus is quite clear.
(^ Unless perhaps you also have a definition of "math" that precludes something like the Pythagorean Theorem as well, which is absurd.)
EDIT: Addendum: even if you for some reason don't agree with this, it remains a fact that someone that does hold software patents to be invalid for this reason can easily and reasonably criticize a software patent without first reading it.
Software can be described in ways that sometimes make it amenable to mathematical analysis, but that doesn't make it math.
The Pythagorean Theorem is math--and you can't patent it. However, if you designed, say, a new way to truss bridges, and a key aspect of that was that certain things were of lengths that formed right triangles via the Pythagorean Theorem, it would not be patenting math if a patent were issued on your truss system.
That you think Pythagorean Theorem is math, but "software" somehow isn't, seems to indicate to me that you are restricting your definition of math to something like arithmetic and symbolic manipulation. That, or similar definitions, is all fine and dandy, but the field of math is not actually limited to such opinions. Regardless of opinion, you can show with math that software is math.
It's just using a different notation than small subset of math they teach you in primary school.
EDIT: If you're still not convinced, check out what Knuth has to say about the issue. I suspect he is a far more rigorous mathematician than either of us will ever be, and his writing is certainly better than my own: http://eupat.ffii.org/gasnu/knuth/swpatknuth.en.pdf
http://www.haskell.org/haskellwiki/Curry-Howard-Lambek_corre...
"Interestingly, the isomorphism maps programs (functions in Haskell) to (constructive) proofs in logic (and vice versa)."
So not only is software equivalent to math, there are people out there actually writing the software program equivalent to ZFC (one of the most commonly used sets of axioms in mathematics):
http://us.metamath.org/index.html
If that program is math, then all software is math. If that program is not math, please tell me what is.
From what I've seen, lawyers love to draw lines in the air, creating distinctions between things that are, in fact, formally equivalent. I have no doubt that they can, in fact, write some distinction that satisfies them legally, but in doing so, they will be creating a legal fiction wholly alien to mathematicians.
I believe it was Knuth who pointed out that there's no difference between numbers and other kinds of precise information.
Same with software and math. Software patents do not cover the mathematical aspects of software--they cover the use of the mathematics in a novel, useful, non-obvious way (at least when the patent office does its job during examination...).
That is of course, patently absurd.
"Software patents do not cover the mathematical aspects of software"
As Knuth explicitly notes in the materials I've already linked, trying to separate the math from the rest of software is a fundamentally flawed endeavor.
Is it because the computer usually tells you that the very large numbers in question are pictures, documents, web pages, or whatever else? As far as the computer is concerned, it's a very long number and it's no different from all the other numbers stored on your computer.
Patenting a searchable linked list with expiring timestamped nodes is just throwing together a few algorithms in computer science and saying it's new an innovative. There's thousands of way to implement that.
"Since 1983, the courts have followed a clear, firm rule: In order to overcome the statutory presumption that a patent is valid, a litigant must provide clear and convincing evidence that a patent is invalid. That's a high hurdle to overcome. ... Many observers expect the Supreme Court will reject the current bright-line rule and, at least under some circumstances, make it easier for parties to attack the validity of patents." - http://www.abajournal.com/magazine/article/court_may_make_it...
Previously on HN: http://news.ycombinator.com/item?id=2453895 and http://news.ycombinator.com/item?id=2464698
This was generated by the excellent site pat2pdf.org, which I highly recommend for those who want convenient copies of patents.
They just won a judgment against Google for using Linux. Granted, it was in East Texas, but that's where all the trolls file. This is exactly why software patents should not be allowed. I hope the patent gets invalidated soon.
[1] http://fosspatents.blogspot.com/2011/01/new-evidence-support...
Nevertheless, Florian Mueller is still a controversial figure and has incorrectly reported in the past (see here: http://www.theinquirer.net/inquirer/news/1939165/mueller-for... ). Something like groklaw would be better, but the story isn't showing up there at the moment.
Seriously, check out that guys HN account and look at his comments on any article having anything to do with Groklaw. Totally unhealthy obsession.
I don't think its as simple as you think.
What I have suspected ever since he not so deftly started dodging questions concerning his employment on LWN is that there is a rather specific reason he supports MS over i4i, and it has little to do with software patents.
But in general, without resorting to getting to conspiracy theory-ish stuff, I'd say that 99.9% of the time I'd say his motivation is almost entirely the Groklaw community collectively laughing at him and not paying him the respect he thinks he deserves. His ego was bruised and he doesn't know how to respond as an adult.
Based on what? All we have is your (and his) assertion. I had trouble finding any history at all of this guy with "25 years software industry experience". And every single one of his blog posts portrays FOSS software as an unreliable IP minefield. Even if that's not the specific legal issue at hand.
In my opinion this looks like he is paid to smear FOSS.
According to Wikipedia:
"In 2004, Müller received the support of corporate sponsors 1&1, Red Hat and MySQL for launching NoSoftwarePatents.com, which opposed the European Commission's proposed directive on the patentability of computer-implemented inventions.[8] Following several years of intensive lobbying by many parties, this proposed directive was rejected by the European Parliament on July 6, 2005, with 648 out of 680 votes cast.[9][10]
For his political activities, Müller received several awards in 2005. A leading publication for intellectual property lawyers, "Managing Intellectual Property", counted Müller - such as the Chinese vice premier Wu Yi - among the "top 50 most influential people in intellectual property"[11][12] (renominated in 2006[13]). IT-focused website Silicon.com listed him among the Silicon Agenda Setters.[14] A jury of EU-focused weekly newspaper "European Voice" elected Müller as one of the "EV50 Europeans of the Year 2005", and handed him the "EU Campaigner of the Year 2005" award.[15] Jointly with the FFII, Müller received the "CNET Networks UK Technology Award" in the "Outstanding Contribution to Software Development" category.[16]"