I am saddened that the supreme court decided not to address the  software patent problem with Bilski. They had an opportunity to abolish or at least reign-in  software patents, which are an inherently bad idea. Instead they undid  what little progress had been made in the Bilski precedent.

I think others have already more eloquently covered how the  Open Source community lost in the final Bilski ruling.

Patents are damaging to Open Source healthcare information technology, and by proxy healthcare itself.  I believe it is time to tell you a story that I  have been sitting on for more than 5 years, that serves as an excellent  case in point. IANAL So understand  that this is told from the perspective of a software developer, who, out  of necessity has become familiar with patent, trademark and copyright  law. As legal advise, this blog post is worth exactly what you are  paying for it.

What must I, as an Open Source software developer, do to avoid being sued for patent infringement? The only semblance of  protection against being sued is to make my defense so rock-solid that  someone who might consider suing me would be worried that I could  successfully counter-sue for anti-competitive business practices. So  what are the defenses against patent infringement? I pulled these from my own experience, and articles like two  most common defenses against patent infringement.

  • Non-infringement: My code does not implement your patented method
  • Your Patent expired: The time on your patent has already run out before I started making money from my selling or supporting my software
  • I have patents too: and if I am infringing yours, then you are infringing mine.
  • Have shallow pockets: I am relatively poor, that this lawsuit is pointless, you will never get any "real" money from me or anyone else I associate with.
  • Invalid Patent: Your patent is invalid because
    • Prior Art existed: sufficient descriptions, or actual code already implemented or described your patented method before your patent was granted (this one works for me, the developer because I am able to search through sources of prior art myself)
    • Your patent was obvious: although no specific prior art existed that identically replicated your patented technique, your method was obvious based on what was published
    • Your patent process was flawed: You did something that you should not have during the patent process. (not helpful to me as a software developer since it focuses on a particular given patent)
    • Not patentable: Your patent covers something that is not suitable for patenting (also not helpful to me as a developer)

Obviously non-infringement is the best option, but here is the trick: If I do a search for patents that apply to my  area of expertise, and I am later to found to infringe on a patent that I  read, I might be liable for "willful  infringement" which carries stiff penalties. So generally I cannot  search for what is actually patented. This makes it somewhat difficult  to avoid infringement. You only know when you are infringing because  someone contacts you and says "you are infringing".  This what Open  Source developers refer to as the patent minefield problem. The only way  to avoid the minefield is to merely replicate software techniques that  for which you can find implementations that are more than twenty years  old. Finding prior art is not enough, because you cannot know the dates  of particular patents without searching for them. So basically, Open  Source projects can safely implement any software technique that was in  common use twenty years ago. That kind of sucks, because you cannot even  improve them, because those improvements might be patented, you can only  re-implement them. So the only way for an Open Source developer, like  myself, to entirely avoid patent litigation is to stop innovating.

I  hope that my readers, irrespective of their perspective on software  patents, are already uncomfortable. This is not what the patent system  was intended to accomplish. Just because my chosen method of profiting  from my innovations is not the same as proprietary/patenting software companies,  does not make my work less innovative or valuable in any way. But there  is no way for me to make my "innovation process" safe from patent  infringement lawsuits.

What options do I as an Open Source developer have? Basically, if I  am actually doing something new and different, and I want to release it  as Open Source, I just have to release the code and then pray that it  is either A. Not a patented technique at all or that B. If it is  patented, I can defend myself.

So it is really important to note that there is nothing, absolutely  zero, that I could have done -in advance- to avoid implementing someone  else's patented technology.

The Shakedown

Several years ago, FreeB, an Open Source billing engine that I wrote  was attacked by a patent troll. When I get the time I will publish the  letters I got to chilling effects but for  now I will just include snippets. First, I should clear up some  confusion. I was contacted by BillingNetwork because I was the owner of  the Freemed.org domain name. I was developing FreeB, the medical billing  module that Freemed would briefly use, but Jeff Buchbinder was the lead  developer of the Freemed project and I was merely a contributor. So I  really had two hats, one as a Freemed user and contributor, and one as  the primary developer of the billing module, FreeB, that any EHR could  (and did) use to enable medical billing.

