xml-rpc interfaces and standards, oh yeah!
I was testing out various client blogging applications so I could update the Tabulas API wiki page and came to a few conclusions:
- ecto is the best client. Hands down. It's not even close. Sadly, it is only available on Mac OS X (the Windows version, on install, immediately said my 2-day trial ended ... not a great sign) and costs $18. But if you have a Mac, I definitely recommend ecto.
I paid for this immediately after I discovered it has a "console" mode which lets me see what XML is being sent back and forth. Friggin' awesome. Debugging was a breeze, and this thing probably helped me track down some ugly bugs (more on this later) relatively quickly. - Sadly, Microsoft may have done the best job for Windows folks with their Live Writer. Besides the fact it took like 10 minutes to install (I have no idea what it was doing), it feels like a very polished application. However, category support using the MetaWeblog API didn't seem to work ... will have to inspect.
- ScribeFire seems *very* *very* unpolished. Their forums are filled with reports, and nobody responding to them. It didn't seem to work very well with my test Tabulas account, so I'm not exactly filled with hope on that front.
- w.bloggar doesn't seem to work with MetaWeblog - trying to view your posts throws an "Invalid procedure" error (so *not* helpful). I think I may email the owner to try to track down the issues - but even if they were fixed, I still wouldn't recommend them since their interface is not so clean.
So a nasty bug I was having trouble tracking down was the metaWeblog.getCategories() method. For some reason, it'd only work on ecto. Then while trying to Google the issue, I found this interesting Wordpress bug which had the exact same symptoms as mine.
The bug reporter says:
whilo: As stated in the "standard" at xmlrpc.com the server should respond with a struct of structs instead of a data array of structs, as wordpress does.
"The struct returned contains one struct for each category, containing the following elements: description, htmlUrl and rssUrl."
Ok, seems pretty simple. You're not doing what the spec says:
whilo: Sure it is not very precise, but it says a struct of structs. This is still not an array. Either it is standard or it is not. In my opinion it is very important to keep as close as possible to a standard, even if it is not a good one. It makes using the interface much more frustrating, if serverside software works different with the same standard.
This fix is a gimme. Change one line of PHP code, and it's done. But no, wait:
dougal: This mis-implementation [ed. note: array instead of struct] has been out there for several years now, so the major clients are either explicitly or implicitly working around it. We need to test the clients against a 'fixed' version of the method and make sure nothing breaks. If the major clients don't break with the change, we can get a fix committed. Otherwise, we might need to coordinate with the client authors to see how we can smooth out a more gradual migration to spec compliance.
Are you serious? If the clients are using an array instead of a struct, then they're not following the spec, and deserve to be broke. Standards exist for a reason - when you willingly move away from them, you're doing a huge disservice to future developers.
The killer, for me, is the last comment made:
josephscott: As others have noted, the spec if vague on what exactly the returning data structure looks like, most others seem to have implemented it the same way WordPress has, clients have long since adapted to the way WordPress is returning this data.
Aside from the fact that the the spec is not vague on the topic, I'd have to say ... yeah, not really. Cause out of the 5 clients I tested, only ecto handled the workaround elegantly - the other ones failed. Sure, RSS and the Blogger/MetaWeblog APIs are pretty generic and vague, but the documentation seemed pretty clear to me how categories should be handled - the developer mentality that their application has such huge adoption that the the app doesn't need to follow standards? WOW. That's typical MS mentality.
. . .
To those of you who are following my Tabulas for updates on the new control panel, track toomuchtabulas instead. I'll post stuff there nightly whenever I fix stuff.
Comment with Facebook
Want to comment with Tabulas?. Please login.
Joseph Scott (guest)
The point was not that WordPress has such a huge market share that it can dictate how everyone else must do things, but that making such a change could break client code that today works correctly with metaWeblog.getCategories on WordPress. And that is something that I generally try to avoid, because it results in lots of unhappy people.
It is unfortunate situation to be in, but I believe keeping the current behavior was the best option.
ree
ScribeFire doesn't even have a way to change the saved password for a blog. Apparently the usual way to fix this is to toss all cookies and re-enter all passwords needed for ScribeFire. It's bizarre.