XSF Discussion - 2019-08-19

  1. alameyo has left
  2. lskdjf has left
  3. lskdjf has joined
  4. Daniel has left
  5. Allo has left
  6. Allo has joined
  7. Daniel has joined
  8. winfried has left
  9. Daniel has left
  10. Daniel has joined
  11. alameyo has joined
  12. Daniel has left
  13. UsL has left
  14. UsL has joined
  15. Daniel has joined
  16. winfried has joined
  17. pdurbin has joined
  18. pdurbin has left
  19. alameyo has left
  20. alameyo has joined
  21. lskdjf has left
  22. Daniel has left
  23. Alex has left
  24. Daniel has joined
  25. kokonoe has left
  26. aj has joined
  27. kokonoe has joined
  28. adityaborikar has joined
  29. adityaborikar has left
  30. Yagiza has joined
  31. kokonoe has left
  32. kokonoe has joined
  33. neshtaxmpp has joined
  34. neshtaxmpp has left
  35. pdurbin has joined
  36. pdurbin has left
  37. neshtaxmpp has joined
  38. waqas has left
  39. pdurbin has joined
  40. Daniel has left
  41. Daniel has joined
  42. adityaborikar has joined
  43. Nekit has joined
  44. Daniel has left
  45. Daniel has joined
  46. Tobias has joined
  47. j.r has left
  48. j.r has joined
  49. Daniel has left
  50. Daniel has joined
  51. valo has left
  52. valo has joined
  53. Daniel has left
  54. LNJ has joined
  55. wurstsalat has joined
  56. Daniel has joined
  57. goffi has joined
  58. xnamed has joined
  59. UsL has left
  60. UsL has joined
  61. neshtaxmpp has left
  62. Mikaela has joined
  63. jcbrand has joined
  64. adityaborikar has left
  65. adityaborikar has joined
  66. UsL has left
  67. UsL has joined
  68. kokonoe has left
  69. kokonoe has joined
  70. adityaborikar has left
  71. COM8 has joined
  72. sezuan has joined
  73. karoshi has joined
  74. COM8 has left
  75. mr.fister has left
  76. xnamed has left
  77. xnamed has joined
  78. Steve Kille has left
  79. Daniel has left
  80. Daniel has joined
  81. COM8 has joined
  82. APach has left
  83. APach has joined
  84. COM8 Is there a simple C++ XMPP library that lets me interact with raw XML?
  85. larma has left
  86. andy has joined
  87. larma has joined
  88. Dele (Mobile) has joined
  89. COM8 I wan't to creat an application that runs on a microcontroller with only 500kByte of ROM
  90. jonas’ COM8, I used libstrophe or libcouplet in the past
  91. jonas’ (both are C)
  92. jonas’ (but should be perfectly usable with C++)
  93. jonas’ example usage in my project: https://github.com/horazont/hint/blob/devel/host/src/xmppintf.c
  94. COM8 has left
  95. COM8 has joined
  96. COM8 Thanks. will have a look at it
  97. Holger COM8: http://deusexmachinae.se/dxmpp/ was written with IoT stuff in mind, but not sure it's minimalistic enough for your use case.
  98. Dele (Mobile) has left
  99. Dele (Mobile) has joined
  100. COM8 Holger: dxmpp looks also interresting. Thanks.
  101. Dele (Mobile) has left
  102. Dele (Mobile) has joined
  103. eevvoor has joined
  104. lskdjf has joined
  105. adityaborikar has joined
  106. kokonoe has left
  107. kokonoe has joined
  108. lskdjf has left
  109. aj has left
  110. lskdjf has joined
  111. Dele (Mobile) has left
  112. xnamed has left
  113. Dele (Mobile) has joined
  114. Steve Kille has joined
  115. aj has joined
  116. Nekit has left
  117. jubalh has joined
  118. Dele (Mobile) has left
  119. Dele (Mobile) has joined
  120. Nekit has joined
  121. jubalh has left
  122. jubalh has joined
  123. Dele (Mobile) has left
  124. Nekit has left
  125. Dele (Mobile) has joined
  126. adityaborikar has left
  127. Nekit has joined
  128. adityaborikar has joined
  129. jmpman has joined
  130. COM8 has left
  131. COM8 has joined
  132. adityaborikar has left
  133. jubalh has left
  134. adityaborikar has joined
  135. kokonoe has left
  136. kokonoe has joined
  137. pdurbin has left
  138. Nekit has left
  139. Nekit has joined
  140. Daniel has left
  141. Daniel has joined
  142. Alex has joined
  143. lskdjf has left
  144. lskdjf has joined
  145. mimi89999 has joined
  146. Daniel has left
  147. Daniel has joined
  148. Daniel has left
  149. Daniel has joined
  150. Daniel has left
  151. Daniel has joined
  152. Daniel has left
  153. Daniel has joined
  154. jmpman has left
  155. COM8 has left
  156. COM8 has joined
  157. neshtaxmpp has joined
  158. COM8 has left
  159. adityaborikar has left
  160. COM8 has joined
  161. adityaborikar has joined
  162. adityaborikar has left
  163. adityaborikar has joined
  164. Alex has left
  165. Alex has joined
  166. COM8 has left
  167. COM8 has joined
  168. COM8 has left
  169. COM8 has joined
  170. COM8 has left
  171. COM8 has joined
  172. jmpman has joined
  173. pdurbin has joined
  174. Daniel has left
  175. Daniel has joined
  176. COM8 has left
  177. COM8 has joined
  178. Daniel has left
  179. Daniel has joined
  180. Daniel has left
  181. Daniel has joined
  182. Dele (Mobile) has left
  183. pdurbin has left
  184. Daniel has left
  185. Daniel has joined
  186. Daniel has left
  187. Daniel has joined
  188. Daniel has left
  189. Daniel has joined
  190. Daniel has left
  191. Daniel has joined
  192. Daniel has left
  193. Daniel has joined
  194. Dele (Mobile) has joined
  195. Dele (Mobile) has left
  196. j.r has left
  197. j.r has joined
  198. Steve Kille has left
  199. COM8 has left
  200. COM8 has joined
  201. Steve Kille has joined
  202. Chobbes has joined
  203. COM8 has left
  204. COM8 has joined
  205. COM8 has left
  206. COM8 has joined
  207. COM8 has left
  208. COM8 has joined
  209. COM8 has left
  210. COM8 has joined
  211. COM8 has left
  212. COM8 has joined
  213. COM8 has left
  214. COM8 has joined
  215. COM8 has left
  216. COM8 has joined
  217. COM8 has left
  218. COM8 has joined
  219. COM8 has left
  220. COM8 has joined
  221. COM8 has left
  222. COM8 has joined
  223. COM8 has left
  224. Steve Kille has left
  225. COM8 has joined
  226. COM8 has left
  227. COM8 has joined
  228. COM8 has left
  229. COM8 has joined
  230. COM8 has left
  231. Steve Kille has joined
  232. COM8 has joined
  233. COM8 has left
  234. COM8 has joined
  235. COM8 has left
  236. COM8 has joined
  237. COM8 has left
  238. COM8 has joined
  239. COM8 has left
  240. COM8 has joined
  241. COM8 has left
  242. COM8 has joined
  243. COM8 has left
  244. Ge0rG Sigh. Prosody will send a cancel/not-acceptable if you are not in a MUC, Biboumi will send a modify/not-acceptable, and ejabberd will just send a sender-less message into the MUC if you happen to be an admin.
  245. Ge0rG Consistency, I want you back.
  246. moparisthebest back?
  247. Ge0rG Right.
  248. Ge0rG If I'm reading https://xmpp.org/rfcs/rfc6120.html#stanzas-error-syntax right, `modify` is only about the data, not about your own state.
  249. MattJ I'd listen to reasoned argument about whether 'cancel' would better be 'modify', but I am currently unconvinced that 'modify' is correct
  250. Ge0rG MattJ: you can re-try sending the message after joining the MUC
  251. Steve Kille has left
  252. MattJ True
  253. Ge0rG I remember a proposal about an application-defined condition of <not-an-occupant> of sorts.
  254. MattJ For me the semantics of the error types are generally most easily distinguished by the appropriate UI - e.g. 'modify' would re-show whatever dialog a user submitted that caused an action
  255. MattJ In this case I guess just the input box
  256. Ge0rG This feels slightly related to cancel/recipient-unavailable that mod_smacks sends when the session dies.
  257. Ge0rG MattJ: I recently added logic to yaxim to mark the message as "not yet sent" and to rejoin the MUC in those cases.
  258. Ge0rG but only on cancel/not-acceptable, not on modify
  259. lskdjf has left
  260. lskdjf has joined
  261. Ge0rG maybe Holger knows the right error bounce if you send a message while not being in an ejabberd MUC?
  262. Steve Kille has joined
  263. Ge0rG Also, the RFC has to say: 'The intended recipient is temporarily unavailable, undergoing maintenance, etc.; the associated error type SHOULD be "wait".'
  264. COM8 has joined
  265. Ge0rG MattJ: the RFC also proposes "modify" for not-acceptable.
  266. Nekit has left
  267. Nekit has joined
  268. larma has left
  269. larma has joined
  270. COM8 has left
  271. COM8 has joined
  272. COM8 has left
  273. COM8 has joined
  274. COM8 has left
  275. COM8 has joined
  276. COM8 has left
  277. COM8 has joined
  278. COM8 has left
  279. COM8 has joined
  280. COM8 has left
  281. COM8 has joined
  282. COM8 has left
  283. COM8 has joined
  284. COM8 has left
  285. COM8 has joined
  286. COM8 has left
  287. COM8 has joined
  288. COM8 has left
  289. COM8 has joined
  290. COM8 has left
  291. alameyo has left
  292. alameyo has joined
  293. COM8 has joined
  294. COM8 has left
  295. COM8 has joined
  296. COM8 has left
  297. COM8 has joined
  298. jubalh has joined
  299. COM8 has left
  300. COM8 has joined
  301. COM8 has left
  302. COM8 has joined
  303. COM8 has left
  304. COM8 has joined
  305. alameyo has left
  306. COM8 has left
  307. COM8 has joined
  308. pdurbin has joined
  309. COM8 has left
  310. COM8 has joined
  311. COM8 has left
  312. COM8 has joined
  313. COM8 has left
  314. COM8 has joined
  315. adityaborikar has left
  316. eevvoor has left
  317. alameyo has joined
  318. COM8 has left
  319. COM8 has joined
  320. adityaborikar has joined
  321. COM8 has left
  322. COM8 has joined
  323. Holger Ge0rG: Yes ejabberd returns modify/not-acceptable (as per the spec).
  324. pdurbin has left
  325. Ge0rG MattJ: ^
  326. Ge0rG Holger: it's only a SHOULD in the spec.
  327. MattJ If we deviate from the spec we can certainly fix that
  328. Ge0rG And modifying the message _data_ won't fix the issue
  329. MattJ I disagree with most cases of "only a SHOULD"
  330. alameyo has left
  331. alameyo has joined
  332. Holger Ge0rG: I'm slowly getting used to having to justify why on earth ejabberd adheres to SHOULDs :-)
  333. Kev Question: Servers are expected to validate stanza syntax for stanzas they route, but does anyone actually extend that to doing the xml:lang rule checking for duplicate bodies etc.?
  334. Ge0rG Holger: not long ago I violently complained about ejabberd implementing a MAY.
  335. Nekit has left
  336. COM8 has left
  337. Nekit has joined
  338. jubalh has left
  339. alameyo has left
  340. Holger I do remember :-)
  341. Holger Kev: ejabberd doesn't, FWIW. (It only checks the validity of the xml:lang value itself.)
  342. Kev Ta.
  343. jonas’ how about auth/not-acceptable, Ge0rG? :D
  344. Ge0rG jonas’: is that a serious proposal? 😜
  345. jonas’ Ge0rG, partly
  346. Ge0rG jonas’: you could submit a PR to 0045 with the new custom error condition.
  347. jonas’ I could indeed
  348. Ge0rG jonas’: will you?
  349. jonas’ not today
  350. aj has left
  351. jonas’ I have an aioxmpp release to make
  352. andrey.g has left
  353. alameyo has joined
  354. adityaborikar has left
  355. Alex has left
  356. curen has joined
  357. adityaborikar has joined
  358. Alex has joined
  359. alameyo has left
  360. alameyo has joined
  361. jmpman has left
  362. adityaborikar has left
  363. adityaborikar has joined
  364. COM8 has joined
  365. COM8 has left
  366. COM8 has joined
  367. Allo has left
  368. Ge0rG Technically, a message could also be rejected by a MUC for an actual policy violation, right?
  369. Ge0rG It would be modify/not-acceptable in that case.
  370. Ge0rG So I think cancel/not-acceptable is a cleaner way of signalling "you are not in the MUC".
  371. Ge0rG But less clean than cancel/custom-condition/not-an-occupant
  372. MattJ +1
  373. Zash Was it MattJ who said type=auth made sense?
  374. MattJ I don't think so
  375. adityaborikar has left
  376. adityaborikar has joined
  377. Ge0rG it was jonas’ and it wasn't very serious.
  378. lumi has joined
  379. Zash Well if you consider a join to be almost like auth if you squint the right way
  380. Ge0rG Maybe we really just need MUC-Push
  381. jonas’ ITYM MIX
  382. Ge0rG Yeah, let's reinvent all of our protocols without learning from past errors.
  383. jonas’ I got the impression that MIX at least attempts learn from them
  384. Ge0rG From a subset of them, I'd say.
  385. MattJ From where I'm looking, it picks a handful of problems with MUC, and fixes them by exchanging them with other design trade-offs
  386. Ge0rG Mostly with a significantly increased complexity.
  387. sezuan has left
  388. MattJ We are solving complex problems
  389. fippo the problem space is so complex that there is no one-size-fits-all solution
  390. MattJ Agreed
  391. fippo (what mattj said...)
  392. Ge0rG fippo: right. And forcing all the problems into one solution has proven to end up badly in the past.
  393. Daniel i find MIX to be easier than MUC with the shit loads of hacks you need to implement to make it bearable
  394. Ge0rG Daniel: only because you don't know yet the shitload of hacks you need to make MIX bearable
  395. Zash Wait a decade and say that again
  396. Daniel Ge0rG, well mix is not stable yet so we could fix them before they become hacks
  397. Zash Requirements change. Hacks accumulate.
  398. adityaborikar has left
  399. Ge0rG Daniel: adding MIX rooms to your roster is already a huge hack.
  400. Ge0rG proxy JIDs... another hack
  401. Ge0rG handling of intermittent s2s failures: a hack waiting to happen
  402. Daniel well we decided to not do that
  403. Daniel putting it in the roster
  404. adityaborikar has joined
  405. Daniel the xep just doesn’t know that yet
  406. Ge0rG oh, where did I put my "told you so" stamp?
  407. Steve Kille has left
  408. kokonoe has left
  409. Daniel what part?
  410. Ge0rG MIX has all the signs of "design by committee"
  411. Zash MUC doesn't?
  412. Ge0rG Daniel: the MIX-in-roster part
  413. Daniel that we are going to decide not to do that?
  414. Ge0rG Zash: hm..
  415. Ge0rG Daniel: that it's a very dumb idea.
  416. Daniel yes; that's why we decided to get rid of it
  417. Ge0rG When did you? And who's "we" anyway?
  418. david has left
  419. david has joined
  420. Ge0rG ah, Summit
  421. Steve Kille has joined
  422. kokonoe has joined
  423. COM8 has left
  424. Ge0rG Heh, my first opposition to MIX in Roster was three years and two days ago.
  425. Zash Delayed happy opposition day!
  426. Ge0rG I'm not sure whether to be glad or sad.
  427. COM8 has joined
  428. pdurbin has joined
  429. COM8 has left
  430. COM8 has joined
  431. jonas’ hm
  432. pdurbin has left
  433. COM8 has left
  434. jonas’ It was brought to my attention (as author of XEP-0414) that the section "Analysis of [Hash function use in] Existing XMPP Extensions" was lost in the split of XEP-0300 and XEP-0414
  435. jonas’ I am inclined to remove the (dangling) reference to that section from XEP-414 entirely
  436. jonas’ but I could link it to an older version of XEP-0300 instead
  437. jonas’ does anyone here happen to have a strong opinion on that one?
  438. COM8 has joined
  439. Wojtek has joined
  440. COM8 has left
  441. Wojtek has left
  442. jonas’ https://github.com/xsf/xeps/pull/811
  443. Zash No strong opinions here. Maybe a "hmm, not sure" from me.
  444. j.r has left
  445. j.r has joined
  446. lovetox has joined
  447. curen has left
  448. Lance has joined
  449. lovetox has left
  450. j.r has left
  451. j.r has joined
  452. j.r has left
  453. adityaborikar has left
  454. lovetox has joined
  455. mr.fister has joined
  456. Daniel has left
  457. Daniel has joined
  458. Chobbes has left
  459. Chobbes has joined
  460. jubalh has joined
  461. Daniel has left
  462. jonas’ those who have implemented XEP-0027 (Current Jabber OpenPGP Usage): my reading of the XEP indicates that messages are either signed or encrypted, but never both
  463. jonas’ this doesn’t make sense to me
  464. jonas’ but the XEP lacks a writeup on how an signed+encrypted message would look like
  465. ralphm You can just have both elements I think.
  466. ralphm In any case you only encrypt/sign the body/status.
  467. jonas’ but it’s not specified whether you sign or encrypt first
  468. Yagiza has left
  469. jonas’ it’s not specified whether the raw or the armored encrypted output is signed (if encrypt-then-sign is used)
  470. ralphm Yeah, maybe I'm wrong: “It does not enable both signing and encryption of a stanza, only signing of the presence status and encryption of the message body.”
  471. jonas’ that’s kind of meh
  472. jonas’ is it really how it’s deployed in the wild?
  473. ralphm I think the general opinion of it isn't high.
  474. jonas’ it seems to be the way how openpgp is implemented nowadays though
  475. ralphm Also replay attacks
  476. jonas’ yeah
  477. jonas’ that’d be my concern
  478. jonas’ but apparently that’s the case indeed
  479. jonas’ Conversations uses ACTION_ENCRYPT for the message
  480. jonas’ if I’m reading the code right
  481. alameyo has left
  482. Guus has left
  483. jonas’ https://github.com/open-keychain/openpgp-api/blob/master/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java#L119 https://github.com/siacs/Conversations/blob/49224335fc5cc9c950f347e29ab9f3bbe33792fc/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java#L50
  484. jonas’ https://github.com/open-keychain/openpgp-api/blob/master/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java#L119 https://github.com/siacs/Conversations/blob/master/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java#L50
  485. alameyo has joined
  486. Guus has joined
  487. moparisthebest there is a reason to encrypt but not sign, repudiation, ie "what? I didn't send that and you can't prove that I did!!!!"
  488. moparisthebest but there is also value in encrypt + sign if you don't need that property
  489. Daniel has joined
  490. j.r has joined
  491. flow I am always suprised that xep27 is still gets implemented given the amount of serious issues it has
  492. jonas’ (context why I’m asking: feature request for xep-0027 support against aioxmpp)
  493. Ge0rG jonas’: sometimes it's best to reject feature requests.
  494. jonas’ sometimes, but then again, we’d just provide the schema declarations anyways
  495. jonas’ e2ee implementation is for now out of scope for aioxmpp
  496. jubalh has left
  497. moparisthebest flow, like what?
  498. moparisthebest I mean it's basically the same as encrypted but not signed email, it can be useful, you just have to know what you are getting
  499. flow moparisthebest, like the ones mentioned at https://xmpp.org/extensions/xep-0027.html#security (and there are probably more)
  500. pdurbin has joined
  501. moparisthebest those aren't really "security issues" as such though
  502. flow and "it can be useful" is probably true, but I'd argue most xep27 users, would expect signed and encrypted messages
  503. flow the encrypt only use case is rarely useful
  504. Zash jonas’, this be why '27 is discouraged and OX is a thing I believe
  505. moparisthebest for example I used to have my various servers send me alert/cronjob emails etc pgp encrypted, and then I switched to xep27 xmpp messages, same (actually slightly better) security properties
  506. moparisthebest but yea if users think they are getting something else, that's their problem
  507. Lance has left
  508. Ge0rG moparisthebest: that doesn't sound like you had a requirement to not sign.
  509. Nekit has left
  510. moparisthebest other than I didn't generate PGP keys for my servers no
  511. flow well it was signed before, so it is true that is not a step back. But if your use case is human-to-human interaction, then "encrypt only" is not what you ever want to do with OpenPGP
  512. flow *wasn't signed before
  513. jonas’ FWIW, I’m going to tack: .. warning:: Please see the security considerations of :xep:`27` before making use of this protocol. Consider implementation of :xep:`373` instead. on all the things touching XEP-0027 in aioxmpp
  514. jonas’ flow, I have in the past intentionally sent unsigned but encrypted emails
  515. jonas’ but those are very *very* rare cases
  516. jonas’ probably less than five since I started to use gpg
  517. jonas’ and I don’t think it’s the default in any way, and I *do* think that an E2EE protocol which does not support signing of messages *at all* is definitely a prolbem
  518. flow I can't imagine that the average joe user would want to send unsigned but encrypted mails
  519. jonas’ true
  520. jonas’ me neither
  521. flow jonas’, what was your intention sending unsigned but encrypted?
  522. moparisthebest anti-govt activists would though
  523. jonas’ flow, yes
  524. ralphm Average joe actually doesn't think about encryption at all.
  525. moparisthebest though I'd accept an argument they should just use OTR instead
  526. pdurbin has left
  527. jonas’ flow, I made statements which I wasn’t sure I wanted to have signed with my public identity.
  528. Ge0rG moparisthebest: I'm sure they could just create a throw away key
  529. flow moparisthebest, anti govt activists shouldn't use e-mail (and probably xmpp) at all for their communication
  530. flow jonas’, hmm, I don't know the exact case, but that is usually a sign to sleep over the mail another day until you send it ;)
  531. jonas’ flow, I had done that step already
  532. valo has left
  533. j.r has left
  534. valo has joined
  535. Daniel has left
  536. Daniel has joined
  537. andrey.g has joined
  538. waqas has joined
  539. jmpman has joined
  540. lskdjf has left
  541. j.r has joined
  542. larma has left
  543. j.r has left
  544. j.r has joined
  545. eevvoor has joined
  546. Daniel has left
  547. larma has joined
  548. lskdjf has joined
  549. COM8 has joined
  550. Chobbes has left
  551. Chobbes has joined
  552. COM8 has left
  553. COM8 has joined
  554. Chobbes has left
  555. COM8 has left
  556. COM8 has joined
  557. COM8 has left
  558. Lance has joined
  559. Daniel has joined
  560. Nekit has joined
  561. arc has left
  562. arc has joined
  563. Lance has left
  564. Chobbes has joined
  565. waqas has left
  566. COM8 has joined
  567. Wojtek has joined
  568. Wojtek has left
  569. COM8 has left
  570. pdurbin has joined
  571. pdurbin has left
  572. lovetox_ has joined
  573. j.r has left
  574. jubalh has joined
  575. pep. Is memberbot offline?
  576. pep. Ah it's fine now
  577. neshtaxmpp has left
  578. j.r has joined
  579. pep. https://wiki.xmpp.org/web/Jonathan_Siegle_Application_2019 Is he around here somewhere? I've never actually heard of him, didn't even know he was running xsf machines
  580. j.r has left
  581. pep. (or maybe it's just that I don't know the realname)
  582. LNJ has left
  583. ralphm No, he's very much in the background these days
  584. lovetox_ has left
  585. Tobias has left
  586. waqas has joined
  587. waqas has left
  588. waqas has joined
  589. wurstsalat has left
  590. wurstsalat has joined
  591. lumi has left
  592. lumi has joined
  593. lumi has left
  594. lumi has joined
  595. eevvoor has left
  596. Chobbes has left
  597. arc has left
  598. arc has joined
  599. Lance has joined
  600. Daniel has left
  601. lovetox has left
  602. matlag has left
  603. matlag has joined
  604. neshtaxmpp has joined
  605. arc has left
  606. arc has joined
  607. goffi has left
  608. pdurbin has joined
  609. jubalh has left
  610. jubalh has joined
  611. wurstsalat has left
  612. pdurbin has left
  613. Daniel has joined
  614. Nekit has left
  615. Daniel has left
  616. jubalh has left
  617. Allo has joined
  618. afrogeek has joined
  619. lumi has left
  620. Daniel has joined
  621. lumi has joined
  622. karoshi has left
  623. mathieui has left
  624. mathieui has joined
  625. debacle has joined
  626. debacle has left
  627. Daniel has left
  628. UsL has left
  629. UsL has joined
  630. lskdjf has left
  631. valo has left
  632. valo has joined
  633. Mikaela has left
  634. Daniel has joined
  635. jcbrand has left
  636. pdurbin has joined