Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Kevin Smith
Thanks for the feedback. I don’t want to ignore this, but was trying to digest 
bits.

> On 12 Dec 2019, at 12:10, Marvin W  wrote:
> 
> On 12/11/19 6:50 PM, Kevin Smith wrote:
>>> The business rules in §4 say that a Fastening can not have a Fastening
>>> themselves. If both message attaching, reactions and others are realized
>>> using Fastening, this implies that you can not react to an attached
>>> message, for example you would not be able to thumbs-up the fact that a
>>> bot provided a helpful attaching. While it is arguable that this is not
>>> strictly a required feature, the restriction seems to be unreasonable in
>>> that case.
>> This one was deliberate - reacting to reactions to reactions (and similar) 
>> is the sort of scenario that it’s easy to spec, but then generally horrific 
>> to implement (I refer to pubsub collections as a simpler example of where a 
>> similar concept seems pleasantly general but ends up being overcomplicated 
>> to work with - to the point of neglect).
> 
> I think the question this comes down to is, what we want to build using 
> fastenings. I don't want reactions to reactions, but if we allow some sort of 
> "comment" as a Fastening, then we should also allow reactions to such 
> comments.
> If we keep this restriction, I believe we'd need a generic standard for 
> associating a message to another message, independent of it being a fastening 
> or another kind of message (that can have fastenings).

I think we’re moving on this later in the thread.

> Also one of the reasons why everyone agreed it would help to have the 
> fastened elements as a sub-element of the  instead of directly in 
> the  as in XEP-0367, is that if we don't do that, it isn't clear how 
> to handle the correction of a message attaching case (a fastening of a 
> fastening). Thus if we decide against allowing fastening of fastenings, the 
> decision to use sub-element and  etc should be revisited...
> 
>> I think  can contain multiple elements, and they’re treated 
>> independently
>> So if you apply-to two elements, and then replace apply-to one element, it 
>> would replace the relevant one, leaving the other intact. If you then 
>> replace apply-to both elements, it would replace both of them. This is 
>> under-(not at all) specified.
>> For  elements, it should be the target name/namespace, as if it 
>> was a child.
> 
> How are edits supposed to work then? Because for various (good) reasons they 
> exist of multiple elements in the example. 
> https://xmpp.org/extensions/xep-0422.html#example-4

I need to go back and work through examples. I’m not immediately sure that what 
I was saying didn’t make sense. If you have multiple elements in an apply-to, 
you would replace them by specifying the replacement of the particular element 
(or elements) you wanted to replace. Am I missing the point?

> 
>>> What happens if a client accidentally does not add the `replace="true"`
>>> (for example because the same element was send from two different
>>> devices at about the same time)? Will a) there be two elements with the
>>> same namespace and name then, b) the second silently ignored or c) the
>>> first silently replaced? In case of a), how to decide which to replace
>>> in the future? In case of b), how does the sending entity know if there
>>> message was first or second? In case of c), why put `replace="true"` at
>>> all if it is implicitly done anyways?
>> Is it sufficient to assert that protocols that want to attach multiple of 
>> the same namespace then can’t replace them, or do we need ids on the 
>> fastenings?
>> I guess if we have 😂 and
>> 🤦🏻‍♂️ as individual fastenings, we need to be able to remove one and leave 
>> the other intact. OTOH, if a fastening contained one reaction for both 😂 and 
>> 🤦🏻‍♂️, it could be replaced with a reaction with just 🤦🏻‍♂️.
> 
> I don't quite understand what you want to say here. If each reaction is a 
> separate fastening, how do you remove a single one if you only identify 
> reactions by their qname.

That’s what I was saying, I think. If we were to treat multiple reactions as 
multiple fastenings, we would need to introduce new mechanisms. If we were to 
treat all reactions as one fastening, we wouldn’t.

> Also it apparently is currently specified how to replace but not how to 
> remove a fastening. Replacing with an empty variant may be technically 
> possible, but that empty variant would then still be required to send out to 
> clients (because we don't want servers to have to know what an empty variant 
> looks like for each fastening).

I’d made a note that removal isn’t specified, yes. I’ll address this.

>> I have assumed that if you’re doing full stanza encryption, and want 
>> archiving, your only choice as things stand is to have a complete download 
>> of your archive, and to do all collation locally. Having both smart 
>> archivability (without decryption) and encryption is a more or less 
>> unsolvable problem.
>> Does anyone have a wor

Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Ruslan Marchenko
Am Mittwoch, den 11.12.2019, 17:10 + schrieb Kevin Smith:
> > On 9 Sep 2019, at 20:37, Florian Schmaus  wrote:
> > Furthermore, xep359 makes it very clear
> > that xep359-IDs are just unique and stable within the scope of the
> > id-assigning-entity (this allows implementations to use simple
> > mechanisms to generate the ID without considering collisions with
> > other
> > id-assigning-entities).
> 
> Good point, thanks Flo. Although I’m not sure that 359 does make it
> clear that it’s not globally unique, actually the opposite - I
> believe it’s a SHOULD on using UUID, and my understanding has always
> been that these are intended to be globally unique (I realise you
> have authority on claims of the original intention) from reading it.
> This isn’t the only XEP that’s written on the basis of the unique IDs
> being unique :)
> 
> We probably need to clear this up - was I the only one with this
> misconception? (i.e. do we update 422 (and others) or 359?)
> 
Yes this was also my understanding all the way through. It is the
reason all my MAM indices are composite including id and assigning
entity.
If we go for UUID we'd probably need to mention which version it should
be and what to consider a namespace and name (if v5) or MAC (if v1) to
make sure there won't be other assumptions (like reproducible UUIDs -
for duplication/collision detection)

--RR


___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Kevin Smith
On 12 Dec 2019, at 15:08, Dave Cridland  wrote:
> 
> On Thu, 12 Dec 2019 at 12:11, Marvin W mailto:x...@larma.de>> 
> wrote:
> I think the question this comes down to is, what we want to build using 
> fastenings. I don't want reactions to reactions, but if we allow some 
> sort of "comment" as a Fastening, then we should also allow reactions to 
> such comments.
> 
> 
> Interesting - from a syntactic viewpoint, you're absolutely right. But I 
> think you're entirely wrong from a protocol behaviour standpoint. So I wonder 
> if there's a distinction to be made between various kinds of relationship:
> 
> * Messages that are pure ancillary messages, like a reaction. If I don't see 
> the reactions at all, it's not great, but probably a reasonable degradation. 
> Normally, I'll just want a summary on view. Sometimes I'll dig for more 
> detail.
> 
> * Messages where the content of the message substantially alters another. 
> Edits, attachments, etc. If I don't see these at all, I've got significant 
> information loss with regards to the conversation - I'm not just missing out 
> on some additional content, I'm actually seeing different content.
> 
> * Messages where the content relates to another. Comments, threading, 
> replies, etc are all closely related to another message, but they're clearly 
> a message in their own right. A degradation here might involve losing the 
> relationship rather than the message.
> 
> I think Fastenings really only cover the first - MAM would here provide a 
> summary view of any fastenings. MAM doesn't urgently need to support the last 
> case at all. The middle case is somewhat harder - we might want to have MAM 
> aware of these but it would need to collate these in full - and perhaps it 
> even provides a unified view of a message and its edits etc?
> 
> As a thought experiment, it'd be interesting to ask:
> 
> 1) Are there any other "buckets" of message relationship types?
> 
> 2) What existing relationships fit into what types?
> 
> 3) What typical behaviours do we want to see (and thus support) on the 
> clients?

I agree more or less with these distinctions, and think each needs distinct 
handling. I do see them all as being feasibly within fastening.

After a a discussion with Dave, I think the current best suggestion is that we 
annotate a fastening based on what type of summary is possible. This also 
largely aligns with Dave’s asterisks above.

1) summary=‘urn:xmpp:fastening:count:0': 
Messages that can be counted by having the same bodies (by the archive). e.g. 
Reactions where you want to know at a glance that 50 people reacted with 🤦🏻‍♂️, 
20 with 🤮. These messages are ‘pure ancillary messages’ in Dave’s above list, 
and so don’t themselves get fastened to. You can quick-query an archive to get 
the summary - you can also full-query to get the full details if you want, such 
as who made each fastening(reaction).

2) summary=‘urn:xmpp:fastening:full:0': 
Messages that can’t be collated with others, but where you need them for the 
first message to be complete. e.g. edits. These also don’t get fastened to. 
These are ‘where the content of the message substantially alters another’ in 
Dave terms.

3) summary=‘urn:xmpp:fastening:none:0': 
Where the new message is a new message in its own right, but that has some sort 
of link to a previous one. e.g. Comments (I’m not convinced that this is the 
right way to be doing comments, but if we did, like this). These can have their 
own fastenings. ‘Messages where the content relates to another’ from Dave’s 
list.

An indivdiual fastening type would have (in the defining XEP) a particular 
summary approach (e.g. Reactions are always count, edits are always full, 
comments are always none). This lets us put a cap on the madness that ensues if 
e.g. you can react to reactions to reactions, while also allowing reactions to 
those messages that logically contain content of their own, e.g. comments.

It is compatible with the previously discussed splitting of content and pointer 
in some manner that lets archives still return relevant fastenings in some 
manner while encrypted, although if the content is encrypted it will obviously 
be unable to count things.

This is a bit more optimistic than a strawman, but may well have holes. Please 
drive your busses through them. Thoughts?

/K

___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] A Meta-Discussion about the Standards Process

2019-12-12 Thread Daniel Gultsch
Am Do., 12. Dez. 2019 um 09:24 Uhr schrieb Dave Cridland :

> 1) The "Florian Plan" - introduce a phase prior to Experimental, wherein a 
> XEP is semi-adopted but remains without a number. This somewhat happens 
> anyway, but it does so outside our IPR rules, so arguably this is a case of 
> formalizing the status quo to some degree. On the other hand, it abandons 
> anything Experimental about Experimental. I'm calling this the Florian Plan 
> just because Florian Schmaus has been a vocal proponent - but he's far from 
> the only one.

What bothers me about the Florian Plan is that it introduces an
*additional* step to what in my view is already way too many steps.
Ideally what I want is a 'florian stage' (I was tempted to call it
draft stage but unfortunately we already have a stage called 'draft')
and a stable 'stage'. I don’t see why we need a lot in between.
(Maybe; we might want to hold on to the 'in review' stage; but in the
past we haven’t been very thoroughly with actually moving XEPs in and
out of that 'in review' stage.

I mean correct me if I'm wrong but the IETF seems to be doing fine
with just two stages.

>
> 2) The "Daniel Plan", which is to encourage Council to adopt pretty well 
> anything. If this sounds radical to you, it might help if I described it as 
> simply reimposing the de-jure standards process as described in XEP-0001. I 
> can certainly see the attraction, but I also think it ignores the status quo 
> and the problems alluded to above. Most recently suggested by Daniel Gultsch.

In a way it doesn’t really matter if we introduce a new Florian Stage
or if we reuse the existing Experimental stage for that purpose. In
both cases we somehow have to deal with the status quo. There are a
number of XEPs currently in Experimental that certainly belong into
'Florian'. (I'm going to follow Dave’s example of not providing
examples.)

But that's to me is one of the underlying issues here; While I can
certainly see why Council would require a certain readiness of a XEP
before giving it a number, that quality measurement has been applied
very unevenly in the past. There are *a bunch* of XEPs that literally
have the text 'TODO' in them.

Which brings us to:


> b) We have to, in particular, codify what each transition means, and 
> therefore tighten up Council's veto-for-any-reason here. I don't mean that we 
> remove any judgement calls on the part of Council, but I do mean that we 
> should create a yardstick on what constitutes a "usual" versus "unusual" veto.

Yes I agree with that. More transparent and fairer processing would
certainly eliminate the feeling of XEP authors to retry after the next
council has been elected.

I feel like only having two stages (Draft and stable) would help with
that; because it is pretty obvious that for it being stable it has to
be stable.

cheers
Daniel
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Philipp Hörist
Hi,

I am just realizing that all these magic server features are incompatible
to encryptions which use ratchet mechanisms. Because those depend on
messages received in order.
So for example OMEMO could never use these archive features, I don't think
we can do anything about that.

We still have OpenPGP. Which should have no problem with that.

Yeah your approach with the "external name" stuff looks fine to me.

I'm not sure about this merge approach, looks like it could run into server
stanza size limits in bigger group chats, definitely doesn't seem like it
can scale up well.
For single chat this should be fine and probably convenient, for group
chats i think it makes more sense to request fastend content separately.

Not sure what you mean by archive id and message id mismatch, yes those are
never the same but why is this a problem?
When we use the merge functionality of the server we would never need the
archive ids of fastening messages, only for non-fastening messages. because
of that i would say the archive-id can be omitted and the applied content
can also be within the forwarded element. Or maybe I don't understand what
other problem there is.

Would be interesting to get the opinion of server developers if such merge
features are even realistic to implement.

Regards
Philipp
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Dave Cridland
On Thu, 12 Dec 2019 at 12:11, Marvin W  wrote:

> I think the question this comes down to is, what we want to build using
> fastenings. I don't want reactions to reactions, but if we allow some
> sort of "comment" as a Fastening, then we should also allow reactions to
> such comments.
>
>
Interesting - from a syntactic viewpoint, you're absolutely right. But I
think you're entirely wrong from a protocol behaviour standpoint. So I
wonder if there's a distinction to be made between various kinds of
relationship:

* Messages that are pure ancillary messages, like a reaction. If I don't
see the reactions at all, it's not great, but probably a reasonable
degradation. Normally, I'll just want a summary on view. Sometimes I'll dig
for more detail.

* Messages where the content of the message substantially alters another.
Edits, attachments, etc. If I don't see these at all, I've got significant
information loss with regards to the conversation - I'm not just missing
out on some additional content, I'm actually seeing different content.

* Messages where the content relates to another. Comments, threading,
replies, etc are all closely related to another message, but they're
clearly a message in their own right. A degradation here might involve
losing the relationship rather than the message.

I think Fastenings really only cover the first - MAM would here provide a
summary view of any fastenings. MAM doesn't urgently need to support the
last case at all. The middle case is somewhat harder - we might want to
have MAM aware of these but it would need to collate these in full - and
perhaps it even provides a unified view of a message and its edits etc?

As a thought experiment, it'd be interesting to ask:

1) Are there any other "buckets" of message relationship types?

2) What existing relationships fit into what types?

3) What typical behaviours do we want to see (and thus support) on the
clients?

Dave.
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Marvin W

On 12/12/19 2:53 PM, Philipp Hörist wrote:
This is a pretty substantial feature so to fallback to a "Download the 
whole archive" approach to make it work is not a good solution for me 
and will probably lead to fastening not working with full stanza encryption


The solution for me is to separate metadata and content


I totally agree we should make sure encryption is fully considered in 
the design of Fastening (although some features will never work on 
encrypted messages).


However I don't think your suggested solution will serve this purpose. 
One reason I understood why we put elements inside the  is 
that this way, servers know which part of the messages is to be fastened 
and can strip out all the parts of the message not required for the client.


So with your example but encrypted and useless metadata added:


  
  
  


Servers would be able to fasten the message to the correct referenced 
message, however they can not strip the useless metadata as it's not 
clear what is important and what is not. Example for useless metadata 
would be a store hint.


I think I like this model more:


  [...]



  

  
  
  


Which the server can "merge" to:


  [...]
  

  


It would even allow subsequent edits to replace without leaking anything 
other that one message replaces another:



  

  
  
  


Resulting in


  [...]
   
  

  


(Stuff is going to be a bit more complicated as message IDs and archive 
IDs mismatch...)
(I am putting the  directly in message here, but it would in 
practice be outside the  element in a MAM message)


Marvin
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Kevin Smith
Thanks Philipp.

On 12 Dec 2019, at 13:53, Philipp Hörist  wrote:
> The solution for me is to separate metadata and content
> 

> lets do something like
> 
>  to="chatroom@chatservice.example">
> 
> 
>   Very much
>   
> 

This seems like a good compromise, I’ll incorporate similar, thanks. (I think 
Marvin suggested a similar approach, I’m going to work through his mail next).

/K
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Philipp Hörist
Hi,

The current approach is not good for full stanza encryption. And we have to
assume full stanza encryption will become the norm at some point so any
proposal should have that in mind.
Full stanza encryption does not mean Full stanza encryption. There are
elements that are never encrypted, for example store hints for the server,
delay elements added by the server, and im sure i will find one or two more.

Full stanza encryption means, we encrypt everything that makes sense and
don't negatively impact usability.

This is a pretty substantial feature so to fallback to a "Download the
whole archive" approach to make it work is not a good solution for me and
will probably lead to fastening not working with full stanza encryption

The solution for me is to separate metadata and content

So instead of


  
  Very much
  


lets do something like




  Very much



This allows us to encrypt content but not the metadata, and in turn allows
the server archive to do some magic, for example if we want to request all
messages which were fastened to another message.

Keep in mind if this metadata leak is a problem for a client, nobody forces
a client to support fastening while encryption is activated. But it should
be possible if the user wishes.

Regards
Philipp
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: Message Fastening

2019-12-12 Thread Marvin W

On 12/11/19 6:50 PM, Kevin Smith wrote:

The business rules in §4 say that a Fastening can not have a Fastening
themselves. If both message attaching, reactions and others are realized
using Fastening, this implies that you can not react to an attached
message, for example you would not be able to thumbs-up the fact that a
bot provided a helpful attaching. While it is arguable that this is not
strictly a required feature, the restriction seems to be unreasonable in
that case.


This one was deliberate - reacting to reactions to reactions (and similar) is 
the sort of scenario that it’s easy to spec, but then generally horrific to 
implement (I refer to pubsub collections as a simpler example of where a 
similar concept seems pleasantly general but ends up being overcomplicated to 
work with - to the point of neglect).


I think the question this comes down to is, what we want to build using 
fastenings. I don't want reactions to reactions, but if we allow some 
sort of "comment" as a Fastening, then we should also allow reactions to 
such comments.
If we keep this restriction, I believe we'd need a generic standard for 
associating a message to another message, independent of it being a 
fastening or another kind of message (that can have fastenings).


Also one of the reasons why everyone agreed it would help to have the 
fastened elements as a sub-element of the  instead of directly 
in the  as in XEP-0367, is that if we don't do that, it isn't 
clear how to handle the correction of a message attaching case (a 
fastening of a fastening). Thus if we decide against allowing fastening 
of fastenings, the decision to use sub-element and  etc should 
be revisited...



I think  can contain multiple elements, and they’re treated 
independently
So if you apply-to two elements, and then replace apply-to one element, it 
would replace the relevant one, leaving the other intact. If you then replace 
apply-to both elements, it would replace both of them. This is under-(not at 
all) specified.
For  elements, it should be the target name/namespace, as if it was 
a child.


How are edits supposed to work then? Because for various (good) reasons 
they exist of multiple elements in the example. 
https://xmpp.org/extensions/xep-0422.html#example-4





What happens if a client accidentally does not add the `replace="true"`
(for example because the same element was send from two different
devices at about the same time)? Will a) there be two elements with the
same namespace and name then, b) the second silently ignored or c) the
first silently replaced? In case of a), how to decide which to replace
in the future? In case of b), how does the sending entity know if there
message was first or second? In case of c), why put `replace="true"` at
all if it is implicitly done anyways?


Is it sufficient to assert that protocols that want to attach multiple of the 
same namespace then can’t replace them, or do we need ids on the fastenings?
I guess if we have 😂 and
🤦🏻‍♂️ as individual fastenings, we need to be able to remove one and leave the 
other intact. OTOH, if a fastening contained one reaction for both 😂 and 🤦🏻‍♂️, 
it could be replaced with a reaction with just 🤦🏻‍♂️.


I don't quite understand what you want to say here. If each reaction is 
a separate fastening, how do you remove a single one if you only 
identify reactions by their qname.


Also it apparently is currently specified how to replace but not how to 
remove a fastening. Replacing with an empty variant may be technically 
possible, but that empty variant would then still be required to send 
out to clients (because we don't want servers to have to know what an 
empty variant looks like for each fastening).



I have assumed that if you’re doing full stanza encryption, and want archiving, 
your only choice as things stand is to have a complete download of your 
archive, and to do all collation locally. Having both smart archivability 
(without decryption) and encryption is a more or less unsolvable problem.

Does anyone have a workable way to go beyond ‘archive can’t be smart’ with E2E?


It depends on how "smart" your archive should be. Just attaching a 
message to another message does work perfectly fine with encrypted 
messages, but you can obviously not summarize them.


