On 04/30/2010 09:10 AM, Bob Wyman wrote:
Brion Vibber <[email protected] <mailto:[email protected]>> wrote:
> That Atom payload dates from 2008 and was introduced
> for compatibility with XMPP-enabled Twitter clients..
>. remember when Twitter had an XMPP interface? :)

History can be important...: I think you'll find that this use of Atom was also intended to follow the "Atom over XMPP <http://xmpp.org/internet-drafts/draft-saintandre-atompub-notify-07.html>" specification that a number of us have been advocating for since 2004 or so... The use of this specification was certainly the subject of discussions that I had with folk at Twitter and with Evan Prodromou of Identi.ca back in 2008. In fact, the initial Identi.ca/Laconi.ca implementation was modified from its original in order to more closely follow the Atom over XMPP spec (of particular interest to me was getting support the the atom.source element). It should also be noted that this particular application -- real-time pushing of blog (or micro-blog) content over XMPP was a regular point of discussion during the many years that we debated the Atom format specification itself. As far as I know, the first implementation of "Atom over XMPP" was done by PubSub.com (my old company) back in 2003. (Since micro-blogging didn't exist at the time, we only pushed blog content.) Anyway, the decision to use Atom entries in this context wasn't a casual or random one. It is something that we'd been talking about for years.

Odd as it may sound, if you're looking to remove "unnecessary" stuff from the XMPP messages, then you probably should be looking at cutting down, not on the Atom entries, but rather the XMPP chat stuff. These messages are simply *not* chat messages... In an ideal world, XMPP clients would understand the XEP-0060 message formats or at least "Atom over XMPP" and thus, the messages would be sent out without the chat tag or data on them. The only reason that the chat overhead is there was in an effort to provide backwards compatibility with existing clients that were limited to chat-only. Unfortunately, folk don't seem to remember or internalize the idea that XMPP was intended to be more, much more, than just a chat protocol and we were supposed to be able to send more than just unstructured text messages over XMPP links...

We've got two primary use cases for XMPP on StatusNet & identi.ca today:

1) near-real-time delivery of an individual user's messages to a regular chat client and allowing them to send outgoing messages through that chat client (text+HTML chat message is required; extra Atom stuff is dead weight)

2) near-real-time delivery of the site's public timeline 'firehose' to other services for indexing, republishing, etc (extra Atom stuff is probably used, but we're not really sure who's consuming what)

And a third case which we're not entirely sure exists, but if it it does it'd be nice to keep supporting it:

3) near-real-time delivery of an individual user's messages to a dedicated microblogging client (extra Atom stuff is probably what the client wants to consume, as that's the data they'd otherwise be polling for in the HTTP API)



Case 2) bumps up against the use cases for Atom-over-PubSubHubbub, which is where a lot of the service-to-service activity seems to be going these days, but if people are making good use of it over XMPP I've got no desire to disrupt the service. (XMPP has some great advantages too, such as not requiring your client to be public-net-accessible as long as you've got an XMPP server out there!)

If case 3) has some good real implementations, then it would be great to be able to push the Atom data out only when it's actually going to be used. An extra 4k isn't too awful for a desktop chat client in real-time, but can really add up if you have offline delivery.

In both cases, I'd want to make sure that if we do discovery/detection that the receivers that need Atom will actually respond appropriately! Is anything currently deployed that already does this without tying into pubsub, which isn't used by what we've currently got?

-- brion vibber (brion @ status.net)

Reply via email to