Remix.run Logo
▲ Lonewolf 0.3 – A standalone XMPP server written in Rust(github.com)
154 points by ortuman a day ago | 53 comments
▲nicoco a day ago | parent | next [-]

More implementations of standard protocols is always nice!

I see no reason for me to change from my beloved https://prosody.im/ which is more than lightweight enough already. But having options is nice, and standards only make sense when there are several implementations of them.

▲ortuman a day ago | parent [-]

totally agree, Prosody is great, and in a lot of ways, it's been a real source of inspiration.

▲clivedup a day ago | parent [-]

> it's been a real source of inspiration

Tell me more!

▲rootnod3 a day ago | parent | prev | next [-]

AGENTS.md on a standard protocol. Sorry but no. You either understand the thing or you don’t.

It’s a chat protocol. Something that is supposed to be very private and secure. Seeing an AGENT.md file is a huge turn-off there, sorry to say. Feel free to burn my karma down to oblivion.

▲0x1ch a day ago | parent | next [-]

I'd actually feel pretty safe with a LLM project if spec'd against the protocol documentation as opposed to a rookie's handcoded implementation. If security is the concern, I don't think using random reimplements is very safe to begin with.

▲jayd16 21 hours ago | parent | next [-]

This is a false choice. You can pick neither and for all you know you're picking both.

▲Bender 21 hours ago | parent | prev | next [-]

I'd actually feel pretty safe with a LLM project

Same. I had a couple LLM's rewrite, harden an anonymous image board. It's not popular but exposed to the internet and the Tor network. Not worried at all.

▲rootnod3 a day ago | parent | prev [-]

Unless the model changes and messes half the code base on next iteration. Or Anthropic decides to A/B test your agent.

Or when shit goes sideways and someone actually needs to take a human look at the BF s. I’d rather have the guy who manually with human eyes read the specs.

▲jjice a day ago | parent | prev | next [-]

> Something that is supposed to be very private and secure

Not sure how using an LLM for development of the tool has any affect on this. From a security perspective, I think that would've had more validity a year or two ago, but these days, I'd argue LLMs practice better security in generated code on average than a normal developer.

From the privacy angle, I have no idea how having an AGENTS.md (for development purposes) has any impact on privacy.

I don't want to "burn [your] karma to the ground", I just want to understand this angle, because I'm not sure I see how it applies.

▲tcfhgj 8 hours ago | parent | prev | next [-]

The security comes from E2EE - which happens in the clients not the server

▲013 a day ago | parent | prev [-]

Do you not use AI for coding?

▲solid_fuel a day ago | parent | next [-]

> Do you not use AI for coding?

A lot of people prefer to understand the things they ship. I don't understand why this remains surprising to some.

▲lcnPylGDnU4H9OF 20 hours ago | parent [-]

