At the XMPP Summit, I finally had a chance to chat with Kevin Smith about XEP-0289, and on the plane back from Brussels I've reviewed that spec in more detail. Herewith some feedback, which is terse because I'm running out of battery power and my plane going to land soon.
First, I like the XEP-0289 approach and in general I prefer it to what I wrote up in XEP-0281 (especially the more natural use of presence from one room to join the other room, instead of the IQ-ish approach in 281). However, much is left unspecified in XEP-0289 and I have a lot of questions. :) First, terminology. I like "MUC mirroring" instead of "federated MUC" (because there's confusion with server federation -- you could argue that our current model already is federated MUC). I would change things as follows (you can figure out particular terminology I use below from the parts of the JIDs): sou...@home.near.tld (the source room) source\40home.near....@mirror.far.tld (the mirror room) Questions: - from the perspective of a far user, is the mirror room just a standard MUC room? if not, why not (and exactly how)? - do mirror rooms support all the usual MUC features (history, room administration etc.)? if not, why not? - in particular, can the mirror room be administered? if not, why not? - does / can the mirror room retrieve history on joining the source room? - are there distinct disco identities for source rooms and mirror rooms? - does the source room config indicate that the room is (can be) mirrored? - does the mirror room config indicate what the source room is? - can mirror rooms themselves be mirrored? (ick) - do / can mirror rooms / services communicate with each other? - does the mirror room wait for presence fan-out from the source room before sending presence to far users? - does or should the mirror room include delayed delivery info in the messages that it sends to far users? - can the source service explicitly request that the mirror service shall mirror a particular room (as in XEP-0281)? probably not needed, but good to make it clear - what happens if a near user tries to join a mirror room? is that user redirected from the mirror room to the source room? - can a far user join the source room directly? can the source room redirect a far user to the mirror room (as in XEP-0281)? - we need to show examples of room joins from far users other than the first one -- in particular, I would assume that the source room sends only one presence notification to the mirror room, which is then fanned out to all of the far users - can / should the mirror room assume the equivalent of "nomirror" for the presence of near and far users? that would save quite a bit of bandwidth - I'm not really convinced about nomirror for messages, but I am open to being convinced - example 2 seems strange, because the 'from' address is the room JID of the mirror room, not the occupant JID of the far user -- note that in example 5 the source room seems to know the occupant JID of the far user in the mirror room, but currently there's no way for it to know that! - must the far user's roomnick be the same in the source room and the mirror room? - what error would the source room return to the mirror room on join if the mirroring service is not trusted? (a rogue mirroring service could simply include the MUC namespace and thus join as a normal occupant, instead of including the special mirroring extension -- that's something for the security considerations) - what error or status notification would the mirror room return to the far user if s2s is down? would it return any status at all? - I don't mind the JID\20Escaping stuff for room names, but I suppose others might consider it ugly Kev, I'd be happy to work with you on improving XEP-0289. Peter -- Peter Saint-Andre https://stpeter.im/