Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What's the difference between "a method for sorting an array of integers by doing <steps of Quicksort>" and simply patenting Quicksort? Or do you mean something more specific to a particular product, like "a method for sorting a list of restaurant recommendations by doing <steps of some machine learning algorithm>"? Either way, all I'm seeing is algorithms.


Because you can't directly patent an algorithm, software patents use all sorts of fascinating workarounds to pretend like they've patented something else instead. A typical software patent will include the same patent claims written several different ways, based on legal precedents used with software patents in the past. A patent on an algorithm for fooing bars via steps A, B, and C, with the additional claim of doing D while fooing, might have one set of claims:

1. A method for fooing bars, comprising A, B, and C.

2. A method in accordance with claim 1, wherein said fooing further comprises doing D.

3. A system for fooing bars, comprising A, B, and C.

4. A system in accordance with claim 3, wherein said fooing further comprises doing D.

5. A computer program product for fooing bars, comprising A, B, and C.

6. A computer program product in accordance with claim 5, wherein said fooing further comprises doing D.

This covers several different legal precedents; even if "method" gets invalidated as an approach, the patent may still work under the "system" or "computer program product" theories.

This gets taken to a ridiculous extreme; many such patents describe the computer program product as a physical object consisting of bits on a medium such as a CD or disk, and include as a figure an illustration of such a medium.


It's not pretending, they actually are patenting the method rather than the code itself. It's a critical distinction, as code is actually copywritten.

There's a huge difference between design and implementation.


In the second case, you're not patenting the algorithm, because people remain free to use the algorithm to do things other than sorting lists of restaurant recommendations.

Which is ultimately why "its all just algorithms" is a uselessly reductionist view of things, in the same way "all creative works are just strings of bits" is uselessly reductionist, or even "all physical objects are just globs of atoms" is uselessly reductionist. It's not a useful level of abstraction at which to view the issue.

Ultimately you have to tie it back to the purpose of the property right. Why does someone have a legal right to a particular glob of atoms, or a particular string of bits, or a particular series of steps of some algorithm in some specific context?


"In the second case, you're not patenting the algorithm, because people remain free to use the algorithm to do things other than sorting lists of restaurant recommendations."

That doesn't make the situation any better, in my mind. In fact, in many ways that makes it worse.

Step 1) File patent for using algorithm (everyone knows) to do (some obvious application of that algorithm).

Step 2) Wait around for some other poor sucker to do the hard work of actually implementing "your" idea.

Step 3) Profit!


1) In theory you wouldn't be able to file patents without a working prototype--we've unfortunately gotten away from this requirement;

2) That assumes "implementing the algorithm" is the hard part.


IMO/IME, implementing is always the hard part.

I agree with your #1 though in that I think you should absolutely be required to have a working prototype to file a successful patent. A lot (though not all) of my objections to software patents would go away if that were enforced.


I disagree. If you look at something like the software in your cell phone that handles the power control loop or hand-offs, etc, I guarantee you it's not very many lines of code. But the underlying algorithms (the specification), is the result of months if not years of experimentation and empirical validation.


That's the sweat of the brow argument: If somebody worked really hard then they should get a cookie. But that doesn't work. If Bob is a savant and he designs a brilliant hand-off algorithm in five minutes, should that not be patentable because he didn't have to work very hard, but an algorithm that isn't even as good should be because a much worse engineer spent a lot longer to design it? The result would be to reward mediocrity and waste.

Which is why we look at the invention instead of the effort. So even though I'm sure Einstein worked really hard on E=mc^2, laws of nature are still unpatentable, because it's a description rather than an invention.

The problem is that no matter how hard it is to discover it, we can't give you E=mc^2, because it only describes things. You can actually have implementations that predate the discovery, because it's possible to build something without being able to describe how it works. We had X-ray machines before we had E=mc^2 even though it describes their operation. Allowing a patent on anything following the description would allow too wide a scope. You would be claiming too many things you didn't invent.

But algorithms are the same way. They're not inventions, they're abstractions. There is a really cool ad hoc routing algorithm where you send packets along random routes but tag the routes, and then the more/faster packets get to a destination using a particular route, the more you prefer that route for future packets. Sounds like something that should be patentable if algorithms are patentable, right?

But it's called the ant algorithm. Guess why.

Algorithms are pure abstractions. Those little buggers crawling around leaving scent tracks everywhere have certainly never heard of your algorithm and have no capacity to produce any sort of a binary, but there they are infringing your would-be algorithm patent.

