Just finished deploying the latest release of Quick Blog today and boy was it a fun development cycle. My feature was implementing the MetaWeblog API. This API, if you don't know, allows you to blog from a variety of tools instead of being constrained to the admin interface provided by your blogging engine.
Now, obviously I'm a big fan of my chosen blogging engine but sometimes it's nice to have options and a change of scenery. The MetaWeblog API, along with the MovableType API, the Blogger API, and the Atom Publishing API, sets a standard around which software developers and blog publishers can collaborate. The collaboration is unavoidable because the API specification is a steaming pile.
Like all specs Winerian, the ambiguity rapidly becomes evident as you get down to work. I first implemented the specification as written. Fire up Ecto and see what happens. XmlRpcFaultException. Lovely. Look at the Logging Console and step through the debugger. Ahh, I took the spec one way and Ecto took it the other. Try another client and see that usage has cemented on Ecto's way. Nice. Continue with each MetaWeblog endpoint.
In the end, though, it was a lot of fun because now we integrate well with Windows Live Writer, Flickr, and Google Docs. We might implement the other APIs at some point but I don't know that they give us anything that we don't already have. I've pored over their specs and it's mostly just more of the same—each implemented slightly differently, varying in names, inputs, or outputs. It really feels like the feed wars all over again; I've just never seen a compelling reason to pick one over the other except that the non-Winerian specifications are universally rigorous and easier to implement.
[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]