Linus Torvalds: Software and Process Patents Don't Make Sense
muktware.com
muktware.com
If I were Linus and I saw a blog with my picture as the background of the website, all along the sidebar, and sitting above the blog logo, I'm sorry but I'd be creeped out.
http://www.muktware.com/blogs/1721 (an older interview in full)
This one:
http://www.muktware.com/news/2855
http://www.muktware.com/news/2857
http://www.muktware.com/news/2859
http://www.muktware.com/news/2860
http://www.muktware.com/news/2861
http://www.muktware.com/news/2862
http://www.muktware.com/news/2863
http://www.muktware.com/news/2864
http://www.muktware.com/news/2865
Also, interesting portmanteau domain name - muktware means free (soft)ware in Indian languages.
> I think patents probably work better in certain areas than they do in ours. Software patents? No. Process patents? No. They just don't make sense.
It's not clear from the actual quote that he thinks both software and process patents "don't make sense" as the title states (or just process patents). He probably does, but it's not clear from this interview.
I think he's very insightful about patent and copyright litigation being especially nasty from a legal perspective, because it's winner take all with no middle ground.
Oh, and he think Java and the JVM are "horrible". So consider this polemic approach when assessing his patent views.
Fortunately Harrison Gray Dyar and Samuel Morse don't have all rights for binary code...
What's broken is not the concept of a patent, what's broken is its implementation. Patent applications that do not satisfy the set criterion often get accepted. "Non-obvious" often is equated to "currently non-existing" even though it may be very obvious. (In fact, one of the ways to show non-obviousness of an idea is to show non-existence of it in spite of the problem being existing for long.) As you stated, it is difficult to have a "smartness" value for a software (and I think even hardware) patent.
Another reason why the real-life implementation is broken is that people and companies want it to work both ways based on whether it is helping them or working against them. But nothing specific to software here, the same happens for hardware too.
What needs fixing is the implementation, not the idea itself of the patents, be it software or hardware.
Edit: Disclaimer: I am not a lawyer.
I think the best description of a patent that I ever heard was:
"A government granted use monopoly in exchange for full disclosure of how the invention works."
This is, in my opinion, not a bad idea. It promotes the sharing of knowledge, whilst not depriving the inventor from the spoils of their work, but only if a full, formal design of a working system is disclosed.In software, patents are granted based upon a technical description of the concept. But the requirement of a formal definition - which in the case of software boils down to either a proven mathematical model, or some code that implements the concept - is absent. Since written language is full of ambiguity and uncertainty, it is very possible and regularly the case that patents are granted on an idea that provides no concrete specification. As a result, the disclosure part of the agreement is not satisfied.
True that mathematical formulas and laws of physics are not patentable. However, a specific use of either to solve a specific problem is patentable provided the three constraints (non-obviousness, usefulness and novelty) are satisfied.
Software is not mathematics -- A computer science algorithm could arguably be, but "software" is not. Software is a specific implementation using that mathematics that sits onto your CD or hard-disk where "mathematics" cannot sit (sure copyrightable representations of that mathematics do). And software gets appropriately subject to copyright laws.
Applying software to solve a specific problem is no different than applying hardware or mathematics to solve a specific problem. If those patent-ability constraints are satisfied, there is nothing wrong with software patents "in principle". Fixing the practice is another thing.
Second refutation I have comes from my personal experience. No, most of the software developers are not mathematicians. Often far from that in practice. Many don't even understand computer science (including myself partly). We can still however make software inventions that satisfy the three constraints.
I know this topic remains debatable. And at least a part of the reason is that the issues are often not correctly understood by people and the law-makers. Add to that the pace at which laws are adjusted to changing practices in the industry.
Edit: Disclaimer: I am not a lawyer.
Again, a software patent is not about the software. It is about that technical description of the concept. That concept is what carries the invention (while the software itself carries a copyright). Written language is indeed full of ambiguity and uncertainty but the language of patent claims is not (some separate comments in this thread talk about this). When deemed necessary, source code is included in a patent application. Flow-charts are also often included. But all of that is out -- the core part of a patent are the claims, written in a well-defined unambiguous language that defines the concept of invention as clearly as possible and it does not need diagrams and source code.
Edit: Disclaimer: I am not a lawyer.
There are two issues here:
1. You assume the implementation is fixable, I have seen no sign of it so far, especially for software and method patents. Even more so as the number of patents applications is skyrocketing worldwide and intellectual propriety offices have neither the resources nor the qualifications (at least in software) to do a good job at it. This is not helped by
2. Patents themselves have little value if there is low risk and investment in what is being patented. That's the case for software (relatively). Even more so because reinventions are very common in software, if you have a given problem there will be converging solutions independently devised. Patents were originally thought of to grant a short-term monopoly to a creator in exchange for that knowledge being public. The goal was twofolds, to encourage potentially costly innovations and to ensure that knowledge gets into public domain at one point, to benefit all.
The second goal is broken by the duration of patents, especially in domains with high rates of innovation (hello software) and the first one is likewise broken in domains with high rates of innovation because patents hinder reinvention (this is made even worse with the new hare-brained schemes of first-to-file as it starts breaking even *pre*invention) or synchronous invention by making them far riskier.
I submit that not only is the implementation broken, but the concept itself is broken for any domain with low investment costs and high innovation rates: for patents to "work" their duration would have to be so low (months, or even weeks) as to make them not worth the time.The duration of the patent in my terminology is also an implementation issue and not a conceptual issue. I agree that in today's world, twenty years are a bit too long. Or rather inventions that can be so readily made should be failed on "non-obviousness" basis again.
The real issue is this: Not the patent system, but the companies are interested in protecting "everything" they do. The law does not provide protection for everything. Copyright applies to specific material or implementations while patents apply when those three constraints are met. There are clearly things that are not protected by either and they should remain as such. The issue is that they don't (and both companies and patents office are responsible for this).
To fix (the implementation), the bar on non-obviousness, novelty, etc. as well as the duration of the patent needs to be made commensurate with the reality, taking into account the low investment costs and timeline that you mention. Maybe even by having varied durations for different domains just as the non-obviousness bar is different for different domains just by virtue of being unmeasurable.
All in all, I have not heard any real reason why software patents should be distinguished from other patents, other than possibly having the bar on them and duration adjusted accordingly.
Edit: Disclaimer: I am not a lawyer.
The patent system isn't a prize we give to people for innovating. It's one of the ways we pay people to document and publish their inventions.
Irony: Samuel Morse did in fact vigorously patent his inventions.
"Yes", I guess. And, "I don't entirely agree or disagree with you".
Sometimes people say silly stuff that isn't particularly relevant. They're making a mistake. You don't have to explain it.
If you do, maybe someone like me who is interested in meta topics like conversation itself will appreciate it, and maybe you'll enjoy writing it, but you can't expect it to further the conversation you were having, and can't really expect the silly person to learn much.
I think we're overpaying. And we're not paying the actual creative types. And we're not paying for what's really useful, just what receives the paperwork and has enough lawyers to attack based on it.
If we really wanted to do this right we'd have a big vote for the people who made things (even textbooks, etc, like Knuth) that made the biggest difference in their industry. Then we'd take the money not being wasted on patents and give it to these people as part of a Technical Excellence Award. They'd also trickle some upwards to their resources and mentors, as disclosed before you voted.
It's still got some holes in it but it's a better system because there are no limits on industry. No government employee is breaking open boxes of smart-phones and denying the right to sell them because they use some exclusive new innovation. That's just more proof that whoever invented that deserves more votes.
Think of it this way: to function as intended, the patent system has to make it economically less attractive to closely hold inventions as trade secrets. Your idea, however laudable it is, doesn't do that.
The main problem with the idea is that it eliminates negotiations between self interested parties as the means for value estimation. "Voting" on the most valuable works is quite simply a terrible idea. With copyrightable works, we could probably have some technological way (think DRM) of tracking popularity / frequency of use. But for patents, I'm not sure how it would work. I suppose that as long as you make it where the total tax levied on an individual to fund this system doesn't depend on how many or which works they used (though it could depend broadly on what they produce, what industry they are in, etc), they won't have an incentive to hide what they used. It's not at all clear to me that the difficulties inherent in such an approach are greater than those in current approach (which can be charitably describe as "a mess").
But, there's no guarantee of reward. Far from it, you've only got a letter of marque, not the ship or crew to profit from it with.
In a reward system it'd be totally different. No applications, no licenses, just instant wide disclosure. If you don't tell people they can't use it and you won't get rewarded.
And you could just document and teach someone else's invention and get rewards that way, in proportion to the value of the accessibility you added.
My respect for Linus just grew 10-fold!
In fact, it seems to be quite highly respected and seems to be working out well for Scala and Clojure. Obviously, there's also Twitter who partially moved to the VM from Rails.
Would you care to elaborate? Has Linus talked about the VM before?
Java is not a great language by all means, the VM does have it issues (it is very old, and has to deal with its legacy), but it is not on a really important piece of software, its quality is quite good.
At the very least, it is, ironically, responsible for LISP's renewed interest through Clojure.
[1] http://techcrunch.com/2011/01/15/a-brief-explanation-of-why-...
The default JVM options are biased toward long running processes. That's kinda what most software running on a JVM is going to be though - start it running, leave it for weeks.
If you want a JVM that is tailored for short lived processes, then quick startup time is just a few options away after you RTFM. Or use a language/runtime more tailored to short lived scripting.
FWIW I've never seen a JVM take more than a second to startup though, which is more than adequate for server software.
1. cross platform (windows, mac, linux, mobile devices, embedded)
2. kinda fast
3. reasonably mature
4. bunch of libraries
If you want to create a new programming language today Java is the only viable platform. .NET and Mono isn't quite mature enough (and it's very similar to Java anyway). If you bootstrap from C it'll be fast and portable but you'll have no libraries for the first 5 years or so.
There just isn't a low level language layer, just above C that can be used for interopability between programming languages. What we need, what we really need, is some sort of Java--. A simple bytecode layer that other languages can target. So libraries written in one language can be used (and inspected) from another language. I know it's not going to happen anytime soon, but it'd be nice.
What about the Parrot VM: http://parrot.org/
The datatypes in the JVM are pretty weird. You have chars, but not unsigned chars, some integer types (but not all). You have no support for unicode. There is a low-level struct for arrays and multidimensional arrays (of a specific type), but for nothing else. It supports exceptions, but only Java like exceptions. (You can't make an exception system where execution can be retried or resumed; it's just not supported). It also has a java-specific thread model (want to create lightweight threads with lockfree data structures? nope, not gonna work).
What you want is a low-level platform with different modules that can be picked by the people who implement the programming language. Pick a parser module, a garbage collection module, a JIT compilation module, and so forth. This is really difficult, because you have to have a good understanding what kind of primitives different programming languages need. When all these things are fixed and non-interchangeable you end up with a virtual machine that is suitable only for a specific kind of language. It's turing complete, so of course you can make any language on the JVM, but it's just not a good fit.
My understanding is that it is state-of-the-art, and includes many innovations (unlike Java itself). Of course, state of the art does not mean perfect. There's still room to improve, which the JVM, CLR or some other VM might manage. But it seems over-the-top to bash the best in the world. It's like saying that, as a sprinter, Usain Bolt is quite bad.
The real tiger is never a match for a paper one, unless actual use is wanted. - Brooks
Why? He just bashes Java using strong language and not providing any arguments. This could get my respect if Java were some kind of sacred cow that nobody dares criticize. This is not the case AFAIK.
also interesting:
http://shootout.alioth.debian.org/u64/which-programming-lang...
I wonder how many hours are spent 'training' the jury in the legalese required to understand the case? And this would have to be done for each and every case that has a jury!
Trial by jury is the reason why East Texas is the court of choice for patent claims. For some reason jury verdicts there seem to be biased towards the patent holder.
I should also note that being a juror in a federal case sucks. The first issue is that you're "on call" as a juror for 30 days instead of a day or two like most counties/municipalities. The second part is the cases are usually boring. People don't like to bring cases that they're likely to lose to a Federal court.
Not true. The local rules in the Eastern District are seen as favorable to patent plaintiffs. It's (basically) nothing to do with the jury pool out there.
The jury is instructed to assume the patent is valid until they are convinced it is not.
If the patent holder's lawyer can confuse the jury, the patent will be upheld. It's pretty easy for a lawyer to do that.
A good, simple starting point:
Well guess what - that is not unusual when everyday words migrate into a technical area and the law is such an area. To complain about words having specialist meanings in a specific subject area strikes me as naive.
Just try and write a patent in Word - it grammar highlights the whole document!
But you're right, patents are for lawyers, not software practitioners. We should expect them to use a technical language that they, not we, understand.
The section which Linus is almost certainly referring to is the claims. These are indeed expressed in a technical vocabulary which is tricky for a lay person to penetrate.
But the section which is supposed to enable a person ordinarily skilled in the art to be able to make the invention is not written in such vocabulary. On the contrary, it typically written in language which is perfectly comprehensible. The difficulty if any is in having the patience to read a tediously long description with endless references to diagrams.
The issue is often framed in terms of all patents being bad, or all software patents being bad but to anyone to gives the matter more than the kind of superficial thought stemming from ideology the reality is rather more complicated.
Only if you ignore the fact that congress is composed of lawyers, who have a large self-interest in preserving the current Byzantine system.
How did you get "patent lawyers" from my statement of "lawyers"?
It doesn't take much to recognize that folks in the legal profession are going to be pro-legal structure.