jdev - 2020-10-05

  1. sonny has left

  2. sonny has joined

  3. alex-a-soto has left

  4. alex-a-soto has joined

  5. sonny has left

  6. sonny has joined

  7. sonny has left

  8. sonny has joined

  9. sonny has left

  10. sonny has joined

  11. marmistrz has left

  12. marmistrz has joined

  13. marmistrz has left

  14. marmistrz has joined

  15. Neustradamus has left

  16. sonny has left

  17. sonny has joined

  18. waqas has left

  19. moparisthebest has left

  20. moparisthebest has joined

  21. sonny has left

  22. sonny has joined

  23. sonny has left

  24. sonny has joined

  25. mac has joined

  26. kikuchiyo has left

  27. kikuchiyo has joined

  28. Yagizа has joined

  29. mac has left

  30. sonny has left

  31. sonny has joined

  32. sonny has left

  33. sonny has joined

  34. sonny has left

  35. sonny has joined

  36. Holger has left

  37. sonny has left

  38. sonny has joined

  39. sonny has left

  40. sonny has joined

  41. sonny has left

  42. sonny has joined

  43. sonny has left

  44. sonny has joined

  45. floretta has left

  46. sonny has left

  47. Alex has joined

  48. sonny has joined

  49. sonny has left

  50. sonny has joined

  51. Holger has joined

  52. sonny has left

  53. sonny has joined

  54. sonny has left

  55. sonny has joined

  56. sonny has left

  57. sonny has joined

  58. pulkomandy has left

  59. pulkomandy has joined

  60. sonny has left

  61. sonny has joined

  62. sonny has left

  63. sonny has joined

  64. sonny has left

  65. sonny has joined

  66. sonny has left

  67. sonny has joined

  68. debacle has joined

  69. DebXWoody has joined

  70. test2 has joined

  71. test2 has left

  72. test2 has joined

  73. kikuchiyo has left

  74. kikuchiyo has joined

  75. test2 has left

  76. o2 has left

  77. floretta has joined

  78. debacle has left

  79. jonnj has left

  80. jonnj has joined

  81. larma has joined

  82. kikuchiyo has left

  83. debacle has joined

  84. kikuchiyo has joined

  85. kikuchiyo has left

  86. kikuchiyo has joined

  87. marmistrz has left

  88. marmistrz has joined

  89. chr has joined

  90. chr

    hi guys, can any one help me on best xmpp client to use in react native application?

  91. chr has left

  92. chr has joined

  93. lovetox has joined

  94. kikuchiyo has left

  95. Ge0rG

    chr: there is no ready-made client with UI, but you can use xmpp.js

  96. kikuchiyo has joined

  97. bala has joined

  98. bala

    hi can we add xmpp to laravel 5+?

  99. bala

    or we want to use any nodejs and react js only?

  100. marmistrz

    I might've asked, is there anything on par with xmpp.js for typescript?

  101. Ge0rG

    marmistrz: I'm not aware.

  102. Zash

    https://github.com/legastero/stanza mayhaps

  103. Beherit has left

  104. edhelas

    bala to Laravel ?

  105. Beherit has joined

  106. kikuchiyo has left

  107. goffi has joined

  108. sonny

    (author of xmpp.js here) xmpp.js has the best RN support AFAIK but is very low level compared to stanza https://github.com/legastero/stanza/blob/master/docs/React_Native.md

  109. sonny

    if you're not that familiar with xmpp or need builtin TypeScript I'd recommend stanza

  110. bala has left

  111. sonny

    some people have shared their TypeScript definition for xmpp.js https://github.com/xmppjs/xmpp.js/issues/542

  112. lovetox

    hm is just a localpart a valid JID?

  113. lovetox

    hm my parsing logic says JID("asd")

  114. lovetox

    is a valid jid

  115. lovetox

    what JID parsing rule should prevent that?

  116. Zash

    lovetox: not

  117. lovetox

    ah i think its recognized as domainpart

  118. lovetox

    and IDN2008 allows that?

  119. sonny

    a domain is a valid jid

  120. lovetox

    hm yes seems its a valid domain

  121. lovetox

    yes is know

  122. lovetox

    but i didnt think "asd" is a valid domain

  123. lovetox

    seems i was wrong

  124. jonas’

    why wouldn’t it be?

  125. lovetox

    because a rule exists that says otherwise

  126. Ge0rG

    with the ICANN going wild with gTLDs, you can't sensibly restrict what a domain name is.

  127. Ge0rG

    Also you can have local hostnames without a TLD

  128. Ge0rG

    and things like xmpp.server.local

  129. Zash

    or localhost

  130. Ge0rG

    and IP addresses.

  131. Ge0rG

    IP addresses are legitimate XMPP domains.

  132. flow

    lovetox> but i didnt think "asd" is a valid domain it is a valid DNS name

  133. flow

    it's mapped to "asd." fwiw

  134. bala has joined

  135. bala

    yes edhelas

  136. bala


  137. edhelas

    bala laravel is mostly an async framework, good for rest and stuff like that

  138. edhelas

    if you want to do XMPP stuff in PHP there's not a lot of choices afaik

  139. bala

    okay edhelas thank you very much.

  140. edhelas

    where do you want your XMPP connection to sit ? server side or browser side ?

  141. kikuchiyo has joined

  142. kikuchiyo has left

  143. bala

    edhelas need both

  144. edhelas


  145. bala

    We need to integrate chat feature on our mobile app.

  146. bala

    How can we get started with XMPP?

  147. edhelas

    what is your mobile app architecture ?

  148. bala

    We are going to have iOS and android apps. What do you mean by architecture in specific?

  149. edhelas

    well, so two native apps, with a REST backend ?

  150. bala

    Yes,Its a Rest backend

  151. bala

    the app is an enterprise one, with different types of users.

  152. bala

    We need to enable chat among users.

  153. edhelas

    and the android app and ios app are writen in Java/Kotlin/Swift/ObjectiveC ?

  154. bala

    Yes, exactly. Java for Android and Swift for iOS

  155. edhelas

    well, then I advise you to use native Java and Swift XMPP libraries then :)

  156. edhelas

    you'll have to figure out how to create accounts/authenticate them in sync with your REST accounts ones

  157. alex-a-soto has left

  158. alex-a-soto has joined

  159. bala

    Well.We need to integrate XMPP on our backend, right?

  160. edhelas

    why ?

  161. bala

    Well.We need to integrate XMPP on our backend, right?

  162. edhelas

    is you backend connecting with other XMPP servers ?

  163. edhelas

    what is the goal of XMPP here for you ?

  164. bala

    nope. We need an XMPP server which can be used for iOS and Android apps, right

  165. bala

    For user creation, maintaining chat history and all

  166. bala

    how can we configure our XMPP server?

  167. waqas has joined

  168. edhelas

    so this xmpp server will be standalone, and it's only for those app users to communicate together

  169. edhelas

    then you setup the XMPP server next to your REST app, with ejabberd you can create/configure accounts using their internal REST API directly https://docs.ejabberd.im/developer/ejabberd-api/

  170. edhelas

    and you add a native XMPP lib in your mobile apps to connect to those accounts

  171. edhelas

    the only big thing I see is to figure out how to authenticate properly using server generated accounts

  172. bala

    okay thank you very much edhelas

  173. sonny

    on the backend, you can use ejabberd with https://github.com/processone/ejabberd-contrib/tree/master/ejabberd_auth_http or an other xmpp server supporting some kind of similar integration

  174. alex-a-soto has left

  175. edhelas

    sonny 👍

  176. alex-a-soto has joined

  177. sonny

    edhelas 👍

  178. DebXWoody has left

  179. DebXWoody has joined

  180. kikuchiyo has joined

  181. kikuchiyo has left

  182. kikuchiyo has joined

  183. kikuchiyo has left

  184. DebXWoody has left

  185. kikuchiyo has joined

  186. kikuchiyo has left

  187. Yagizа has left

  188. chr has left

  189. Guus has left

  190. Guus has joined

  191. larma has left

  192. DebXWoody has joined

  193. lovetox

    so domain.org is a bare jid?

  194. jonas’

    lovetox, yes

  195. jonas’

    domain.org/foo is a full-jid

  196. lovetox

    ok do we have a name for localpart@domainpart ?

  197. jonas’

    that’s also a bare jid

  198. lovetox

    yeah, but library wise, if i want to test for localpart@domainpart, what would i call that method

  199. lovetox

    is_bare_with_domain sounds a bit long

  200. jonas’


  201. jonas’

    (what do you need that test for, anyway?)

  202. Zash

    And http://www.example.com/ is a horror (host="xmpp:",resource="/www.example.com/")

  203. lovetox

    that does not exclude that it has a resource part..

  204. Zash

    And http://www.example.com/ is a horror (host="http:",resource="/www.example.com/")

  205. lovetox

    sometimes for example for bookmarks

  206. jonas’

    what do bookmarks have to do with that?

  207. lovetox

    it makes no sense if a jid as a resource, or is only domainpart

  208. lovetox

    a bookmark should be localpart@domainpart

  209. jonas’


  210. lovetox

    because thats how it is, only domain can not be a room

  211. lovetox

    and resource describes a certain resource

  212. jonas’

    that’s wrong

  213. jonas’

    a domain can be a room

  214. Zash

    XEP-0045 forbids it IIRC?

  215. lovetox

    Each room is identified as a "room JID" <room@service>

  216. jonas’

    either way, I don’t think it’s the job of clients to enforce that, unless it makes things more complicated to *not* enforce it

  217. jonas’

    and I think in this case, it might be more complicated to enforce it that not enforcing it

  218. lovetox

    as i said i was talking from a library standpoint

  219. lovetox

    i just wanted a name for a property that reflects that this

  220. jonas’

    I was curious and asking because I haven’t had use for such a property yet

  221. jonas’

    I think I’d just use jid.is_bare and not jid.has_localpart or something like that

  222. jonas’

    it seems like a rare use case

  223. Zash

    is_bare := not has_resource ?

  224. lovetox

    yeah, thats what i was using, just was curious if there is a technical name for that

  225. Zash

    or .. :-?

  226. lovetox

    but it seem it is not

  227. jonas’

    Zash, yes

  228. flow

    lovetox, here are the terms that jxmpp uses: https://github.com/igniterealtime/jxmpp#jxmpp-jid beware, you may not like them

  229. flow

    http://jxmpp.org/releases/1.0.1/javadoc/org/jxmpp/jid/Jid.html has some examples

  230. Wojtek has joined

  231. lovetox

    thanks flow

  232. pep.

    jid-rs uses only FullJid and BareJid (and Jid { Full(FullJid), Bare(BareJid) })

  233. BRAYAN LUIS has joined

  234. BRAYAN LUIS has left

  235. flow

    pep., then your API methods can't express that they require a full jid with localpart as argument, right?

  236. pep.

    Not for the moment no, because we haven't found a place where it's necessary yet

  237. pep.

    But also the xmpp library on top isn't really much used..

  238. flow

    > because we haven't found a place where it's necessary yet MUC room addresses?

  239. pep.

    I don't think it's necessary there

  240. pep.

    I don't really want to enforce this weird restriction

  241. flow

    (that was bascially one the motivation behind jxmpp's jid types)

  242. flow

    (that was bascially one major motivation behind jxmpp's jid types)

  243. flow

    which weird restriction?

  244. flow


  245. pep.

    flow, I'm not sure why there should be a MUC component on top of a room, for example. You can disco the room itself and be just fine

  246. pep.

    (that is, not sure why you'd require a localpart to a room)

  247. jonas’

    I also think that semantically, there is little difference between foo@bar and bar

  248. jonas’

    not enough to enforce it on the type system level anyways

  249. pep.


  250. pep.

    When I got xmpp.rs I wanted to have both chat@xmpp.rs (MUC room) and bot@xmpp.rs (user account, and other accounts), because it's cool and I don't see why I shouldn't be allowed to. And while it's technically possible I've seen pain around chat@dino.im and.. :x

  251. pep.

    Technically it's only really an issue for me operator. there's no issue as long as I control what gets into this namespace (xmpp.rs)

  252. pep.

    Note that this is not exactly the issue described above, but it's the kind of things that people are afraid to do because it doesn't fit exactly what the protocol mandates for weird reasons

  253. jonas’

    well, there is a reason why that doesn’t work

  254. jonas’

    or why it’s painful

  255. jonas’

    it boils down to "how should clients discover rooms"

  256. jonas’

    the written-down protocol is that it queries via disco#items and disco#info until it finds a MUC service associated with a domain, and then it uses disco#items to find rooms

  257. jonas’

    subdomains are cheap, hence there’s no problem with that

  258. pep.

    "it boils down to "how should clients discover rooms" < that feels like UX straight from the 90s

  259. pep.

    with /list

  260. jonas’

    all of MUC is UX from the 90ies

  261. pep.

    Yeah, so by nowadays' standards some things are weird :)

  262. jonas’

    fair enough

  263. pep.

    It's not like xmpp.rs was going to host real users anyway, mostly utilities or contributors. You don't end up on chat@xmpp.rs because you found it with /list :p

  264. pep.

    Same for dino.im really

  265. jonas’

    "not real users […], mostly […] contributors"

  266. pep.

    Welll, only a few select, not like, users you want to give proper care to because they don't understand anything to the protocol :)

  267. Zash

    Will clients refuse to talk to user@host if host advertises the muc feature?

  268. pep.

    Welll, only a few select, not like, users you want to give proper care to because they don't understand anything about the protocol :)

  269. pep.

    jonas’, we all know developers are not real users

  270. jonas’

    Zash, I hear that poezio does strange things w.r.t. muc feature

  271. pep.

    Look at their clients

  272. jonas’

    pep., hah

  273. pep.

    hmm I think the thing has been fixed in poezio(?)

  274. pep.

    Ah wait, no I don't remember anything about this

  275. pep.

    There was stuff related to carbons and muc lately but that's about it

  276. pep.

    (because detecting PMs is meh)

  277. jonas’

    yeah, that was based on disco#info on the domain (incorrectly)

  278. pep.


  279. pep.

    Exactly this :)

  280. pep.

    The one place I'd see requiring a MUC service is when a client wants to create new rooms

  281. Wojtek

    quick question - should we be concerned with lenght of the stanza id? from what I gather schema doesn't limit it...

  282. pep.

    I think it's profanity that has immensely long IDs. Some kind of HMAC iirc

  283. jonas’

    Wojtek, there is no specified limit beyond the limit of th eoverall stanza

  284. jonas’

    I suggest to limit it to 1023 utf-8 bytes (or codepoints, if that’s easier for you) if you have to place a limit

  285. jonas’

    it’s the same limit as resource and localpart have

  286. Wojtek

    yeah, but that's not specified, and someone may decide well I wannna have longer IDs. would have been nice to have this in the specs IMHO

  287. Wojtek

    > it’s the same limit as resource and localpart have yeah, that seems reasonable

  288. pep.

    Which spec?

  289. pep.


  290. jonas’

    Wojtek, yeah, it would be nice to have a limit written down in '6120

  291. Wojtek


  292. o2 has joined

  293. Yagizа has joined

  294. lovetox has left

  295. sonny has left

  296. sonny has joined

  297. lovetox has joined

  298. marmistrz

    > https://github.com/legastero/stanza mayhaps thanks!

  299. debacle has left

  300. lovetox has left

  301. lovetox has joined

  302. xecks has left

  303. xecks has joined

  304. Wojtek has left

  305. shachontal has joined

  306. sonny has left

  307. sonny has joined

  308. lovetox has left

  309. Wojtek has joined

  310. debacle has joined

  311. flow

    > When I got xmpp.rs I wanted to have both chat@xmpp.rs (MUC room) and bot@xmpp.rs (user account, and other accounts) I also like that, but I don't see how this is related to a MUC address being a bare jid with a localpart

  312. flow

    Wojtek> yeah, but that's not specified, and someone may decide well I wannna have longer IDs. Then you should be worried about pub sub item IDs and (pubsub/xep30/…) node name length too

  313. Zash

    Just say 1023 octets

  314. Zash

    like JID parts

  315. flow

    Zash, note sure that simply saying it helps if we don't specify it

  316. Zash

    Someone once mentioned this issue wrt 'node' in disco and/or pubsub

  317. flow

    we could start with recommending size limits for xep359 IDs, pubsub item IDs, and node names

  318. flow

    we could, at least, start with recommending size limits for xep359 IDs, pubsub item IDs, and node names

  319. Zash

    and lack of normalization specs

  320. flow

    a lack of unicode normalization specs?

  321. Zash


  322. flow

    aren't there like, a dozen of them

  323. kikuchiyo has joined

  324. lovetox has joined

  325. Zash

    I mean, for stanza ids, nodes etc

  326. kikuchiyo has left

  327. Beherit has left

  328. flow

    apply NFC and ensure that length in codepoints is less than X?

  329. kikuchiyo has joined

  330. kikuchiyo has left

  331. Zash

    for example

  332. flow

    leaves the question what X sould be

  333. Zash

    1023 octets!

  334. flow

    is there an argument for less?

  335. kikuchiyo has joined

  336. flow

    where do 1023 come from anyway?

  337. kikuchiyo has left

  338. Zash

    The parts of a JID

  339. flow

    (i know it's in the jid rfc, but where does that come from?)

  340. Zash


  341. Zash

    historical raisins?

  342. flow

    so cargo cult at its finest

  343. kikuchiyo has joined

  344. Zash

    I prefer to call it Consistency

  345. kikuchiyo has left

  346. Zash

    You could also argue that the limit should be 37

  347. flow

    sure, and if nobody comes up with an argument that the limit should be different, i'd also go with conistency

  348. Zash

    which iirc is the size of the textual form of an UUID

  349. flow

    but I could imagine that database people may have a strong feeling about the length of the primary key type

  350. Zash

    In the case of MySQL it's 20

  351. kikuchiyo has joined

  352. kikuchiyo has left

  353. Zash

    Or 700 something.

  354. flow

    37 seems to low, at least for node names and item IDs, as these are sometimes used to carry a little bit of text with them

  355. Zash

    are node names meant to be human-readable?

  356. Beherit has joined

  357. Zash

    If so then fun concerns apply

  358. flow

    duno, but there where at least two people who worked on a filesystem in pubsub

  359. flow

    so it does not appear to be far fetched that node names are user entered strings

  360. flow

    in some use-cases

  361. kikuchiyo has joined

  362. flow

    and we don't want to be the DOS of instant messaging

  363. flow

    cmon, no one?

  364. Zash

    Filenames on Linux are limited to 256 octets

  365. Zash

    ... and can contain arbitrary binary except NUL and '/'

  366. bala has left

  367. sonny has left

  368. sonny has joined

  369. Zash

    Or just ignore the whole thing and if you need to store arbitrary-sized IDs in your database you jam them trough a hash function

  370. flow

    sure, but meh

  371. sonny has left

  372. sonny has joined

  373. Yagizа has left

  374. larma has joined

  375. jonas’

    effectively what jabbercat does

  376. jonas’

    because of the aforementioned limit

  377. sonny has left

  378. sonny has joined

  379. test2 has joined

  380. larma has left

  381. larma has joined

  382. DebXWoody has left

  383. sonny has left

  384. mac has joined

  385. shachontal has left

  386. mac has left

  387. shachontal has joined

  388. mac has joined

  389. lovetox has left

  390. sonny has joined

  391. mac has left

  392. kikuchiyo has left

  393. sonny has left

  394. kikuchiyo has joined

  395. sonny has joined

  396. sonny has left

  397. sonny has joined

  398. shachontal has left

  399. sonny has left

  400. kikuchiyo has left

  401. kikuchiyo has joined

  402. Wojtek has left

  403. sonny has joined

  404. sonny has left

  405. paul has left

  406. goffi has left

  407. sonny has joined

  408. sonny has left

  409. SouL has left

  410. paul has joined

  411. test2 has left

  412. debacle has left

  413. kikuchiyo has left

  414. kikuchiyo has joined

  415. sonny has joined