< Previous
Some Call It The "Weekend" >

[Comments] (6) "API": Next Friday is my last day at Canonical. I've taken a 90-day contract at a startup, on which more later, and after that I'm not sure. I may join the startup as an employee, I may take a few months to revise RESTful Web Services, or... something else.

Apropos revising RESTful Web Services, I have a question for you. When I started talking with people as part of my job search, I noticed that nobody uses the term "web services" anymore. Everyone talks about "APIs".

I don't want to overstate the magnitude of the change here; people have been referring to web services as APIs for years. I did this myself until around the time RWS came out, and even today the Launchpad web service is officially called the "API". The change I noticed is just that the terms used to be used interchangeably, and now "web service" has pretty much died out. When I say "web service" people know what I'm talking about, but I feel like I'm speaking out of a phrasebook, or doggedly saying "free software" in an "open source" world.

This is one of those little nagging things that may or may not be important. I have an inkling that it's fairly important: that there's a reason people might have stopped saying "web service" around 2007, but that using "API" as a generic term leads to products that are worse than they could be, and that it's something I'd need to address in any second edition of RWS. But I would like to get a broader spectrum of opinion on this.

Has the term "web service" really died out in the past few years (or, as I suspect, changed its meaning)? When do you think this happened, and why?

Update: This post spawned an InfoQ article, so I should probably stop playing coy and say what I think.

I agree with commentor Foone. I think that WS-* successfully claimed the term "web service" in the mid-2000s, and that when people soured on WS-* they also stopped using the term "web service". While looking for work, the only companies I saw talking about their "web services" were big companies that were using SOAP/WSDL. Everyone who wanted to go above level 0 on the maturity heuristic was talking about "APIs".

The problem is, this terminology is backwards! SOAP/WSDL services are at level 0 just because they're not "web services". They don't use any of the web technologies. Their goal is to abstract away the network boundary in order to appear like a native client library. An API, if you will. As you adopt more of the web technologies, your product becomes less like a native client library ("API") and more like the web ("web service").

Thinking of all web services as APIs buys into the assumption that a web service is like a native client library. You can do a lot with that assumption, you can even get to level 3 of the maturity heuristic, but I don't think you can use that assumption to build complex hypermedia-driven applications of the kind seen in REST in Practice. Saying "API" is saying that SOAP/WSDL had the right idea, but the technologies were too heavyweight.

Filed under:


Posted by Will at Sat Mar 19 2011 22:35

Best of luck in your new adventures!

I’ve always thought that the use of “web service” to mean “a service on the web that applications use” conflicted with it also meaning “a service on the web for humans”; so part of me wonders if that's why people prefer “API”. (Of course, now there’s a collision between web service APIs and the Python/… APIs used to use those web service APIs.)

Posted by Brendan at Sat Mar 19 2011 23:38

My understanding is that APIs don't self-describe. Obviously not all web services do either, but at least there exist standardized formats dedicated to description.

Is your guess that around 2007, people started writing mobile apps that provided a ton of popular nonweb interfaces to server resources? I think there's something there, though the Apple app store didn't launch until 2008. (The most popular web API in the world, Google Maps, launched in 2005.)

As an anecdotal data point, though, we had a client hire us recently to write an app using their web service (not their API). It's SOAP, baroque and hideous, which probably has something to do with why they call it that. But I've certainly seen plenty of sites boasting about their APIs in the wild.

Posted by Brendan at Sat Mar 19 2011 23:39

And hey, congratulations and good luck!

Posted by Foone at Mon Mar 21 2011 08:44

I think it's one of those definitions where both terms mean the same thing but are being used by different groups. (Like, say, pro-choice and pro-life, or how climate change/global warming were used for a while (though I think which side was using which has swapped))

I wouldn't ever be surprised that a given interface was called either name, but if I'm on example.org and see them advertise their "API", I expect something vaguely RESTful, or at the very least consisting of simple GET/POST requests to sane URLs and returning structured XML and/or JSON. The kind of thing you can whip up a client for in 3 lines of python.

WebServices I associate with more RPC-based systems by Big Companies. Things like SOAP, where you have to send precisely formatted XML documents wrapped in other XML documents wrapped in a flour tortilla to "endpoints" with XML elements specifying which method to call, and this is so complicated to use that you have to use other complicated tools to generate code to call them. fragile code, based on XML documents which supposedly specify the interface in question.

(Yeah, I'm ever so slightly bitter)

Posted by kirkjerk at Tue Mar 22 2011 09:57

Random theory which may or may not be full of crap: when "web services" were hot stuff, there was a lot of fluff about this idyllic cyberfuture where "web services" might just make their presence known out there in the ethervoid, waiting to be discovered, and with descriptions of what they provide and how to ask for it that some hypothetical system of service desire might be able to automagically self-configure to use.

That was BS then, is universally recognized as such now, and the taint of such a pollyannic vision smears "web service" to this day.

"API" is rough and reliable. Sure, it's kind of weird that it doesn't make a distinction of if it's running from a centralized server or just a way to talk to software running on your old box, but it has an old school flavor people dig.


Unless otherwise noted, all content licensed by Leonard Richardson
under a Creative Commons License.