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
Thinking of so many things at once... does not mean it is unique (in an IP sense)! | 178 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
APIs are hard to develop...
Authored by: Gringo_ on Friday, April 20 2012 @ 11:28 AM EDT

I am one who develops APIs. On my web site, I sell a library, with its attendant API, to facilitate access and control of a specific kind of peripheral device.

In designing the API, I wanted whatever would be the most convenient for the developer using my API. I wanted it to have a certain internal logic and consistency such that the developer could almost guess, without even consulting the documentation, how he would go about some part of the implementation. This we call "intuitive design". I wanted the developer to have easy access to all features of the peripheral device. In the end, the hope was that for the developer, the use of my API would be so easy as to allow him to focus on what he wants to achieve via use of the peripheral, rather then worry about implementation details.

Where did the inspiration for my API design come from? It came from many years of using other people's APIs for other things, and learning what worked well for me and what didn't. There are also many conventions one learns developing software, and following these conventions is what contributes to "intuitive design". Then the more I imitated those who went before, the more intuitive my design would be.

In a way, we want the API design to be as uncreative as possible. We don't want any surprises for the user. We want the API design to be what he would expect.

If we assigned a group of programmers to discuss among themselves how the API should be designed, each would contribute from their knowledge and together they would slowly converge on the Platonic ideal of how it should be, as if it already exists in some other dimension and it is our job to discern it. Each class or method name would be chosen to have as little creativity as possible, by being the most accurate description of the operation the method carry's out.

In fact, if we were to compare an API design to a work of literature, we would compare it to the most uninspired literate we can imagine - formula-written pulp fiction. In the end, an API wouldn't have anywhere near the range of expression found in a pulp fiction novel. It would be more like a phone book or a map.

In the end, then, good API design is exactly the antithesis of creativeness. We don't want it to be creative at all.

Should it deserve a copyright? Lately I have been thinking of my own library that I sell on my web site, where it is fully documented. How would I feel if somebody copied my API, but implemented their own libraries? I think I would feel flattered that they recognized the logic in my design. If they want to use the same design, more power to them. The main bulk of all my effort was developing the implementation - my library. This required my special knowledge of the subject area, a knowledge few possess. Let them go ahead and try to do an implementation as efficient and reliable as mine!

[ Reply to This | Parent | # ]

APIs are hard to develop because you are thinking of so many things at once
Authored by: Anonymous on Friday, April 20 2012 @ 12:04 PM EDT
The "blueprint" analogy that is often mentioned is actually rather
apt.

Designing a good house where everything is laid out optimally and which
supports all the needs of a family as it grows and changes over a long
period of time is very analogous to designing a good API.

So the question is whether the design of a house is protected by
copyright independent of an actual blueprint document. If an architect
comes up with a great house design and I make my own house to the
same specifications, taking advantage of all the architect's hard work but
without actually copying his blueprints, is that a copyright violation just
because designing the house was a lot of hard work?

[ Reply to This | Parent | # ]

Thinking of so many things at once... does not mean it is unique (in an IP sense)!
Authored by: Anonymous on Friday, April 20 2012 @ 01:42 PM EDT
Thinking of so many things at once... does not mean it is unique (in an IP
sense)!

Tinkering.

An author of a fictional work also has to keep all the ducks in a row relating
to the plot. As the plot thickens, then foundation needs to have been formed
prior regarding characters etc.

General stuff, these APIs usually are, it is, in the end the exact twists and
turns of the plot as it executes that becomes the store. The rest, just a list,
of value only when they are woven into the story.

So, could someone else use the same names - yes they can, but can. There is a
limit to the names one can use (is finite), so granting a monopoly on such a
list would prevent anyone else from using the same names, for an independently
developed story, with it's own way to get it's own story told.

In reality, there is no really new story, only old stories, told going back
thousands of years, dating from the time when they were repeated again and again
around campfires, at a different time. They can be classified as comedy, or
tragedy (per the Greeks). So, to grant monopoly on APIs as a list of
characters in a story, is doing an injustice to future writers of fiction....
and would prevent a better story from being told (especially since, due to the
lobby of folks like Disney CORP, who would like a perpetual monopoly over their
use of certain stories, etc... we now have over 100 years for protection of
copyright).

For any court to award protection to API's - well, should not ever happen. I
thought that we were finished with that type of thought, where it ended with the
famous "look and feel" lawsuit between Apple and Microsoft.

[ Reply to This | Parent | # ]

APIs are hard to develop because you are thinking of so many things at once
Authored by: Anonymous on Friday, April 20 2012 @ 05:48 PM EDT
APIs are hard to design because most people think your argument. The best
APIs are ones which are simple, direct, makes the code read like English (for
English speakers), and makes little to no assumptions about its use which
become part of the specification. It should only do its job and do it very well

with minimal dependencies.

[ Reply to This | Parent | # ]

Creativity
Authored by: Anonymous on Friday, April 20 2012 @ 09:06 PM EDT
I don't understand why everyone is focusing so much on creativity. As an
analogy, coming up with a proof of a long standing mathematical conjecture may
require a lot of creativity, but that does not make the proof copyrightable.

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