Georg,

> -----Original Message-----
> From: Standards [mailto:[email protected]] On Behalf Of Georg
> Lukas
> Sent: 21 December 2016 13:26
> To: [email protected]
> Subject: Re: [Standards] MIX Status (0.6.1), review, and Brussels Summit
> 
> Hi Steve,
> 
> thanks for the reivew of the review, I'd like to add some more reasoning to
> some of my arguments below.
> 
> * Steve Kille <[email protected]> [2016-12-21 11:50]:
> > You are right that a high bar has been set. [...]
> >
> > Operationally,  I believe that this will be mitigated by server
> > implementations that support both MIX and MUC, and following the
> > procedures of section 7. This will enable transitional operation.
> 
> I agree, but this will only work out under two conditions:
> 
> 1. we design MIX in a way that does _not_ completely break the usage of
>    MUC-only clients (this is also why I dislike the MIX-in-roster
>    approach).
> 
> 2. we make it possible to run MIX and MUC-compat on the same domain
>    (everything else will force us to use the MUC JIDs as the primary
>    identifiers for chatrooms forever).
> 
> I don't see major roadblocks for either condition, so I'm also slightly
> optimistic regarding the future of MIX.
[Steve Kille] 

I don't agree with these conditions.   In my view the key goal for MIX is to 
provide modern multi-user communications.


> 
> > > We might need to codify how a MIX-enabled client connected to a
> > > non-MIX server should behave (MUC fallback?).
> > [Steve Kille]
> >
> > I don't think this is needed.   A client can implement both MIX and
> > MUC.    The standards do not need to proscribe how this interacts in
> > user experience.
> 
> While I tend to disagree on your last point, this is a topic for a different
> discussion.
> 
> Either way, we SHOULD define how the client implementation should behave
> protocol-wise, when a MIX-enabled client is connected to a server without
> MIX-proxy support, and the user wants to enter a MIX.
[Steve Kille] 

Disagree.  This is a combination that is not supported.


> 
> > > ## Race Condition During Sync
> > There is an issue here.    Kevin Smith and Matthew Wild are discussing
> > an approach to modify client bind in order to address this.
> 
> The client-bind modification is eagerly awaited. However it won't solve the
> problem for MIX-MAM, unless we change the MIX spec to store the MAM
> archive in the MIX proxy instead of the MIX service.
[Steve Kille] 

Note that for a MIX client, the local MAM archive is used.  This is the one on 
the same server as the MIX Proxy.


> 
> > I do not think there is any specific MIX issue, although I believe
> > that MIX will be dependent on this new specification.
> 
> As long as we query the MIX service for our MAM, we need to create a new
> atomic operation for query+subscribe to avoid race conditions. In the current
> design, all messages get forwarded to the MIX proxy anyway, so the
> operation needs to be atomic only between client and MIX proxy, making it
> less of a problem.
> 
> One possible solution would be to extend the activation IQ with a MAM sync
> anchor, another (as stated above) to store the MAM archive on the user's
> proxy. There are probably more options, e.g. to ignore the race condition
> and let client developers do the dirty work of history merging.
> 
> My point is just that the current design is unclean in this regard, and we are
> aiming at creating the best possible protocol.
[Steve Kille] 

I don't think there is a problem.   I propose we defer this discussion until 
the new BIND spec is available for general review, and we can consider MIX in 
context of this.


> 
> 
> > > I'm still not convinced it is a good idea to add MIXes to the roster.
> > I strongly view that having MIX channels in the roster is a good
> > thing.  It allows presence to work for MIX using standard XMPP
> > mechanisms.
> 
> Except that the MIX proxy needs to ('SHOULD') intercept presence anyway
> and to only forward client presence to MIXes that the client has activated.
[Steve Kille] 

I believe that this is what the MIX specification says.   If there is wording 
that contradicts this, please point it out and I will fix it.


> 
> It is really bad to have different specifications for presence routing (based 
> on
> roster subscription and a 'SHOULD') and message routing (based on client
> activation).
> 
> We should promote the MIX client activation to a first-class citizen of the 
> XEP,
> and use its rules both for message and presence routing.
[Steve Kille] 
MIX client activation IS a first class citizen of the XEP.   What suggests that 
it might not be?


