MarsEdit is my popular desktop application for writing and editing blog posts from the comfort of your Mac.
Tumblr is a popular web-based blogging system that emphasizes simplicity of authoring and presentation.
You might guess that among fans of these two popular products, there is a significant overlap. You would be right. I regularly receive requests from customers who are hoping to use MarsEdit as a remote editor for their Tumblr blog. And I would very much like to see that happen.
But there’s a problem. The Tumblr API is deficient in ways that make it impossible for me to provide an acceptable user experience, and my attempts to reach a sympathetic ear at Tumblr have been fruitless for almost a year. I am forced to reply to each request for Tumblr support with a somewhat complicated, apologetic reply.
Brief Interlude: Blogging APIs
A blogging API is the mechanism through which a blog service such as WordPress, Blogger, Movable Type, etc., make their content available to clients such as MarsEdit for posting, editing, or deleting. At its simplest, you could think of it like a file format. In the same way that Photoshop can edit images of type “JPEG”, MarsEdit can edit blogs that implement formats that it recognizes.
Most services use one of a few standard blogging API interfaces. This makes it possible for applications such as MarsEdit to work with a variety of services. MarsEdit even works with blog systems which I myself have never heard of! Because blog developers design APIs to match a standard implementation, they work well with MarsEdit, Windows Live Writer, and dozens of other blog editing applications.
Generally speaking, when I make improvements to MarsEdit, I’m working to improve its support for these standard interfaces. By adapting to the standard interfaces, an improvement that benefits Movable Type users may also benefit the users of dozens of other blogging services. A pretty nice arrangement for me, users, and blog service developers!
Tumblr’s Custom API
Tumblr does not implement any of these standard APIs. They provide a custom “Tumblr API” that provides both much more and much less functionality than any of the standard interfaces. Normally, I would not be inclined to add support for a non-standard API in MarsEdit, for the same reason that Photoshop would not be inclined to add support for some new image file format that somebody invented. But because of Tumblr’s incredible popularity and because of the strong user demand for such support, I decided to implement support for Tumblr in November, 2007.
In fact, shipping versions of MarsEdit have for almost a year included Tumblr specific support. But I refuse to enable it or endorse it because it falls far short of what I would call an acceptable user experience.
What’s wrong with the Tumblr API? The most glaring omission is that it doesn’t provide the ability to edit existing posts. As you might imagine, for a product called “MarsEdit,” I find this functionality extremely important. Imagine writing a new post to your Tumblr blog, only to notice a second after posting that you’ve made an embarrassing typo. In order to fix the post, you’ll have to leave MarsEdit and go to the web to edit the post. Unacceptable.
Less significant but still annoying is the inability to delete posts. While this functionality is certainly less common than editing, it’s still something that users reasonably expect to be able to do. Though I could disable the “Delete” button in MarsEdit, or display an informative alert when attempting to delete, it would be much better if the API simply supported deleting.
Smaller problems also exist, such as a poorly documented date format, and the inability to read back tags that have been set on a post. I suspect that if I was able to proceed further with the API, other issues might arise over time.
These issues are, in short, great bug reports for Tumblr. But the company does not seem interested in fixing them, or even acknowledging a lack of interest in fixing them. Frustrating for me, and frustrating for any of my customers who yearn for this support.
Where Do We Go From Here?
By no means do I think Tumblr should feel compelled to implement one of the standard blogging APIs. Nor do I feel that they should be compelled to extend their API such that it provides the bare minimum of functionality for clients such as MarsEdit. They are an independent company with priorities that are different than mine. Whether they choose to support remote clients with their API is their decision.
What I want Tumblr and MarsEdit customers to know is that the ball is, and has been for some time, in Tumblr’s court.
There are relatively simple changes that Tumblr can make to their API to facilitate an acceptable user experience not only from MarsEdit, but from other client applications that might choose to embrace the service’s API.
Because Tumblr has not responded to my inquiries, I would encourage any Tumblr customers who would benefit from a remote editing client such as MarsEdit, to contact Tumblr directly and ask that they take my suggestions to heart.
Information about contacting Tumblr is available at the bottom of the Tumblr Help Page.
I hope that this information helps to explain MarsEdit’s continued lack of support for the Tumblr platform. For those of you who have waited so patiently, I hope that one day I am able to add full-fledged Tumblr support to MarsEdit.
Update 10/17/2008: Sometimes the internet works! In a great turn of events, Marco Arment from Tumblr has commented on this very post, indicating that he’ll be making a priority of this requested support. I am looking forward to a positive development in Tumblr’s API!