BillingNetwork is what I would consider a Patent Troll.  My definition of that term is any company that makes vastly more money  by suing from its patents, than it does from actually selling any  product that implements the patented technology. Making good software,  that does well in a competitive market is not easy. Most of the software  that I have written will never be subject to market forces. Usually  this is because the people who hire me to extend or create Open Source  healthcare software do so without having a completely reliable business  strategy. They just realize that a lack of software is impairing their  entrepreneurial aspirations and hire me to fix that problem. Some of my  software projects have been tremendously successful in the market, but  most of them do not get off the ground from a business perspective, this  is true of every software development company or individual that I  know. When a software project finally is useful in the market it is  usually because there we were several earlier iterations of the idea  that were abandoned. Going to market with half-baked software  inevitably dooms a software company to market irrelevance.

Patent  Trolls, even ones who "market" their own products are usually totally  irrelevant in the marketplace. They have not put in the work needed to  make their patented idea into a "workable" innovation. The irony is  that making software "workable" often means that you have to completely  abandon your original design. What actually works in the software market  is often dramatically different than any starting software designs.  When a Patent Troll patents a software design, without having the  ability or often even the intention to turn the design into a working  product, they very often patent a very poor design. These patents are  markedly different from patents from large companies, like IBM,  Microsoft or Google, that create software patents as a side effect, and as  side business, from making process of creating fully working products.

BillingNetwork  just settled with Athenahealth, a company which has about 1000  times more market relevance than BillingNetwork ever will. Their  patented design, as you will see below, is not a particularly good  design. They qualify as a Patent Troll in my book.

Here is the relevant text from the letter that Billing Network sent  me more than 5 years ago:

not charging you with infringement of the  patent

(The underlines are mine.) This is really interesting. Billing  Network was offering to license me this patent without ever implying  that I actually infringed the technology. If Billing Network was  actually an "innovator" it was in the field of patent trolling. They  would not only contact web-based EHR/PM vendors with letter like this,  but they would also send letter to the customers of web-based EHR  vendors! Even  in these letters they would not actually say that the software actually  infringed, only that it might be. If someone owns a patent, and  they say to another company "hey you are infringing my patent" then  they have to back that up in court. If the patent holder says it  publicly while knowing (or should have known) that the claim of  infringement was not true, they might be guilty of libel and slander  against their target. But if the patent owner says you "might" be  infringing, then they have no obligations, and if they say that directly  to the users of software, rather than the developers who might be able  to actually evaluate that claim, then they can earn "licensing" money  from the FUD they create around their patent, and what it covers,  without ever having to go to court and prove anything. This is  important, because it allows BillingNetwork and other Patent Trolls to  use a patent like a shotgun generally against any company in a given field (in this case web-based EHR that does medical billing),  rather than merely those companies which actually infringe the patented  methods!!

Even if you are against software patents, like I am,  you have to marvel at the evil genius at work here!!

At this point I made the mistake of actually calling them and  emailing them, as they requested, and explaining that I could not  license the patent because that does not work for Open Source. At this  time I foolishly assumed that contacting them was better than reading  the patent to see if the patented technology was anything like what I  had worked on. But this was foolish, once they have said "hey take a  look at this patent you might be infringing" there was probably no way  that I could have been held as a willing infringer by merely reading the  patent.

In my communication to them, I included the link  project pages for FreeB and Freemed which of course allowed for full  download of the sourcecode in question. The letter that I got back was  so contorted and confusing that I realized that I needed legal help, and  so I contacted the FSF and EFF and they put me in touch with the Public  Patent Foundation. Who helped me out from then on. They wrote a  "please go away letter" for me, and after some back and forth, that was  the end of it. Perhaps Billing Network sorted out that I although my  billing software was in wide use, I was not making money on it. But for the present text I think it is important to show how belligerent they got, without ever actually implying that I infringed  anything.

From the second letter:

not charging you with  infringement

From the third letter, after I foolishly talked to them:

may be covered by the '229  patentyou need a license

Note the powerful "Accordingly", you 'may' infringe therefore you  'need' to get a license. Legal marketing at its best!!