> 
> If we add MAM synchronization to the activation, we also elegantly solve the
> race condition.
> 
> And if we decouple MIXes from the roster and instead maintain a joined-MIX
> list in the MIX proxy, we win multiple things:
> 
> * no need to extend the roster format
> * no need to query each contact whether they are a MIX
> * we restore the user's ability to use pre-MIX clients on the same account
> 
> I think the main benefit of MIX-in-roster is to be able to add MIXes to roster
> groups (and to rename them, though I'm not sure this is a good thing, as it
> introduces interesting UX conflicts).
> 
> I'm not sure if this is really a demanded feature, and if we can't solve it 
> with
> less overall headaches.
[Steve Kille] 

I think that you are trying to solve  a problem that does not exist.


> 
> > > Furthermore, the roster does not provide a way to distinguish MIXes
> > > from regular contacts, unless the roster format is also extended.
> > [Steve Kille]
> >
> > I think that for most clients/users this will not matter.  It will be
> > easy for me to distinguish MIX channels, and I would likely group in
> > the roster.
> 
> It probably doesn't matter for the UX side, but it does for the implementation
> side. If you put all MIXes into a separate roter group anyway, there is no
> compelling reason to have them in the roster in the first place.
[Steve Kille] 

I simply noted this as to how I might handle this.   Putting MIX channels into 
the roster enables us to leverage a stack of existing XMPP functionality.    
MIX is going for re-use of core XMPP capability wherever possible.


> 
> > The client can easily work out if a roster member is a MIX channel and
> > can "do clever things" if it wishes.
> 
> In the worst case, this requires a round-trip to the MIX, so the client must
> defer important UI decisions (which icon to use, which context menu to
> provide) until it receives the response from the respective contact.
> 
> From a client developer's perspective, this is a little nightmare that should 
> be
> avoided if any possible.
[Steve Kille] 

Sorry - I really do not see an issue here.


> 
> > > A client needs a way to obtain the list of all joined MIXes (e.g.
> > > from the MIX proxy), so it can decide which MIXes to activate.
> > [Steve Kille]
> >
> > I had pictured that many clients will take a simple approach of just
> > activating all MIX channels.
> 
> That's simple, unless you also want to synchronize the MAM archive from
> the respective MIXes.
[Steve Kille] 

This is just basic MAM use.  I do not see a problem.


> 
> > Another approach would be to tie to bookmarks, so that essentially you
> > activate a MIX channel on startup if bookmarked.
> 
> I don't even want to get started about bookmarks, as currently deployed and
> used for MUCs... If we want them to be used for MIX, we need to fix them
> first.
[Steve Kille] 

If work is needed to improve bookmarks, lets do the work needed to improve 
bookmarks.   This should be a sound XMPP component that MIX can utilize.


> 
> > A client can find a list of MIX channels in which the user is
> > participating from the roster.  A MIX proxy command to list channels
> > might be helpful in the future.
> 
> I would do it the other way 'round. Have the MIX proxy hold a list of joined
> MIXes (it has to anyway) and expose that via an IQ.
[Steve Kille] 

Yes - that seems a sensible way to achieve this.   I still view that we should 
not add this now.  I noted this as a possible future option, but it is unclear 
to me if it will be useful in addition to what can be achieved without it.

> 
> > > Once the client sends activation, the MIX proxy could forward the
> > > client's presence to the MIXes, so we don't need to put them onto
> > > the roster for this either.
> > This is a possible alternate approach.   It puts some quite low level
> > requirements onto the MIX Proxy and it feels to me preferable to use
> > the roster and RFC 6121.
> 
> The MIX proxy is already in a situation where it needs to filter messages and
> presence.
> 
> > I'm happy to put this onto the agenda for Brussels.
> 
> That would be great. Unfortunately, I won't be able to attend, but I hope that
> the assembled community will find a nice and elegant solution to all the open
> points.
[Steve Kille] 

I'll make sure that we get to discuss this and the other points you raised.


> 
> > > [§5.1.8 client presence synchronization]
> > I realised on review that the role of MIX proxy has not been written
> > up.  In most cases the MIX Proxy will hold current presence
> > information and so when a client comes online, it can get this
> > information from the MIX Proxy.   I have added text to cover this.
> 
> Thanks, I've had a peek into the PR and I like the new wording.
> 
> We only need to keep in mind that the MIX Proxy sometimes needs to be
> fully synchronized with the MIX channel as well.
[Steve Kille] 

OK - let me have any specific changes you would like.


> 
> > > ## Internal Consistency
> > >
> > > The standard nodes in §3.7 have very different usage semantics.
> > > [...]
> > This inconsistency has arisen for a number of good reasons, or more
> > accurately because of the consequences and interaction of the good
> > reasons.
> 
> I think it would be great to have another column in Table 3, that lists the
> access method, i.e.:
> 
> Messages    | | |Message Stanzas
> Participants| | |PubSub
> JID Map     | | |PubSub
> Presence    | | |Presence Stanzas
> ...
[Steve Kille] 

