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
Microwave oven analogy | 396 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Analogy
Authored by: Anonymous on Wednesday, April 25 2012 @ 09:24 AM EDT
Anyone remember library cards? They tell you what shelf of the library a book
is in? They could be considered an API (in the fuzzy sense that Oracle is using
the term) to the library shelves, with each book a method, function or class.

[ Reply to This | Parent | # ]

Microwave oven analogy
Authored by: Anonymous on Wednesday, April 25 2012 @ 09:33 AM EDT
Think about a microwave oven. It has buttons with labels all
over it. One might first think the buttons are the API. This
would be wrong because a button actually does something.
Aha! Then you might thing the API are the labels on the
buttons. Nope wrong again. Although they don't do anything,
the labels along with the layout are the specification. So
where is the API? Well when you look at the control panel,
you get a mental image of what the buttons do and which ones
to press in order to perform a task. Here is where you find
the API; inside your own head. And this is the problem with
our analogies so far, they've all tried to make the API a
physical thing when it's always been a concept.

[ Reply to This | Parent | # ]

Suggestion for a new canonical thread
Authored by: darrellb on Wednesday, April 25 2012 @ 10:32 AM EDT
But also, keep in mind that there are THREE aspects to these APIs.

1. API specifications -- written description of the API
2. API itself -- the interface at the programming level
3. API implementation -- code that provides the functionality behind the API.

Pretty much the analogies here succeed at separating the API from the API
implementation. But most miss the specifications aspect.

Oracle has accused Google of copyright infringement of the Java API
Specifications.

Using the car UI analogy, Oracle is accusing Google of copyright infringement by
reading Oracle's written automobile cockpit layout specifications and creating
their own cockpit engineering diagrams from the specs.

Imho, it is a big stretch to look at an engineering diagram and see it legally
as a a derivitive of the specificactions.

[ Reply to This | Parent | # ]

Analogy for the Judge
Authored by: cpeterson on Wednesday, April 25 2012 @ 10:43 AM EDT
All Google would need to do is use a 7240-15(c)1 objection.

If Judge Alsup doesn't think that's a valid objection, just let him know that
Google has not been able to find anyplace where they were specifically, and in
writing, been given the authority to use the Court's API commonly known as the
FRCP. Therefore, they've created a new one, which should surely work just as
well, no?

I mean, Oracle seems to think that making the current system unuseable to its
users would be any big deal. Maybe Judge Alsup would disagree?

(In case you're wondering, a 7240-15(c)1 has two method signatures: one takes
arguments (objectedEvidence as EvidenceItem, jurisdiction as Court, matter as
Case); the other only uses the first argument and can take the other two items
from the current scope.

The return value is an object of class Ruling.

This API is a thin wrapper over the FRCP 402 method call.)

[ Reply to This | Parent | # ]

Suggestion for a new canonical thread
Authored by: Anonymous on Wednesday, April 25 2012 @ 10:47 AM EDT
Suppose you are a secret agent in a foreign country. Your controller sends you
coded messages telling you what to do, and you then do those things and send
back coded messages telling them the results. Before you go out into the field,
you need to agree with your controller on a scheme for encoding the messages.
"Red" will mean "Go to this place", "Blue" will
mean "pick up a package", and so on. An API is like this agreement.

It allows one party to tell the other party to do a specific thing, but with one
important difference: with humans, you can tell them "go buy me a
pizza" and they will figure out how to do that. But computers are too
dumb, they can only do exactly what they have been programmed to do. So the
inventor of the API has to anticipate the kinds of things it will be used for,
and explicitly describe how to ask for each desired thing.

If they write a library that can load PNG files, then it probably provides
functionality like "Load a .PNG file named ABC into memory and return me a
pointer to it" as well as things like "take this pointer to a PNG, and
tell me how many pixels wide it is" or even "take this pointer to a
PNG, and copy this sub-rectangle of pixels into this other buffer that I
provide, converting them into this specific pixel format as you do that".
And they either need to invent their own API that describes how to access this
functionality, or design their library so that it implements an already-existing
API (like com.sun.media.jai.codec.JAI ?)

And the person designing the API, must anticipate all of these things and
describe (in the API) the exact protocol for a program to ask for the
information it wants, or ask for tasks to be performed. Then the library must
be implemented in a way that honors the requirements of the API, and the
programmer using the library must talk to that library using the protocol that
the API specifies.

[ Reply to This | Parent | # ]

analogy for implementation vs. blueprint vs. API
Authored by: Anonymous on Wednesday, April 25 2012 @ 12:39 PM EDT
Consider a room that contains a sink.

The API for the room tells a person where to go to get water.

The blueprint shows where the pipes go that deliver the water - the person who
fills their glass with water does not need to know or care whether the pipes
come directly from the building water input, or instead go first to other
facilities all over the building before arriving to this location.

The implementation has further details that are not in the blueprint - which
brand of pipes were used (possibly even whether the pipes are made of copper or
[more recent] PVC plastic or [older] iron), where the pipes are clamped to the
structure and with which brand of clamps, etc. The same blueprint might have
been used to build different buildings over the years that had different
implementations details but still provided the same general user interface.

John Macdonald

[ Reply to This | Parent | # ]

Suggestion for a new canonical thread
Authored by: tknarr on Wednesday, April 25 2012 @ 02:28 PM EDT

Power cords and wall sockets. We have a standard interface between them: all plugs on power cords have the metal prongs made in the same shape and size and position, and all wall sockets have holes to take prongs of that standard shape, size and position. It doesn't matter what brand of outlet you had installed, it doesn't matter who made the lamp or clock or VCR you need to plug in, they all fit together. The devics and the house wiring may vary, but the interface between them where the power cord plugs into the outlet is standardized.

Now imagine a world where every different brand of wall socket had the holes in a different pattern. A world where a clock from Wal-Mart and an LG television and a Samsung DVD player all had different power plugs on their cords. And none of them were the same. If you wanted to plug in your TV you'd need to buy wall outlets of a brand LG had licensed, and you couldn't plug your DVD player into the same outlet because LG wouldn't license their power plug to Samsung. Do we want to live in that world? That's the world Oracle's asking the judge to create.

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