jdev - 2022-06-11


  1. qy

    I use libstrophe, cause it fits fine, i dont foresee ever needing "more"

  2. qy

    But then, my client isn't exactly "popular"

  3. shinji

    Hi ! I'm trying to grasp the concept of xmpp authentication and specifically SCRAM-SHA-1. On the wiki there's "The client prepends the GS2 header ("n,,") to the initialMessage and base64-encodes the result." with initialMessage being ""n=" .. username .. ",r=" .. clientNonce". When you decode the base64 generated (biwsbj1yb21lbyxyPTZkNDQyYjVkOWU1MWE3NDBmMzY5ZTNkY2VjZjMxNzhl) it gives you "n,,n=romeo,rm442b5d9e51a740f369e3dcecf3178e". Isnt the equal sign missing after the r letter here ?

  4. shinji

    Hi ! I'm trying to grasp the concept of xmpp authentication and specifically SCRAM-SHA-1. On the wiki there's "The client prepends the GS2 header ("n,,") to the initialMessage and base64-encodes the result." with initialMessage being ""n=" .. username .. ",r=" .. clientNonce". When you decode the base64 generated (biwsbj1yb21lbyxyPTZkNDQyYjVkOWU1MWE3NDBmMzY5ZTNkY2VjZjMxNzhl) it gives you "n,,n=romeo,rm442b5d9e51a740f369e3dcecf3178e". Isnt the equal sign missing after the r letter here ? Here is the link https://wiki.xmpp.org/web/SASL_Authentication_and_SCRAM#SCRAM-SHA-1(-PLUS)

  5. shinji

    Nevermind

  6. pep.

    > moparisthebest> virtually no popular XMPP client uses a common XMPP library, they all wrote their own, take from that what you will Ok it's not popular (:p) but sleekxmpp was a thing before poezio (right?)

  7. moparisthebest

    pep.: Note I also consider "forking a library and rewriting+maintaining it yourself" as "writing your own" lol

  8. pulkomandy

    It doesn't matter how the lib came to be and how it's maintained, the question is, is it used by two or more clients?

  9. moparisthebest

    And is that ever true?

  10. Zash

    No true popular client uses a library used by more than one client

  11. pep.

    moparisthebest: except that sleekxmpp isn't actually maintained anymore and slix is now the one that's being used instead :x

  12. Zash

    Gotta ensure the goalposts sits just beside Conversations

  13. pep.

    I'd be curious to have usage stats on sleekxmpp/slix

  14. pep.

    Compared to other libs. Python also being a popular language

  15. Zash

    Smack is used by tons of things I think, but they don't count!

  16. moparisthebest

    Not just conversations, also gajim, Dino, siskin, the other tigase clients

  17. moparisthebest

    Poezio and slix ? :)

  18. Zash

    Actually, libpurple might count, depending on whether othre clients using it must be considered popular

  19. jonas’

    is spectrum a client? :-)

  20. moparisthebest

    Right pidgin and libpurple

  21. moparisthebest

    Perhaps the rule is more like "only libraries developed in tandem with a client are usable in clients" ?

  22. moparisthebest

    I didn't make the rule I'm just pointing out there seems to be a pattern

  23. Zash

    Extend that reasoning to the protocol and you have Matrix

  24. Zash

    Except that's disproved by the undeath of XMPP!

  25. moparisthebest

    I don't think you can extend it to the protocol, XMPP libraries are very useful for bots and servers and such, just seemingly not clients

  26. moparisthebest

    I blame GUI work

  27. Zash

    Isn't it fairly well-known that having components developed by separate teams introduces overhead?

  28. pulkomandy

    I am perfectly happy with how Gloox is designed and it fits well into my client so far

  29. pulkomandy

    and that's from a client which was already written with its own custom jabber thing when I started

  30. pulkomandy

    so it doesn't have to be this way?

  31. Zash

    Also, that effect that components separation tend to mirror organizational structure.

  32. Zash

    Small team doing the whole client → single codebase - i.e. no library

  33. Sam

    I don't know that I buy all this. I don't know why no one reuses libraries, but some (not all) of them are perfectly suited to GUI work. aioxmpp, for example, is pretty well designed and could be used in clients much easier than building your own and with less overhead. I like to think Mellium could be too (but no one but me has done it, so I can't speak to that). I suspect it's a mix of NIH, lack of discover ability of the libraries, and bad documentation.

  34. Zash

    Don't forget 'historical reasons' 🙂

  35. Sam

    True.

  36. Zash

    I mean, I imagine Gajim predates aioxmpp by a number of years

  37. Zash

    What other Python clients are there?

  38. Sam

    There aren't many XMPP clients, and they're mostly legacy, so few new things yo reuse newer libraries.

  39. Zash

    Yaxim uses Smack

  40. Zash

    And I'm pretty sure Smack is used in tons of things, IIRC from poking around in the android store or something

  41. pulkomandy

    lack of discoverability? is https://xmpp.org/software/libraries/ not enough?

  42. Sam

    Yah, while the newer Babbler is rarely used.

  43. Sam

    pulkomandy: not really. I default to search and that page never shows up. Not our fault, and it's good that it exists, but one list doesn't make things better.

  44. Sam

    I tried to find the name of babbler the other day and it took me ages, various combinations of "java XMPP lib" didn't turn up much.

  45. Sam

    Well, they turned up Smack.

  46. pulkomandy

    I don't know I typed xmpp library in my search engine and this was one of the first hits

  47. Zash

    search engines work in mysterious ways

  48. Sam

    Lucky you. Probably some algorithm nonsense. Or a more specific search wuery

  49. pulkomandy

    the second result being https://github.com/topics/xmpp-library

  50. Sam

    Query, even

  51. pulkomandy

    so that's two lists :)

  52. Zash

    Oh right, Converse.js uses strophe.js? Which is used in other things, tho certainly lots of more obscure things

  53. adx

    > https://xmpp.org/software/libraries/ it's kinda ironic that the .net xmpp libs are called matrix

  54. Zash

    predates matrix.org I think

  55. Sam

    That list appears to be extremely incomplete too, so even if you did find that at the top of your search I'm not sure how helpful it would be.

  56. Sam

    I mean, again, better than nothing, just not likely something I'd click through to while looking for something specific (and if I did, it doesn't give many options)

  57. Zash

    observation, there are 88 entries in the data, only 36 are renewed at any point

  58. Zash

    [the data]: https://github.com/xsf/xmpp.org/blob/master/data/libraries.json

  59. Zash

    Grouped by renewal year: 52 null 16 2022 9 2021 5 2020 2 2019 2 2018 2 2017

  60. wurstsalat

    provide more DOAP

  61. Zash

    anyone up for giving the same treatment to the libraries page as the clients got?

  62. wurstsalat

    I can do that

  63. wurstsalat

    (same for server software)

  64. Zash

    ❤️

  65. qy

    (w.r.t library discussion) see, my logic is, libstrophe is minimalist enough, that it allows building upon it to provide whatever functionality you need

  66. qy

    by that logic, if more people were like me and wanted to dev in C, C++, vala, zig, rust[c], whatver, libstrophe would be really popular

  67. qy

    because it doesn't inherently have any reusability issues

  68. qy

    in that sense, i kinda have built my own library on top of it, i just don't export it as a library

  69. qy

    firstly because it's half baked, but secondly because i don't want to maintain a library

  70. qy

    i imagine that's the solution though, having transport-level libraries like libstrophe, that things can then build on and provide language-native ergonomic bindings to

  71. qy

    just as an exercise, assuming python-c FFI was no issue whatsoever, imagine conversations rewritten to be built over libstrophe

  72. qy

    that would not be a problem, coding-wise

  73. qy

    InputMice: right?

  74. qy

    er, sorry, java-c

  75. qy

    wurstsalat; ditto python/gajim, i guess

  76. qy

    http://strophe.im/libstrophe/doc/0.12.0/ for reference

  77. pulkomandy

    gloox has interface higher level than this, but has "extension points" where you can easily add your own stuff. I think the API is quite well designed. I wouldn't want to write a client on top of something very lowlevel like libstrophe and have to re-figure out all XEPs myself

  78. qy

    _shrug_ worked for me

  79. pulkomandy

    I'm not implying everyone should agree with me, that's how I feel about it, that's all

  80. Stefan

    I have started to build a layer on top of libstrophe for XEPs implementations. Unfortunately, it's too much work for me. 🤷

  81. Sam

    This is (more or less) the direction we took with Mellium, except that we also provide the higher level features. But if you don't like our implementation you can only use the low level stuff and write your own extras