What does not work with encryption is to know the qname of the element. 
And I think it would be desirable to not leak that for the sake of 
smarter archiving (so that it cannot be seen if I react to a message or 
just mark it as read), so if we can come up with something that makes 
this not required, that would be great. It could even be that this can 
not work well with race conditions (= you have to have received the last 
encrypted reaction before you can send a new encrypted reaction and if 
you didn't, others will always have to fetch both just to find out that 
they only needed one after decrypting).


By the way, I can hardly imagine summarizing to work in a generic way. 
The only

Re: [Standards] A Meta-Discussion about the Standards Process

2019-12-12 Thread Kevin Smith
On 12 Dec 2019, at 09:22, Dave Cridland  wrote:
> 
> Many moons past, we had a clever idea.
> 
> What we thought was that we should change the XML namespace system we used - 
> previously, XEPs had been allocated a namespace when adopted, and they stuck 
> with this namespace throughout. Sometimes this broke things during 
> Experimental (indeed, if a XEP had to change in Draft, it'd break things 
> then, too). As a result, people were very shy of implementing anything in 
> Experimental, and this was a problem. Also a problem was that people who did 
> take the plunge on Experimental could end up affecting people who had waited 
> for Draft.
> 
> We initially changed it to a URN, "urn:xmpp:tmp:XYZ". This meant that we 
> could go wild during Experimental, but then change to "urn:xmpp:XYZ" on 
> Draft, stabilising the XEP. While this meant that people who waited for Draft 
> were fine, it still meant that using a "tmp" namespace was a wild west.
> 
> Our final change was that we introduced "versioned" namespaces. Essentially, 
> we stopped being so proud about the final namespace, and just used a prefix 
> to generate new namespaces for a XEP, changing the namespace any time an 
> incompatible change was introduced. We've got so used to this we often change 
> namespace when we shouldn't, frankly, but it's still better than the wild 
> west.
> 
> The effect this has had, though, goes beyond merely allowing safe 
> Experimentation during Experimental - instead, we've a number of XEPs that 
> Council has "allowed in", but have resulted in such widespread implementation 
> and deployment during Experimental that we cannot meaningfully change them 
> without heavy disruption. Meanwhile, the "rules", such as they are, for 
> adopting Experimental do not really reflect that people can safely implement 
> and deploy, from an interoperability point of view. This has lead to another 
> problem, wherein XEPs are adopted in a rough state, but stay rough and the 
> proponents of the XEP never bother changing the XEP. I could give concrete 
> examples of both cases, but I suspect that would only serve to debate whether 
> these are indeed correct - instead I'll leave people to make up their own 
> minds. In any case, the effect of this has been that Council are quite 
> reticent about adopting Experimental XEPs.
> 
> To address these problems, I see several possibilities. I'm putting these in 
> no particular order, because I'm personally conflicted on which, if any, are 
> the right solution, but I hope these can be an interesting start point.
> 
> 1) The "Florian Plan" - introduce a phase prior to Experimental, wherein a 
> XEP is semi-adopted but remains without a number. This somewhat happens 
> anyway, but it does so outside our IPR rules, so arguably this is a case of 
> formalizing the status quo to some degree. On the other hand, it abandons 
> anything Experimental about Experimental. I'm calling this the Florian Plan 
> just because Florian Schmaus has been a vocal proponent - but he's far from 
> the only one.
> 
> 2) The "Daniel Plan", which is to encourage Council to adopt pretty well 
> anything. If this sounds radical to you, it might help if I described it as 
> simply reimposing the de-jure standards process as described in XEP-0001. I 
> can certainly see the attraction, but I also think it ignores the status quo 
> and the problems alluded to above. Most recently suggested by Daniel Gultsch.
> 
> 3) Something Else. We could introduce an additional phase *with* a number, 
> for example, or we could decide the problems are outliers and do nothing.
> 
> While I don't have any particular opinion about what solution, if any, to 
> choose, I do think we have to address a couple of issues:
> 
> a) We have to define what our standards process actually is. I don't mind if 
> that means we change our standards process to match our documentation, or we 
> change the documentation to match the process, or a mixture.
> 
> b) We have to, in particular, codify what each transition means, and 
> therefore tighten up Council's veto-for-any-reason here. I don't mean that we 
> remove any judgement calls on the part of Council, but I do mean that we 
> should create a yardstick on what constitutes a "usual" versus "unusual" veto.
> 
> Finally, whatever we choose, we should make that choice by considering 
> carefully the outcome we desire. The namespace changes we made - which 
> contributed to the current state - were made in good faith, and we never 
> foresaw what effect they'd have over the years.
> 
> Thanks for reading this wall of text,