So you say, a-ha! We'll just make it an invention by applying a context. Then the wildlife will be able to escape liability (and hopefully stop serving as pesky prior art).

The issue is that the context is totally facile. The interesting thing is the algorithm, not the context. It's just taking the unpatentable thing and adding "on a computer" and claiming it as an invention. Sometimes they try to be subtle and instead of saying "computer" they say "ad hoc wireless network" or "anonymizing P2P network" or some other thing the meaning of which is always "computer that could benefit from using this unpatentable algorithm" as if to pretend that the limitation is meant as an actual restriction rather than merely a vague description of the circumstances under which the algorithm is expected to be beneficial.


> IMO/IME, implementing is always the hard part.

I'm actually surprised anybody would say that. To use an example, you're saying it's more difficult to implement quicksort than it was to come up with it in the first place?

IME, compared to thinking up an algorithm, implementing them is very easy.


>In the second case, you're not patenting the algorithm, because people remain free to use the algorithm to do things other than sorting lists of restaurant recommendations.

I know this wasn't your example originally, but it does exemplify a common problem: There is nothing special about sorting restaurant recommendations vs. sorting some other such thing. If you have an unpatentable algorithm which is good at sorting lists of anything it shouldn't become patentable just because you claim it as "sorting restaurant recommendations." Mixing an unpatentable algorithm with a totally obvious application of it shouldn't get you a patent.

>Ultimately you have to tie it back to the purpose of the property right. Why does someone have a legal right to a particular glob of atoms, or a particular string of bits, or a particular series of steps of some algorithm in some specific context?

So why should someone have a legal right to a particular series of steps of some algorithm in a specific context? Why should adding an arbitrary context make it patentable if it wouldn't have been otherwise?


> I know this wasn't your example originally, but it does exemplify a common problem: There is nothing special about sorting restaurant recommendations vs. sorting some other such thing. If you have an unpatentable algorithm which is good at sorting lists of anything it shouldn't become patentable just because you claim it as "sorting restaurant recommendations." Mixing an unpatentable algorithm with a totally obvious application of it shouldn't get you a patent.

Totally correct. The first requirement to patent something it that it should not be a trivial invention (something that is so easily derived from something else). But most patents are, however, trivial in the software world. That is a big issue.


(I'm no expert at software patents so take what follows with a healthy dose of NaCl)

It seems to me the difference is a question of "real world implications". For sorting integers using quicksort, yes that's just a mathematical algorithm: an algorithm that performs operations on mathematical entities. The moment you apply that algorithm to something that affects the real world, that's when it becomes patentable. E.g. sorting restaurant recommendations by applying quicksort to the individual rating. This is no longer simply a mathematical algorithm; the entities being manipulated have a 1:1 correspondence with entities in the real world. It is recognizing the usefulness of this particular correspondence between mathematical entities and real world results that is patentable.


I'm no expert either, but I will take offense at your statement. It's everything I think is wrong with the patent system.

Sorting is a mostly solved problem. You take a group of numerical things and end up with a group of numerical things that are now sequential. You can either do it slow, fast, or stupidly.

If you have the example of ratings of restaurants, you're going to have some kind of group of numbers. If you want them sorted, you use a predefined and should-be unpatentable algorithm and sort the damned list. But your business model shouldn't be sorting a predefined list, because that's a really stupid business model and any fucking person can do it. Your business model should be to find a unique and novel way to rate restaurants (social graph, Zagat, number of cockroaches found in soup, etc.). The outwards facing UI of that rating system should be entirely disconnected from what your patent does. The order of that list is, yes, directly connected to how you rate restaurants, but the end result itself is not exactly how you rate them, it's just representative of the end result of your rating.

Think of Page Rank. Anyone can crawl the web and get a list of pages on the internet. Anyone can then sort that list by whatever means they want. It's not the sorting that is patentable, it's the association of some qualifier into a numerical representation of which gets sorted by another un-patentable system that is the "secret sauce".


I think you misunderstood my comment. My point wasn't to justify patenting sorting (that would be stupid). It was just an example to clearly show the difference between an algorithm and an application of an algorithm. In the case of sorting (replace with arbitrary algorithm X if you prefer), its discovering a unique and non obvious mapping from the mathematical entities that are manipulated to the real world that is patentable, rather than the algorithm itself. The point I'm making is simply that patenting an application of an algorithm is fundamentally different than patenting the algorithm itself, so claiming software patents are invalid "because math" is missing the point.


you patent "a method for sorting an array of integers by doing <steps of Quicksort> on a computer". want to use the algorithm? go ahead, doing it with a pencil and some paper is ok (i believe).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: