On 2/24/09 8:53 AM, Jiří Zárevúcký wrote:
> Hello all.
> 
> I've been thinking about the current subscription management in the
> XMPP-IM for some time now. I think it's not very well designed.

Where were you in 1999?!? We could have used your help back then.

> For example, there's an obvious redundancy in the roster pushes and
> subscription stanzas. For (almost) every subscription update /
> request, there is a presence stanza and a roster push. But that only
> applies to the contact, who receives the change. Also, the "ask"
> attribute looks like a maimed boolean and roster pushes do not contain
> all the state information - inbound request is missing.
> 
> Even though the client can track most of the changes by tracking
> roster pushes and subscription stanzas, there is one change client can
> never track. When there is an inbound subscription request with no
> item and user declines it, other resources get no push and no presence
> stanza - no notification. That is not really a big problem, but all
> this inconsistency in pushes and presence stanzas makes it all seem
> very chaotic and untidy.

Yep. But what is broken? We don't make protocol changes just for aesthetics.

> Originally, I wanted to propose modifying roster pushes so they
> contain all the state information (including eventual inbound
> subscription request message), essentially leaving
> subscription-managing presence stanzas only as the mean of requesting
> the change, not presenting it to the other entity or the other
> resources. Then one thing occured to me. Do we really need a separate
> subscription handling for inbound and outbound presences? Users
> generally don't want it separate. Users want mutual subscription. Is
> there ever need to have one-side subscription?

Sometimes. But I agree that for most end users they don't need that.
IMHO this is a client interface issue, not a protocol issue.

> Providing mechanism for just a mutual subscription, where there would
> be only both-direction or pending or no subscription at all, would
> immensely simplify things for both users and implementers. Yes, I
> agree that immediate effect would be increasing complexity and need of
> additional effort to maintain backward compatibility. 

There's the rub. This kind of effort is a non-starter.

> That would be a
> tricky task, but I believe that with proper interoperability rules, it
> would be possible to make transition relatively painless. I believe
> that in a long run, such change would be a huge improvement.

For whom?

> So, in case you are interested in this idea, I will continue with some
> semantics I have on my mind. Otherwise, just tell me why do you think
> it is not possible / feasible / wanted to implement it. I'm pretty
> sure there is some hidden problem with this I don't realize. I suppose
> many of you won't take me too seriously, since it would require too
> massive change to the core protocol, but I'd appreciate if you thought
> about it a bit. Thanks for any feedback.

My feedback is: don't waste time on this kind of project. The problems
with backwards-compatibility make it infeasible.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to