The last letter is the part of the response to the PubPat letter...  Specifically this is the part where we said that FreeMED and FreeB do  not infringe on the patent in question.

no documentationany documentation  that supports your assertion
Finally, we restate that we believe that a license agreement would be  in the best interests of both parties...


(again underlines mine). Remember, I had provided them with a link to  the sourcecode in question during our initial discussion. This is a  critical issue. BillingNetwork viewed me providing full access to the  sourcecode as "no documentation". In short, from Patent Troll's  perspective, they needed to be given a guided tour of sourcecode that  they already had access to, in order to accept our assertion that we  were not infringing on their patent. Think about this from a business  expense perspective, it is not enough for me to have read the  BillingNetwork patent, and be sure that my software works differently, I  have to determine which parts of my code -prove- my non-infringement, and then give  the Patent Troll a guided tour.

Next we will actually talk about whether I infringed the patent. But  for now lets take a stock of where we are:

  • Jeff and I (and Open Source software developers generally) have no  way to protect selves from this type attack. We could not review the  patents the danger of becoming "willful infringers" (the patent  minefield problem).
  • The patent troll attacked us with the expectation that it was  cheaper for us to pay to license the patent rather than even figure out  if we infringed the patent. So they are not making money from their  "innovation", but rather the simple fact of having a patent for one  design of the tens of thousands of designs that might work. Their patented design, is like an "idea tax" on the process of implementing any of the  other designs.
  • Thankfully Pubpat stepped forward to help us, but if they had not,  we would have been on the hook for hiring lawyers to defend us. Without PubPat, I had no good  choices: Go out of business hiring lawyers, or defend myself  poorly. Did I mention that Pubpat is an organization that you should be supporting?
  • The Patent Troll viewed it as our responsibility to prove that our  openly published code did not infringe rather than their responsibility  to look at the code and prove that it did infringe. This is the "guide  tour" problem.

This is why this a "Troll". The whole word picture here is that of a troll who  charges a "toll" for a bridge. A bridge the Troll did not build. This is  why software patents, no matter what you think of them, stifle Open  Source innovation. So far we have not discussed if the patent is valid  or if we actually infringed, but the expenses that I incurred and the  time that I spent dealing with this prevented me from doing... that's  right folks... actually improving my software. Practically speaking  this halted my development activity for probably three months in total,  at different times.

Now what if I could show, conclusively, that either A: we did not  infringe the patent, or B: to the degree that we did "infringe" we did  so based on obvious prior art? That is what I will attempt to show next.  But at this point I want you to see that even without considering actual infringement, BillingNetwork  has a method to shake down any user of my Open Source project using  carefully crafted FUD, and that they attempted to do this entirely independently  of whether my code infringed or not. Because they have a patent on

one design

for the

type

of software that I develop, they have a free ticket  to go after my entire market place, without regard for the actual  content of the patent in question... This has nothing to do with  "protecting" an innovation that BillingNetwork had, its all about using  patents to legally extort the  free market. I cannot help but quote that Wikipedia article on Extortion:

protection

How awesome is that quote?

Did we infringe BillingNetwork Patent 6374229?

note: I would recommend that if you develop healthcare software, Open Source or otherwise, you stop reading now. By reading this, you might become a willful infringer of the Billing Network patent. Although I do not think I give enough detail here to make you a willing infringer, the link to the patent certainly would. Be careful.

That question has two answers. One for my project, FreeB,  and one  for Jeff's project Freemed. But first lets look at the patent in question.

There are seven  claims made in the patent:

Claims 2-5 are actually refinements of the first claim, that begins:

An integrated internet facilitated billing, data  processing, and  communication system comprising:a database server and a  home page of a website

The sixth and seventh claims begin:

An internet based computer system for billing, data processing and   communication for and between subscribers and said system, one type of   subscriber being of the browser-based type and another type of   subscriber being of the direct access type, said system comprising:


So the version of FreeB in question

did not infringe

