Beyond that, interoperable for programmers feels a little bit
like saying translating a Russian novel into English is fair use and the
original author cannot seek infringement damages.
That's not a
useful analogy, because the language is not a fixed work, like a book.
The closest analogy I can think of involving a book would taking a
German-to-Russian dictionary, and keeping just the list of German words, and
replacing the Russian descriptions with all-new, written-from-scratch
English ones.
This sort of works, because the purpose of a computer
language is to translate from something that is human-readable to something
machine-readable. So, the list of German words stands for the API itself, while
the descriptions in Russian and English are analogous to the compiled
implementation behind the API. (What we're interfacing
to.)
But even that analogy is flawed, because there's no real
benefit from keeping the exact same list of words in both books. The
human-readable part is on the wrong side--the API for a computer language, but
the description (compiled implementation equivalent) for the
dictionary.
With an API, we're trying to define a simple
language for the programmer (not a work) to use to invoke particular
behavior (the implementation) from the machine. The implementation is a work,
but that wasn't copied.
--- Do not meddle in the affairs of Wizards,
for it makes them soggy and hard to light. [ Reply to This | Parent | # ]
|