There’s a degree of consensus that “API” means “Application Programming Interface”, though the real consensus is that “API” means “Mumble Programmumble Interface, y’know, it’s the thing you have when you document an interface in the context of programming.”
I realized from a few conversations that while people had a lot of variations on “Programming,” they all kind of meant the same thing, or, I dunno, close enough. The same was not true for “Application.”
I asked the internet once again what “Application” meant, giving six options. For clarity all based on a story where it was someone else writing the library/API provider/whatever, and it was you that was “consuming” the API.
- The code SOMEONE ELSE wrote (implementing the API)
- The code YOU wrote (using the API)
- The COMBINED CODE written by both the API implementer and by you
- NEITHER the code that uses the API or the code that implements the API
- Something else
- I have no clue what’s going on
Out of 125 responses, 117 gave one of the first three options:
- 44 (38%) of those said that it was the code that “someone else” wrote – that is, that the “application” was the code that provided the API.
- 68 (58%) of those said that it was the code that “you” wrote, that is, that the “application” was the code that was the client of the API
- 5 (4%) of those said it was the combined code that formed the application.
Given that this was an unscientific study, I think it’s most fair to say that there is no consensus on what the “Application” actually is. But there are some things that are true.
I think, as a matter of history, it’s probably more correct to say that the majority opinion is correct. As some respondents correctly pointed out, the Windows API and the Java API are interfaces that allow people to write an application on top of something else, which (for whatever reason) was considered not an application – these things were called “operating systems” or “libraries.”
However, I think it’s entirely reasonable and probably important to acknowledge that lots of people experience APIs in the context of, say, the Slack API or the Twitter API. And there, it’s a common usage to think of the application as being “Slack” or “Twitter, whereas “your code” is a shallow wrapper that is playing puppetmaster to the complicated or powerful application. One person said this well: the API is “interface provided by the application to enable you to use its features in the intended way.”
I think it’s important for all modern developers realize that there are multiple ways that people think about APIs, and these are reflected in the disagreement over what the “Application” even is. There’s a big difference between, on one hand, feeling like you’re using an interface to control of something that is like an operating system for the purpose of writing something that is like an application, and, on the other hand, feeling like you’re using one or more interfaces to “remotely pilot” one or more applications.
I’ve heard some computer science people grumble that there is a contingent of people who think that APIs are exclusively sets of remote procedure calls associated with URIs; I’ve participated in some of this grumbling too. Tools like Amazon API Gateway certainly don’t help with this kind of confusion. And that’s a real thing: I want people to know that Web APIs aren’t the only APIs.
However, at the end of this exercise, I think that the indeterminate (and maybe shifting?) meaning of the “Application” in an API represents a positive part of our modern computing world. It seems the “less historical” usage is the result of more and more functionality (“apps,” if you must call them such) being provided in programmatically accessible ways, and more and more people writing programs that leverage that functionality to do new and cool things!