Cloud APIs are all about the endpoints: some services follow the current trend of providing a RESTful end point, others use older protocols such as RPC or SOAP, some use newer - push focused - endpoints like WebSockets or HTTP Streaming, others may offer a number of different endpoints to meet different requirements and some just use what seems to be best for a specific job which might mean not strictly following protocol rules. But is providing an endpoint to a service alone good enough? Should a developer really have to care about how a service is built or accessed when they can use a client library?
This post was very much inspired by William Vambenepe's blog post called Cloud APIs are like military parades which focuses on the current trend of REST APIs but it also covers some interesting questions and one very key one:
How many developers actually directly access an endpoint and how many access a service through a library?
So, should cloud services just be providing endpoints and relying on community, open source and developers to build libraries that make access to their service easier? Should they just provide samples or small helper libraries? Or should a library be provide by the cloud service vendor and be considered a key part of that service?
There may not be right or wrong answers to these question, it may very well depend on the complexity involved in using the service API.
A look at the all time most popular APIs used by mashups in our API directory unsurprisingly lists Google Maps, Flickr, YouTube, Twitter, Amazon and Facebook. The most popular mashups listing also confirms this with a heavy focus on the mashups using mapping APIs.
Mapping APIs are quite complex due to the UI aspect of the service and the majority of libraries are provided by the cloud service vendor. Twitter has developed a large array of libraries built by an "ecosystem" of developers, Facebook provides a suite of SDKs and Tools, Flickr provides API Kits, the YouTube API consists of libraries for visual-oriented functionality and raw access to a data API and finally Amazon offer SDKs for access to AWS APIs and provide code samples for accessing their product advertising one.
Big cloud API players are clearly making an effort to give developers a running start when using their APIs. In the majority of cases some raw API access is available but samples, SDKs and libraries can be found in abundance and have quite frequently been developed by the company itself.
So, do cloud services offer API endpoints just to meet the needs of a very small percentage of developers who want to make raw calls to an API? Do they do it in order to enforce good development practice? Or is the main benefit that it encourages developers and open source advocates to get involved with a service and built a community? What do you think?
Photo by Kevin Dooley