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
Someone mentioned 'boundary between two things' as a possible synonym for interface. | 394 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
It is abstract, it cannot be made concrete.
Authored by: Anonymous on Wednesday, April 25 2012 @ 08:41 PM EDT
an API is an imaginary space between some other things that have some sort of
unknown accord about what it might be

[ Reply to This | Parent | # ]

Most Agreeable Definition so far:
Authored by: BitOBear on Wednesday, April 25 2012 @ 09:30 PM EDT
An API is everything you need to have, and everything you need to know, to get a
body of code you are working on to use another body of code that you are -not-
working on, without you having to go over and work on that other body of code.

Depending on how that API is provided you -may- receive compiler ready files or
you may not. You -may- receive documentation. You may just get a post-it note
with a half-legible scrawl on it telling you to look through some corporate wiki
for biblical-grade statements about only calling functions of certain names in
certain conditions and a single instruction on how to use a particular command
to suck the public symbols out of a compiled library binary.

API has no clear meaning and lots of potent half meanings.

I once received "an API" that told me exactly how to use a computer
service. It described in detail how to offer up pairs of names and values to
insert things into the system database and how to send that request, and how to
parse the response. But the thing didn't tell me what the names I could/should
actually use actually were. The names were -classified- as far as the provider
was concerned. So I could send "BOO=scary ghost" but if
"BOO" wasn't a valid name nothing would happen.

So, did I have an API or didn't I? I could write code to invoke it, but I
couldn't actually -use- it for anything.

We won the contract dispute because even though I was given "how"s and
a "when"s, I was given no "what"s so the API was not
-enough- -of- an API to allow us to meet our contractual requirements.

So it's what you need to have, and what you need to know, before you can do what
you need to do.

If that's not a pure concept I don't know what is.

[ Reply to This | Parent | # ]

Name declaration is [merely] an implementation of the API
Authored by: Ed L. on Wednesday, April 25 2012 @ 09:45 PM EDT
Yes and no. I'd never considered it quite this way before myself, and wonder just how many beers Mr. Bornstein shared with Mr. Van Nest prior to trial. (At roughly $100 per, its a proposition to pique even Michael Larabel's interest.)

But I kinda like it. Explicitly makes an API language independent, so as others have noted, Java may explicitly express and implement the exact same API's as C and C++ and a raft of others. 'Specially those languages whose API's can expose a C interface: Java can then trivially expose the exact same API through Jini, and we all know exactly what they are talking about. Exactly Bornstein's point, I guess.

Neat.

---
Real Programmers mangle their own memory.

[ Reply to This | Parent | # ]

Someone mentioned 'boundary between two things' as a possible synonym for interface.
Authored by: Ian Al on Thursday, April 26 2012 @ 09:24 AM EDT
A horizon is a boundary between the earth and the sky. You can express the
concept in words, you can define 'horizon' in a dictionary and place it in
alphabetical order. You can photograph it. You can devote a chapter to it in a
book about planet earth.

It remains a concept, even if you can take a photograph of it. It is an
interface or boundary that you cannot cross. It is not a concrete thing or
object.

The API is an agreement between programmer and library implementer on how the
programmer can use library functions in a program's source code. It can be
described, defined, classified and written up, but it cannot be photographed or
crossed because it is not even a boundary or interface between two things. There
is no boundary between the program source code and the function source code. The
compiler just links the resulting binary code together in a file.

Actually, machine code is just a bunch of electric symbols that cannot be
touched or even photographed, but for goodness sake don't tell anyone or we'll
get another rant from PoIR :-)

---
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 )