That's a neat idea.   I've added  this.


> 
> > Detailed suggestions on sections to clarify are welcome.
> 
> I'll have another read of the XEP when it's published, and will try to create 
> a
> wording-related PR.
> 
> > > ## MUC Interop
> > I am not convinced that implementing MUC and MIX on the same domain is
> > viable.   It is certainly not going to be easy.   Your note points out
> > an issue.
> 
> Just to clarify: I'm not speaking of a full MUC implementation running on the
> same domain as a MIX implementation, but of a MUC interop layer to access
> the MIX service, to allow MUC-only clients to participate in MIXes. It could 
> be
> implemented in the MIX proxy or in the MIX service, and it does not need to
> implement the full MUC protocol.
[Steve Kille] 

I think that client and server implementers will be looking to provide a 
sensible solution to support both MUC and MIX.   I think that the current 
specification allows this.

> 
> > My recommendation would be to not allow this and to require MIX and
> > MUC domains to be distinct.   I suggest that we discuss in Brussels.
> 
> I can understand that it makes the server/service implementation more
> complicated, but it will significantly improve the MUC-to-MIX migration UX.
> The compatibility/UX issues I outlined in September
> <https://mail.jabber.org/pipermail/standards/2016-
> September/031364.html>
> are still valid, as far as I can see.
> 
> I think you need to bring up the topic in Brussels, and the first decision 
> that
> needs to be made is which UX we want to create, not which technical
> implementation is easiest to do or even most elegant.
> 
> The UX of XMPP is so bad that we are bashed by the IT crowd whenever
> anything messaging-related comes up. We can make the best and nicest MIX
> XEP, and it won't be used by anyone if we don't focus on the UX first.
> 
> Therefore my favorite is still #4 from the referenced email, where MIXes can
> be accessed using the MUC protocol on the MIX domain from a MUC-only
> client.
[Steve Kille] 

I think that UX belongs to products not to standards.

The goal of standards is to provide flexible interop in a way that allows 
implementers to build products with excellent UX

I think that you are overly focussed on MIX/MUC co-existence.   I think the top 
 priority is for MIX to be good.

> 
> > > ## Joining a MIX
> > I think that in 24, it is desirable to use a JID that matches the real jid, 
> > as part
> of the client confirmation.
> 
> I can't see how having the client's bare JID reflected in an IQ respsone makes
> any sense.
[Steve Kille] 
This will cause it to be directed to MIX proxy, rather than the client.

> 
> > In practice, there is little reason for a client to need to know their
> > own proxy JID.  So I don't see a need to extend the protocol.   A
> > client can easily find proxy JID by matching their own NICK in the
> > participants list.
> 
> The client needs to know their own proxy JID because it is the sender JID of
> reflected messages. 
[Steve Kille] 

Ah!   The 0.6.2 does have messages sent out with proxy JID.   I believe that 
this is a mistake, which I have now corrected.

It is also not easy to find their own proxy JID based on
> the NICK because the NICK is optional.
[Steve Kille] 

If a client sends messages, nick is mandatory.

> 
> If we have a JID field in the <join> stanza, we should use it for the proxy 
> JID
> (and rename it appropriately). That spares us another roundtrip, doesn't
> force clients to subscribe to the participant node and makes message
> matching easier.
[Steve Kille] 

Disagree.   We can review in Brussels.


> 
> > > ## Converting a 1:1 Chat
> > Ah yes, there are some issues here.   I have updated.   Let me know
> > what you think of the new text.
> 
> I've started a separate discussion about the general UX and security
> implication of the conversion.
[Steve Kille] 

OK.   If there are specific changes to MIX, please make sure they get brought 
out for my attention.


> 
> Regarding message history, it might be good to re-use XEP-0297: Stanza
> Forwarding, instead of creating a new <resend> element.
[Steve Kille] 

I was not aware of 297.   Using 297 here is sensible.   I have updated the XEP.


> 
> 
> 
> Georg
[Steve Kille] 

I have made the three changes noted and issued a PR for version 0.6.3

I really appreciate all your comments and input.   I will use this thread to 
help build a list of topics for Brussels.   It has brought out a number of 
points we do not agree on, and it is important to get wider input.

I suggest that we draw this thread to a close now, and that you provide any 
further comments in a new message or messages.


Best Regards



Steve



_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: [email protected]
_______________________________________________

Reply via email to