02.04.09
Guest Post: Watch Out for “Patented API” Traps, by Jose X
The Trap in a Nutshell
A patented API is short-hand for saying that an API (a software interface) is defined to parallel a patent so that using the API to build applications creates patented material unavoidably.
This is a trap API. Use it, and infringe.
The story:
- A person writes up a patent and designs a matching API.
- You use their trap API to write a program.
- Your application violates the patent because the API gave your application properties that match the patent.
- Fix the problem only by dumping the API, redesigning, and re-coding the application itself. There are no short-cuts.
Q: Can I “work around” the patent?
Q: Can I re-implement the API libraries so as not to have to redesign and recode all apps?
Q: Can I map or translate the app automatically into something safe?
A: In general, no, you can’t, if the trap is a good one.
This covers the trap in a nutshell.
[The disclaimer: I am not a lawyer, and I have never written a patent application. But.. I do know how software works, and I have developed more than just half a clue about how patents work (in the US).]
Further Basic Discussion
For those that want a little more explanation, we have this link.
..as well as a hypothetical “Tetris” Patent Trap example.
“Tetris” Patent Trap
Patent Tetris
Patent CoolDraw
API Tetris
API CoolDraw
We have two patents and two API. One patent and one API are high-level (Tetris). The other patent and API are low-level (CoolDraw). The high-level patent and high-level API are designed together as a trap as mentioned above. Ditto for the low level ones.
Let’s look at a few more details on the patents and on the APIs. Then, we’ll cover the four main scenarios. Do note the interplay of high-level with low-level. When the levels are the same (and matching), we have stepped onto the trap.
– Patent Tetris: patents any tetris like game.
– Patent CoolDraw: patents a cool way to draw on the screen from computer memory.
– API Tetris: a createTetris function produces a tetris game when you input things like block size, colors, number of rows, time, etc.
– API CoolDraw: a doCoolDraw function uses a cool algorithm to move values onto the screen.
Case 1:
– Patent Tetris
– API Tetris.
In this scenario, if we use API Tetris within our app so that a tetris game is created, we violate Patent Tetris, guaranteed.
Case 2:
– Patent Tetris
– API CoolDraw.
In this scenario, if we use API CoolDraw within our app so that we draw to the screen, we do not violate Patent Tetris unless we write a lot more code so as to create our own tetris game. It would take many lines of code to violate Patent Tetris.
Case 3:
– Patent CoolDraw
– API Tetris.
In this scenario, if we use API Tetris within our app so that a tetris game is created, we may violate Patent CoolDraw ..or not. It depends on how API Tetris was implemented. Does createTetris write to the screen the way described by Patent CoolDraw?
Case 4:
– Patent CoolDraw
– API CoolDraw.
In this scenario, if we use API CoolDraw within our app so that we draw to the screen, we violate Patent CoolDraw, guaranteed.
Quick Analysis
Case 1 (and Case 4) patent and API are at the same level (and matching). This is a trap. To avoid infringement, you have to redesign and re-code the application using a different API.
Case 2 is the case when people consider “working around” the patent. It’s an odd event. You have to write many lines of code in order to possibly be infringing. If you are, you then try to code around it, perhaps by building something a little different than tetris. [In general, avoid infringement by make sure some of the properties of the patent claim are not met.]
Case 3 is the case where if a violation were to exist in the API implementation, you can try to re-implement the libraries and this way avoid re-implementing each and every single app as would be required for Cases 1 and 4.
The reason Case 3 allows you to re-implement the libraries and avoid re-coding up every application is fundamentally because you can re-implement the API but keep fixed the same interfaces and specifications enshrined in the API contract and assumed by the applications. This is not possible in Case 1 and Case 4 because any re-implementation of the same specification, for these cases, will infringe in the same exact way as with the original implementation since it’s the specification itself (not any implementation of any part of it) that parallels the patent.
The reason Case 2 does not result in automatic infringement as happens with Case 1 and Case 4 is that the API interface and patent requirements don’t match. It’s that simple. Case 2 is where the application could possibly end up violating if you code enough with that API or with another. The Case 2 patent is high-level while the API is low-level. Case 3 is different in that the patent is low-level while the API is high-level; thus, Case 3 contrasts with Case 2 because in Case 3 the potential violations would not happen within the application (as with Case 2) but rather within the library.
In short, Case 1 and Case 4 are the only cases (of the four) where any API usage, by definition, specifies that the application will acquire all the properties of the matching patent claim. These are the traps.
Random APIs will not shadow any given patent as occurred in Case 1 and in Case 4. Developers normally would not have to worry. They can expect a Case 2 or a Case 3, if anything. However, Case 1 and Case 4 can be designed on purpose when the patent author and API designer are the same entity. Why would this author create this trap for developers? Well…
– The patent author is determined to file lawsuits as necessary (maybe via proxies) in order to slow down many and/or key competing applications (eg, FOSS applications).
“You can be given a patent license and even GPL code for the core API, but not for the patented API extensions.”If you are using an API designed by such a vendor (regardless of who implemented the libraries), beware. I see lots of redesigning and re-coding in your future, just to get back to the same point (on a per app basis). Remember that the patent might still be in the pipeline, have been sold to a proxy, or have been developed through a partnership under a different company or alias.
The above nutshell and sample analysis omit many details. There are many corner cases and things are not cut and dried. In a second article to follow (possibly), we will look closer into many details of the trap scenario.
Finally, there is a more insidious trap that exists. You can be given a patent license and even GPL code for the core API, but not for the patented API extensions. You may then find that you can create only simple applications safely (with that core API), even if you decide not to use the patented extension API but build your own. This is more insidious because the patent and copyright licenses given for the core API give the illusion of safety (a green light to proliferate), and is insidious and dangerous all the more so since you might purposely avoid the patented extensions. The trap happens if you use the “safe” core with any extension whatsoever (since the extended patented properties can be very general in nature). The details of this extended insidious trap may form the subject of a third article later on. It’s also described further here. █
Jose_X said,
February 4, 2009 at 9:38 am
Thanks for posting this Roy. It took a while to find the right balance. Hopefully, parts 2 and 3 will be forthcoming.
I hope developers and users supporting APIs **designed** by companies that have much to gain or to preserve by holding FOSS hostage with patents when the right moment comes (when the poison has spread deeply) do re-evaluate their position and dump these APIs and all the applications that depend on them, the sooner the better. No API or platform is worth even 10% of the trouble this may create for everyone.
Add your great contributions to applications built on more sound foundation. This way your contributions are much less likely to be wasted.
Also, ask those developers implementing APIs designed by aggressive companies/monopolies, to fork, to deviate significantly from the path laid out carefully before them by the antisocial API-patent designers.
To any FOSS developers that might be implementing such a risky API: the few interesting bits of such a platform/API can be adopted by virtually every other API out there so that nothing or little that is good is left behind. That’s the best of all worlds.. So contribute your great bits of innovation or what you like to APIs/platforms that are much less likely to sink you down the road.
Redesigning and re-coding just to end back where you started is not an option I’d ever exercise, and users would be left stranded.
Whatever. People will always take long-term risks for a short-term high.
Shane Coyle said,
February 4, 2009 at 9:55 am
People will always take long-term risks for a short-term high.
Jeez, we’re not really gonna talk about Michael Phelps here, too, right?
;^ )
David Mohring (NZheretic) said,
February 4, 2009 at 3:44 pm
I made the same argument in detail back in April 25th, 2003 with Miguel De Icaza responding.
Roy Schestowitz said,
February 4, 2009 at 4:07 pm
it’s the familiar defence of “see the FAQ” (OpenSUSE/Novell do this too):
“NZHeretic keeps posting this standard template everytime he sees the word Mono. You would think he would have given up and read the Mono FAQ that addresses his question.”
Miguel”
These FAQs are always damage control. They are PR.
http://meandubuntu.wordpress.com/2008/12/16/the-opensuse-faq-touched-me-in-a-bad-place/
Jose_X said,
February 4, 2009 at 4:40 pm
David Mohring (NZheretic), yes, I just read it. Great. Maybe you will receive more support this time around in pushing this info out.
For me, this is somewhat new in the sense that I generally believed this could be done (took it for granted it could), but had not looked at it too closely until this past year. When you actually look at some patents, in conjunction with things like this http://en.wikipedia.org/wiki/Claim_(patent) , it shocks that patenting would have such loopholes. Any new combination, at any high-level, can be argued to be “innovative”, etc, and hence cover almost anything ..in that special new combo way.
Now fabricate an API to match and get people to follow it closely, and they are screwed and you’d almost have to say they deserve it given Microsoft’s patent talk and position in the market (wrt FOSS). ..except that many that use and install mono and maybe some that code it perhaps are a bit confused.
Large vendors can ultimately (at a real cost in some cases to their competitive position) negotiate with Microsoft, but I don’t think people want to keep giving Monopolysoft such powerful freebies. You keep doing that, the game won’t change.
If you want to contribute any worked out examples (real or fabricated) on this thread over time go ahead since that helps communicate the message. It actually took me many attempts to write the above because I couldn’t manage to reach a balance between getting the point across to nondevs while providing enough info to be at least half-convincing (or get the serious attention) of devs.
For part two, I want to focus on the more subtle arguments and display many examples to show all of this.
Part 3 is also what you were talking about in that once you are stuck using the core, you can’t step anywhere (while tied down to that core) because of how easy it is to patent all around that core for almost anything useful you would want in an application.
Thanks for pointing to your post. Now, let’s find more such older posts and see if we can push this again. Today, mono has taken on a much larger role than back in 2003. Not accidentally, these years of slow mono growth gave Microsoft much time to patent any and everything under the sun that would extend from mono core.
..To repeat a point before ending this… It’s a major loophole in patenting, and you’d expect no one to fall into that trap *accidentally* because all the components already exist and some of the precise semantics of this new Monopolysoft mix are almost arbitrary (a bit like accidentally writing a modest size essay that violates copyright.. the odds are tiny). Yet.. yet, probably out of ignorance to some extent, you actually find people stepping on the **same exact path**. And once you go deep enough into the path, it’s very costly to turn back and everywhere you step, boom, step on a mine. An analogy: People using mono are basically doing the equivalent in copyright law of significantly copying verbatim someone not willing to give you a FOSS compatible copyright license. Only by this blind copying could you manage to get yourself deep enough into this particular minefield. Mono and it’s spread is a HUGE asset to Monopolysoft.
Jose_X said,
February 4, 2009 at 5:43 pm
From this link
>> http://meandubuntu.wordpress.com/2008/12/16/the-opensuse-faq-touched-me-in-a-bad-place/
…
>> There is no general strategic alliance. Novell continue to be fierce competitors of Microsoft, which should be evident by the openSUSE and SUSE Linux Enterprise products.
>> Novell even has ongoing litigation against Microsoft.
They take very seriously how their partnership will be viewed. They need the proxy effect without getting antitrust officials riled up.
Novell is quite an asset to Microsoft. Antitrust laws are being violated.
>> Having many of the greatest free software developers on their payroll making sure they can focus on writing free software.
Reserving opinion on the adjective “greatest” as used here, Novell is trying to use talent to get mono and MS protos spread far and wide,and in general to manage Monopolysoft’s Linux play. Why would they seek out “mediocre” developers? How is this good news?
>> Novell continue to be fierce competitors of Microsoft, which should be evident by the openSUSE and SUSE Linux Enterprise products.
>> [Novell] would not do anything that they thought would harm Linux in general
“Linux” is just a product. FOSS is what is being harmed or threatened — not to mention the most FOSS-dependent commercial players, as Novell aims their sights on Linux players (with Monopolysoft’s help) more vigorously than competing with Monopolysoft today.
Doesn’t Novell have a life-sustaining contract with Monopolysoft? Why yes they do. That’s just how “aggressive competitors” do their competition with each other … just like how a subsidiary competes vigorously with the parent.
Monopolysoft needs a Linux branch (“partner”) to handle those sales that would defect to (eg) Red Hat.
This is the role Novell is playing today in action.
Antitrust antitrust antitrust antitrust.
>> There can be absolutely no doubt that Novell is one of the most significant contributors to open source software, ever.
Read: Monopolysoft (through proxies) jumped in with both feet when buying FOSS and when trying to spread their poison.
Novell saw value to Monopolysoft, they made the acquisitions, and they “partnered” with Monopolysoft afterwards.. (this is a generous interpretation that assumes the components did not see value to Monopolysoft from way back when (eg, mono)).
Even if Novell was a decent player once, it sure didn’t take them too long to turn the net asset into a net liability.
>> Novell has also created or is among the top sponsors of projects such as
I don’t think anyone will deny that many people employed by Novell today or in the past have made significant contributions at some point in time. Novell is a fairly large company, and they have gone on a buying spree of contributors.
Not lost is that some of the projects mentioned are helping to spread what I will call the mono poison.
[Note, "Monopolysoft" communicates more in short space than would "Microsoft .." or "the company that...".]
>> Ted Haeger: I removed the statement about my departure having nothing to do with the deal. It was a false statement made without consulting me. I did not want to make my departure a statement about the deal, but by using my name in this way on this page, it forces me to state a correction. My departure did have something to do with the Novell-MS deal. I would likely still be at Novell if it had not happened. I prefer to focus on the positive side of why I left, so please do not cite my departure as unrelated to the MS-Novell deal.
Nice quote.
>> The interopability features cannot be included in other distributions
>> Again, this is untrue. Other distributions have already seen the software benefits from this deal
Spreading the poison is a negative not a positive.
>> Yes, Ballmer has said many disparaging things about Linux, but (i) this was never part of the original deal, (ii) Novell have, in an open letter to the Community, challenged those statements.
Wow, a letter that “challenges” through “in no way an acknowledgment that Linux infringes upon any Microsoft intellectual property”.
Actions speak louder than (weak) words. Spreading mono and Monopolysoft based technologies despite the patent risks and mind share losses speaks louder than “in no way an acknowledgment that Linux infringes upon any Microsoft intellectual property”.
>> the GPLv3 “grandfathers” in such agreements
Wow. Monopolysoft’s Linux arm (as long as they remain legally separate from the main body) gets a monopoly on a bypass mechanism to the GPLv3. Why am I not surprised they pulled this one off?
>> Novell even has ongoing litigation against Microsoft.
Some would call this money laundering.
Of course, even if Novell is out to help their leverage with momma relative to the siblings.. or to help keep antitrust authorities at bay.. how is this consolation?
***
There is no reason to assume bad intent on Novell’s part (as fun as that might be). The evidence may strongly suggest such possibilities, but the bottom line is that, independent of intention, Novell is in practice aiding Monopolysoft’s strategic position within the FOSS community and general market place. That is their contract, and all the nice talk doesn’t change that. And Monopolysoft continues to do what they have to do to protect their empire and position. This doesn’t mix with FOSS in any way beneficial to the wider community (especially to end users).
Some people have come on here and suggested Novell is independently simply trying to better their position and not abuse the community.
However, if they need.. if they are accepting the big dollars from this particular partner.. if they are taking actions that hurt the community.. if for years people have been pointing out the patent risks in spreading MS API but they continue to push that….
Intent doesn’t matter for this discussion [though antitrust authorities likely do care about intentions]. Results matter. What is and will Novell do?
Jose_X said,
February 4, 2009 at 5:44 pm
Cross linking: http://boycottnovell.com/2009/02/03/jeff-waugh-direction-change/#comment-59345
Jose_X said,
February 4, 2009 at 5:52 pm
Another cross-link.. this one about how Novell can potentially make a great go at Microsoft market share without hurting the community: http://boycottnovell.com/2009/01/11/ms-maintaining-gap-vs-linux/#comment-58215
It’s easy to give Novell a free pass by saying they might secretly be working towards this goal. This is called wishful thinking, and the evidence that this fantasy will become reality doesn’t look good. Anyway, I prefer to leave secrets and intentions out and focus on current actions and positioning.
Roy Schestowitz said,
February 4, 2009 at 5:54 pm
Good catch there about Ted. Somehow I missed it.
Jose_X said,
February 4, 2009 at 6:08 pm
David Mohring (NZheretic), the main post at the top didn’t much go into what you actually discussed in that link wrt a unique combo/mix being patented. Part 2 will look more carefully at that. Patents on combos, where all or almost all parts are common (but perhaps never expressed in just that way), are given in reality and likely make up the vast bulk of patents. The patent industry actually depends on this laxity since it leads to many more “inventions”. [Real inventions can be kept as trade secrets to give more bang for buck.] Plus, who is to judge otherwise since most that might be judges either don’t care about patents, don’t want to work for free, or are busy exploiting the system?
Jose_X said,
February 4, 2009 at 6:20 pm
Roy that topic came up here before. That a person doesn’t explicitly make a public statement saying they were against the deal certainly doesn’t imply they were for it or unaffected by it. Most customers, when they switch brands, they don’t write a letter to the old company stating they are switching for reason X or Y. They let their feet do the talking. For reason X or Y, are people not leaving Novell? It would make sense to lay people off if management thinks these employees aren’t gung-ho about the direction of the company, for example. They could be seen as dead weight that might be accepting a paycheck as long as they can. Maybe they had already refused (or failed to show enthusiasm) for job assignments working on mono or related. [OTOH, I'd be careful about moles-to-be leaving the ship.]
[The context I’m remembering had to do with Compiz. As if the break from it (beryl) and the waning interest in that project today (eg, including post the re-merger with beryl) didn’t speak to this effect even if no one said anything publicly… maybe this is one of the links: http://boycottnovell.com/2009/01/02/amd-novell-friction/#comment-57230 ]