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
Java in general makes this *really* muddy. | 270 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
APIs are not source code
Authored by: Anonymous on Thursday, April 19 2012 @ 11:46 PM EDT
I should add that, for performance reasons, sometimes the APIs might be written
in another language entirely (such as C++) and shipped as libraries containing
directly executable machine code.

[ Reply to This | Parent | # ]

APIs are not source code
Authored by: Anonymous on Friday, April 20 2012 @ 12:27 AM EDT
As far as I know, only the API source code can be subject to copyright. I can't imagine that the API libraries output from the Java compiler can also be subject.
Binaries of computer programs are indeed subject to copyright. When the (aspiring) copyright holder registers the binary with the Copyright Office, he asserts in writing that it contains copyrightable authorship. The Copyright Office takes it on faith ("rule of doubt") that such copyrightable content is present (and leaves proof to be handled during litigation, if necessary) and if the source code qualifies for copyright protection then so does the corresponding object code.

[ Reply to This | Parent | # ]

APIs are not source code
Authored by: Anonymous on Friday, April 20 2012 @ 01:11 AM EDT
Yes and no. An API is a collection of contract descriptions.

The function Swap takes two objects o1 and o2 and swaps
their values such that o1 possesses the original value of o2
and o2 possesses the original value of o1

void Swap(byref object o1, byref object o2);

Function Swap(o1, o2 : Object);

function Swap(o1, o2);

All four of these are APIs, including the plain english
text. The API tells you what data is needed, what process
occurs, and what the results are.

I can implement an API

public void Swap(byref object o1, byref object o2)
{
object temp = o1;
o1 = o2;
o2 = temp;
}

and I can also call an API

public void DoSomeSwapping()
{
object dataobject1 = new object {};
object dataobject2 = new object {};
Swap(dataobject1, dataobject2);
}

By by itself an API is nothing more than a collection of
contract definitions that tell me how to do something should
I want to do it.

[ Reply to This | Parent | # ]

That's an implementation of an API, actually...
Authored by: Anonymous on Friday, April 20 2012 @ 03:50 AM EDT
You're talking about an implementation of the API, which of course contains all
the stuff necessary to provide the things offered by the API. The API itself is
purely abstract. It's nothing more than how you structure your communications
between different programs or parts thereof. The API provides a list of
services and directions for how a program can get those services. In that way,
you know to feed the averaging function a list of numbers and that you expect to
get one number, the average, back. Obviously, the implementation provides the
code that actually does all that for you.

The classes and other stuff come in because some things are compound. You can
combine different types of data and methods that operate on that data into
something called a class. So if you have a Window object that represents a
program's window, it might contain a function called Draw() that would draw it
on the screen as well as data containing where it's located on the screen, etc.

And you can feed particular instances of a class that have been filled with data
to other functions to make them do things and even compose classes out of other
classes. So you might make a program's Window out of a bunch of widgets like
Buttons and ListBoxes and TextAreas and whatever else that each contain their
own functions and allow people to click on them or type things into them.

Honestly, though? If anyone wants to know what an API is, they're best off just
learning to program a little. All these things are hard to reason about until
you see them in action.

[ Reply to This | Parent | # ]

Java in general makes this *really* muddy.
Authored by: Anonymous on Friday, April 20 2012 @ 05:40 AM EDT
If you want a nice, simple way to understand what APIs are, learn C++.

Header files (except for the private sections, and the source for inline
function definitions) are the API.

The rest of the headers, in addition to the source files, are the
implementation.

Simple.

[ Reply to This | Parent | # ]

APIs are not source code
Authored by: Steve Martin on Friday, April 20 2012 @ 06:57 AM EDT

I can't imagine that the API libraries output from the Java compiler can also be subject.

If the binary versions of API libraries output from the compiler are not subject to copyright, then how are binaries output from a C compiler and the ld linker subject to copyright? IANAL, but I'd say they'd have to be. Otherwise, the provisions in the GPL regarding distribution of binary code would be meaningless (and, as a side argument, no commercially-distributed binaries such as Windows or Office would be protected under copyright law).

---
"When I say something, I put my name next to it." -- Isaac Jaffe, "Sports Night"

[ Reply to This | Parent | # ]

The quoted statement is nonsense
Authored by: Anonymous on Friday, April 20 2012 @ 09:34 AM EDT
An "API" is just a fancy new name for the list of functions contained
in a subroutine library. Microsoft programmers started calling the description
of a subroutine library an "API" to make it sound like something
magical that Microsoft had invented. Its just technobabble.

[ Reply to This | Parent | # ]

API binaries are protected by copyright
Authored by: Ian Al on Friday, April 20 2012 @ 10:07 AM EDT
Both Microsoft and the GPL depend on that. I have always been a little anxious
because the obvious first point of call for creative expression in source code
is the comments. They might get autodoc-ed into a document of prose, but they
are not used to derive the binaries.

rangeCheck clearly has no creative expression. However, larger works like the
Linux kernel and BusyBox, do. However, how the lawyers actually do the
abstraction, filtration and the other thing (comparison?) to get at the
protectable creative expression is a mystery to me.

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

[ Reply to This | Parent | # ]

APIs are ALWAYS source code
Authored by: Anonymous on Friday, April 20 2012 @ 10:12 AM EDT
An Application Programming Interface (API) has to be in 'source code' i.e. human
readable language, because it has to be read by the programmer (presumed to be
human).

Before you say API, you have to say 'Library', because all an API is, is a
description of how to use the things contained in a Library.

THATS WHAT THE WORD >interface< MEANS.

Think of a Library as a tool box.

A math tool box could have a Add tool, a SqrRt tool, a Power tool etc.

All the API for that tool box is, is a list of the names of the tools in the
box, what input you have to give to the tool, and what output you will get from
the tool.

The API for an Add tool in a Math tool box could be
PROCEDURE Add(
InputA: INTEGER,
InputB: INTEGER) :
(*Output *) INTEGER;

The Library that contains the actual Add function may be distributed as binary,
but the >INTERFACE< has to be readable by people.

PS: I have yet to see any understandable explanation of what an 'API
Specification' is. Logically it should be a description of what a Application
Programming Interface is. But how is that different from the programming
language's syntax description, which, in theory, completely describes the
calling convention (the interface) for procedures in the library.

Not a programmer either
JG


[ Reply to This | Parent | # ]

API Synesthesia
Authored by: Anonymous on Saturday, April 21 2012 @ 01:30 AM EDT
API's, it seems to me are colors, red, blue, green, intermixed and with varying
shades of dark and light - placed carefully on artist's palate. A mobile brush
dips delicately into Sun yellow and Oracle blue to create Android green. The
programmer then places their chosen hue on an algorithm sketch and with each
brush stroke hopes to create a masterpiece. Open colors cannot be owned, are
free in Harmony and there is never any stolen gold at rainbows end.

from under the bridge

stage_v

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