TruerWords Logo

Search TruerWords

Sign Up  Log On

“MetaWeblog.getRecentPosts: Conflict and Confusion”

From: Seth Dillingham In Response To: Top of Thread.  
Date Posted: Wednesday, September 15, 2004 11:16:09 AM Replies: 2
Enclosures: None.

MetaWeblog.getRecentPosts: Conflict and Confusion

I'm trying to fix an apparent bug in Conversant's support for the MetaWeblog and mt (movable type) api's. Conversant's Weblog II plugin can be used as a mt-compatible weblog, or a MetaWeblog-compatible weblog, or even just a blogger-compatible weblog.

In fact, all three of those api's build on each other. Blogger is the most basicc. MetaWeblog "embraces and extends" it. The mt api does the same to metaweblog. That's important to understanding the apparent conflict I've run into.

The MetaWeblog RFC has an entry point called MetaWeblog.getCategories. You tell it what weblog you want to know about, and who you are, and it returns the information about that weblog's categories. Specifically, the api documentation says:


metaWeblog.getCategories (blogid, username, password) returns struct

The struct returned contains one struct for each category, containing the following elements: description, htmlUrl and rssUrl.

This entry-point allows editing tools to offer category-routing as a feature.

So it's clearly supposed to return a struct of structs, as it says, "the struct returned contains one struct for each category..."

Yet, it seems like everybody else has implemented metaWeblog.getCategories to return an array of structs, rather than a struct of structs. Examples: XMLRPCNET and xoops.

What am I supposed to do? It wouldn't matter to me what other server software has done, since I'm not trying to interoperate with other servers, but I do need (Conversant) to work with the client software... which, of course, has been written to work with the other server software.

The metaweblog spec was written by Dave Winer, so it's safe to say that Radio (as a client app) implements the spec he wrote... yet it looks like most other applications (both client and server) have gone the other way. Ecto for Windows, for example, expects the result of metaWeblog.getCategories to be an array of structs. (However, ecto uses the XMLRPC.NET framework, so this isn't entirely Ecto's fault.)

Is there any way I can handle this to be compatible with both camps? A client app could accept either type of result (like NetNewsWire's editor probably does, if I know Brent), but most of them don't do that. Since Conversant is a server app, what should I do: follow the original spec, or follow the more common spec? The purist in me suggests the former, but the realist (the one who wants to make the customers happy) says the latter.

What a mess. Simon Fell calls this the problem of slightly uniform interfaces.

Discussion Thread:

There are no trackbacks.

is Seth Dillingham's
personal web site.
Read'em and weep, baby.