To my mind, given where we are, I don’t see a way out of this unless we have a 
stage of the process where we can accept under XSF IPR something that we know 
needs significant changes before it’s advancable. I believe that having such 
things published is good, but we don’t currently have such a space (we do on 
paper - Experimental - but as you say, reality is far removed from

[Standards] A Meta-Discussion about the Standards Process

2019-12-12 Thread Dave Cridland
Many moons past, we had a clever idea.

What we thought was that we should change the XML namespace system we used
- previously, XEPs had been allocated a namespace when adopted, and they
stuck with this namespace throughout. Sometimes this broke things during
Experimental (indeed, if a XEP had to change in Draft, it'd break things
then, too). As a result, people were very shy of implementing anything in
Experimental, and this was a problem. Also a problem was that people who
did take the plunge on Experimental could end up affecting people who had
waited for Draft.

We initially changed it to a URN, "urn:xmpp:tmp:XYZ". This meant that we
could go wild during Experimental, but then change to "urn:xmpp:XYZ" on
Draft, stabilising the XEP. While this meant that people who waited for
Draft were fine, it still meant that using a "tmp" namespace was a wild
west.

Our final change was that we introduced "versioned" namespaces.
Essentially, we stopped being so proud about the final namespace, and just
used a prefix to generate new namespaces for a XEP, changing the namespace
any time an incompatible change was introduced. We've got so used to this
we often change namespace when we shouldn't, frankly, but it's still better
than the wild west.

The effect this has had, though, goes beyond merely allowing safe
Experimentation during Experimental - instead, we've a number of XEPs that
Council has "allowed in", but have resulted in such widespread
implementation and deployment during Experimental that we cannot
meaningfully change them without heavy disruption. Meanwhile, the "rules",
such as they are, for adopting Experimental do not really reflect that
people can safely implement and deploy, from an interoperability point of
view. This has lead to another problem, wherein XEPs are adopted in a rough
state, but stay rough and the proponents of the XEP never bother changing
the XEP. I could give concrete examples of both cases, but I suspect that
would only serve to debate whether these are indeed correct - instead I'll
leave people to make up their own minds. In any case, the effect of this
has been that Council are quite reticent about adopting Experimental XEPs.

To address these problems, I see several possibilities. I'm putting these
in no particular order, because I'm personally conflicted on which, if any,
are the right solution, but I hope these can be an interesting start point.

1) The "Florian Plan" - introduce a phase prior to Experimental, wherein a
XEP is semi-adopted but remains without a number. This somewhat happens
anyway, but it does so outside our IPR rules, so arguably this is a case of
formalizing the status quo to some degree. On the other hand, it abandons
anything Experimental about Experimental. I'm calling this the Florian Plan
just because Florian Schmaus has been a vocal proponent - but he's far from
the only one.

2) The "Daniel Plan", which is to encourage Council to adopt pretty well
anything. If this sounds radical to you, it might help if I described it as
simply reimposing the de-jure standards process as described in XEP-0001. I
can certainly see the attraction, but I also think it ignores the status
quo and the problems alluded to above. Most recently suggested by Daniel
Gultsch.

3) Something Else. We could introduce an additional phase *with* a number,
for example, or we could decide the problems are outliers and do nothing.

While I don't have any particular opinion about what solution, if any, to
choose, I do think we have to address a couple of issues:

a) We have to define what our standards process actually is. I don't mind
if that means we change our standards process to match our documentation,
or we change the documentation to match the process, or a mixture.

b) We have to, in particular, codify what each transition means, and
therefore tighten up Council's veto-for-any-reason here. I don't mean that
we remove any judgement calls on the part of Council, but I do mean that we
should create a yardstick on what constitutes a "usual" versus "unusual"
veto.

Finally, whatever we choose, we should make that choice by considering
carefully the outcome we desire. The namespace changes we made - which
contributed to the current state - were made in good faith, and we never
foresaw what effect they'd have over the years.

Thanks for reading this wall of text,

Dave.
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___