decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
I agree | 152 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
I agree
Authored by: Anonymous on Wednesday, May 30 2012 @ 03:05 PM EDT
The API of a function includes ideas about what that function is expected to do. ABI does not.

ABI is a purely mechanical convention that covers how to invoke the function and how it returns a value. It says nothing about the behaviour of the function (e.g. *which* value the function is supposed to return in various circumstances).

That is however, part of the contract of an API -- a function's API includes not just the signature of the function (the mechanical part) but also some conceptual info (or ideas, or contract) about how the function is supposed to behave.

I posted about this on the previous story, in response to xtifr's comment.

Connectix copied both ABI and API details from Sony's BIOS. Both kinds of info must be non-protectible by copyright, or making compatible re-implementations of existing libraries is impossible.

[ Reply to This | Parent | # ]

Connectix was about API not ABI
Authored by: Ian Al on Wednesday, May 30 2012 @ 03:12 PM EDT
I think the point is that it does not affect the legal argument what it is
called. If it is what is necessary, functionally, to access the chosen functions
in Java or Android from Java source code then it fits all the arguments.

As matth pointed out, an API is isomorphic to its ABI. The act of compilation
converts source code to machine-executable (including VMs) code. The interfaces
are not substantially changed in this process.

If what 'goes across' the API does not also 'go across' the ABI then the two
interfaces are different and the compiled source code program will not interwork
across the interface with the respective platforms. The source code interface is
compiled into an equivalent binary interface and the same commands and
information flow happens across the interface between compiled program and
platform, but translated into binary data and machine code form.

---
Regards
Ian Al
Software Patents: It's the disclosed functions in the patent, stupid!

[ Reply to This | Parent | # ]

  • matth was wrong - Authored by: Anonymous on Wednesday, May 30 2012 @ 04:48 PM EDT
Connectix was about API not ABI
Authored by: xtifr on Wednesday, May 30 2012 @ 03:35 PM EDT

I'm pretty sure you're confused (but that's ok, because Oracle is even more confused). An API is not a collection of ABIs. An API is a source-level interface that typically gets coverted to an ABI by the compiler. It's an extension to the programming language. From your WP quote:

An ABI should not be confused with an application programming interface (API) which defines a library of routines to call, data structures to manipulate, and/or object classes to use in the construction of an application using that particular (often language specific) API.

The API is used in the construction of the program. Once the program is built--is a binary executable--it uses the ABI instead. (We'll gloss over interpreted languages, with just a brief comment that they forward information from the API to the ABI dynamically.)

If ABIs, which consist of concrete, compiled code, aren't copyrightable, then APIs are even less so, being merely language elements. APIs are used for expression, but are not expressions themselves, and are no more copyrightable than a random set of words you can use in writing a story.

Now APIs and ABIs are very similar, and closely related, and I find it hard to imagine that there's any serious legal difference between the two. They're like opposite sides of the same coin. But Oracle keeps complaining about a lack of binary compatibility, which completely misses the point of an API, which is to provide source compatibility. APIs are frequently used for platform independence, which is exactly what Google used them for. Oracle is getting confused between Java-the-language, which includes the APIs, and Java-the-virtual-machine, which has ABIs, not APIs. The JVM ABIs aren't anything like Dalvik's, so Oracle's ABI-related arguments (binary incompatibility) are utterly irrelevant. Google didn't copy the ABI!

Google included the APIs for compatibility, and, insofar as they're the same as Java's APIs, they offer 100% compatibility, even though there's zero binary compatibility.

---
Do not meddle in the affairs of Wizards, for it makes them soggy and hard to light.

[ Reply to This | Parent | # ]

Analogy, but not an auto analogy
Authored by: Ian Al on Thursday, May 31 2012 @ 05:57 AM EDT
Imagine a contract under which company A (which, for the sake of argument, I
will call Novell) contracts with company B (which I will call SCO) to manage
some of Novell's customer contracts.

It's complicated, but the contract says that 100% of the customer remittances
are forwarded to Novell and Novell returns 5% as payment for the management
service.

There is a financial interface between the two companies, but exchanges of money
between the companies could be for any number of contracts. For this particular
contract, the SCO department dealing with remittances has a range of detailed
instructions to identify the specific Novel customer contracts, send the money
and receive the payments and there are other instructions dealing with other
data interchanges to permit auditing.

As you know, contracts are what you use against your customers. The contract
gets filed until something in the detailed contractual interface goes off the
tracks and then the contract terms are checked.

The contract text is not the execution of the contract. If another company (I
will call them unXis) say to Novell that they would like to take over the same
role as SCO, but for all the new contracts, then SCO might not want to share the
text of their contract because they want to keep the role to themselves. unXis
must now reverse engineer all the various departmental instructions and provide
an equivalent service.

They need a contract document, but, even though it is functionally identical to
the SCO contract, it is an entirely new contract. The text might be similar or
identical in places, but that is irrelevant to the contractual commitments.

The 100% and 5% deal will be identical. There may be big differences in the way
unXis is organised and they may come up with completely different procedures.
However, the procedural interface between the two companies and the exchange of
data and money, must remain the same.

There is a contractual interface between the two companies. The exchanges across
the SCO - Novell interface and the unXis - Novell interface must be functionally
identical. The interface is something understood as contractual commitments in
the legal department and financial transactions in the finance department. The
aspect of the contract interface being considered determines what employees
point to as its realisation,

You cannot point to any one department, member of staff, set of procedures or
format of information that actually comprises the contractual interface. The
interface does not exist as a real thing. It is understood by all concerned as a
concept. The company performance and the employee's jobs depend on the
maintenance of the concept.

My analogy is that the contract is the API, the procedures, money and
information flow between the pairs of companies is the ABI and the procedures
and information exchange within the pairs of companies is the compilation of the
API on each side.

The way the analogy collapses is highly instructive. The contracts deal with
both sides by calling one the seller and the other the purchaser. The API is
only seen by the programmer. It is half a contract. It is an invitation to treat
or invitation to bargain. The other side of the API contract must look entirely
different.

When Connectix reverse engineered all the detailed processes and data exchanges,
they were attempting to recreate the original invitation to bargain. They were
the unXis in the exercise. Nothing they did changed any procedures or data
exchange on the Sony side of the contract nor the API on the game programmer's
side.

Connectix did not reverse engineer the games API. They already knew what that
was. Neither did they produce the ABI because this is just as conceptual as the
API. What they did was reproduce that part of the functional interface and data
exchange that they needed to interwork with the compiled games software. Who
cares what it is called? Legally, that is what Connectix needed to break the
Sony monopoly.

The concept could be understood as an API or an ABI, but there is nothing you
can point to in either the compiled games code or the functionally matching
Connectix code that comprises either interface. Both API and ABI are conceptual
just like contract commitments. All you can do is point at a piece of functional
code and say that it is part, but not all, of the contract commitments.

We know what the danger is in asserting that APIs cannot be copyright protected
by law. Judge Alsup said that he could not be sure that all APIs could not be
protected and that Oracle's API needed to be considered by comparing the
arguments in other cases. The same applies to ABIs. They are still documents
containing creative expression. If an ABI is not fixed in a media, it cannot be
copyrighted.

The legal argument must always be that it is abuse of copyright to attempt to
use it to gain a monopoly on the functional and data interchange requirements
for one program executable to interwork with another program executable. The
creative content of any document or media used solely for the purpose of
employing a functional or data interchange, no matter what the document's
conceptual status or title, must be excluded from copyright protection for that
purpose. Legal arguments based on named generic computer science concepts are
doomed to the FUD and tap-dancing we have seen in this case.

---
Regards
Ian Al
Software Patents: It's the disclosed functions in the patent, stupid!

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )