Re: [Standards] XEP-0136: comments about auto save and preferences

2010-06-23 Thread Guus der Kinderen
2010/6/13, Steven te Brinke s.tebri...@student.utwente.nl:
 Hello,

 When reading XEP-0136 I discovered some confusing properties. I will
 describe
 these and propose changes that make them more intuitive to me. I am not sure
 whether the things I propose are better than the official XEP, so let me
 know
 what you think about it.

 The auto save preference is quite confusing to me. If I am right, all
 preferences are global, except the auto save preference, which can be set
 per
 stream by using scope='stream'. The idea that it can be set per stream
 sounds
 quite good, but the way it is done is quite strange to me:
 1) The usage of scope is explained in the XEP, but the scope element is not
 part of the given schema.
 2) The auto element can be set as well inside as outside the pref element
 without having different semantics.
 3) Setting an auto with scope='stream' implies removing the auto with
 scope='global'.

 Maybe number 3 is done for a specific reason, but I do not know in which use
 case it is useful. Consider the following situation:
 My server has archiving disabled by default and I want to archive all
 messages, so I set auto save='true' scope='global'/. At home I use a
 client
 with built in archiving, so I set auto save='false' scope='stream'/ to
 disable archiving for this session only. However, when I now login with any
 other client, archiving is disabled because the server default is used.
 (Setting auto with scope='stream' was overwriting the one with
 scope='global'.)

 Thus, IMO it is undesired that the setting for a stream overwrites the
 global
 setting. Therefore I propose the following change: remove the scope
 attribute
 from the auto element and define two separate elements: one inside the prefs
 and one outside. The former should be global and the latter per stream. If
 both are present, the server should use the latter. This way, no
 functionality
 is lost and now both properties can be configured independently.
 Furthermore,
 it makes all preferences in the prefs element global, which is more
 intuitive.

 Regarding the streams, there is one more thing that is unclear to me. The
 spec
 states: Server implementations SHOULD remove all session/ elements when
 stream is closed.
 However, a user can have multiple streams (e.g. by being online on multiple
 PCs) and there is no definition to which stream a session element belongs.
 My
 propose is to remove this sentence altogether, because I think it is not
 really desired to have sessions removed at the end of a stream. The
 expiration
 will remove the session when appropriate. Consider the following situation:
 During a secret conversation with Bob we both turn off archiving for this
 session only. For a reason unknown to me, Bob goes suddenly offline. Because
 I
 was busy typing, I only notice this after I have send another message. This
 message will be archived at Bobs side because his stream was closed before I
 send the message. This is not what we desired. Only if the session element
 had
 expired normally, the desired effect would have been achieved.

 Another point are changes to preferences. These are pushed to every resource
 which has retrieved the preferences before. I assume this is done to allow
 the
 client to have an up to date view of the preferences. However, item removes
 are not pushed to the clients, so clients cannot maintain an up to date view
 from the pushed changes. Therefore, IMO this behaviour should be changed.
 Because I do not know how clients will use this information, I cannot say in
 which way it should be changed. There are many possibilities:
 1) Also push removes. This adds additional complexity to the protocol, but
 allows clients to stay updated with minimal overhead.
 2) Always push the full settings on a change, not only the changes. Provides
 the same functionality as 1 using less complexity, but more overhead.
 3) Push no information about changes. Minimal overhead, but removes the
 ability to stay up to date.
 4) Use 3, but additionally store the settings in a pubsub node, so all
 interested clients can stay up to date. Has many good properties: no
 overhead
 when clients are not interested, less complexity in this protocol. Downside
 is
 that in order to use it, pubsub support is required (but that will be
 required
 for many features anyway).

 Note that when sessions are expired, they can be removed from the
 configuration
 by the server. IMO this should also be considered a change of configuration,
 but at least the expected behaviour in this situation should be documented
 too.

 Cheers,
 Steven


-- 
Verzonden vanaf mijn mobiele apparaat


Re: [Standards] XEP-0136: comments about auto save and preferences

2010-06-23 Thread Matthew Wild
On 13 June 2010 15:22, Steven te Brinke s.tebri...@student.utwente.nl wrote:
 Hello,


Hello!

Ignoring Guus's mobile's fascination with your message...

 When reading XEP-0136 I discovered some confusing properties. I will describe
 these and propose changes that make them more intuitive to me. I am not sure
 whether the things I propose are better than the official XEP, so let me know
 what you think about it.


Most of what you have said makes sense. A new version of XEP-0136 was
recently published, and the council have added a note about the
perceived complexity of the current spec, and that it could likely be
drastically simplified.

The XEP is currently being implemented server-side in Prosody for
Google Summer of Code - I expect some feedback to result from that,
and given the resulting client and server experience we should be able
to start banging this protocol into good shape at last.

Matthew


Re: [Standards] XEP-0136: comments about auto save and preferences

2010-06-23 Thread Guus der Kinderen
I'm sorry guys. It appears that every time I start the gmail app on my
phone, a new, empty response is sent.

On 24 June 2010 01:19, Matthew Wild mwi...@gmail.com wrote:

 On 13 June 2010 15:22, Steven te Brinke s.tebri...@student.utwente.nl
 wrote:
  Hello,
 

 Hello!

 Ignoring Guus's mobile's fascination with your message...

  When reading XEP-0136 I discovered some confusing properties. I will
 describe
  these and propose changes that make them more intuitive to me. I am not
 sure
  whether the things I propose are better than the official XEP, so let me
 know
  what you think about it.
 

 Most of what you have said makes sense. A new version of XEP-0136 was
 recently published, and the council have added a note about the
 perceived complexity of the current spec, and that it could likely be
 drastically simplified.

 The XEP is currently being implemented server-side in Prosody for
 Google Summer of Code - I expect some feedback to result from that,
 and given the resulting client and server experience we should be able
 to start banging this protocol into good shape at last.

 Matthew



Re: [Standards] XEP-0136: comments about auto save and preferences

2010-06-14 Thread Guus der Kinderen


 --
 Verzonden vanaf mijn mobiele apparaat


Not quite sure why my mobile decided that it was a good move to reply to the
original e-mail message with a blank message. Certainly was not intentional.
Sorry for this.

 - Guus


[Standards] XEP-0136: comments about auto save and preferences

2010-06-13 Thread Steven te Brinke
Hello,

When reading XEP-0136 I discovered some confusing properties. I will describe 
these and propose changes that make them more intuitive to me. I am not sure 
whether the things I propose are better than the official XEP, so let me know 
what you think about it.

The auto save preference is quite confusing to me. If I am right, all 
preferences are global, except the auto save preference, which can be set per 
stream by using scope='stream'. The idea that it can be set per stream sounds 
quite good, but the way it is done is quite strange to me:
1) The usage of scope is explained in the XEP, but the scope element is not 
part of the given schema.
2) The auto element can be set as well inside as outside the pref element 
without having different semantics.
3) Setting an auto with scope='stream' implies removing the auto with 
scope='global'.

Maybe number 3 is done for a specific reason, but I do not know in which use 
case it is useful. Consider the following situation:
My server has archiving disabled by default and I want to archive all 
messages, so I set auto save='true' scope='global'/. At home I use a client 
with built in archiving, so I set auto save='false' scope='stream'/ to 
disable archiving for this session only. However, when I now login with any 
other client, archiving is disabled because the server default is used. 
(Setting auto with scope='stream' was overwriting the one with 
scope='global'.)

Thus, IMO it is undesired that the setting for a stream overwrites the global 
setting. Therefore I propose the following change: remove the scope attribute 
from the auto element and define two separate elements: one inside the prefs 
and one outside. The former should be global and the latter per stream. If 
both are present, the server should use the latter. This way, no functionality 
is lost and now both properties can be configured independently. Furthermore, 
it makes all preferences in the prefs element global, which is more intuitive.

Regarding the streams, there is one more thing that is unclear to me. The spec 
states: Server implementations SHOULD remove all session/ elements when 
stream is closed.
However, a user can have multiple streams (e.g. by being online on multiple 
PCs) and there is no definition to which stream a session element belongs. My 
propose is to remove this sentence altogether, because I think it is not 
really desired to have sessions removed at the end of a stream. The expiration 
will remove the session when appropriate. Consider the following situation:
During a secret conversation with Bob we both turn off archiving for this 
session only. For a reason unknown to me, Bob goes suddenly offline. Because I 
was busy typing, I only notice this after I have send another message. This 
message will be archived at Bobs side because his stream was closed before I 
send the message. This is not what we desired. Only if the session element had 
expired normally, the desired effect would have been achieved.

Another point are changes to preferences. These are pushed to every resource 
which has retrieved the preferences before. I assume this is done to allow the 
client to have an up to date view of the preferences. However, item removes 
are not pushed to the clients, so clients cannot maintain an up to date view 
from the pushed changes. Therefore, IMO this behaviour should be changed. 
Because I do not know how clients will use this information, I cannot say in 
which way it should be changed. There are many possibilities:
1) Also push removes. This adds additional complexity to the protocol, but 
allows clients to stay updated with minimal overhead.
2) Always push the full settings on a change, not only the changes. Provides 
the same functionality as 1 using less complexity, but more overhead.
3) Push no information about changes. Minimal overhead, but removes the 
ability to stay up to date.
4) Use 3, but additionally store the settings in a pubsub node, so all 
interested clients can stay up to date. Has many good properties: no overhead 
when clients are not interested, less complexity in this protocol. Downside is 
that in order to use it, pubsub support is required (but that will be required 
for many features anyway).

