I started a new project: a #libpurple plugin in #rustLang for the cable #p2p chat protocol.
Most of my time on it so far has actually just been figuring out how to tell rust-bindgen how exactly NixOS is an unusual environment.
I just realised the post doesn't include a repo link so here's both the places it goes when I run "git push"
https://tildegit.org/jeremylist/purple-cable
https://codeberg.org/jeremylist/purple-cable
@jeremy_list yooo that is super exciting news!!!!
am i understanding it correctly that this would enable use of cable via e.g. pidgin? super keen to support you however i can!
@cblgh Yes I'll be primarily testing it with pidgin but it should be usable in other libpurple based clients.
At the moment my main question is about how peer discovery works in Cabal: the website makes it seem like the cabal URI was sufficient to find peers to connect to but the cable spec only seems to talk about peers that already have a TCP connection or equivalent.
Next time I'm at my computer I'll try running cabal-tui and having a proper look (electron is either painful or impossible to deal with on all the OSes I have on my hard disk)
@jeremy_list @cblgh sickkkkkkkkkkk and while were here, is there cable golang magic yet?
@decentral1se @jeremy_list d1: afaik currently only this partial implementation by @cryptix from 3 years ago—spec's moved up quite a bit since then tho! https://git.sr.ht/~cryptix/go-exp/tree
(he's also written a spec-compliant erlang impl :> https://git.sr.ht/~cryptix/caberl)
jeremy: you managed to single in on the trickiest part ahah! to cut to the chase, we don't have a blessed solution yet! one of the strongest contenders imo for peer discovery is to use iroh. it will work across & enable many different language implementations of cable to interoperate. since you're using rust you can actually play around with the latest of iroh's efforts in that avenue :)
https://www.iroh.computer/docs
lmk if you wanna try your hand at this i've got some notes on how to approach it for cable :)
@decentral1se @jeremy_list @cryptix as for cabal pre-cable, it uses the hyperswarm dht by holepunch. by performing lookups for basically hash(hash(cabal-key)) we can find other peers who know of a particular cabal and connect to them directly
@cblgh @decentral1se @cryptix I'm pretty sure I'll eventually want to do the Iroh thing unless you settle on a different blessed solution before then. It does seem like I'll need a bit more insight on how to implement it because Iroh seems pretty flexible.
@jeremy_list @decentral1se @cryptix i'll try to gather my current notes on how i think we could make use of iroh and post somewhere easily referenced! :]
btw d1: re golang cable i've been realllly keen on a version of it too :> :>
@jeremy_list @decentral1se @cryptix i've got a little writeup going now, will polish during the week and publish as a blogpost and link yas!