5.3 KiB
Parsee - the jealous XMPP<=>Matrix bridge
Parsee is a Matrix<=>XMPP bridge written in C99, with Cytoplasm, similar to Bifrost, but it is NOT a drop-in replacment.
Why?
Naming
The name 'Parsee' is actually a reference to Parsee Mizuhashi, a "bridge princess".
Reasoning (personal to LDA)
I hate Bifrost. I also wanted to dip my toes in XMPP, XML, and bridges a bit. Also, as a sister project to KappaChat, this means that I can integrate Parsee with KappaChat however I wish it to be, which allows me to mess around with a codebase I'm already familiar with. A more "up-to-date" reason may be to have a small, 'Just Werks' bridging solution that is good. Well, I'm trying to do that, at least. Please scream at me if that fails(or just doesn't run on a overclocked Raspberry Pi 4B, which, by the way, was literally where Parsee+XMPP ran for a good chunk of Parsee's start.)
"Why not just use Matrix lol"
"Why not just use XMPP lol"
These two having the same answer should be enough information. Also can I just have fun? One could also argue that both sides need to migrate(onboard) the other side, so a bridge may be a good way to start.
BUILDING
$ make # This generates a 'parsee' executable.
$ cd tools # If you want to build more tools
$ make && cd ..
$ make ayadoc # If you want to build HTML documentation
$ make [PREFIX=(install path)] install # To install Parsee.
If there are any Cytoplasm-related build failures, you may want to check the Makefile to
change a few variables (you can set CYTO_INC
and CYTO_LIB
)
DEPENDENCIES
Parsee tries to avoid dependencies aside from Cytoplasm. Itself optionally depends on a good POSIX implementation, and optionally OpenSSL/LMDB (highly recommended, but you can get away without those).
RUNNING
First off, you may want to configure Parsee by running the config
tool(generally named
parsee-config
in most cases), with the correct flags, like here.
parsee-config \
-d data/ \
-m 'https://media.blow.hole/' \ # You will need to reverse proxy media.blow.hole to point
# to Parsee (port 7642)
-H 'blow.hole' \ # Matrix homeserver name
-J 'parsee.blow.hole' \ # XMPP component host, must be reachable
-s 'A very secure XMPP component secret' \
-p 5347
If everything goes well, it should generate a parsee.json
file.
To start Parsee, run it in the same directory as the parsee.json
with the -g
flag. It should
start properly and produce a parsee.yaml
file, which you can chuck into your Matrix homeserver.
To test if the homeserver can talk to Parsee, try reaching it over HTTP at the port 7642. If it
returns with a landing page, then this side works. You can read it for some more information.
DOCS
Currently, the main sources of documentation are the Ayadocs(for headers) and the manpages
(see etc/man
)
TODOS
- Add libomemo as an optional dependency.
- It depends on more stuff anyways, and I don't want to weigh down the dependency list of Parsee for that.
- Matrix's libolm is deprecated. They replaced it with a Rust version that pulls in way too many dependencies, and that lacks a C binding. We may put in the work of either forking off libolm or making a binding to KappaChat.
- Get rid of the '?'-syntax and use another invalid Matrix char/valid XMPP char ('$'?) for escaped?
- PROPER FUCKING AVATARS XEP-0084 IS THE WORST PIECE OF SHIT KNOWN TO MAN. If any Jabberbros want to look at terrible code/XML and suggest things to have proper avatar support, I'm all in.
- Consider making room/MUC admins/owners be able to plumb instead of it being
restricted to Parsee admins, with permission from MUC owners, too
- Limiting to admins may be a way to "control" consent for both, but this is only if Parsee admins are good-willed, which we must assume such statment to be false by default.
- Look at XEPS-TBD.TXT for XEPs to be done
- Add a MUC server to Parsee, such that it may be able to hook onto it and therefore support XMPP->Matrix bridging.
- Manage MUC DMs in a reasonable manner. Thanks
@freeoffers4u:matrix.org
for being a fucking annoyance and DMing an old Parsee semi-anon user for no clear reason.
DONATING/CONTRIBUTING
If you know things about XMPP or Matrix, yet aren't familiar with C99, or just want to suggest a feature, you may open an issue.
Packaging Parsee (and Cytoplasm) for your specific platform might be a nice to have, to make Parsee easier to setup and manage.
If you want, you may want to give this project some word-of-mouth as advertisment.
(DON'T FOR NOW, THERE IS LITERALLY NOWHERE THIS GOES TO) You may also donate to the LiberaPay, alongside Telodendria's, as it is the project currently maintaining Cytoplasm.
IM chats
Please avoid asking for help/issues here. If you really want, you may just open an issue and link it over it. Basic respect for others/not being an asshat is required. (Also, these are temporary room aliases.)