@tk@sun I tried running some XMPP servers a month ago and they're all still shit and so are the clients. Oh what's that, you want to be able to upload media? Now you need to run a webserver too.
@feld@sun It's really an artifact of XMPP coming about "too early". As in, the conventions we have today didn't exist back then.
Reminds me of why power, water, and sewage infrastructure is all shit in older cities: they got the versions of things from when we were still figuring shit out and continue to live with those versions to this day.
Also applies to the version of "democracy" we have in the US. :blobfoxgooglytrash:
XMPP works about as well as the IM protocols of old (AIM, MSN Messenger, Yahoo! Messenger, etc.). The rest of the world has moved on while XMPP still keeps the old paradigms going. :blobfoxthinkgoogly:
@feld@bikeshed.party@tk@bbs.kawa-kun.com@sun@shitposter.world Putting up a web server for it isn't hard though. I set up an xmpp server here and it's been working out pretty well, already had nginx cuz of fedi and other stuff. Configuring xmpp itself though can be confusing tbf.
@dushman@sun@feld I'm pretty sure that ejabberd (which @glitter and I use) has a built-in Web server just for fire uploads. Didn't take much work to get it working. :blobfoxthinkgoogly:
@dushman@tk@feld@glitter one of the issue I ran into was exactly this, if you already had a webserver some of the things I tried couldn't be proxied so it was like "well I guess I won't use this shit"
@dushman@tk@feld@glitter I don't know how to articulate it but most services should just be one port and one protocol. If you need to orchestrate services to make something work there are better and worse ways to do it.
@sun@glitter@feld@dushman Things are likely only this way for XMPP because it came about before modern conventions, including that one. Remember FTP? :blobfoxgooglymlem:
Prosody is probably my favorite just for being weird Lua software and low resource usage.
I don't like fighting with XEPs and trying to figure out what I need to enable to make things work. And features like marking messages as Read and syncing that between devices requires adding an SQL server to the mix, so now the monster grows more complicated
Just give me an XMPP server with a standard set of features that absolutely cannot be changed and a quality XMPP client that works on iOS. I'll pay $100 for a license to a quality iOS/MacOS XMPP client that can rival Telegram. But it doesn't exist, so nobody is getting my money I guess.
@feld@glitter@dushman@sun XMPP could probably use another major iteration like x86 → x86-64. The former had a bunch of bolt-on instruction sets, which the latter made part of the standard. :blobfox3c:
@tk@glitter@feld@dushman@sun It's because original Jabber was a simple messaging protocol that was never properly extended. Instead, XEPs are a thing. It's the same hell as ActivityPub.
@feld@glitter@tk@dushman@sun It's not iOS so perhaps this is irrelevant but Monocles Chat on Android has given life to our (murderu.us; I am a shill) XMPP MUCs. It's snappy, easy, and just delightful to use. My opinion on the admin side is prosody + caddy for proxying is good, but we use pretty sparse configs, no image hosting, and no signups (byoa), so we haven't yet had to suffer.
@sun@glitter@tk@dushman@3 If you want to do simple things Caddy is great. If you want to do complicated things you're going to be annoyed that the docs suck and nobody has an example of what you're trying to accomplish even though it's probably possible.
It's also plagued by bad defaults. Oh, you want to reverse proxy? What happens when the backend is down? Caddy doesn't serve an error, it serves a blank page with a 200. You literally have to modify every vhost you configure to have a custom handle_errors statement:
Otherwise Caddy is pretty alright. Just don't enable Prometheus Metrics because it causes serious performance issues! (bug #4644 open 2+ years now with no progress)
If you want to do something complicated, just use Nginx. And C is faster than Go anyway.
If you want to do something simple, use Caddy.
If you want to just add TLS and reverse proxy an app, why are you using a whole webserver when you can just use a TLS proxy like Haproxy, Stunnel, Pound, etc?
@sun@3@dushman@glitter@tk Caddy has one redeeming feature: the ability to write custom plugins in Go makes extending it very easy.
I have a module at work that stores all the TLS certificates in an S3 bucket. Any server in the "cluster" will have access to every certificate for every site being served. This is super useful when you can't rely on wildcards. Plus with the way I have it configured any server can initiate a certificate renewal/issuance and any other server can respond. It's magic (by using a dirty hack to forge HTTP-01 ACME responses)