On 1/5/2012 7:43 AM, Matthew Miller wrote:
On Jan 5, 2012, at 08:41, Mike Wacker wrote:

On 1/5/2012 7:31 AM, Matthew Miller wrote:
On Jan 5, 2012, at 08:24, Mike Wacker wrote:


Let me suggest a bolder idea. Why do we need to wrap the carbons using Message 
Forwarding at all instead of just delivering the message stanzas as is? You 
will only receive these additional message carbons if your client supports 
carbons and enables carbons. Thus, if a client has carbons enabled, if it 
receives a message not sent to its bare JID or full JID (either a message from 
one of its other resources to a buddy or from a buddy to one of its other 
resources), it can reasonably infer that the message is a carbon.

The standard use cases for message carbons is to ensure that a given device 
will receive both sides of all conversations, and that use case is covered 
regardless of whether we wrap carbons or not. I can't think of any use case for 
the special wrapping logic, though.

This would greatly simplify the XEP (as well as eliminate a dependency on an 
experimental XEP more complex than message carbons itself), as servers would 
only have to route the messages and not modify them, and clients won't need 
special parsing logic for carbons.

The original version of XEP-0280 did just that.  However, while it appears to 
simplify the XEP, it complicated implementations.  It required routing 
a<message/>   to a client that did not match the 'to', which raised a number of 
concerns among client and server implementers.

And I disagree that XEP-0297 is more complex than carbons.


- m&m
<http://goo.gl/LK55L>

Could you elaborate on those concerns? A client would only receive a message 
that did not match the 'to' if it had message carbons enabled. Thus, it would 
be reasonable that these clients would have special logic to handle such 
messages if it supported carbons and if it had them enabled. Clients not 
supporting message carbons do not need to make any changes.
The problem is not just with the clients; it's also with servers.  The server 
must route that message, and not every server implementation is readily 
prepared to deal with that radical of a departure for standard XMPP routing 
rules.


- m&m
<http://goo.gl/LK55L>

Perhaps an actual case could help elaborate, in theory, all you need to do is alter the routing logic and perhaps also alter some checks/assertions for messages which don't match the 'to' field. Neither seems prohibitively expensive. It doesn't seem that complex on the client either.

I'm just looking for a better rationale for it. If there's a client use case or user experience which requires the wrapping, then we definitely need it. If it's a task that can be offloaded from the server to the client, that is also a valid reason. But I'm not a huge fan of altering the message just to simplify server implementation details for a task that belongs to the server [routing].

Unless there's a really compelling cost or scalability reason, I prefer that we build the protocol around client use cases and user experiences instead of building it around the server implementation.

Reply via email to