This needs some frontend polishing for the script timeouts and stuff, but using XMPP for federation is definitely the right way IMO. Or, at the very least, much better than just making up protocols on the way, as Diaspora did. Federation and message routing have been solved…
The announcement on the mailing list has some more narrative: <a href="http://groups.google.com/group/buddycloud-dev/browse_thread/thread/ee4fae4a143e38ea" rel="nofollow">http://groups.google.com/group/buddycloud-dev/browse_thread/...</a>