-
qy
I use libstrophe, cause it fits fine, i dont foresee ever needing "more"
-
qy
But then, my client isn't exactly "popular"
-
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 ?✎ -
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) ✏
-
shinji
Nevermind ✏
-
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?)
-
moparisthebest
pep.: Note I also consider "forking a library and rewriting+maintaining it yourself" as "writing your own" lol
-
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?
-
moparisthebest
And is that ever true?
-
Zash
No true popular client uses a library used by more than one client
-
pep.
moparisthebest: except that sleekxmpp isn't actually maintained anymore and slix is now the one that's being used instead :x
-
Zash
Gotta ensure the goalposts sits just beside Conversations
-
pep.
I'd be curious to have usage stats on sleekxmpp/slix
-
pep.
Compared to other libs. Python also being a popular language
-
Zash
Smack is used by tons of things I think, but they don't count!
-
moparisthebest
Not just conversations, also gajim, Dino, siskin, the other tigase clients
-
moparisthebest
Poezio and slix ? :)
-
Zash
Actually, libpurple might count, depending on whether othre clients using it must be considered popular
-
jonas’
is spectrum a client? :-)
-
moparisthebest
Right pidgin and libpurple
-
moparisthebest
Perhaps the rule is more like "only libraries developed in tandem with a client are usable in clients" ?
-
moparisthebest
I didn't make the rule I'm just pointing out there seems to be a pattern
-
Zash
Extend that reasoning to the protocol and you have Matrix
-
Zash
Except that's disproved by the undeath of XMPP!
-
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
-
moparisthebest
I blame GUI work
-
Zash
Isn't it fairly well-known that having components developed by separate teams introduces overhead?
-
pulkomandy
I am perfectly happy with how Gloox is designed and it fits well into my client so far
-
pulkomandy
and that's from a client which was already written with its own custom jabber thing when I started
-
pulkomandy
so it doesn't have to be this way?
-
Zash
Also, that effect that components separation tend to mirror organizational structure.
-
Zash
Small team doing the whole client → single codebase - i.e. no library
-
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.
-
Zash
Don't forget 'historical reasons' 🙂
-
Sam
True.
-
Zash
I mean, I imagine Gajim predates aioxmpp by a number of years
-
Zash
What other Python clients are there?
-
Sam
There aren't many XMPP clients, and they're mostly legacy, so few new things yo reuse newer libraries.
-
Zash
Yaxim uses Smack
-
Zash
And I'm pretty sure Smack is used in tons of things, IIRC from poking around in the android store or something
-
pulkomandy
lack of discoverability? is https://xmpp.org/software/libraries/ not enough?
-
Sam
Yah, while the newer Babbler is rarely used.
-
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.
-
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.
-
Sam
Well, they turned up Smack.
-
pulkomandy
I don't know I typed xmpp library in my search engine and this was one of the first hits
-
Zash
search engines work in mysterious ways
-
Sam
Lucky you. Probably some algorithm nonsense. Or a more specific search wuery
-
pulkomandy
the second result being https://github.com/topics/xmpp-library
-
Sam
Query, even
-
pulkomandy
so that's two lists :)
-
Zash
Oh right, Converse.js uses strophe.js? Which is used in other things, tho certainly lots of more obscure things
-
adx
> https://xmpp.org/software/libraries/ it's kinda ironic that the .net xmpp libs are called matrix
-
Zash
predates matrix.org I think
-
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.
-
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)
-
Zash
observation, there are 88 entries in the data, only 36 are renewed at any point
-
Zash
[the data]: https://github.com/xsf/xmpp.org/blob/master/data/libraries.json
-
Zash
Grouped by renewal year: 52 null 16 2022 9 2021 5 2020 2 2019 2 2018 2 2017
-
wurstsalat
provide more DOAP
-
Zash
anyone up for giving the same treatment to the libraries page as the clients got?
-
wurstsalat
I can do that
-
wurstsalat
(same for server software)
-
Zash
❤️
-
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
-
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
-
qy
because it doesn't inherently have any reusability issues
-
qy
in that sense, i kinda have built my own library on top of it, i just don't export it as a library
-
qy
firstly because it's half baked, but secondly because i don't want to maintain a library
-
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
-
qy
just as an exercise, assuming python-c FFI was no issue whatsoever, imagine conversations rewritten to be built over libstrophe
-
qy
that would not be a problem, coding-wise
-
qy
InputMice: right?
-
qy
er, sorry, java-c
-
qy
wurstsalat; ditto python/gajim, i guess
-
qy
http://strophe.im/libstrophe/doc/0.12.0/ for reference
-
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
-
qy
_shrug_ worked for me
-
pulkomandy
I'm not implying everyone should agree with me, that's how I feel about it, that's all
-
Stefan
I have started to build a layer on top of libstrophe for XEPs implementations. Unfortunately, it's too much work for me. 🤷
-
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