Indeed, Linus Torvalds is infamous for not caring what he ships (https://news.ycombinator.com/item?id=50111350). That's why he's never been known to go on, let's say impassioned tirades against people who submit bad patches to the linux kernel. After all, it's not like he's ever apologized for inflammatory behavior before (https://news.ycombinator.com/item?id=18000698).

On a more serious note, it's not a dichotomy that one either uses AI to code or they care about what they ship. Some people use AI to code and care what they ship.

▲solid_fuel 12 hours ago | parent | next [-]

Linus, like anyone else, has been wrong about things before, I'm not really interested in the appeal to authority here.

Two simple facts:

    1. Reading & understanding code takes longer than writing it the first time.
    2. Caring about what you ship requires *understanding* what you ship.
Therefore

    Using LLMs to write code cannot save you time, because it takes longer to understand what it has written than it would to write it in the first place.
That leaves simple changes like refactorings as the main use of LLMs in responsible development. Hardly a massive accelerator.
▲simonra 10 hours ago | parent | next [-]

Point 1 is dependent on the individual and often not the case. Especially in cases where the part that takes effort is figuring out the poorly documented syntax/api you’re stuck with for the task (extra fun with new components iterating rapidly and pinning the next version requires new scaffolding), you can read the invocation and the accompanying couple of lines of test code way faster than you’d mould them yourself. Which also translates neatly to point 2 (how efficiently can you in many cases ascertain the outcome of smearing the chosen bits on the cpu with easily digestible tests).

Also the emotionally laden appeal to "responsibility" is weak, as it glosses over the many cases where overspending resources on creating the thing would be the irresponsible choice.

▲solid_fuel 10 hours ago | parent [-]

> Point 1 is dependent on the individual and often not the case.

Not really. To properly understand code you must have a mental model of what it is doing. You need that model whether you are reading or writing the code. It is easier to build that model while writing the code than while simply reading it. To build the model while reading the code requires having the same understanding of the problem and the same approach already in mind, which is almost never the case for any moderately complex problem.

> Especially in cases where the part that takes effort is figuring out the poorly documented syntax/api you’re stuck with for the task

Reading LLM generated code does not avoid this, and in fact it is often worse since LLM comments are terrible at getting to the point.

▲LoganDark 4 hours ago | parent | prev [-]

> I'm not really interested in the appeal to authority here.

Citing Linus isn't an appeal to authority, it's an example. A prominent example, but no one is saying to follow what he does or what he believes.

▲bigstrat2003 18 hours ago | parent | prev [-]

> Some people use AI to code and care what they ship.

The vast, vast majority of people using LLMs to build software don't care at all about quality. I'll grant you Torvalds, but he's very much not the norm (and he's wrong: by the time you review the code the model wrote, you spent as much time reviewing it as you would've writing it, so no time was saved).

▲stephenr 13 hours ago | parent | prev [-]

Believe it or not, some people actually know how to write code, and <shock horror> understand what it fucking does too!

I will never understand software dev's obsession with LLM generated slop. Compare it with the response from the likes of professional authors, artists.

I've said it before I'll say it again: a computer generating shit en masse for you is great if you don't know how to do it yourself, and don't care what the result is.

▲RadiozRadioz a day ago | parent | prev | next [-]

I don't think the server space needs any innovation, current servers are very good.

What we do need are clients that are palateable to the masses. Something on desktop with the polish of Conversations. That's what will really drive adoption from people. I think a big part of Matrix being so popular versus XMPP is that they had a stronger unified client set that looked modern was appealing to many people.

All the widely deployed XMPP servers support a great number of XEPs. The perceived fragmentation of the XMPP ecosystem is mostly a client problem.

▲robwayne 21 hours ago | parent | next [-]

So true. The existing clients are actually the only reason I haven't asked all my friends to join my server. Only the ones who will put up with jank.

Gajim is _okay_ on desktop, but it leaves a LOT to be desired. Everything else feels way too bare-bones to feel comfortable recommending to Discord expats. Fluux Messenger is the closest I've seen, but it's sluggish for me. Maybe that's just Tauri on Linux.

Conversations is good on Android (bit barebones feeling), and I haven't tried out voice with it. IDK what the situation is in the Apple ecosystem.

I really, really wish I had the time to just start building a strong suite of XMPP clients. Every day Discord shoves a new ad in my face I get closer to biting the bullet.

▲garbagecreator 7 hours ago | parent | prev | next [-]

from what I know, developers don't like xmpp to build clients for it, especially more complex ones.

▲KAMSPioneer a day ago | parent | prev [-]

I use Dino on the desktop and the experience has been almost as good as Conversations on mobile. For what it's worth.

▲Muromec a day ago | parent | prev | next [-]

I remember when jabber was cool and there used to be public gateways to icq and what not.

Looks like matrix is in this niche now.

▲toastal a day ago | parent | next [-]

Matrix is way more expensdve to run by its protocol design

▲ad_fontes a day ago | parent [-]

But that's because it does way more. Matrix is the foundation to build a self-hosted Slack-like platform (public/private rooms, audio and video support, threads, e2e encryption, etc). XMPP is basically self-hosted AOL Instant Messenger.

▲tredre3 a day ago | parent | next [-]

> public/private rooms

Fully supported by XMPP: https://xmpp.org/extensions/xep-0045.html

> audio and video support

Supported by some clients (usually over Jingle) but nothing standard AFAIK: https://xmpp.org/about/technology-overview/#jingle

> threads

Rooms can have multiple threads but I don't think they're used the way they are in discord/slack/etc.

> e2e encryption

XMPP has multiple ways. Currently the most widely used by clients is OMEMO https://xmpp.org/extensions/xep-0384.html

> etc

Whatever you can think of, XMPP supports it. Whether enough clients support it for it to be reliable is another question entirely!

(The XEPs I mentioned are considered "core modern" so most clients support them, you can browse through https://docs.modernxmpp.org/client/protocol/ to see what's considered the bare minimum for a full client)

▲ezst a day ago | parent | prev | next [-]

Matrix doesn't do way more. The client features you mention are also widespread in XMPP world, and some clients even do more (look at Movim for instance).

Where matrix does do more is on the protocol level, because it objectively absurdly complex and unnecessarily so. Matrix stands to offer distributed rooms as the one differentiating feature over XMPP. The complexity price to pay for that is substantial. All along, XMPP had fMUCs and distributed servers, because the complexity of clustering could be absorbed by the runtime better, for those who cared/needed it (as proven by the overwhelming success of WhatsApp, a fork of ejabberd, running on top of the Erlang platform)

▲josteink a day ago | parent | prev [-]

> Matrix is the foundation to build a self-hosted Slack-like platform (public/private rooms, audio and video support, threads, e2e encryption, etc)

Yes. And since that’s more than most Matrix users use Matrix for - it’s a design cost brought on to every single user to accommodate the needs of the 0.1%.

The complexity and cost of running a Matrix home-server instance is ridiculous. Should you ever need to do admin work - you’ll be forced to curl your own server using bespoke APIs (or use Claude to do it for you) - because element never thought an admin portal was important to include in a globally federated com-product which just keeps accumulating more and more data.

I use Matrix myself - because what else is there - but let’s be honest about what this thing is.

It’s a giant, over-engineered, under-implemented promise - which fails to deliver the second you push it past the IRC stage.

Btw - I’ve run IRC servers for 20+ years with less total lifetime maintenance than a Matrix home-server has in a single year. Just so many things breaking.

▲Arathorn a day ago | parent [-]

what server are you actually using? the admin portal you’re looking for is https://github.com/element-hq/element-admin.

▲ezst a day ago | parent | prev | next [-]

> Looks like matrix is in this niche now.

Matrix is almost as old now as XMPP was when Matrix first came out, and yet, after all those years and grandiose promises, and loads of venture capital, it doesn't strike me as approaching the problem in a better/sounder manner than the protocol it was set to replace (quite the opposite, actually, Matrix, the protocol and its implementations are worse on almost every metric).

▲zeec123 8 hours ago | parent | prev | next [-]

Matrix still does not allow me to choose a display name for 1to1 conversations. It renames the room for both parties. So I have to live with 10 “Johns” in my contact list.

▲ortuman a day ago | parent | prev | next [-]

i remember that too. XMPP is still alive and kicking, just a lot quieter these days. :)

▲cfluegel a day ago | parent [-]

I switched from Matrix back to XMPP, because it has a lower setup and operating cost. I would have loved to use IRC, but the XMPP client mobile support is a bit better

▲garbagecreator 7 hours ago | parent [-]

what makes IRC still preferable even for its age and primitivity? especially compared to more modern protocols like XMPP and Matrix.

▲NewJazz a day ago | parent | prev [-]

Eh, I've used both a lot and matrix is kinda flailing from my perspective. At least for casual use. If you are a client of Element maybe the experience is better, but with their "next-gen" battery friendly client they've been working on for years, I can't even get notifications working through public unified push servers when using matrix.org. Meaning that just to get started using it I have to run my own matrix or up server.

▲stevefan1999 a day ago | parent | prev | next [-]

Check out Tuwunel too https://github.com/matrix-construct/tuwunel for a Matrix implementation in Rust

▲pkulak a day ago | parent [-]

I'm a big fan of Tuwunel. Run Synapse myself since I've had a server running for about 7 years now, but if I had to start over, Tuwunel all the way.

There's also Continuwuity, which I think is more popular, but I don't fully understand the difference. I think it's a community split issue? As someone who maintains a client, Tuwunel seems to match the spec better, but I'm sure folks have better reasons to pick one over the other.

▲voidwalker0 a day ago | parent | prev | next [-]

Don't really get the hype over Rust... I, personally, like C more. It would be much more smarter to make another server on simple and clean C, rather than using a language that already has a big toolchain and also compiles longer.

▲dadoum 14 hours ago | parent | next [-]

All the stuff trying to implement a protocol are usually better off using a language that has sum types imo, and I think that's a big enough argument to dismiss C.

▲rescbr a day ago | parent | prev | next [-]

Considering that LLMs more often than not forget stuff when writing code, I definitely prefer Rust's automatic memory management system compared to balancing mallocs and frees throughout the code.

You could do RAII in C++, but the compiler won't warn on unsafe code.

▲imtringued 9 hours ago | parent | prev | next [-]

Basically any deterministic process that can look at your code and guarantee a certain useful property is worth it's weight in gold with AI driven software development processes because it significantly reduces the review burden.

Meanwhile the C ecosystem is currently collapsing from AI finding critical RCE vulnerabilities in infrastructure projects written in C.

▲anthk 10 hours ago | parent | prev | next [-]

Hyperbola GNU and C99 half-lover there. C it's fast, but for networking clients/servers Rust it's far more secure, even more with current AI vulns. Under amd64 it should be almost mandatory. Half of Gnome would be far better with gtk4-rs. For legacy i386 users, it's either Go (aerc for email rocks) or Algol68.

▲BadBadJellyBean a day ago | parent | prev [-]

C is a loaded gun pointed at your foot regarding memory management. Rust directs your gun somewhere safer. That is why.

▲garbagecreator 7 hours ago | parent [-]

the programmer holds the gun. C was just made for a more skillful spartan programmer, and that programmer is Ken Thompson.

▲jakswa a day ago | parent | prev | next [-]

I saw some coding harness (OMP i think?) labeling sub-agent comms as "IRC" for the agents to use. XMPP is another one I bet AI would just understand what to use it for. I have been absorbing whether tried-and-true old tech like these are going to revive in the AI era, just because it's "locked in" in the training data. AI is going to keep some of these torches burning forever maybe.

▲dv_dt a day ago | parent | next [-]

I'm keeping an eye on Iroh https://www.iroh.computer/

▲mxuribe a day ago | parent | prev [-]

> ...I have been absorbing whether tried-and-true old tech like these are going to revive in the AI era, just because it's "locked in" in the training data. AI is going to keep some of these torches burning forever maybe.

I agree with you 100%! With so much open source software and know-how material that has been available for AI to train on, it seems inevitable that such tools will be used that much more often...and then as the AI trains on newer content, it will continue a virtuous cycle of open source software that will keep being used, and further improved...and as you stated "burning forever".

▲thenthenthen a day ago | parent | prev | next [-]

Any elaboration on the name?

▲artefactop a day ago | parent | prev | next [-]

Nice work ortuman!!

▲hn_submit 20 hours ago | parent | prev | next [-]

This vibe coded slop is driving me nuts!

▲ortuman a day ago | parent | prev [-]

author here! thanks for the interest. :)

if anyone has questions about the motivation behind building this, feel free to ask.

▲garbagecreator 7 hours ago | parent [-]

why not use the bajillion other servers and use this vibecoded one? why not make a great client with iced for example instead? are you just rewriting in rust using AI for no good reason just to farm attention?