I use libstrophe, cause it fits fine, i dont foresee ever needing "more"
qy
But then, my client isn't exactly "popular"
jubalhhas left
amee2khas left
Kevhas left
Apollohas joined
Martinhas left
Martinhas joined
Mx2has left
Millesimushas joined
Millesimushas left
Kevhas joined
shinjihas joined
Mx2has joined
Millesimushas joined
msavoritiashas joined
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) ✏
> 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?)
Kevhas left
euhas left
euhas joined
TheRealkaranohas left
dezanthas left
Johnsonhas joined
xnamedhas joined
rom1dephas left
dezanthas joined
Yagizаhas left
Johnsonhas left
nikhas left
Apollohas left
rom1dephas joined
Kevhas joined
nikhas joined
Apollohas joined
marc0shas left
marc0shas joined
Kevhas left
marc0shas left
marc0shas joined
Beherithas joined
paulhas left
Samhas left
Samhas joined
Millesimushas left
Kevhas joined
Johnsonhas joined
Millesimushas joined
amee2khas joined
Johnsonhas left
Johnsonhas joined
Apollohas left
Kevhas left
jubalhhas joined
Johnsonhas left
marc0shas left
marc0shas joined
moparisthebest
pep.: Note I also consider "forking a library and rewriting+maintaining it yourself" as "writing your own" lol
dezanthas left
jubalhhas left
jubalhhas joined
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
marc0shas left
marc0shas joined
jubalhhas left
Laurahas left
pep.
moparisthebest: except that sleekxmpp isn't actually maintained anymore and slix is now the one that's being used instead :x
antranigvhas left
Zash
Gotta ensure the goalposts sits just beside Conversations
Stefanhas left
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!
amee2khas left
moparisthebest
Not just conversations, also gajim, Dino, siskin, the other tigase clients
moparisthebest
Poezio and slix ? :)
miruxhas left
miruxhas joined
dezanthas joined
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
Kevhas joined
Zash
Except that's disproved by the undeath of XMPP!
Mx2has left
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
Matrix Traveler (bot)has left
homebeachhas left
homebeachhas joined
Matrix Traveler (bot)has joined
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.
Beherithas left
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 :)
Kevhas left
Zash
Oh right, Converse.js uses strophe.js? Which is used in other things, tho certainly lots of more obscure things
miruxhas left
miruxhas joined
paulhas joined
nikhas left
adx
> https://xmpp.org/software/libraries/
it's kinda ironic that the .net xmpp libs are called matrix
debaclehas left
nikhas joined
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
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
❤️
jubalhhas left
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
Kevhas left
qy
http://strophe.im/libstrophe/doc/0.12.0/ for reference
inkyhas joined
Laurahas joined
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
Apollohas left
adxhas left
jubalhhas joined
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
nikhas left
Mx2has left
amee2khas left
Mx2has joined
inkyhas left
marc0shas left
marc0shas joined
marc0shas left
marc0shas joined
selurveduhas left
Kevhas joined
inkyhas joined
marc0shas left
marc0shas joined
Mx2has left
Laurahas left
Laurahas joined
Laurahas left
Kevhas left
Stefanhas joined
Stefanhas left
Mx2has joined
nikhas joined
Matrix Traveler (bot)has left
homebeachhas left
homebeachhas joined
Matrix Traveler (bot)has joined
dezanthas left
amee2khas joined
rom1dephas left
Samhas left
rom1dephas joined
marc0shas left
marc0shas joined
Samhas joined
dezanthas joined
Samhas left
Kevhas joined
inkyhas left
Samhas joined
nikhas left
amee2khas left
miruxhas left
miruxhas joined
inkyhas joined
Kevhas left
Laurahas joined
spiralhas left
serge90has left
Laurahas left
Alastair Hoggehas left
Alastair Hoggehas joined
Laurahas joined
spiralhas joined
dezanthas left
serge90has joined
Samhas left
debaclehas joined
Samhas joined
Johnsonhas joined
dezanthas joined
inkyhas left
Johnsonhas left
Johnsonhas joined
Johnsonhas left
Kevhas joined
nikhas joined
debaclehas left
debaclehas joined
Stefanhas joined
Stefan
I have started to build a layer on top of libstrophe for XEPs implementations. Unfortunately, it's too much work for me. 🤷
xnamedhas left
colemanhas left
Kevhas left
amee2khas joined
inkyhas joined
Mx2has left
Mx2has joined
adxhas joined
Kevhas joined
pasdesushihas left
Kevhas left
colemanhas joined
pasdesushihas joined
Samhas left
Samhas joined
Mx2has left
dezanthas left
dezanthas joined
nikhas left
Mx2has joined
PapaTutuWawahas joined
euhas left
euhas joined
Kevhas joined
debaclehas left
debaclehas joined
Schimonhas joined
Kevhas left
dezanthas left
raghavgururajanhas left
xnamedhas joined
TheRealkaranohas left
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