. Why?  There was no database, and there was no web interface. The first version  of FreeB, and the only one originally written by me (the second version  was originally built by the ClearHealth team) and the only one that  existed during this letter writing, was designed as nothing more than a  data pipe. You connected one end of the pipe into an EHR, and out the  other side came properly formatted medical bills in paper and EDI  formats. It was a software module and had no direct user interface at  all, you configured it by editing text files. It remembered nothing from  one run to the next. It was not a great design, but it certainly did  not infringe the first five claims here. The claims are all mixes of  "browser" and "database" requirements, and FreeB did none of that.

Of course, you could combine FreeB with another system, that could  theoretically infringe the patent. In fact you could argue that FreeMED,  which was an early attempt at creating a web-based EHR that could do  billing might have infringed. But there is no way that FreeB itself, in  the version that BillingNetwork said "accordingly" needed a patent  license, could have infringed the patent. The sourcecode that was  available to BillingNetwork as well as the developer documentation on  FreeB available at the time made this perfectly clear. BillingNetworks  implication that that FreeB "might" infringe their patent was based

only on the fact that FreeB was software in the same field of endeavor

(medical billing) as their patented technology.

But what about  FreeMED or the combination of FreeMED and FreeB?

There is nothing in the patented claims that even early versions of  FreeMED could not be made to do with mere configuration. Many of the  things claimed in the patent were done in FreeMED out of the box, but  then most of the things written in the patent are done by every  web-based medical billing system on the planet. Of course, this is true  of FreeMED today, as well as the far more popular ClearHealth and  OpenEMR projects, as well as probably half a dozen lesser known  web-based Open Source EHR projects that either support billing today or  want to in the future.

But FreeMED is unique. As far as I know, it is the oldest Open Source  web-based EHR/PM system. In fact, it is so old, that if it did infringe  on the BillingNetwork patent, it has been infringing even before the  patent was issued.

The date for filing of patent #6374229 is Oct 20, 1999

But FreeMED was already a working codebase at that time. I inherited  the FreeMED.org domain name from other owners (sorry it is down right  now... still working through a server migration...) but thankfully at the history  of the site, and therefore the project itself can be found at the Internet  Archive. Let me take you on a quick tour. The oldest version of  FreeMED.org that has a snapshot is Nov   25, 1999 at that time, there was already  a demo running. More importantly we find that the site itself has  downloads of the FreeMED project starting as early as 05/27/1999 the latest of these is from 23-Jul-1999.

These links actually allow you to download FreeMED as it existed, at  that time, three months before the Billing Network Patent was filed. But  most importantly, are two files in that download. The CHANGELOG and  TODO files. No matter how I might disagree with some of Jeff's software design  decisions, I have to admit that the man was a stickler for  standard Open Source project conventions and that is paying off.

From the changelog take a look at the entry "19990709 --" which  states in part:

a added structures for payment records (for checks, etc)  to the admin module. stupid db reinit -- you go squish now. a added prelim payment records module -- working on addition function now. a added billing function from main menu with billing_functions module. n these functions are not ready for prime-time yet. please do not wail on them then complain that they don't work ;) -jeff

Even more relevant is the following section from the TODO file

19990708  ------------------------------------------------------- * implement payments and billing databases, with structures .... * insurance payments related dbs and tie-ins, possibly with API revisions

This is an indication of where Jeff was going with the billing  system. All of this either documented or actually coded at least three  months before the BillingNetwork patent was filled.

