

Texas jury finds Google infringes a patent: $5,000,000 damage award - FlorianMueller
http://fosspatents.blogspot.com/2011/04/texas-jury-finds-against-google-in.html

======
strlen
A patent for searching a linked list? This is disgusting.

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)))

~~~
fragmede
The patent includes expiring the records in the linked list, and removing
(some) expired records when doing the search:

    
    
      #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.)

~~~
jws
In the case where you expire the last entry of the linked list you will
SEGFAULT. A test for head being NULL at the end of the loop would take care of
that, but I'd put it in the condition of the while loop since it is probably
free on a modern processor given the memory access pattern and it makes
something sane happen when a client calls find(NULL,...).

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.

~~~
fragmede
I'm not seeing the segfault, but it _does_ leak memory like a sieve with no
filter.

Good point re: age. ++head->age should be the first operation of the while
loop.

~~~
jws
Just in case someone is scratching their head over this...

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 */

------
joeyh
The title here on Hacker News has been mangled to be incomprehensible or just
wrong. This is not a "Linux patent", it is a software patent which is
potentially infringed by the Linux kernel.

~~~
jstedfast
unfortunately, it's not "potentially" it's "it does", the courts ruled in
favor of it being an infringement.

------
jrockway
This is one of the disadvantages of open-source software: the patent trolls
can easily find places that are violating their bullshit patents. I'm sure
Microsoft and Apple also use linked lists, but they're not being sued, because
it's harder to prove.

------
jws
I'm not seeing which part of the Linux kernel is afflicted, but this exhibit
from an Amazon case at least suggests that it is for the route cache.

[http://docs.justia.com/cases/federal/district-
courts/texas/t...](http://docs.justia.com/cases/federal/district-
courts/texas/txedce/6:2009cv00269/116887/579/5.pdf)

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.

------
sbov
I hate reading patents because I always feel like they try to make it look as
complicated as possible. In particular, I always find the inclusion of the
computer architecture somewhat useless. Do we really care that there might be
25 software applications running on your computer? Is there any reason other
than overcomplication (and thus making the patent appear more novel) to
include this stuff?

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.

~~~
neilk
In the USA, software patentability has always been dubious. But you can patent
a complete physical setup that also runs software.

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.

------
drallison
I did a quick read of the patent, 5,893,120 filed in 1997. It seems likely to
me to be invalid over the prior art.

~~~
kenjackson
The jury dismissed Google's invalidity defense. This is a case where re-
examination might be better. A lot of juries simply may not feel comfortable
overturning the PTO, even with a lower standard of proof.

------
kenjackson
The award is peanuts for Google. But establishes a scary precedent. Basically
everyone had get ready to give this company effectively a license fee for past
shipments of Linux-based products.

------
guelo
What is the problem with that east Texas district?

~~~
tzs
Nothing. There's a common myth on the internet that it massively favors patent
plaintiffs, but in reality it isn't even in the top five.

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.

------
z0r
What a perfectly ridiculous patent.

~~~
tzs
I find it hard to believe that in the time between the story appearing and
your comment you had time to read and understand the patent.

~~~
burgerbrain
It's pretty easy to assert that _all_ software patents are "ridiculous". Math
is generally held to be unpatentable after all.

~~~
tzs
Software is not math. If you think otherwise, please state OpenOffice in the
form of a theorem and proof. :-)

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).

~~~
burgerbrain
<http://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis>

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.

~~~
tzs
Would you say I'm doing math when I write down my recipe chocolate chip
cookies? I'd say I'm just describing steps to be executed in order to
accomplish a particular real world task. Software is the same--it is steps to
execute on a machine to accomplish a task.

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.

~~~
burgerbrain
As per the Church Turing Thesis, computation that you do with step by step
instructions and computation that you preform with lambda calculus are
equivalent.

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>

~~~
Natsu
You can go further. Show them the Curry-Howard correspondence:

[http://www.haskell.org/haskellwiki/Curry-Howard-
Lambek_corre...](http://www.haskell.org/haskellwiki/Curry-Howard-
Lambek_correspondence)

"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.

~~~
tzs
The distinction is between the thing and the use of the thing. For instance,
you can't get a patent on wood. You can get a patent on using wood to make
some particular thing if the use of the wood there is novel, useful, and non-
obvious.

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...).

~~~
burgerbrain
The logical conclusion of what you're saying is that while you cannot patent
the Pythagorean Theorem, you _could_ patent using the Pythagorean Theorem to
solve triangles, perhaps in the context of architecture.

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.

------
gregburek
I think that Microsoft Corp. v. i4i Limited Partnership, which was argued
before the Supreme Court on April 18, may change how this plays out in the
end.

"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...](http://www.abajournal.com/magazine/article/court_may_make_it_easier_to_invalidate_an_invention/)

Previously on HN: <http://news.ycombinator.com/item?id=2453895> and
<http://news.ycombinator.com/item?id=2464698>

------
epenn
Here is a link to the full text of the patent in question:
[http://patft.uspto.gov/netacgi/nph-
Parser?Sect1=PTO1&Sec...](http://patft.uspto.gov/netacgi/nph-
Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=5,893,120.PN.&OS=PN/5,893,120&RS=PN/5,893,120)

~~~
tzs
Some people have trouble viewing images at the PTO site. Here's a copy as a
PDF: <http://www.scribd.com/doc/53561493/Pat-5893120>

This was generated by the excellent site pat2pdf.org, which I highly recommend
for those who want convenient copies of patents.

------
naner
So here we go again. Last time there was a highly voted fosspatents article
here it was completely bogus. And everyone chimed in about how this guy had
ulterior motives:

<http://news.ycombinator.com/item?id=2355056>

------
alecco
Misleading title, dubious blog. This is an anti-Google/Android blogger with
likely ties to Google competitors.

<http://lwn.net/Articles/434587/>

<http://news.ycombinator.com/item?id=2428188>

~~~
Natsu
I don't see what the author has to do with it. It links to the relevant
patents & court files so you can read them yourself.

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.

------
shareme
are we actually sure of what is being reported??... he has miss-reported
before

~~~
tzs
This is ridiculous. The author has a long and excellent record fighting
against software patents. On a couple of occasions his analysis may have been
an error, but I don't think he's ever mis-reported anything. You comment is
just FUD.

~~~
orangecat
There's a good chance that he's a paid anti-Google shill:
<http://lwn.net/Articles/434587/>. Note that in this case he immediately jumps
from the verdict to "Android is doomed", when the case had nothing to do with
Android specifically except that it uses Linux, as do millions of other
products.

~~~
jstedfast
How does that prove he's an anti-Google "shill", exactly?

