You know that little link at the bottom of most content driven sites – the one labeled “Developers.” Perhaps it’s a link to a doc, code samples, or some type of instructional repository. How it is represented is really inconsequential, the real meat behind the link is what it means to the community it is meant for and to the team that developed what's behind it.
I am talking about APIs (Application Programming Interface); the software world is filled with them – Ebay, Google, Facebook, PlayStation 3, etc… As a developer I seek out access to the semi-elusive underworld of APIs. This is a place to come and see a Developer wear his code on his sleeve, a community of bashes and praises, a smelting pot of homegrown solutions shared with others inspired by the absence of glass ceilings.
The term and its functionality ring a blissful freedom. How ambiguous is the definition: “the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them (Provided by: wiki)." Although it does not roll off the tongue this definition speaks volumes about this technology’s design model – there isn’t one. Well not just one, but many.
After writing the FellowhipOne DataExchange API I found that I was asked more questions on the design model than on the consumer implementation. I would feed out some garbled techno-babble stating that it was built loosely on a RESTful implementation, that it was strictly XML based with various security patterns and object models that allowed the flexibility of versioning and full backwards compatibility, etc… but it was so much more than that…
I have met some of the most talented, most experienced, and most interesting people through DataExchange – The developers that use it; they were the ones that really built it. Providing challenges and problems to solve – I love the Church DEV community! Colossians 3:23 until the end.
The definition for API is not at all like the one above - in my opinion. I would like to think it is more like:
APIs (Association Producing Interchange): "The interface that a community of developers uses to collaborate, innovate, and build on ideas to change and invigorate a software experience." We have a unique opportunity as developers; we can come together using our various backgrounds and knowledge to make a really great "something" - but we have to connect with people not just systems.