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
My take (repost) Hot and Cold taps | 394 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
The API analogy thread
Authored by: Anonymous on Wednesday, April 25 2012 @ 08:24 PM EDT
The "phone number" analogy is weak because anyone can
publicise and instruct people to use different numbers.

The essential idea is that people can port over their Java
code without having to learn a new API and rewrite
substantial parts to make it work on Android.

[ Reply to This | Parent | # ]

The API analogy thread
Authored by: bprice on Thursday, April 26 2012 @ 01:09 AM EDT
After reading a comment in another thread (which I cannot now find), I think I see an legal analogy to API> The other comment pointed out that an interface is a boundary, an abstract, notional surface or line where two 'things' contact and maybe interact without losing either identity on their respective 'sides' of the boundary.

That's the normal meaning of an interface; but in legal jargon, a boundary may also have have easements, through the boundary and 'over' the stuff on the other side. An easement, like a license, is a permissible violation of a boundary or prohibition. That's what's important about an API.

In legal stuff, a boundary is often given by a 'property line', or similar two-dimensional idea. This line has no physical reality: its location is given by metes and bounds, but that's not the line itself. A property line may be marked, but the marks are not the line, even if the marks are linear; they're just another representation, an informal one, of the metes-and-bounds definition. The boundary is a notional surface, running vertically from the center of the earth (or so) to the limits of the atmosphere (or so), intersecting the surface of the earth (the air-ground interface!) along the property line.

This boundary is a sufficient concept for two pieces of software that don't interact, but it's not useful as the concept of an interface.


My house is on a property with several boundaries, distinguished by what property is on the other side of the boundary. The northerly corner has a recorded easement for utilities: there is a telephone-company distribution box and a power-company transformer there, that also serve the properties abutting mine. The east and south sides abut city property, street rights of way. Those boundaries are of a nature different from the boundaries with the three abutting residential properties.

The streetside boundaries have ordained easements to street users for vehicle entry (driveway), and special easements for me onto the street right-of-way: I am allowed to put my trash at curbside along that boundary — but nowhere else — for street-side pickup. I am required to maintain the lawns on the city property that abuts our mutual boundary, and to remove snow from the sidewalks there. There are ordained easements for everyone to use the streets for streetish purposes: as a street abutter, I have easements to violate the boundary for those required purposes.

There are necessary easements for gas and water services, not recorded nor ordained, but implied by the nature of my interaction with the gas and water companies, and implied easements for meter-readers and the like, too.


Two pieces of interacting software have a boundary, defined by the extents of the software: it's a notional surface, possibly closed (where the property boundaries are open at the top). In order for them to interact, at least one must provide easements to the other, for the purposes of the interaction. (I'll avoid mentioning memory or processor hogging, where one can interact by denial of resources to the other.)

These easements are characterized by the nature of and requirements for the interaction. We call them APIs, when one is a service provider and the other is an application program, using those services. These characteristics may (or, if you consider Microsoft, might not) be documented: in any case, the metes and bounds, the recording, the documentation is not the easement. When the documentation says that a particular incantation is required to invoke the easement (java.lang.String), it's giving an incantation that, by the merger doctrine, is inseparable from the idea.

Sun defined the incantations with a necessary SSO, such that the SSO is inseparable from the idea.

---
--Bill. NAL: question the answers, especially mine.

[ Reply to This | Parent | # ]

My take (repost) Hot and Cold taps
Authored by: Anonymous on Thursday, April 26 2012 @ 09:14 AM EDT
In the bathroom there is a sink. On the sink are two taps. One tap is labeled
"hot", the other is labeled "cold".

This is an API: You expect bathroom.sink.tap.hot() to return hot water. You
expect bathroom.sink.tap.cold() to return cold water.

You don't need documentation to know how to use the sink.

The plumbing behind the taps can be implemented differently. The sink can be a
different shape. The taps themselves could be brass, zinc or copper but the API
remains the same.

Anyone using a Sun/Oracle Java bathroom suite automatically knows how to use
the
Google Android bathroom suite because the API is the same.

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