I submit that by running a version of FreeMED that contained only  what was coded or planned as of 10-1999, and mere configuration of  Apache and the FreeMED configuration file, using the versions available  in 1999 (i.e. redhat 6.0) you can easily implement every aspect of the  BillingNetwork claims, or designs that are largely equivalent (like  using php's direct mysql connection rather than ODBC), all using

mere configuration changes

. Moreover, you  could find using other php projects (like postnuke) that were popular at  the time, examples of all the configuration changes needed to make the  modes of operation described in the claims work.

I would submit that anything that Jeff was reading at the time, (i.e.  the php CMS that he would use for other purposes for instance) would  serve as a basis for what should be considered obvious art at the time.  Essentially the BillingNetwork patent covers a particular configuration  for a web-based billing system. Not even the most intelligent  configuration given the software that was available at the time. Jeff's default configuration was actually a better design than the configuration required to fully emulate the Billing Network patent. This  goes back to the habit of Patent Trolls in patenting half-baked  technology. No one could run a medical billing practice management  service by merely correctly implementing the patent, it would not  actually work. But broken technology does not stop a Patent Troll from  profiting from a patent, and Billing Network is a perfect example of  this.

If my readers demand it (leave comments) I will be happy to give a  blow by blow of the simple configuration changes that would have allowed  the FreeMED "stack" to emulate exactly the design put forward in the  patent. But anyone who understands the basics of the  php/apache/mysql/linux stack know that 98% percent of what the patents  cover are automatically provided in the stack itself. This was already  true in 1999, which was php version 3. Moreover I can list about ten  ways that such a configuration is not actually the "right way to do it"  but then again, no one in the patent office cares about what actually  constitutes best practices or does not when they hand out a patent like  this. Sadly amateur design is not what is in question... just  "originality" as compared not with what people were doing publicly in  the open source community at the time, but with regards to what has  already been patented. I think now the patent office is a little better  about seeking sources of prior art form the Open Source community, but  not by much.

So does FreeMED serve as Prior Art that invalidates the  BillingNetwork patent? I think so, but it does not really matter. What  is important is that this gives a very specific path for Open Source  projects to be immune from attack by this particular Patent Troll. It  means that all of the plans that FreeMed made are a safe harbor. As long  as we do it in the way that FreeMED was  there is no way  that the BillingNetwork "protection" can impact you.

Defensive Patents

Several people in our community have started to consider defensive patents. There seem to be two approaches to this issue. Patent Pools and more recently Defensive Patent Licensing.

Both of these rely on some basic assumptions. If Open Source projects will apply for and get patents for the designs that they use, then they will be able to for the patent office to acknowledge that the methods they use are "innovative". You might have the patent office reject parts of your patent because they were "obvious". Showing that your merely implement your own patented method or something that is "obvious", is one of the few novel defenses against someone who is is attacking with patents but does not have any real business of their own. The pooling method is also a good idea for defense against big businesses with patents. When several projects have patents, and are willing to pool them against people who sue for patent infringement. The "sue you back" tactic would only work against companies with software patents who are actually in business. But "sue you back" does help to defend the community against one kind of patent attack. But "sue you back" is ineffective against patent trolls, who very often have no business at all, so they do not "infringe" on any ideas that might be an Open Source Patent Pool, because they are not "doing" anything at all. This is the reason why I think "We use our own patented designs or obvious designs" might be a good avenue to pursue.

It is deeply frustrating that the Open Source community would need to patent ideas in order to ensure that they could be freely available without charge to users and developers. However, at this point I am simply at a lose as to how to proceed. I am considering pursuing defensive patent strategies like this, and I know that other are too.

Patents frustrate Open Source developers

Hope this helps people to understand why we resent software patents in Open  Source. At every turn in this story, my time was taken up, not defending  a legitimate claim of patent infringement, but simply jumping through  the hoops that some group who had a "related" patent thought I owed  them. As far as I can tell, from a non-lawyers understanding of patent  law combined with a working knowledge of building web applications, I  was utterly, extremely, completely, excessively, non-trivially and  enthusiastically -not- infringing the Billing Network patent. But  Billing Network made it abundantly clear, even after we told them that I  was not infringing, that I should still pay them a toll, because that  what a Troll will always say to anyone who wants it to go away. I guess  it could be worse; they could have been threatening to go after my  knee-caps with a baseball bat.

Joking aside...

If original,  innovative Open Source health information software is in the best  interests of society, then software patents, as currently implemented  are a  serious problem.

-FT

Update 12-01-10: It turns out that someone decided to go toe to toe with BillingNetwork and apparently won. HorizonMIS announced dismissal of a Patent Infringement suit brought  against it by BillingNetwork.

Bob Bortz called this to my attention and offered to share his experiences with others attacked by BillingNetwork, you should be able to get a hold of him through the contact information at the bottom of the press release.

Prior Art for the BillingNetwork Patent Troll