Unlike many of the visitors and contributors on this site, I am not a lawyer. I am a programmer who found this blog while chasing links across the Internet looking for information on software patents and what has now become one of the most anticipated Supreme Court decisions ever; Bilski v. Kappos. That was almost eight months ago at a time when I held what is probably a common view of software patents among programmers. Specifically, that they are immoral, unfair, and restrictive to innovation and creativity. I have since found that things are not as black and white as they appear and I’d like to share with you the problems as I see them, from a programmer’s point of view.
The communication between lawyers and programmers is admittedly poor. I can’t imagine very many people jumping through all the hoops to become a patent lawyer if they didn’t believe in the power of the patent system to help grow the economy. On the other hand, programmers who are frustrated with declining job security, declining benefits, and declining pay, often turn to leaders in their field, who demonize software patents. Those industry leaders who support software patents are usually the ones doing the laying off, cutting salaries, and outsourcing jobs, so it is understandable that they have questionable credentials when it comes to the opinions of the common programmer. How can we start to heal the wound and repair the damage that has already been done? We need to encourage more communication between the two parties if we are ever to end the “cold war” over software patents.
In my opinion, one of the biggest misconceptions about software patents involves figuring out what they actually cover. Most people are content with reading the abstract and assuming that it tells them everything they need to know. What they don’t know, is that the claims are the part that is most important when considering prior art and granting exclusive rights. Also, you can’t request anything called a “software patent”. What we all refer to colloquially as software patents are actually utility patents on processes. The patent application should include a recommendation for how to successfully manufacture or carry out the patented device or process. Any person who reads the patent, and who possesses ordinary skill in that area, should be able to reproduce the process or invention without much fuss. Enough information must be included to meet these requirements, and it has even been known to happen that patent examiners have requested working demonstrations of devices to verify that they actually work. In the case of software patents, there is usually included a reference to a CPU, memory, a display device, a network, or just a reference to a computer. Sometimes the computers are generic and other times they are specific. There are many stipulations that can prevent a patent from going through, but once it does, the applicant gains exclusive rights over what is in the claims.
Before the lawyers start criticizing me for my one paragraph description of the patent system, realize that I am trying to make one important distinction; software patents aren’t patents on software, they are patents on processes. You may be thinking at this point, “So what? Processes on a computer sound like algorithms to me, and algorithms are just math, and math is protected from being patented, right?” There is a problem with this line of thinking. It is true that math itself is not protected, because it has been deemed (and rightfully so) an abstract idea, but the use of math in other processes and inventions is different. If you or I come up with a useful process that includes a mathematical calculation as one of its essential steps, then that calculation can be patented as part of the process. The important thing to note here is that the math involved must be taken in the context of all the other steps in the process and is only covered by the patent when all the other steps are present.
Also, just because algorithms are processed mathematically by a computer, doesn’t mean the results have any mathematical value. The electrical charges that zip around inside a computer only have value because we assign it to them, not because they have any inherent value of their own. A piece of software is usually not designed to make mathematical calculations for the purpose of obtaining numerical results, but rather to transform information represented numerically into other pieces of information that do have value to us.
A good example would be the spell checker in the word processor I am using. Numerical representations of letters and words are formed when I make keystrokes and are then compared to other letters and words stored in numerical form in a virtual dictionary, but without the knowledge of what those numbers represent both before and after those operations, the numerical results have no meaning. The process of checking words against a dictionary as they are created and then providing suggestions for different spellings does not require a computer, numbers, or any kind of math to be involved, it just happens to when done on a computer. As funny as it would seem to have somebody standing over you with a dictionary performing the exact function of a computerized spell checker, it does go to show that the process doesn’t require a computer to be implemented.
This brings me to my next point. How generalized could the spell checking process be? At what point does it not only preclude any other method of spell checking, but become so broad as to cover things besides spell checking? In our hypothetical scenario, how coarse a level of granularity should be required before a patent could be issued? If you were to make it as generic as possible and only claim a process for ensuring that words are spelled correctly without giving any details such as the use of a dictionary, then you would probably be rejected. If, however, you talk about attaching it to a processor, memory, a display device, a virtual dictionary, and then provide a complicated flow chart for a process that decides how many and what kinds of suggestions to make based on the way the person spelled the word and how close it is to other words, then you might just have a shot at getting through, or so I would imagine. I find it hard to believe that we have perfected the art of spell checking.
Another point to consider is whether or not the computer itself is enough to distinguish the process as having merit for the sake of patentability. In other words, is the hardware specially designed for the purpose of executing the process. Under the Machine or Transformation test (MoT), set out by the Court of Appeals for the Federal Circuit, the process must be tied to a particular machine (not a general purpose computer), or transform an article into a different state or thing. Clearly, things like specialized medical equipment would qualify as a particular machine, but what about the software that we use on our computers everyday? What does it mean to transform an article into a different state or thing? This is a good opportunity to reexamine the meaningless results of mathematical calculations in computers. Since everything is reduced at some point to numbers that are only symbolically significant to a person who knows what they are supposed to mean, then how do you decide which numbers, and which data are to be considered articles? And what does it mean to transform them?
I haven’t exhausted every resource trying to find the answer, but that may be because the only real answer is in the hands of the Supreme Court. Even a cursory glance around the internet will show that many decisions made after the Machine or Transformation test was adopted have been all over the board on interpreting this rule. Are articles restricted to only physical objects? Information that represents physical objects? Or just information in general? You may be asking yourself how a programmer, or patent examiner, is supposed to make sense of this mess when even the courts have had their hands full with it. I honestly don’t have an answer to that, except to say that the Supreme Court decision will hopefully clear things up in one way or another. It is extremely unlikely that they will leave things exactly as they found it after spending this much time looking at it.
At this point it would be easy to throw our arms up and say “what a mess; can’t we just do away with software patents like they did in Europe and clean our hands of the whole thing?” I’m going to tell you why that would be a bad idea. First of all, this decision is going to affect much more than just the software industry. Second, dealing with the patent system is like sorting garbage. It would be tempting to just give up every time you see a banana peel in the plastics bin, but at the end of the day you know the right thing to do is to sort out the garbage. There is no doubt that the system is being exploited and that there are a lot of bad software patents out there. What we should be doing however is looking at the specific issues in order to decide how we can fix the system rather than throwing it all away. Lets examine a few of the issues now.
First, all patents last the same amount of time, and in our modern society, that is simply unacceptable for many industries. As Gene and others have pointed out recently and in the past, some patents are the result of over a decade of research and millions or billions of dollars in investment. Is twenty years (less when you consider all the bureaucracy), really enough? I have issues that I won’t get into here with pharmaceutical companies, but the cold hard fact remains that people aren’t going to invest money if they feel like they are going to lose it, and patents are one of the best ways of protecting that investment. Software on the other hand is usually created very differently. Not only do many software systems become obsolete quickly, sometimes even before the patent issues, but most of it is developed at very low cost and at a rapid pace compared to other products.
It is easy to see several problems here. The United States Patent and Trademark Office (USPTO) takes to long to inspect and issue software patents, mostly due to lack of funding, and when they do issue, they last for to long. These problems could be solved if patent on software were expedited and had their lengths reduced. Practically speaking, few people who hold software patents or who have an immediate interest in acquiring one are going to petition to have their lengths reduced, but sometimes compromises have to be made for there to be progress. A solution like this is subtle, and might actually have a chance of succeeding, as opposed to the all or nothing demands to remove them completely.
Second, most patents are treated pretty much the same. No respect is given to the different ways that software is developed. While it is true that there are large companies like Microsoft and Apple that invest a lot of time and money in their software, they don’t represent the majority of software development very well. Most software isn’t sold in a store. Most software that is produced is either developed in house, or developed on contract for one or more clients. Open source libraries and frameworks are starting to play much larger roles in the development of that software, not to mention the huge volumes of open source programs that are available to the general public. However, because the big companies, which are only a minority player in the big picture of software development, control the majority of the commercial interests, they have the largest say when it comes to patents. Software developers aren’t being represented very well. We need to do more than just protest, and find ways to make our voices heard that will actually count.
Just to give an example of the differences involved in software development, lets look at music. Think about the different ways in which music is created. A handful of large studios produce almost all the commercially available music at a great expense. It is possible to get a hold of the sheet music and lyrics and make a very clear distinction about what it is and what it isn’t. Jazz, on the other hand, isn’t like that. Jazz has an identifiable sound and culture, but the music is created in a much looser manner. A jazz musician will start with a developed sound and then add their own personal style during a performance in order to make it unique and fresh. Most software development is a lot more like jazz than big record label productions. Few programming shops develop their software without building on the work of others, and almost nobody builds their software from scratch, because it just isn’t practical. Some pieces may be licensed for money, while others are the result of a group effort, but very little about the accumulative nature of software development is taken into consideration when it comes to patents. As the saying goes, “If I have seen further it is only by standing on the shoulders of giants.”
We now have to consider a very important question. What should the ultimate goal of software patents be? Encouraging growth in the commercial software industry? Encouraging development of more software? Encouraging growth in software innovation? Unfortunately, unlike some other industries, these things don’t necessarily follow each other. The health of the software ecosystem depends on its diversity. Why do we have so many programs that do the same thing? Software can be very personal, like art. Software spans a very large domain of uses, from medical data processing, to 3D games, to music and photo managers. We need to find a way of balancing the needs of everybody that is involved. We need to encourage commercial investment without inhibiting the natural growth that already exists.
Finally, we have a desperate lack of prior art indexed in any meaningful way for patent examiners and defendants to work with. There are a couple of reasons for this. Unlike the 50’s and 60’s when software teams would destroy whole virgin rain forests in order to print their code to avoid taking up valuable CPU cycles, software today is stored almost exclusively in digital format. In addition, software changes very quickly and computer hardware has a short lifespan compared to traditional forms of storage. If that weren’t enough, most of it is scattered across the world. It is impossible to even know if a particular piece of software exits, much less where or if you can find it. Nobody has yet taken it upon themselves to archive all the software that exists. Aside from the fact that it would be nearly impossible, it would also be prohibitively expensive.
Several problems stem from the fact that we don’t have reliable archiving. First, individuals and companies get patents for things they shouldn’t. If you want to invalidate a patent based on prior art, then the onus is on you to provide it. This extends to more than just providing a reference to the exact process being claimed. Part of the obviousness conditionality for patents involves using prior art to determine if a person of ordinary skill would have found the claims to be natural extensions of what already existed at the time, but because we don’t have a good idea of what is out there, it can be very difficult. Second, patents get issued to different people for the same thing, which isn’t supposed to happen, but because the examiners can’t find anything in the prior art, they have no reason to deny the application. You may find one patent that excludes a process you want to use, strike a deal, and then find out later that somebody else is suing you for the same thing! A thorough database of what is out there and what isn’t would help clear up a lot of problems with software patents, but right now that isn’t very feasible and a different solution must be found.
What are the answers to these problems? I don’t know, but clearly reform is needed. Patents are being issued when they shouldn’t be. Patents are being issued to multiple parties for the same claims. Programmers are not properly represented and software development in general is misunderstood. We have no good way of knowing what is out there and what isn’t. Patents take to long to issue and last longer than they should, which is not reflective of the way the industry works. Should we allow everything to be patented when the current system is so inadequate to handle it? Can Machine or Transformation actually provide meaningful guidelines when it must be generic enough to apply to everything but not specific enough to handle all the issues? Would completely banning software patents cripple the software industry? The Supreme Court has a lot to consider and it will probably be some time before the full effects of their decision are known. In my opinion, an extreme decision in either direction probably won’t be healthy for the future of software.
Join the Discussion
16 comments so far.
Hire PHP ProgrammerJuly 7, 2010 07:29 am
It’s not a good idea the problem can be solved if the length is reduced. 🙂
New HereJuly 4, 2010 11:07 pm
Mr. Cole, Copyleft is just a name, to be different. No matter if open source or not, the copyright Law applies. I, as best I can recall, no copyright information I have read, ever states – questions anything about if the source is open or not when talking about a software copyright.
passerbyJune 30, 2010 10:36 am
if new patents, like new software are derived from previous work or knowledge, than who has the claim? What about when patent B is just a more specific implementation of patent A? This is part of the problem with software patents b/c all software is itterative
Just visitingJune 28, 2010 10:55 am
As we all know. Bilski is out — affirmed. However MOT is not the sole test. Business methods are not categorically excluded, and software is not touched by this opinion.
Wish I had time to write more, but it is a busy day for me.
Have fun blogging !!!
Andrew ColeJune 28, 2010 10:27 am
Copyleft is a nice idea, and it certainly powers the open source world and I am very glad we have it, but legally it is just clever use of the copyright system.
Mark NowotarskiJune 28, 2010 10:12 am
I’m not sure that it would be a good idea, and I’m almost certain that it would never happen.
I submit that it already has happened. (e.g. copyleft) The question is can it be improved or can an alternative be developed to meet the needs of a different constituency.
Andrew ColeJune 28, 2010 10:11 am
-Person accusing me of being a patent lawyer (again)
Gene and I have already addressed the issue that I am a real person. Even if you don’t believe that, consider that I made the case for reform and never said that we need to allow all software patents. Does that sound like the argument of a patent lawyer posing as a programmer? Just because the big companies get all the controversy doesn’t mean they make the industry. The Computing Community Consortium (CCC) and Computer Research Association (CRA) were created because leaders in the computer science field were having real trouble predicting which emerging technologies were going to be successful and which ones were going to flop. Look how much the internet has changed in the last ten years. There is clearly room for innovation and patents can play a role in that. We shouldn’t shut out the positive effects patents can have on that innovation just because a few companies misuse a broken system to get ahead in the general consumer market.
jayJune 28, 2010 10:03 am
Based upon my review of the Bilski oral argument transcript, the SC will overturn the Fed Circuit’s opinion in Bilski but will decline to provide a broad test for patent eligibility . . .Instead, it will revert back to the SC’s long line of authority limiting patentability exclusions to “laws of nature, physical phenomena and abstract ideas.” At the end of the day, the issue in Bilski really should have been whether the patent at issue was too “abstract” to be patentable under applicable precedent . . .The Fed Circuit’s “machine or transformation” test was simply an effort of the Fed Circuit to more narrowly define what that means . . . However, it is not necessarily workable and may be an overreach given prior precedent.
Certain Justices and the Solicitor General arguing for the US all but agreed that now is not the time to announce some new broad test limiting software patentability . . .
Andrew ColeJune 28, 2010 09:57 am
The constitutional doesn’t specifically mention patents or copyright or trademarks, so I assume that it is possible to create a whole new system of IP just for software within the powers of section 8. I’m not sure that it would be a good idea, and I’m almost certain that it would never happen. Even if it did, I imagine it would be housed at the USPTO, so we might as well just get them straightened up instead of creating a whole new rules and regulations to be meddled with.
Mark NowotarskiJune 28, 2010 09:50 am
These problems could be solved if patent on software were expedited and had their lengths reduced.
Would it be possible to design a new type of intellectual property better suited to the needs of the software industry?
patent lawyer trying to support my position as a “programmer”June 28, 2010 09:24 am
“What should the ultimate goal of software patents be?”
I can’t answer that, but I can answer what should be the immediate goal of software patents: to teach how to make and use the invention, including the best mode.
When [CPF] companies like MS get thousands of patents on their software products (Windows) while by law being permitted (in fact, empowered under the DMCA) to keep their own implementations SECRET, the entire software patent landscape has been permanently stripped of any value to the public/programmers, and the quid-pro-quo that has been used as a justification for the patent system has been turned into nothingness in this technology area.
The fact of the matter is there is no teaching going on in the majority of software patents (ask any programmer if they’ve ever once looked to patent flow charts for solutions; heck, ask them if the flow charts or claims in most patents have *any* meaning in the real world!): most software patents are just about staking abstract claims (“I was first even if I don’t teach you how to do what I did!!”) and hoping to cast a wide, vague net in the claims for the unsuspecting passerby – the concept of bulk low-value “defensive patenting” by a power player to nullify the exclusionary power of a competitors’ true (and rarer) invention comes to mind – which was never the intent of the patent system.
Hopefully, reform is coming….
Andrew ColeJune 28, 2010 08:47 am
Sorry friend, but what you see is what you get. If you read the “about the author” section it will tell you no lies. Just go back and read all my old comment posts over the last eight months as either “pop”, or “pissed off programmer.” I think you will find that even though I started out as a raging anti-patent zealot, I have now settled into a more reasonable opinion. Unlike some programmers who just make noise, I actually bothered to try and engage with lawyers, read books about IP, and find out what the law actually says for myself. I think you’ll find that if you do the same, it might just change some of your misconceptions. I have to assume you are anti-patent since you are crying BS!
Gene QuinnJune 28, 2010 08:41 am
Mondays are great when they elicit such hatred, particularly when it is misguided hatred. Obviously you didn’t click through to Andrew’s LinkedIn page to find out that he is real and not me.
And, by the way, I am a patent attorney and a programmer myself. Doesn’t that just get your blood boiling! LOL.
Andrew ColeJune 28, 2010 07:15 am
As far as your rhetorical question is concerned, we all know that hardware can be made into software and software into hardware. I was trying to point out the bigger picture, which is that no matter which form it comes in, all you are dealing with is symbols that don’t have any meaning until you assign them meaning. I didn’t come up with the requirement that the hardware be a particular machine, I just mentioned it because that is what the current requirements are (pending today’s decision of course). I even went out of my way to point out that there are no such things as “software patents”, and that we are just dealing with process patents that affect software. I don’t think we are in disagreement here.
As far as the Bilski patent is concerned, I read it,, and the oral arguments from the Supreme Court, and I don’t think he deserves his patent. I could list some reasons why, but clearly we are all here because his particular patent has caused so much trouble that the Supreme Court has to get involved to decide how to interpret the law in order to figure out whether he deserves his patent! I’m not going to pretend that my opinion about his particular patent is important in the grand scheme of things, but for most people who read the claims, they immediately think it is ridiculous.
You say the hostility is one way, but I disagree. Gene and I are getting along pretty well these days, but it wasn’t that long ago that he wrote an entire article just to point out why he thought the anti-patent crowd was a no good bunch of thieves who just want to steal everything and not innovate for themselves. I’m not faulting him for his opinions, but to pretend that it only goes one way is a bit of a sham.
step backJune 28, 2010 03:57 am
Before I defected and became an “evil” patent lawyer, I was a professional “computer programmer”.
I was also an electronics or “hardware engineer”.
I’m going to pose to you the same rhetorical question I just posed on that “other” patent blog site (Crouch’s):
As indicated, the above is a rhetorical question. It seeks to point out the ridiculousness of the debate. The electrons don’t care. They move nonetheless.
We can follow up the above with an equally ludicrous debate over which end of breakfast’s poached egg should be cracked open, the big end or the little end? (The allusion is to Gulliver’s Travels. Hopefully CCNY still forces its engineering majors to take a liberal arts course here and there.)
Tomorrow morning’s Supreme Court decision should in all honesty not mention “software” because there is no “software” in Bilski’s challenged claims. Bilski’s claims define a “process” that includes the steps of initiating first transactions as between a first group of people and initiating second transactions as between a second group of people. In order to initiate such transactions, one has to do something physical, such as picking up a telephone and calling someone, i.e. your commodities broker. There is no way to perform this stuff simply by sitting there and sequencing through a series of “purely” mental steps. You can wish upon a star all you want. But that ain’t going to initiate a transaction between real world people.
As to the question of whether the Supreme Court majority will understand these basic concepts, and whether they will give “weight” to what in the past used to be deemed “the claim taken in whole”, at this pre-Bilski moment I can’t say. People can be irrational. The Supreme Court is constituted by a group of people. You do the rest of the hard hard logic off that simple proposition. (Let’s of course not point out that in its glorious past the US Supreme Court had ruled that slavery was OK.)
Now as to the animosity between software professional and patent lawyers, let me respectfully suggest that it is pretty much all one way. Software professionals generally do not understand what a patent is or how the patent system operates. Software professionals often allow themselves to be manipulated by people who do not have the software professional’s economic interests in heart. If you want to start an innovative new software company and you can’t get patent protection, what’s going to stand between you and the Big Bad you know who company? Don’t say copyrights. If you do, you don’t understand copyright law either.
Back in 1952, a group of very smart people crafted these words:
The questions that the BIlski Court will be looking at are:
1. What is a “process”?
2. What is a “useful” process?
3. What is it meant by “invents or discovers”?
It should be an interesting day (unless they decide to push it off into the next term).
BSJune 28, 2010 03:15 am
im calling you out, your a patent lawyer trying to support your position as a “programmer” using the pseudonym “andrew cole”