XSF Discussion - 2019-11-03

  1. Link Mauve

    Why is SXE based on message instead of iq?

  2. Link Mauve

    Also, why is it entirely ad-hoc instead of reusing e.g. MUC or PubSub primitives?

  3. Zash

    Why not?

  4. Link Mauve

    Zash, because the semantics very much match iqs.

  5. pep.


  6. Link Mauve


  7. pep.


  8. Link Mauve

    Also, why is there both a Jingle initialisation and another initialisation based on messages afterward?

  9. larma

    Link Mauve, I guess so that you don't have to ack state changes? Not that I like it, but it could have been the motivation. And also doesn't apply to the initial state offer which really is exactly iq semantics.

  10. larma

    Because someone said: "You should use Jingle for that"? 😀

  11. Link Mauve

    Most likely; I’ll have to go and read the council minutes from back then.

  12. larma

    Seems it was only added in 0.0.8, but there is no history from before 2010 in git 🙁

  13. Link Mauve

    virtual void send( const std::string& message, const std::string& subject, const StanzaExtensionList& sel = StanzaExtensionList() );

  14. Link Mauve

    And what if I want to send a message without a body and a subject…?

  15. jonas’

    "", ""

  16. jonas’


  17. Link Mauve


  18. jonas’


  19. Link Mauve

    This is an API I probably can’t modify.

  20. jonas’


  21. Link Mauve

    I could add a new one I guess.

  22. Link Mauve

    Still not sure why I’m doing this in C++ and not in Rust.

  23. jonas’

    because C++ is more awesome than this newfangled mess of "systems programming" languages :)

  24. Link Mauve

    I’m not doing systems programming though, just adding collaborativeness to a text editor.

  25. Zash

    Link Mauve: Aaaah, CW those C++ lines plz!!!! NSFMybrain

  26. Link Mauve

    Sorry, XEP-0382 still isn’t implemented in my client.

  27. larma

    Link Mauve, how is your council candidacy going? Not sure which timezone we are using for the deadline, but it's something like today...

  28. Link Mauve

    Some timezone. :)

  29. Link Mauve

    I’ll start working on it once I give up on this C++.

  30. larma

    You can not become a candidate after the election 😉

  31. Link Mauve

    I know that!

  32. Ge0rG

    Link Mauve: just give up on it. I never thought I'd say that, but: RIIR!

  33. Zash


  34. Zash


  35. jonas’

    we already have >5 candidates. I am amazed

  36. jonas’

    and two new ones at that

  37. Link Mauve

    Ge0rG, I wonder if Swiften might not be better than gloox.

  38. Link Mauve

    But I’ll definitely have to fix the SXE spec too.

  39. Zash

    Link Mauve: Existing thing already using gloox?

  40. Link Mauve

    No, it isn’t collaborative yet.

  41. jonas’

    larma, from your application > That said, my criteria for accepting a XEP as experimental would be: […]

  42. jonas’

    I think this misses an important part (which is even mentioned in XEP-0001 IIRC): "It should not duplicate existing protocols."

  43. jonas’

    although that might be implicit in "It should solve a problem."

  44. larma

    Yeah, I think it's implicit in there. A duplicate doesn't solve any problems

  45. jonas’

    fair enough

  46. jonas’

    in any case, thanks for running

  47. Zash

    jonas’: How do you replace / improve on existing things without duplication?

  48. Zash

    Does XEP-0313 not duplicate some subset of XEP-0136?

  49. pep.

    Ge0rG, https://i.imgur.com/10k62WA.png RIIR!

  50. pep.

    larma, ^

  51. Zash

    RIIR https://www.r-project.org/

  52. pep.


  53. larma

    pep., I will consider it for version 2.0 😉

  54. pep.


  55. jonas’

    larma, re your council election again and since you have an interesting view about personal opinions: One thing which has repeatedly come up is the debate between amending existing standards vs. creating new documents to add features (specifically around XEP-0045 and XEP-0060). Do you think this is a matter of opinion or "taste"? If not, what is the objectively correct way? If it is, how would voting on this question work with your goal to avoid personal preferences?

  56. pep.

    jonas’, tbh, I don't care which, but I want things to move

  57. pep.

    I think it's similar for larma(?)

  58. larma

    jonas’, I just put something related to that topic on my candidacy page. 1. I think both 45 and 60 should probably be Final already. Most of the changes actually applied to them could be done to Final XEPs as well. 2. Many of the changes proposed to 45 and 60 could also be standalone XEPs. 3. Even if things are not properly defined, it can be later clarified that they are not part of that specification and (even opposing) proposals can then be made in new XEPs (for example IQ routing in 45).

  59. pep.

    To me it's exactly the same if somebody modifies a XEP or recreates a new XEP amending the first one. it's just the form. We as a group could settle on sth if necessary

  60. jonas’

    larma, thanks

  61. larma

    pep., yes and no: the rules how things are advanced to Draft should also apply to significant changes and that won't be possible without a new XEP.

  62. jonas’

    larma, I think you make a very good point in that

  63. pep.

    larma, but in the end, you add a new disco feature anyway

  64. jonas’

    and at that point it’s questionable whether namespace bumps should be needed at all anymore... but that’s a bigger topic, too big for me right now (-> afk)

  65. larma

    I would like to get rid of "namespace bumps" and introduce "new namespaces" in new XEPs (which might just look like a namespace bump, i.e. can have only a version number added/increased)

  66. pep.

    "which might just look like a namespace bump", it's exactly the same to me indeed. and I'm fine with both, as long as things move

  67. Zash


  68. pep.


  69. Zash

    Namespaced mini-extension protocols without breaking everything using the previous version/namespace?

  70. pep.

    "without breaking everything using the previous version/namespace", we're not magicians

  71. Zash

    Something something like semantic versioning? You can to some extent add new stuff without replacing the namespace.

  72. pep.

    You mean "clarify"

  73. Zash


  74. Zash

    I mean add new features

  75. Zash

    Something supporting the previous version won't know about those features, so no problem.

  76. pep.

    Yeah ok that's fine. I'm mostly talking about breaking stuff

  77. Zash

    I'm confused

  78. larma

    Namespace bumps should in general be barely needed IMO. Most of it can be done using disco and just additional elements

  79. larma

    but of course it's so much easier to just break things and do a namespace bump

  80. Zash


  81. larma

    Well it's easier for the XEP author, not easier for the developers 😉

  82. flow

    I don't think that you can make a specific statement, it really depends on the specific case.

  83. flow

    err "generic statement"

  84. larma


  85. larma

    I am also not against new namespaces, I just feel they belong in a new XEP

  86. flow

    A fresh experimental XEP only a few months old where are developers, and that includes implementing developers, are in the same groupchat is probably easier to namespace bump than a year old xep in draft state

  87. larma

    If it's easy to namespace bump, it's also easy to just not namespace bump. That's exactly the point

  88. flow

    so what's your stance on jingle ft then? should be collect improvements and bump it?

  89. larma

    flow, not sure what improvements are you talking about?

  90. larma

    IMO Jingle FT should be at least Draft already, so if there are significant changes required they should go in a new XEP

  91. flow

    I wouldn't be suprised to find some if I am going to implement it.

  92. Zash

    Maybe what we should do is bump the namespace of Experimental XEPs even more often, so everyone either gets used to it or gets together and makes it Draft?

  93. flow

    larma, so what is the advantage if having a new XEP versus a major overhaul of the existing? (note that i have no strong opinion in that direction, just wanting to hear the rationale behind it)

  94. larma

    Zash, would actually be fine as well. Point is: Experimental XEPs should be deployed in wild, so any changes (if they bump namespace or not) shouldn't have any influence on any running systems.

  95. flow

    I'm not opposed to having Jingle-FT-2, but it doesn't feel like the question if we should new-xep or bump-the-existing-xep is something that tackles our most important issues

  96. rion

    Jingle-ft is fine as for me. Maybe separate XEPs may describe various meta information for it. Like it was done with thumbnails. Jingle-s5b needs fixes

  97. larma

    flow, If it's a new protocol it should get a new XEP number so we have a proper name/identifier for the protocol.

  98. Zash

    Jingle FT Base and a File Metadata XEP?

  99. larma

    "My server supports archives." "Which version?" "XEP-0313" isn't really helpful

  100. Zash

    larma, "XEP-0313 v0.6" tho?

  101. Zash

    == `urn:xmpp:mam:2`

  102. larma

    So we don't define protocols in XEPs anymore but in XEP versions?

  103. larma

    and a different version could be a completely different protocol?

  104. Zash

    That's how it is now

  105. larma

    Only for very few XEPs, and I consider this an issue.

  106. Ge0rG

    So we should define protocols by namespaces instead?

  107. Zash

    Don't we already, in a way?

  108. Ge0rG

    On the wire, but not in the documentation.

  109. flow

    larma> flow, not sure what improvements are you talking about? That is actually a nice example for one of the major issues we have. We are incredibly bad at collecting and organizing protocol feedback, leave allone incooperating it into a new protocol revision

  110. Ge0rG

    Speaking of which, do I need to rewrite CS-2020 now in terms of feature namespaces? Which version of MAM should it require? From clients? From servers?

  111. Zash

    This seems like pain that comes naturally from having protocols under development be implemented and deployed in the wild.

  112. larma

    We don't always change namespace for protocol changes of Experimental XEPs

  113. flow

    Ge0rG, "From Client? From servers"? What is the issue if the compliance suites that state xep313 (and that implies the current state of xep313)?

  114. rion

    Ah yes. Jingle-ft needs some clarification how to properly finish file transfer. For example when we have multiple files in one session. Or when final checksum isn't sent

  115. larma

    Probably nobody would care to bump the references namespace if 372 is changes...

  116. flow

    larma, I think there is a sensible policy that protocol changes that break interoperability require a namespace bump in place

  117. Ge0rG

    larma: normally we do bump, except under very closely defined conditions.

  118. Zash

    > that break interoperability This!

  119. Ge0rG

    flow: that it's not clear at which moment of time that version is pinned. On January 1st?

  120. flow

    Ge0rG, who said something about pinning the version? :)

  121. larma

    Ge0rG, I had the feeling we bump if it would break interoperability of live deployments. As per XEP-0001 there shouldn't be live deployments of Experimental XEPs so there shouldn't be namespace bumps. Draft XEPs should and Final XEPs must not break interoperability, so no chance of a namespace bump there.

  122. Ge0rG

    We _normally_ don't bump if it doesn't affect interoperability, but this is not what larma was asking about?

  123. Ge0rG

    flow: you implied that. Otherwise, what happens if a namespace is bumped during the CS year?

  124. flow

    Ge0rG, larma wrote about "protocol changes". we obviously don't bump for every protocol change

  125. larma

    The problem is that we fail to move XEPs to Draft fast enough so that everybody started considering Experimental or even Deferred XEPs as if they were Draft

  126. Zash

    larma, isn't that the root problem? Experimental deployed in the wild?

  127. Zash

    LC all the XEPs!

  128. flow

    Ge0rG, then the compliance suite refers to the current state of the xep

  129. Ge0rG

    flow: so you say the CS defines a moving target?

  130. Zash

    Should the compliance suite even be allowed to reference Experimental XEPs outside the "future stuff" section?

  131. flow

    Zash, or, maybe even better, make XEPs IETF style immutable

  132. Ge0rG

    Zash: should we have a process in place that moves Experimental XEPs forward when they are needed?

  133. Zash

    flow, I kinda like that, but not enough to rewrite XEP-0001 for it

  134. flow

    Ge0rG, XEPs are, to some degree, always a moving target

  135. larma

    Ge0rG, IMO CS shouldn't be able to point to Experimental XEPs so that it cannot point to a moving target

  136. larma

    *highly moving target

  137. flow

    And I don't see the point in pinning XEPs to particular namespace in the compliance suites

  138. Ge0rG

    larma: that would stall XEP progress even more

  139. flow

    What Ge0rG said

  140. larma


  141. flow

    I have the feeling because XEPs have a hard time transitioning from 'experimental' to 'draft'

  142. Ge0rG

    larma: developers have hardly the time to implement one version of the most relevant XEPs. How are they supposed to implement multiple versions?

  143. larma

    Why should they be required to implement multiple versions just because we move experimental to draft?

  144. Ge0rG

    Can we please focus on realistic ideas, given the overall xsf time budget?

  145. Zash

    Plz no

  146. flow

    Ge0rG, I too, fail to see where the "multiple versions" now comes from

  147. Zash

    flow, ns bump transitions?

  148. flow

    Zash, yes, but why do developers have to implement multiple namespaces if the compliance suites are not allowed to point to experimental XEPs?

  149. Ge0rG

    If we have one version in the CS and then the XEP is bumped, nobody will implement the new one.

  150. Ge0rG

    Speaking of time budget, I'm out.

  151. larma

    Ge0rG, You mean if there is one version in CS and there is a new Experimental XEP replacing it, it's not going to be widely implemented? Yes that's the whole idea of Experimental XEPs. As soon as it becomes Draft, the (next) CS can point to the new version. No need to implement two versions at the same time.

  152. Ge0rG

    larma: and then next year everybody already has implemented the changes, disables the old version and enables the new one at midnight, January 1st?😉

  153. Zash

    Flag days?

  154. larma

    Ge0rG, well transitions are certainly a problem when breaking backwards compatibility, but that isn't any difference to the current situation. I do agree we should try to not namespace bump as long as possible, a new XEP doesn't imply a new namespace as it can also build on top of an existing XEP.

  155. Ge0rG

    larma: just because you call it "new XEP" it doesn't automatically give people the time to implement it and maintain it aside to the old one

  156. Ge0rG

    Reality is, some developers will keep multiple versions in parallel, sometimes in different modules with different feature sets. Other will just bump in the least uncomfortable version release

  157. Ge0rG

    That would break CS compatibility with pinned namespaces

  158. larma

    I don't see the point you want to make here

  159. pep.

    “Zash> isn't that the root problem? Experimental deployed in the wild?” not put like this but yes. The problem is that we live stuff lingering as experimental. So yes, LC more things

  160. Ge0rG

    People wouldn't adopt new versions, meaning that the CS won't be updated in a meaningful way

  161. pep.

    “Zash> I kinda like that, but not enough to rewrite XEP-0001 for it“, what's wrong about rewriting 0001?

  162. Zash

    pep., thanks for volonteering

  163. pep.

    People are afraid of change and that's the one thing I want to stop, it's quite annoying

  164. pep.

    Zash, I'm sure I'm not alone

  165. pep.

    And can we stop this "blame game", or pushing stuff onto each other game

  166. pep.

    I'm sure we can manage to do stuff collectively and not just as one person at a time

  167. pep.

    Yes we're all volonteers, so what

  168. Zash

    Welcome to volonteer based organizations.

  169. Zash

    Getting volonteers to do things is Hard.

  170. pep.

    I believe we can do better than pushing stuff onto each other because

  171. larma

    Ge0rG, The CS isn't supposed to be "This is what everyone else implements" but "This is what everyone should implement". Thus you can update the CS to the new version even without everyone implementing if you think it should be. You can also say something "you are still CS compliant this year if you implement the old standard, but next year we will probably require the new one". However I wouldn't call a client or server Advanced CS2020 compliant that only implements mam:tmp, it should probably be at least mam:1

  172. larma

    "This is what everyone should implement" -> "This is what Council suggests everyone should implement"

  173. larma

    Zash, "Getting volonteers to do things is Hard." especially if they ask to help and receive the answer "it's none of your business"

  174. larma

    (not meaning you)

  175. Zash

    Is that something someone said here?

  176. larma

    It did happen in the past yes.

  177. Zash

    pep., FWIW, nothing wrong with rewriting XEP 0001, just not a current priority for me.

  178. pep.

    Zash, what I meant by that is, if we have to rewrite 0001, then so be it. I won't be afraid of it

  179. pep.

    I'm annoyed by the "thou shalt not change XEP-xxxx" and all the fearmongering around changing things

  180. pep.

    We cannot go ahead without changing things. XMPP would be dead already if it were not possible to do so. (Some still say it still is, but that's an opinion I'm happy to discard. Lots of changes happened in the previous years and change will come again)

  181. Ge0rG

    pep.: people even dared to change 0045

  182. Zash

    pep., just do it!

  183. Kev

    Somewhere in the previous 300 messages someone mentioned me. If it's important, drop me a mail please.

  184. Shell

    XMPP honestly feels like it's been reviving - especially with omemo being supported by more things now.

  185. pep.

    I wouldn't especially name OMEMO, but ok :)

  186. pep.

    That definitely played in the acceptance by users

  187. Shell

    it's what got my circle using it instead of things like Signal, at least - encrypted group chats combined with being able to pick a client according to individual preferences is a big deal.

  188. pep.

    I'd like to avoid security discussions right now when we're talking about process

  189. Shell


  190. pep.

    (Not that I want to prevent you from talking about this, just that this topic is a minefield, and we're already discussing another)

  191. pep.

    well, we were..

  192. Zash

    pep., so, where's your board|council application? 🙂

  193. pep.

    I'm procrastinating it. Give me a sec..

  194. Zash

    Wait really? XEP-0081: Jabber MIME Type https://xmpp.org/extensions/xep-0081.xml

  195. Zash

    And https://tools.ietf.org/html/rfc3923#section-10

  196. Zash

    I was looking for this very thing the other day

  197. Zash

    haha what

  198. Zash


  199. Ge0rG

    This is shameful

  200. jonas’


  201. jonas’

    there is the precedent I needed!!

  202. flow

    hmm the prefix in xep104 seems unnecessary

  203. flow

    just like the UTF-8 requirement in rfc3923 § 10

  204. flow

    but: yeah, using prefixes /o/ \o\ /o/

  205. Zash

    Oh no

  206. flow

    although I'd rather use them only when there is no alternative

  207. jonas’

    they can be used to reduce traffic, but (in most cases) not in an RFC-compliant way.

  208. flow

    RFC-compliant way?

  209. Zash

    RFC says something about avoiding prefixes?

  210. Zash

    https://xmpp.org/rfcs/rfc6120.html#streams-ns-declarations sounds like a relevant heading

  211. Zash

    > It is conventional in the XMPP community for implementations to not generate namespace prefixes for elements that are qualified by extended namespaces https://xmpp.org/rfcs/rfc6120.html#stanzas-extended

  212. Zash

    jonas’: so, we-dont-do-that-here.jpg

  213. Zash

    > Routing entities (typically servers) SHOULD try to maintain prefixes when serializing XML stanzas for processing, but receiving entities MUST NOT depend on the prefix strings to have any particular value E.g. Prosody will likely spit out such things as ns1:foo, ns2:bar etc

  214. flow

    Zash, does any of this talk about attributes?

  215. Zash

    Not directly from what I can see

  216. Zash

    Why wouldn't that be the same as for elements?

  217. pep.

    here we go

  218. pep.

    Link Mauve, your application.