Note that when sessions are expired, they can be removed from the configuration 
by the server. IMO this should also be considered a change of configuration, 
but at least the expected behaviour in this situation should be documented 
too.

Cheers,
Steven


Re: [Standards] XEP-0136: comments about auto save and preferences

2010-06-13 Thread Guus der Kinderen
2010/6/13, Steven te Brinke s.tebri...@student.utwente.nl:
 Hello,

 When reading XEP-0136 I discovered some confusing properties. I will
 describe
 these and propose changes that make them more intuitive to me. I am not sure
 whether the things I propose are better than the official XEP, so let me
 know
 what you think about it.

 The auto save preference is quite confusing to me. If I am right, all
 preferences are global, except the auto save preference, which can be set
 per
 stream by using scope='stream'. The idea that it can be set per stream
 sounds
 quite good, but the way it is done is quite strange to me:
 1) The usage of scope is explained in the XEP, but the scope element is not
 part of the given schema.
 2) The auto element can be set as well inside as outside the pref element
 without having different semantics.
 3) Setting an auto with scope='stream' implies removing the auto with
 scope='global'.

 Maybe number 3 is done for a specific reason, but I do not know in which use
 case it is useful. Consider the following situation:
 My server has archiving disabled by default and I want to archive all
 messages, so I set auto save='true' scope='global'/. At home I use a
 client
 with built in archiving, so I set auto save='false' scope='stream'/ to
 disable archiving for this session only. However, when I now login with any
 other client, archiving is disabled because the server default is used.
 (Setting auto with scope='stream' was overwriting the one with
 scope='global'.)

 Thus, IMO it is undesired that the setting for a stream overwrites the
 global
 setting. Therefore I propose the following change: remove the scope
 attribute
 from the auto element and define two separate elements: one inside the prefs
 and one outside. The former should be global and the latter per stream. If
 both are present, the server should use the latter. This way, no
 functionality
 is lost and now both properties can be configured independently.
 Furthermore,
 it makes all preferences in the prefs element global, which is more
 intuitive.

 Regarding the streams, there is one more thing that is unclear to me. The
 spec
 states: Server implementations SHOULD remove all session/ elements when
 stream is closed.
 However, a user can have multiple streams (e.g. by being online on multiple
 PCs) and there is no definition to which stream a session element belongs.
 My
 propose is to remove this sentence altogether, because I think it is not
 really desired to have sessions removed at the end of a stream. The
 expiration
 will remove the session when appropriate. Consider the following situation:
 During a secret conversation with Bob we both turn off archiving for this
 session only. For a reason unknown to me, Bob goes suddenly offline. Because
 I
 was busy typing, I only notice this after I have send another message. This
 message will be archived at Bobs side because his stream was closed before I
 send the message. This is not what we desired. Only if the session element
 had
 expired normally, the desired effect would have been achieved.

 Another point are changes to preferences. These are pushed to every resource
 which has retrieved the preferences before. I assume this is done to allow
 the
 client to have an up to date view of the preferences. However, item removes
 are not pushed to the clients, so clients cannot maintain an up to date view
 from the pushed changes. Therefore, IMO this behaviour should be changed.
 Because I do not know how clients will use this information, I cannot say in
 which way it should be changed. There are many possibilities:
 1) Also push removes. This adds additional complexity to the protocol, but
 allows clients to stay updated with minimal overhead.
 2) Always push the full settings on a change, not only the changes. Provides
 the same functionality as 1 using less complexity, but more overhead.
 3) Push no information about changes. Minimal overhead, but removes the
 ability to stay up to date.
 4) Use 3, but additionally store the settings in a pubsub node, so all
 interested clients can stay up to date. Has many good properties: no
 overhead
 when clients are not interested, less complexity in this protocol. Downside
 is
 that in order to use it, pubsub support is required (but that will be
 required
 for many features anyway).

 Note that when sessions are expired, they can be removed from the
 configuration
 by the server. IMO this should also be considered a change of configuration,
 but at least the expected behaviour in this situation should be documented
 too.

 Cheers,
 Steven


-- 
Verzonden vanaf mijn mobiele apparaat