As long-suffering readers of this blog will know, one of the many reasons I am against software patents is that software consists of algorithms, and algorithms are just maths, so a software patent is a patent on knowledge - the purest knowledge there is (a mathematician writes).
Sometimes defenders of software patents deny that software is just algorithms (don't ask me how, but some do). So I was particularly interested to read about this poor hacker being contacted over - you guessed it - algorithms, pure and simple:
Landmark Digital Services owns the patents that cover the algorithm used as the basis for your recently posted “Creating Shazam In Java”. While it is not Landmark’s intention to alienate those in the Open Source and Music Information Retrieval community, Landmark must request that you do not ship, deploy or post the code presented in your post. Landmark also requests that in the future you do not ship, deploy or post any portions or versions of this code in its current state or in any modified state.
As you can see, there is no way of disguising the fact that this claims to be a patent on an *algorithm* - that is, on maths, which is knowledge and therefore unpatentable.
But it gets worse. As the poor chap points out:
I've written some code (100% my own) and implemented my own methods for matching music. There are some key differences with the algorithm Shazam uses.
That is, he didn't copy the code, and it's not even the same approach.
But wait, there's more.
As he notes:
Why does Landmark Digital Services think they hold a patent for the concepts used in my code? Even if my code works pretty different from the Shazam code (from which the patents came).
What they describe in the patent is a system which:
1. Make a series of fingerprints of a media file and/or media sample
(such as audio, but could also be text, video, multimedia, etc)
2. Have a database/hashtable of fingerprints as lookup
3. Compare the set of hashtable hits using their moment in time it happened
This is very vague, basically the only innovative idea is matching the found fingerprints linearly in time. Because the first two steps describe how a hashtable works and creating a hash works. These concepts are not new nor innovative.
Moreover:
I've also had contact with other people who have implemented this kind of algorithms. Most notible is Dan Ellis. His implementation can be found here: http://labrosa.ee.columbia.edu/~dpwe/resources/matlab/fingerprint/
He hasn't been contacted (yet), but he isn't planning on taking his MatLab implementation down anyway and has agreed for me to place the link here. This raises another interesting question, why are they targetting me, somebody who hasn't even published the code yet, and not the already published implementation of Dan?!
And if they think its illegal to explain the algorithm, why aren't they going after this guy? http://laplacian.wordpress.com/2009/01/10/how-shazam-works/
This is where I got the idea to implement the algorithm and it is mentioned in my own first post about the Java Shazam.
So, moving to that last site, we find a detailed analysis of the algorithm - which is all pretty obvious. How did he do that?
So I was curious how it worked, and luckily there is a paper [.pdf] written by one of the developers explaining just that. Of course they leave out some of the details, but the basic idea is exactly what you would expect: it relies on fingerprinting music based on the spectrogram.
In other words, the description of the algorithm by the company's programmers shows that it "is exactly what you would expect".
At every level, then, this is an obvious, algorithmic, mathematical approach. And yet someone in Holland - a country that doesn't recognise software patents at all - finds himself under pressure in this manner for some code he wrote independently implementing that general, algorithmic mathematical idea.
Now explain to me how patents promote innovation, please...
Update: Re-reading the post I realise that things are even more ridiculous. Here's what the company wants:
we would like you to refrain from releasing the code at all and to remove the blogpost explaining the algorithm.
Now, you recall that the algorithm is the thing that the company claims to have a patent on. The original idea behind a patent was that in return for its grant, the inventor would *reveal* all the details of his or her invention so that others could use it once the patent had expired, as a quid pro quo. So if the company claims a patent on its invention, it must *by definition* reveal the algorithm.
Against that background, this demand to remove an explanation of the algorithm is simply absurd, and contradicts the very nature of a patent - it's like asking the USPTO not to reveal the patents it grants.
Follow me @glynmoody on Twitter or identi.ca.