XSF Discussion - 2018-05-22


  1. pep.

    gdpr meeting in 10?

  2. pep.

    jonasw, winfried, Ge0rG

  3. Ge0rG

    pep.: I thought 1230?

  4. Ge0rG

    But I can do either

  5. pep.

    Ah fail

  6. pep.

    10:30 UTC indeed

  7. jonasw

    sudo -u pep. sudo apt install tzdata 😸

  8. jonasw

    a.k.a. timezones are hard

  9. pep.

    `useradd: invalid user name 'pep.'`

  10. Ge0rG

    RCE over MUC=

  11. jonasw

    Ge0rG: only in signal :>

  12. jonasw

    GDPR in 9, Ge0rG, winfried, pep.

  13. pep.

    !

  14. Ge0rG

    I have prepared temporary ToS and Privacy Policies for yax.im, which I would like to make available as a template for the XSF: https://yaxim.org/yax.im/tos/ and https://yaxim.org/yax.im/privacy/

  15. winfried

    ;-)

  16. jonasw

    is a recital sufficient? or does it need an actual paragraph which instantiates that recital?

  17. Ge0rG

    a what?

  18. winfried bangs the gavel and welcomes pep. jonasw and Ge0rG to the GDPR meeting

  19. pep.

    !

  20. jonasw

    Ge0rG, your opt-out wording is confusing: > You can opt out from this by unsubscribing these contacts from your contact list. ("what does unsubscribing from a contact list mean?") I’d suggest: > By allowing a user to subscribe (typically this is done when adding to the contact list), you opt into this transfer.

  21. jonasw waves at winfried

  22. winfried

    jonasw: yes, wording it as an opt-in is better

  23. winfried

    Agenda for to?

  24. winfried

    s/to/today/

  25. pep.

    yeah, opt-in might be better

  26. pep.

    What do we have on the agenda today? The template?

  27. pep.

    Not much progress on the EULA XEP. I gathered the requirements here, https://cryptpad.fr/code/#/2/code/edit/IiUC5h-fzN14FAeSdcBoAQgc/ but I haven't started the protocol bits

  28. winfried

    I feel like taking a look at the bigger picture: where are we, what is the course of action (looking at the MAM discussion in standards@) what are the todo's and how to do them

  29. jonasw

    I’d also word the push service paragraph differently: now: > If you enable push notifications (e.g. on a mobile client), the data that is required to perform the push notification (typically a device ID and message meta data) is transmitted to the respective push service provider (Art. 6.1b, Art. 49.1b). my suggestion: > If you enable push notifications (e.g. on a mobile client), the message is transferred (Art. 6.1b, Art. 49.1b) to a server designated by the client application. The processing afterwards is subject to the data protection policies of the applications server and the respective push service provider.

  30. jonasw

    yeah, sorry about the EULA XEP, I was more busy than I anticipated

  31. pep.

    jonasw, no worries, I didn't have much time either

  32. jonasw

    re push paragraph: because technically, you’re transferring the complete message to the applications service and then it’s already out of your control, Ge0rG.

  33. winfried

    neither did I ;-)

  34. jonasw

    if my memory of the push protocol is right

  35. winfried

    jonasw: daniel posted a nice link to the implementation he uses. It reveals minimal data, the push service even doesn't know what application it is pushing to!

  36. pep.

    winfried, of course it does? How would that work otherwise

  37. jonasw

    winfried, true, but as an XMPP server provider, you can’t be sure about which app server software is used.

  38. winfried

    jonasw: correct

  39. jonasw

    and you transfer at teh very least message body and timestamp to the app server, at which point it’s out of your control

  40. pep.

    jonasw, "app server"?

  41. pep.

    the push component?

  42. jonasw

    pep., the server provided by the client (e.g. Conversations) which transforms the XMPP Pushes (as specified in XEP-0357) to whatever is needed on the provider (google) side.

  43. pep.

    Right

  44. jonasw

    pep., cf. https://xmpp.org/extensions/xep-0357.html#sect-idm139090519180208

  45. jonasw

    "Push Service" and "User Agent" are owned by e.g. google, but the App Server is run by the client application authors, and not by the XMPP server provider

  46. Ge0rG

    jonasw: I'm not pushing actual message content, just placeholders.

  47. jonasw

    Ge0rG, is that a modification of mod_cloud_push?

  48. Ge0rG

    jonasw: no, default behavior with a custom setting.

  49. jonasw

    in any case, the statement is incorrect insofar that it suggests that (only) google/apple is the nexthop, but there’s the app server inbetween

  50. Ge0rG

    `push_notification_important_body = "Important message";`

  51. Holger

    jonasw: The protocol allows for including the sender address and message contents with the push notification, but that's optional and neither Prosody nor ejabberd will do that by default.

  52. Holger

    jonasw: The notification is not a message stanza but a PubSub-like IQ.

  53. Ge0rG

    jonasw: updated both places, thanks. Please have a look at the new push wording

  54. Ge0rG

    Holger: we are not talking about stanzas but about user content.

  55. Ge0rG

    Holger: so "message" in this context is rather the <body> element.

  56. jonasw

    s/opt in into/opt into/?

  57. Ge0rG

    isn't the verb "opt in"?

  58. Ge0rG

    maybe "opt in to"?

  59. winfried

    Ge0rG: I would say so

  60. Ge0rG

    !summon native speaker

  61. jonasw

    okay, nits though

  62. jonasw

    otherwise I think this looks good

  63. jonasw

    but, IANAL

  64. pep.

    Ge0rG, can I link to your yax.im URLs or should we move that to the wiki

  65. pep.

    in the minutes

  66. Ge0rG

    pep.: They are WIP right now, so I'd rather not have them linked "publically"

  67. jonasw

    copying would be fine though?

  68. pep.

    k, so maybe we can copy that to the wiki

  69. Ge0rG

    I'd like to establish some process where we have a master copy and the yax.im ToS are a fork of that.

  70. winfried

    Ge0rG: git!

  71. Ge0rG

    so you can fork it yourself and profit from later updates.

  72. jonasw

    maybe a repository under xsf?

  73. jonasw

    or xmpp?

  74. Ge0rG

    markdown + C preprocessor?

  75. Ge0rG

    jonasw: moving a git is the easiest part.

  76. Ge0rG

    the hard part is the split of template and specific server content.

  77. jonasw

    hmm

  78. pep.

    Right

  79. jonasw

    jinja is a neat templating language

  80. Ge0rG

    Or maybe some kind of ToS generator?

  81. jonasw

    would be trivial to build a generator on top of that

  82. Ge0rG

    Jinja is Beautiful. {% extends "layout.html" %} {% block body %} <ul> {% for user in users %} <li><a href="{{ user.url }}">{{ user.username }}</a></li> {% endfor ...

  83. Ge0rG

    They lost me at {%

  84. jonasw

    they copied that from erb I think

  85. pep.

    I don't think we should focus on html

  86. Ge0rG

    Markdown is an ideal language for the content, minus the templating.

  87. jonasw

    the advantage I see in jinja that its inheritance and block stuff would allow for easy replacement of specific blocks.

  88. jonasw

    and extension

  89. jonasw

    that would be cumbersome with C preprocessor

  90. Ge0rG

    We could also `sed -e s/ZZZservernameZZZ/$SERVERNAME/g`

  91. jonasw

    those are technicalities

  92. Ge0rG

    or use bash here-documents.

  93. jonasw

    let’s focus on what winfried suggested

  94. Ge0rG

    I don't care. I just don't want to learn a new templating engine language.

  95. Ge0rG

    git?

  96. jonasw

    10:34:00 winfried> I feel like taking a look at the bigger picture: where are we, what

  97. jonasw

    Ge0rG, ^

  98. Ge0rG

    :P

  99. Ge0rG

    Right.

  100. pep.

    In the meantime I don't have anything to show for this part of the minutes :x

  101. pep.

    But we can sort this out later

  102. winfried

    hey, I am participating again :-P

  103. winfried

    Big picture: we have some things we want to change on protocol level

  104. winfried

    EULA-XEP

  105. winfried

    Deletion

  106. winfried

    Transfer of data

  107. winfried

    (any other?)

  108. winfried

    ah, defaults for MAM

  109. Ge0rG

    retention times for MAM and HTTP uploads.

  110. Ge0rG

    Current implementations lack auto-removal of "expired" entries

  111. pep.

    s/HTTP uploads/server-side file storage/

  112. winfried

    There was some discussion on the standards@ list about incorporating local laws in standards

  113. winfried

    what is our opinion in that?

  114. pep.

    Allowing deletion via the protocol has nothing to do with local laws right

  115. winfried

    I guess some topics are generic and not specifically for one jurisdiction

  116. Ge0rG

    winfried: the protocol purist in me says we should not encode local laws into our protocols.

  117. Ge0rG

    OTOH, the pragmatist requests an easy way for server operators to comply with local laws.

  118. pep.

    Ge0rG, I think I agree with that, but deletion itself is just a technicality and not a law

  119. pep.

    We might want to have another informational "GDPR compliance" XEP

  120. winfried

    Ge0rG: and what about an optional extension that describes an action needed in a certain jurisdiction...?

  121. Ge0rG

    winfried: I'd go with Business Rules paragraphs in relevant XEPs

  122. Ge0rG

    while true ; do killall -STOP lua5.1 sqlite3 prosody.sqlite 'DELETE FROM prosodyarchive WHERE host="yax.im" AND store="archive2" AND "when" < '$(($(date +%s)-14*24*3600))' LIMIT 5000;' killall -CONT lua5.1 sleep 2 done

  123. Ge0rG

    This is how I'm doing GDPR compliance right now.

  124. winfried

    Ge0rG: :-D

  125. Ge0rG

    And this is not only fugly, it's also killing my availability / latency.

  126. jonasw

    sleep 2?!

  127. winfried

    I can imagine you want something more... sophisticated

  128. Ge0rG

    jonasw: yes. I can't just delete *all* messages at once because there are too many.

  129. Ge0rG

    deleting 5k takes <10s, so it's just barely bearable.

  130. pep.

    How many users do you have again?

  131. pep.

    Active users

  132. Ge0rG

    ~1k

  133. Ge0rG

    But I have some active bots, it seems. And for reasons beyond my understanding, those bots are using MAM

  134. winfried

    So do we agree on: 1) patching XEPs / adding XEPs when generic functionality is needed for compliance 2) adding busisness rule paragraphs to relevant XEPs to explain about local laws?

  135. pep.

    Ok, so back to XEPs,

  136. winfried

    3) informational GDPR XEP?

  137. pep.

    if 3), is 2) required

  138. pep.

    We definitely need 1) in any case

  139. pep.

    And I don't think anybody will argue this

  140. winfried

    jonasw: ?

  141. Ge0rG

    what do we nee 1 for?

  142. Ge0rG

    patching XEPs is #2, isn't it?

  143. winfried

    New XEP: eula XEP, http storage management

  144. jonasw

    Ge0rG, (1) is adding functionality, (2) is adding business rules

  145. jonasw

    those are differences, and (2) can be moved to a generic GDPR XEP, while (1) can’t

  146. jonasw

    (well, could, but it wouldn’t make sense)

  147. pep.

    jonasw, 1 could be added to an addon XEP, but :/

  148. pep.

    Not informal

  149. pep.

    **informational

  150. Dave Cridland

    I'd rather not plaster every XEP with detailed GDPR implementation stuff. Rather, at most a pointer to another XEP. Otherwise the conflict between different jurisdictions is going to get very complicated, especially with normative language.

  151. Ge0rG

    Re EULA XEP: do we need explicit consent?

  152. winfried

    pep.: think we need to decide on a case to case base if an add on is better of patching the xep

  153. Ge0rG

    If we need explicit consent, the EULA-on-IBR would be one possible implementation, with a web form based registration another obvious one.

  154. pep.

    Dave Cridland, 1. above is not "GDPR implementation stuff", right

  155. pep.

    2 and 3 are, and I'm also leaning towards 3

  156. pep.

    rather than 2

  157. winfried

    I guess Dave Cridland meant the choice between 2 and 3

  158. Ge0rG

    Dave Cridland: I was thinking along the lines of "A server implementation must provide a way to delete user data by means of X"

  159. Dave Cridland

    Ge0rG, Yes, but that's not true everywhere. Instead you need a feature to allow users to request deletion, but I'd rather a server in a jurisdiction that mandates retention isn't offering me that feature.

  160. pep.

    We will need to tell developers though where to find that XEP

  161. pep.

    XEP discovery is another common issue

  162. winfried

    pep.: "Privacy considerations: this XEP may have GDPR consequences, please see XEP-GDPR for more information"

  163. pep.

    winfried, k

  164. Ge0rG

    I can't see how we can create an (informational or other) GDPR XEP until May 25h.

  165. jonasw

    I agree

  166. jonasw

    I wanted to get EULA done by today, but schedules

  167. winfried

    Ge0rG: Nope, I have to finish a DPIA before then :-D

  168. Ge0rG

    Dave Cridland: I still think that a mention under Business Rules is required. Even if it says "Depending on local laws, you MUST or MUST NOT provide a way ..."

  169. Dave Cridland

    Ge0rG, If a XEP has the phrase "MUST or MUST NOT" I will have to nuke it from orbit.

  170. pep.

    What winfried said above

  171. pep.

    "Privacy considerations: this XEP may have GDPR consequences, please see XEP-GDPR for more information"

  172. Dave Cridland

    Ge0rG, Also, "MUST" etc are related to interop, not legal requirements. I suspect that we (the XSF) may need to be careful about appearing to offer legal advice, too.

  173. winfried

    Ge0rG: can you explain why you think it is required?

  174. Dave Cridland

    pep., That phrasing works for me.

  175. Ge0rG

    Dave Cridland: why? It's only self-contradicting if it's "MUST *and* MUST NOT"

  176. Dave Cridland

    Ge0rG, Because it's meaningless.

  177. Ge0rG

    "this XEP may have global warming consequences, or may contain traces of nuts"

  178. pep.

    What doesn't have global warming consequences..

  179. Seve/SouL

    And doesn't contain traces of nuts

  180. Seve/SouL

    0:D

  181. Ge0rG

    Dave Cridland: but I agree that RFC 2119 language SHOULD NOT be applied to legal requirements.

  182. winfried

    pep.: the chilling effect (couldn't resist)

  183. jonasw

    :>

  184. Ge0rG

    winfried: LOL

  185. pep.

    :)

  186. pep.

    Ge0rG, so I read you'd prefer to have GDPR details *in* the XEP?

  187. pep.

    And not an informational XEP

  188. Ge0rG

    pep.: I don't know. Whatever will make server implementors create compliant implementations works for me

  189. jonasw

    I think general "privacy considerations" without mentioning legislation would be a good thing™

  190. pep.

    I'd see winfried's phrasing above, + informational GDPR xep

  191. Dave Cridland

    pep., Really don't want to do that. The problem there is that you'd also need to put in Sarbanes-Oxley, for example.

  192. jonasw

    it would help to create awareness, just like Security Considerations do

  193. jonasw

    and I think they have a place in the XEP

  194. pep.

    Dave Cridland, yes I don't want either

  195. Dave Cridland

    pep., That is, put GDPR sections in every XEP.

  196. pep.

    hmm

  197. Dave Cridland

    pep., Ugh. I'm being really unclear. I do not want GDPR bits in every XEP.

  198. pep.

    what GDPR bits

  199. pep.

    You'd be ok with just saying "seealso GDPR XEP"?

  200. Dave Cridland

    pep., Yes.

  201. jonasw

    I have something like "The protocol specified herein allows users to store data on storage controlled by the server, so deletion and retention times need to be considered."

  202. pep.

    Dave Cridland, ok then we agree

  203. jonasw

    I have something like "The protocol specified herein allows users to store data on storage controlled by the server, so deletion and retention times need to be considered." in mind.

  204. winfried

    Dave Cridland: if we create an informational XEP about Sarbanes-Oxley, I wouldn't mind other XEPs pointing to it

  205. Ge0rG

    Maybe the issues is if we actually need *every* *other* XEP to point to the new one?

  206. Dave Cridland

    It might actually be useful to note what data is retained by each XEP, since that has very wide applicability and use.

  207. jonasw

    Dave Cridland, that’s what I had in mind for "Privacy Considerations" sections in XEPs

  208. jonasw

    and a separate GDPR document could point out what to do with specific data.

  209. Dave Cridland

    jonasw, Right, and I think it also forms very useful input to consent, privacy policy, etc stuff on a more generic level.

  210. jonasw

    so in general, PCs (Privacy Considerations) would list: - what data is stored - what data is exposed to other servers and users - what is needed for data exposure (know the JID / needs to be subscribed / ...)

  211. pep.

    jonasw, that still seems GDPR-specific. Some other law might define "private data" entirely differently

  212. winfried

    Like that idea, but it will be quite a bit of work to update all XEPs

  213. jonasw

    pep., doesn’t matter, I’d consider all user data in that section.

  214. winfried

    jonasw: +1

  215. Dave Cridland

    jonasw, +1 from me too, for whatever it's worth.

  216. pep.

    jonasw, k

  217. winfried

    and should we also add a paragraph like that to the RFCs?

  218. jonasw

    I’ll re-word my '363 PR to conform with that.

  219. winfried

    jonasw: great!

  220. pep.

    winfried, mined territory I assume :p

  221. Ge0rG

    Having a "Privacy Considerations" section with that data in all XEPs would be great. We could just link those from the server ToS

  222. winfried

    Ge0rG: with autodiscovery based on service discovery!

  223. jonasw

    can we plan for enxt?

  224. pep.

    Can we define quickly what would go into that informational XEP

  225. pep.

    So we can start working on it quickly

  226. pep.

    jonasw, +whatever should work for me. Friday with the small delay as usual

  227. winfried

    pep.: - steps for compliance - red flags

  228. jonasw

    I can only make friday I think

  229. jonasw

    so friday 1230 CEST or 1330 CEST would be good for me

  230. winfried

    wfm

  231. pep.

    1230 CEST worksforme

  232. pep.

    1330 as well

  233. winfried

    1330 not for me

  234. jonasw

    1230 CEST on Friday, 25th it is then, Ge0rG?

  235. Ge0rG

    either is good

  236. Dave Cridland

    If someone writes the skeleton and an abstract for this GDPR XEP today, we can give it a number by tomorrow.

  237. winfried

    D-Day!

  238. Dave Cridland

    ... which might help "advertise" what you guys are doing.

  239. Ge0rG

    next number is 403, right? ;)

  240. Dave Cridland

    (It'd also give us something to blog about as the XSF)

  241. jonasw

    Ge0rG, no, next is 409 I think

  242. pep.

    Ge0rG, no that's MIX?

  243. Ge0rG

    Oh, wow.

  244. winfried

    Dave Cridland: good plan, I don't have time :-(

  245. jonasw

    I’ll try to dedicate my afternoon to the EULA XEP

  246. Ge0rG

    I'm behind on that thread.

  247. jonasw

    Ge0rG, cf. https://github.com/xsf/xeps/pulls

  248. Dave Cridland

    Ge0rG, I think MIX wants that, but I'd love to see the Editor creatively rearrange...

  249. jonasw

    409 Conflict is also good ;-)

  250. Ge0rG

    I would have skipped 403 as well. But meh.

  251. jonasw

    Ge0rG, 404 isn’t skipped

  252. pep.

    yeah 409 is also fine :P

  253. jonasw

    it’s for MIX ANON

  254. jonasw

    (the order in the PRs is just weird)

  255. Ge0rG

    jonasw: NOOO!1!!

  256. jonasw

    gotta go now

  257. Dave Cridland

    I wondered if MIX Anon was intentionally at 404.

  258. jonasw

    Dave Cridland, it is

  259. Dave Cridland

    But yeah, I think we should skip it for amusement's sake.

  260. jonasw

    I don’t feel like renumbering them ;-)

  261. jonasw

    MIX anon is a good use for XEP-0404 imo :)

  262. Ge0rG

    I disagree. But what do I know.

  263. winfried

    Should I close the GDPR meeting? ;-)

  264. Dave Cridland

    By the way, huge thanks to you guys for doing this.

  265. pep.

    winfried, :)

  266. winfried

    jonasw: do you have time to also submit a skelton and abstract for a GDPR informational XEP?

  267. pep.

    jonasw, I can have a look at EULA, for the obvious bits? (if there is any)

  268. Dave Cridland wonders if he needed to opt-in to be mentioned in the minutes.

  269. pep.

    Dave Cridland, I was going to ask

  270. winfried

    Dave Cridland: you revealed yourself, so no mercy :-D

  271. pep.

    But the logs of this room are public anyway, just like the minutes :P

  272. jonasw

    winfried, no, sorry

  273. winfried

    I shouldn't do it, but I will give it a shot

  274. winfried

    (then)

  275. jonasw

    winfried, why shouldn’t you do it?

  276. jonasw

    if you’re uncomfortable with the markup, you can also just send me a markdown or whatever based document

  277. jonasw

    and I’ll transform it

  278. winfried

    time, am already terrible behind on an other GDPR project

  279. jonasw

    right

  280. winfried

    but it shouldn't be too much work

  281. jonasw

    do whatever you need to save time, my issue with the informational is mostly that I don’t have the big picture or anything

  282. jonasw

    I’m fine with an .odt if that’s what you’re most comfortable writing in

  283. winfried

    jonasw: k, let you know if I need anything

  284. winfried bangs a gavel and starts writing a XEP

  285. pep.

    Ge0rG, you're ok if I copy your tos/privacy policy to the wiki with a big "WIP"

  286. pep.

    And "To be moved to git"

  287. jonasw

    Dave Cridland, I don’t think I’ll be able to make the 24 hour agenda deadline for the council meeting with the EULA XEP though

  288. Ge0rG

    pep.: yeah

  289. pep.

    We're still in Q1.1.2 right

  290. pep.

    or 1.1.3 maybe

  291. pep.

    Ah no 1.1.2

  292. pep.

    "consequences for server operators"

  293. pep.

    *1.2

  294. pep.

    winfried, I'm not sure exactly what you meant by "Big picture: we have some things we want to change on protocol level" and "Transfer of data" specifically

  295. winfried

    pep.: timestamp ? loosing my context ;-)

  296. pep.

    19:50:33 winfried> Big picture: we have some things we want to change on protocol level 19:50:43 winfried> EULA-XEP 19:50:47 winfried> Deletion 19:50:56 winfried> Transfer of data 19:51:09 winfried> (any other?) 19:51:31 winfried> ah, defaults for MAM

  297. pep.

    (UTC+9)

  298. winfried

    ah...

  299. winfried

    that is the portability thing, download everything so it can be put on an other server

  300. pep.

    I see

  301. pep.

    https://cryptpad.fr/code/#/2/code/edit/j5ggWca+SLu32klePWFOeCIK/ winfried, jonasw, Ge0rG if you can have a quick look before I send

  302. Ge0rG

    pep.: 👍

  303. winfried

    (Y)

  304. jonasw

    wfm

  305. jonasw

    I’ll now try to merge the MIX PRs and then I’ll start to look at the EULA XEP

  306. Steve Kille

    jonasw: thanks!

  307. Ge0rG

    jonasw: But 404!

  308. jonasw

    yes?

  309. Ge0rG

    Okay, I didn't do anything when that window of opportunity was open, so I have no right to complain about it.

  310. jonasw

    Steve Kille, is "RELIABLE-DELIVERY" not there yet or am I missing something?

  311. Ge0rG

    I'll just pile my sadness on top of the Pidgin-officially-encouraged pile and move on with life.

  312. Steve Kille

    RELIABLE-DELIVERY is a piece of MIX that is needed, but it was clear that hte text in MIX was wrong and it might be useful elseowere

  313. Steve Kille

    So, I (or someone else) needs to work out exactly what needs doing and write it.

  314. Steve Kille

    Running without this is probably not going to be a big deal for most deployments

  315. Steve Kille

    BTW using 404 for MIX-ANON was the choice of my co-author

  316. Steve Kille

    I think the humour is good

  317. Ge0rG

    IMHO, that number should have been used for "XEP not found"

  318. Steve Kille

    Kev got there first

  319. jonasw

    MIXes merged

  320. jonasw

    Steve Kille, FWIW, the conflicts were because somebody submitted editorial changes in the meantime (0.10.1 was released), but that was trivial to handle

  321. Steve Kille

    thanks very much for sorting this out.

  322. Steve Kille

    Meanwhile, I've received some private editorial comments on 1.0.0, whch I will work at soon

  323. jonasw

    I renumbered it to 0.10.2

  324. jonasw

    it is not draft yet, and only draft can have 1.x.x

  325. jonasw

    and since the split was editorial as discussed, it got 0.10.2

  326. Steve Kille

    ah - I did not realize this.

  327. Steve Kille

    Given that over half of the text vanished from 369, this scarecely seems editorial

  328. Steve Kille

    I'm going to have to confess now that there were some technical changes

  329. Steve Kille

    Mamking the XEPs independnent needed changes

  330. Steve Kille

    Making Proxy JIDs work without MIX-ANON needed various changes

  331. jonasw

    uh

  332. jonasw

    yeah, I saw a namespace bump in there

  333. jonasw

    but I think that’s going to be needed either way

  334. jonasw

    I can’t really fix the version number now anymore, I’m afraid.

  335. jonasw

    so we’ll have to live with t hat

  336. Steve Kille

    shall I move to 11.0 when I do the next set of changes?

  337. Steve Kille

    All the others are at 0.1.0

  338. jonasw

    increment the last digit (the z in x.y.z) for purely editorial changes, and the second digit (y in x.y.z, reset z to 0) for changes which include non-editorial chnages

  339. Steve Kille

    I think that the changes since 10.0 deserve a seond digit bump

  340. Steve Kille

    However, it is just a number, and I am happy with whatever the experts decree

  341. jonasw

    I agree that a second digit bump would’ve made sense

  342. jonasw

    but that’s spilled milk

  343. jonasw

    more or less

  344. Steve Kille

    I was asking if it makes sense to make the bump as part of the editorial changes I will make soon?

  345. jonasw

    ah, now I understand

  346. jonasw

    I’ll abort the build and fix the version number to 0.11.0

  347. Steve Kille

    if that is not too much trouble, I think that makes most sense

  348. jonasw

    done

  349. Steve Kille

    you're a hero

  350. jonasw

    pep., Ge0rG, what do you think about announcing the TOS version via disco#info *and* stream features? This would allow servers to announce updates via stream features s.t. clients can pick that up

  351. pep.

    jonasw, sgtm

  352. Ge0rG

    jonasw: aren't we overloading our caps infra already?

  353. jonasw

    not sure

  354. jonasw

    for servers I don’t think so

  355. pep.

    jonasw, what do you do with it then? the client knows there's a new version, where does it fetch it

  356. jonasw

    pep., via the in-band protocol

  357. pep.

    Ok ok

  358. pep.

    iq or ad-hoc?

  359. jonasw

    not sure yet

  360. jonasw

    I think ad-hoc won’t do the trick

  361. pep.

    I'd prefer iq I think, but I don't have a strong opinion

  362. pep.

    All the features a user will opt-in, they also need to be able to opt-out easily btw. Should that also be done via the xep (one place to rule them all, "easy discovery"), or let the client decide where each feature config should go? e.g, Preferences > MAM > [x] Enable; Preferences > Other feature > [ ] Enable

  363. pep.

    Meh, I don't think the one place to rule them all would work

  364. jonasw

    yupp

  365. pep.

    that'd need to fiddle with every other modules

  366. Ge0rG

    There is one place to rule them all. "Delete account"

  367. jonasw

    that needs to go into the individual XEPs, just like it’s handled currently

  368. pep.

    Ge0rG, no

  369. pep.

    Say I still want to benefit from the services, but I want to opt-out of every consented feature

  370. pep.

    Doesn't have to be "please delete MAM", just "Please no MAM anymore"

  371. jonasw

    https://paste.debian.net/hidden/eb963ea8/

  372. jonasw

    pep., Ge0rG, ^

  373. pep.

    "The user shall be able to retract consent [..]", I don't have the exact quote

  374. pep.

    An error occurred during a connection to paste.debian.net. SSL peer rejected your certificate as expired. Error code: SSL_ERROR_EXPIRED_CERT_ALERT :(

  375. jonasw

    nice

  376. pep.

    I'll have to change that client cert..

  377. jonasw

    s/https/http/ will work though

  378. pep.

    yeah.. unfortunately

  379. Ge0rG

    "The server subsequently replies with the &tos; payload:" - that sounds like it's a ToS *payload*, but it's merely a ToS *link*

  380. jonasw

    Ge0rG, it is a payload of the ToS protocol

  381. pep.

    Ge0rG, I'd like to allow for both

  382. pep.

    If you want to point to an external source, good for you. You might also want to handle this in-band

  383. Ge0rG

    Let's talk about XHTML-IM ToS payloads.

  384. jonasw

    pep., it’s not realistic to have the complete document in-band

  385. pep.

    jonasw, that's fine as long as EULA is only used for c2s

  386. pep.

    I mean, oob is fine**

  387. jonasw

    I’m thinking however, if we actually make Ge0rGs thing into a template, that we could use that template and have the server say things like "this is template X version Y, with the following things filled in: MAM retention time = xyz, upload retention time = abc, representative = frank nord"

  388. Ge0rG

    representative = Jon Snow.

  389. pep.

    jonasw, I'm sure that template will get hairy quickly

  390. jonasw

    maybe, but maybe not

  391. pep.

    Plus operators will want to modify more than just placeholders

  392. jonasw

    pep., in any case, putting the whole ToS in-band won’t work.

  393. pep.

    won't work how?

  394. jonasw

    question 1: which markup format to use for formatting?

  395. pep.

    We don't have anything to do formatted payloads anymore? :)

  396. pep.

    Too bad

  397. jonasw

    I would have argued strongly against anything XHTML. way too much, markdown would be sufficient, if it was standardised.

  398. pep.

    but styling is not markdown.

  399. jonasw

    styling is not sufficient

  400. pep.

    Don't tell me

  401. jonasw

    you need headings in a ToS, and enumerations and lists

  402. jonasw

    I am confused

  403. Ge0rG

    Are we talking about Markleft or Markright?

  404. pep.

    Ge0rG, both

  405. pep.

    Also Markhtml

  406. jonasw

    pep., do you happen ot have a link to your EULA XEP pad at hand?

  407. pep.

    https://cryptpad.fr/code/#/2/code/edit/IiUC5h-fzN14FAeSdcBoAQgc/

  408. jonasw

    ty

  409. jonasw

    pep., Ge0rG: https://sotecware.net/files/noindex/tos.html

  410. jonasw

    sorry for the lack of CSS

  411. jonasw

    pep., Ge0rG, winfried, here’s a preview version with CSS: https://sotecware.net/files/noindex/xeps/tos.html ; I’d appreciate any early feedback.

  412. jonasw

    I think this should cover the basic points for now, we can expand on this for including more information about the ToS in the payloads later.

  413. pep.

    jonasw, example 2 contains </stream:features>

  414. Ge0rG

    jonasw: the title might better be "ToS Reference" than just "ToS"

  415. jonasw

    pep., ty

  416. jonasw

    Ge0rG, "Terms of Service Agreement"?

  417. jonasw

    because it also handles ACK-ing the ToS

  418. jonasw

    I find ToS a good name still.

  419. pep.

    jonasw, can we not use oob or sims or something that's already there to give the url?

  420. jonasw

    pep., what would be the benefit?

  421. pep.

    Not reinventing the wheel

  422. pep.

    hmm, oob doesn't allow for MIME, sims does though

  423. Ge0rG

    Wasn't there an IBR extension by daniel?

  424. winfried

    jonasw: what when there are several documents like a ToS and a separate Privacy statement?

  425. jonasw

    pep., but it wouldn’t be re-usable much except for wire format maybe, and it would tie us to the SIMS namespace

  426. pep.

    jonasw, I don't know what the convention is, but I'd put <deadline/> inside <tos/> maybe

  427. jonasw

    pep., but semantically, the deadline is for the change not for the ToS itself

  428. winfried

    Can it also be communicated when it is obliged to agree to the terms or when it should only be available

  429. jonasw

    winfried, that’s a good question

  430. jonasw

    winfried, that’s a good question (regarding multiple documents)

  431. pep.

    jonasw, right.. I'm a bit annoyed at having this directly in <message> for some reason

  432. jonasw

    winfried, regarding requiring agreement, sure, we can communicate that, but does it make sense?

  433. jonasw

    winfried, is there a good reason to separate the documents?

  434. jonasw

    this will increase the complexity a lot because we either have to put human-readable titles in the wire-format (complexity with i18n) or pre-define the types of documents we want to support

  435. pep.

    Maybe we can just allow multiple sources of the same type

  436. jonasw

    pep., how would that look in a client UI? > you have to agree to the following terms to use the service: > document 1 (link) > document 2 (link) :/ that looks awful

  437. pep.

    Well.. having both links for plain/text and plain/html, what will clients display anyway?

  438. pep.

    randomly choose between the two?

  439. jonasw

    unless you’re poezio, you’d probably link the text/html thing

  440. jonasw

    and dispatch to a web browser

  441. jonasw

    poezio might as well show the text/plain version inline

  442. pep.

    pardon my UX skills, but as a user I'd prefer to have a choice

  443. jonasw

    most users don’t want to

  444. jonasw

    they don’t even care about the difference between html and plaintext :)

  445. pep.

    which is also why I use poezio unlike "most users"

  446. Dave Cridland

    winfried, You know, you *could* use a SASL2 task for EULA agreement.

  447. pep.

    jonasw, anyway, I can live with just one document (and optionally multiple types), for the original question

  448. jonasw

    Dave Cridland, i’d love to see a SASL2 task to replace my pre-bind/post-auth hack

  449. jonasw

    IBR integration is still on the todo

  450. winfried

    jonasw: communicating the requirement to agree: some documents (like the privacy statement) only need to be available, while some others, like a 6.1a question, need to be agreed upon.

  451. winfried

    jonasw: and that is also an answer to the other topic: if you have both, you want to present both with a different status

  452. jonasw

    winfried, okay, that makes things much more complex.

  453. pep.

    Right. I've seen services present me multiple ToS I could agree to

  454. jonasw

    I was operating under the assumption that we have a ToS document (including privacy policy) which needs to be agreed to always and that all 6.1a questions are handled separately already.

  455. jonasw

    (such as MAM)

  456. winfried

    pep.: yeah, that is ugly, but there may be good reasons for

  457. jonasw

    back to the scratchpad then

  458. pep.

    winfried, I guess we can skip this though, and do as jonasw says, have opt-in features be handled separately

  459. winfried

    jonasw: in our GDPR route, we avoid asking 6.1a questions, but other setups or other jurisdictions may have different needs

  460. pep.

    winfried, as in, clients would have UI for this, some configuration somewhere

  461. winfried

    pep.: IF you offer an 'agree-iq', then you should also communicate if it is mandatory to agree it. Otherwise it is just informational

  462. jonasw

    my assumption was that it’s always mandatory

  463. winfried

    jonasw: Nope, misconception #1 about the gdpr ;-)

  464. pep.

    I don't think it is (always mandatory).

  465. jonasw

    mmm

  466. jonasw

    okay, will have to re-do things then

  467. winfried

    jonasw: sorry...

  468. jonasw

    no, that’s great, we need a good thing here

  469. jonasw

    better sort it out before the first implementation comes along :)

  470. winfried

    Dave Cridland: love that idea, but I am happy you said *could* :-D

  471. pep.

    Yeah I'd like to see what that looks like as well

  472. jonasw

    winfried, okay, would this work: - we have a list of documents which can be reviewed by the user - we have a list of tickboxes where users can consent to things which aren’t handled elsewhere (e.g. additional content analysis which would go into 9.1 territory or something) - the tickboxes default to false - agreement to individual documents is handled via the tickboxes, if at all. - a service would put the terms for the tickboxes in their privacy policy document by default

  473. jonasw

    so the UI would be something like this: +----------------------------------+ | | | Terms of Service | | | | Service xy has the | | following Terms. | | Please review: | | | | - Terms of Service (link) | | - Privacy Policy (link) | | | | [ ] Allow analysis of my | | messages for marketing | | purposes | | (see Privacy Policy §12.3) | | [ ] Allow sharing my contacts | | with Facebook | | | | | +----------------------------------+

  474. jonasw

    + a [Register] or [Continue] button

  475. jonasw

    the tickboxes would be provided by the service

  476. pep.

    Also [Cancel], that would close the stream? :-°

  477. jonasw

    probably

  478. pep.

    Would MAM go in these [ ], or would it be in client configurations like we said above

  479. jonasw

    I would put that in client configuration

  480. pep.

    Because then we're separating stuff that requires consent

  481. pep.

    I mean there would be stuff all around, not just one place to accept

  482. jonasw

    if you choose to enable MAM, you have of course already read the privacy policy and thus know the terms for MAM

  483. jonasw

    yeah

  484. pep.

    Right

  485. jonasw

    A service could of course also put the MAM switch in there, but it’s useless if the client doesn’t support MAM, so it would be confusing.

  486. jonasw

    the tickboxes would be entirely service-define

  487. jonasw

    the tickboxes would be entirely service-defined

  488. pep.

    Makes sense

  489. Ge0rG

    that looks like a data form.

  490. jonasw

    Ge0rG, the tickboxes will use data form wire format indeed

  491. jonasw

    Ad-Hoc command wire format even

  492. Ge0rG

    The issue I have is that yaxim will not connect to the server until you fill out the username + password fields.

  493. jonasw

    so?

  494. pep.

    Ge0rG, pulling down a XEP because of client implementation? how dare you :o

  495. Ge0rG

    pep.: I didn't write "The issue this XEP has"

  496. winfried

    pep.: a [Cancel] would be up to the server to decide, it may only disable certain functionality

  497. pep.

    Ge0rG, :)

  498. pep.

    winfried, if a user cancels, what happens legally? they don't agree to the ToS, but they can continue using the service?

  499. pep.

    I'm a bit confused

  500. Ge0rG

    I like how you have sorted out race conditions between the user reading and the ToS updating here... `<agree xmlns='urn:xmpp:tos:0'><version>0.1.0</version></agree>`

  501. winfried

    pep.: depends on the question. If the question is: "i agree to connecting to my facebook account" (or so) then not ticking the box would only stop that part of the processing, not all XMPP service

  502. jonasw

    is cancel really a thing?

  503. jonasw

    i mean yeah, cancel would mean that you don’t want to use the sevrice at all because you don’t agree with it’s ToS

  504. pep.

    jonasw, [disagree], I guess

  505. pep.

    jonasw, [Disagree], I guess

  506. jonasw

    the non-negotiable parts of the ToS, because the negotiable parts are formulated as tickboxes

  507. pep.

    jonasw, yes

  508. Ge0rG

    jonasw: I don't like the use of headline messages. With always-on clients, I'd always fear sending a user a message in the middle of the night.

  509. pep.

    Ge0rG, it's always the night somewhere..

  510. pep.

    Ge0rG, it's always night somewhere..

  511. Ge0rG

    pep.: that's exactly my point.

  512. winfried

    pep.: oops mixing up not ticking a box and [disagree]

  513. pep.

    Ge0rG, who cares, people should setup notifications properly

  514. Ge0rG

    pep.: the right thing™ would be to send another kind of notification and let the user agree when they re-open their client

  515. Ge0rG

    pep.: people are using Jabber for important family notifications. Ringing them up at 3AM is not what I want to do.

  516. jonasw

    Ge0rG, the notification could be delayed until the next CSI Active if the client is CSI Inactive with a smart implementation :)

  517. Ge0rG

    jonasw: I don't believe in smart implementations any more.

  518. jonasw

    (with a delay of a few minutes to allow a client to go CSI Inactive after a reconnect)

  519. jonasw

    Ge0rG, do you have another idea for the notification?

  520. jonasw

    I don’t want to use an IQ because that won’t work with legacy clients at all.

  521. jonasw

    we don’t have a "silent" thing unfortunately

  522. Ge0rG

    jonasw: you encode the tos-version in the entity caps and push a presence update.

  523. jonasw

    presence update from whom?

  524. Dave Cridland

    I'm not convined you want to handle ToS changing mid-stream.

  525. Ge0rG

    from the server.

  526. jonasw

    and that won’t work with legacy clients at all.

  527. winfried

    Dave Cridland: why not?

  528. jonasw

    Ge0rG, users typically don’t have their server in the roster.

  529. Ge0rG

    Dave Cridland: what's your counter-proposal? Kick the client?

  530. Ge0rG

    jonasw: yes.

  531. pep.

    clients*?

  532. Ge0rG

    jonasw: this is why it's going to work.

  533. jonasw

    Ge0rG, you are an evil persion

  534. Ge0rG

    jonasw: what was discussed last time for mid-stream server-caps updates?

  535. Dave Cridland

    Ge0rG, Basically. If you're at the point where the ToS update is so pressing you need to get user agreement at that moment, you're going to need to anyway.

  536. jonasw

    but relatedly, I have an update for XEP-0390 pending which allows servers to push updates to their caps

  537. jonasw

    Dave Cridland, nobody’s talking about "in that moment"

  538. Ge0rG

    jonasw: yes. yes I am.

  539. jonasw

    the notification is supposed to be sent a few days ahead so that the user has time to review etc.

  540. Ge0rG

    you kick the user twice. First on the ToS update, second when they failed to accept the update in time.

  541. Ge0rG

    BTW, what happens if they fail to accept it? They get kicked and can't reconnect? Need to accept the ToS oob?

  542. jonasw

    Ge0rG, § 4.5 in the draft I linked

  543. jonasw

    https://sotecware.net/files/noindex/xeps/tos.html#usecase-expired

  544. jonasw

    ideally, this would be a SASL2 thing as suggested by Dave Cridland, but we don’t have SASL2 yet, and it can easily replaced with SASL2 later.

  545. Ge0rG

    jonasw: wow, well thought out :)

  546. winfried

    Ge0rG: isn't that up to to the server

  547. Ge0rG

    data-forms in SASL2?

  548. jonasw

    Ge0rG, sasl2 is like zombo.com -- everything is possible in SASL2

  549. Ge0rG

    winfried: what that?

  550. winfried

    [17:25:29] <Ge0rG> BTW, what happens if they fail to accept it? They get kicked and can't reconnect? Need to accept the ToS oob?

  551. Ge0rG

    winfried: yeah, but if you lock out the user, they need an oob mechanism to re-agree with the ToS

  552. jonasw

    (or an in-band mechanism ;-))

  553. Ge0rG

    an in-band mechanism between auth and bind, yes.

  554. Ge0rG

    can you 0198 resume such a semi-zombie?

  555. jonasw

    I was about to add that you’d kill the session completely when they don’t agree to the ToS in time

  556. jonasw

    you can’t know how long it’ll take for them to ack the new terms and shutting down the session cleanly and completely is probably the best you can do.

  557. winfried

    jonasw: can you have a look? https://github.com/winfried/xeps/blob/master/inbox/GDPR.xml

  558. jonasw

    I would add a paragraph right into the introduction: "This document is not legal advice"

  559. jonasw

    this is probably a good start

  560. pep.

    winfried, interoperability*

  561. winfried

    jonasw: thanks, added

  562. winfried

    pep.: thanks, fixed

  563. winfried

    jonasw: do you want a pull request?

  564. jonasw

    winfried, you can do a PR, I’m not 100% convinced that this is enough to pass though.

  565. jonasw

    and I’m not 100% sure if this is council or board matter

  566. jonasw

    Dave Cridland, do you have an opinion?

  567. winfried

    jonasw: we will see ;-)

  568. Dave Cridland

    It's not procedural, so probably not Board.

  569. jonasw

    it’s informational though

  570. Dave Cridland

    Yes, but lots of Informational stuff is processed by Council.

  571. jonasw

    winfried, pep., Ge0rG: updated https://sotecware.net/files/noindex/xeps/tos.html

  572. jonasw

    Dave Cridland, true

  573. Dave Cridland

    Board handle the XEPs that document XSF policy and procedures.

  574. jonasw

    okay

  575. jonasw

    so council it is

  576. Dave Cridland

    (Which are "Procedural")

  577. winfried

    jonasw: pull request send

  578. jonasw

    neat, thanks

  579. winfried

    Of to dinner!

  580. jonasw

    gl!

  581. jonasw

    another update

  582. pep.

    jonasw, no MIME anymore?

  583. pep.

    meh, nvm. You gave me too much options in the first draft!

  584. pep.

    meh, nvm. You gave me too many options in the first draft!

  585. pep.

    Ah wait, there is

  586. pep.

    you say "The data form for legacy clients and additional opt-ins/opt-outs", but even if I'm a client implementing the XEP I'll want all this, no? What exactly can I get rid of in that form, especially when I have to reply with the same fields

  587. pep.

    hmm, maybe just to provide alternative versions/urls of the documents

  588. jonasw

    pep., yes, you can only remove the additional elements

  589. jonasw

    pep., yes, you can only remove the documents

  590. jonasw

    but that is written down there

  591. pep.

    nit: "In the future, more children may be added to the <tos/> element. Conforming clients thus MUST ignore all children they do not understand.", I find "conforming" disturbing here, as conforming clients would understand these updates.. But I know you're talking about cases where deployments are not up-to-date

  592. jonasw

    pep., it might also be that an additional XEP extends it

  593. pep.

    Ok makes more sense in this case

  594. pep.

    jonasw, "[..] and use a richer representation obtained from the <tos/> element for the same data." you mean HTTP GET on the urls?

  595. jonasw

    for example

  596. pep.

    Does it have to be a url btw

  597. jonasw

    and in the future maybe fancy things like machine-readable MAM retention times etc.

  598. jonasw

    yes

  599. pep.

    can it be a uri

  600. jonasw

    ugh, I never get the difference

  601. pep.

    I'm probably wrong, I mean does it have to be http

  602. jonasw

    no

  603. pep.

    How would you display a plaintext file retrieved in your client, the question of rich formatting still stands

  604. jonasw

    you could also have a text/markdown version.

  605. jonasw

    or text/restructuredtext

  606. pep.

    Instead of "Duplicate MIME types MUST NOT occur.", can we have "Duplicate url/MIME type pairs MUT NOT occur."

  607. pep.

    hmm, I assume the url would use a different protocol though

  608. jonasw

    pep., duplicate MIME types makes it hard for the client to decide which one ot use

  609. pep.

    It can decide based on the protocol _and_ the mime type

  610. jonasw

    right

  611. jonasw

    might add that later

  612. jonasw

    I pushed it into the xeps repo now

  613. pep.

    Ok

  614. pep.

    What about errors when client submits filled-out form

  615. pep.

    "not latest version", "invalid documents", "unknown opt-in feature", etc.

  616. jonasw

    yeah, should probably be defined

  617. pep.

    Ah I see you've added a <tos-push/> containe r:)

  618. jonasw

    you can send those to the mai3ling list :)

  619. pep.

    will do

  620. jonasw

    (once the announcement is out)

  621. jonasw

    which I’m not 100% sure I’ll get to today because I’m heading out in half an hour and the build takes ages :(

  622. pep.

    :(

  623. pep.

    something something incremental builds

  624. jonasw

    yeah

  625. jonasw

    something something docker sucks

  626. pep.

    I'd argue that's up to the CI

  627. jonasw

    you can’t do that with docker hub, period.

  628. pep.

    Ah, well docker hub != docker

  629. pep.

    Did we had Privacy Considerations to the template btw

  630. jonasw

    no, I didn’t want to do that in the climate after the XEP-0363 debate

  631. pep.

    ok

  632. jonasw

    and I still need to reword the ideas for that

  633. pep.

    "The version identifiers generated by servers MUST NOT be longer than 128 characters." a reason for this in particular? (even if unlikely)

  634. pep.

    "Servers MUST NOT allow entities to query the Terms of Service of another server unless they are authenticated." I'm not sure I get this

  635. jonasw

    before you are authenticated, your server MUST NOT allow you to query other servers for their ToS

  636. pep.

    But other servers may allow anybody to attempt a connection and query their tos right

  637. pep.

    Just like my https://service.example/tos will be public, I don't mind having my xmpp server disclosing them publicly

  638. jonasw

    yes

  639. jonasw

    but you don’t want to be an open proxy for entities sending IQs towards other servers.

  640. pep.

    I see

  641. pep.

    Also what about sasl anonymous

  642. jonasw

    I don’t see how that’s relevant

  643. pep.

    ToS acceptance is required only if there is account creation?

  644. jonasw

    dunno

  645. jonasw

    IBR integration is still fully missing

  646. pep.

    Right

  647. jonasw

    theoretically, a SASL ANONYMOUS thing could apply § 4.4 Inform client about Terms of Service expiry after authentication

  648. pep.

    I'll reply to the thread when it's out and ask about all that

  649. jonasw

    okay gotta go, build didn’t finish in time :( will send the mail tomorrow or later tonight

  650. Ge0rG

    speaking of appropriate number mappings... 403 = GDPR Compliance 404 = Terms of Service

  651. pep. grabs popcorns

  652. moparisthebest

    Ge0rG, I think those have been reserved for the mix hatchet job

  653. Ge0rG

    moparisthebest: not merely reserved, they are official now.

  654. pep.

    moparisthebest, yes, he's been onto it for half a day now, now about this :P

  655. Zash

    Popcorn you say?

  656. moparisthebest

    ah so they are