Cloning discord is easy. Convincing everyone in a particular circle to move to a new solution is the challenge. You have to force a partition in the social network unless everyone in your group is happy to run both applications side by side (they won't be).
I was there when teamspeak was forced out by the demands of the group. There was no fighting it. My individual ideological preferences cannot defeat those of a collective. These people just want to play games. They don't want to take up arms in my weird nerd battle against COTS software, closed platforms or buggy applications.
Our community is actively looking for an alternative that we can control. I'd love for an open source, self-hosted clone to pop up that keeps the user experience of Discord, but there is no other. Having a mobile app is a big blocker, and I suspect it will get harder with how Google is locking down the play store.
Discord is a silo of disconnected groups. That makes it easier to switch.
There is a big incentive in switching, privacy. These companies have started using AI to call the FBI on people when they take private conversations and jokes out of context. As more people see stories of people being arrested for PMs that were never public because an AI read them and reported them to the FBI, they will realize they need to be protect themselves. If there was no open alternative, I would at the very least look at services that exist entirely in europe.
The website says it's released under a permissive open source license, but it doesn't say what that license is. And when you look at the GitHub repo[1] there is no LICENSE file and no mention of license.
Sorry about that, it is under GNU Affero General Public License v3.0
I had a friend make the landing page website at strafe.chat and I believe MIT was a placeholder by them and was never changed. I will make sure to change it and add the license to all of the repos.
Is anyone tracking all these open source Discord clones? I ask because I have seen about a dozen of them advertised by Youtube influencers. New chat clients seem to be showing up almost daily. I think it would be interesting to have a table that shows features, OS/phone support, E2EE, federation, scale how many clients per server per resources, etc...
As bob1029 said, making apps is easy especially now but getting friend groups to move is the real challenge so I think a column in the table should include a score for how easy it is to import Discord server history, chat history, invite friends and so on. I think there would have to be next to no friction or risks. If self hosted then backups would have to be encrypted and automated so that the servers can be treated as mostly ephemeral. Operating and maintaining Discord takes a rather large team so these open source alternatives would have to be able to show they have automated most tasks in a secure and fault tolerant manor that is hard to get wrong.
Beside the point: I still don't get why anyone wants to keep conversation history.
Are we reliving particularly nice interactions with loved ones?
Photos and home videos I totally get. But even going back a day in a conversation history can be a significant chore if I didn't 'save the link' or remember a date or whatever. I couldn't imagine ever trawling through all that text unless by necessity.
The argument changes slightly if someone wants to recreate a friend by throwing conversation into the model or context or whatever, but I find that creepy and it's a relatively new thing.
Maybe I'm just sentimental via pictures. I love conversing in text, but I'm just not sentimental for it in any way. Other people are allowed to be, but I don't understand it.
Use case: my partner and I have a discord server just for us. That's something I'd like to keep a backup of for the future. Both for day to day communication that's searchable (what was this logistics thing?) and for nostalgia (where did we do that silly date? Can we do it again?)
And yes, a place for pictures between friends is handy, even if in running immich.
I find Discord's search functionality to be severely limited compared to that of other platforms (for example, Slack). It's slow, the search results are relegated to a tiny sidebar, date filters are clunky, you can't search across all DMs at once, and perhaps worst of all, it's severely rate limited: After clicking through somewhere around 25 pages, it will fail and also force you to re-send the search query, and then navigate back to whatever page you were on.
fwiw I occasionally like to read back through chat histories from months/years prior. I brings me right back to that time and reminds me of things I thought I'd forgotten. It's like the nostalgia from an old scent.
I still don't get why anyone wants to keep conversation history.
I personally agree but I think you and I are outliers in that most feedback I get is people want scroll-back history so they can see what they missed when they were offline. My preference is to treat chat as ephemeral and instead have my own forums, chan servers, sftp servers for longer term storage people can link to but it is rare I meet anyone that operates the same way. There are web front-ends to IRC for example but the moment someone ventures down that path the cost to scale up the chat server climbs exponentially due to the bloated web framework, message queues, database, etc... not that most people would really need to scale up for their small circles of friends.
so they can see what they missed when they were offline.
Can't think of a worse chore. I'd rather do laundry, it's at least productive. Life can go on without our presence occasionally. That's "normal". It's not possible, nor healthy to try, to be everywhere all at once. I think I may have had notions in that direction when I was younger, but living life won instead. And for that I'm thankful.
Having ranted all that, here I am conversing on HN at 1am :\
I'm sorry you think interacting with people is a chore, but the primary way I interact with most of my friends is online through Discord. While I don't respond to each and every message, I read them, and look forward to doing so because they're my friends.
Not what I said, more that I've just got too much to do (not a complaint, it's by conscious choice) so if I'm not presently online for the conversation, and I have to go to the effort of scrolling backwards through a conversation it's just never going to be worth it. If there's anything worthwhile it'll come up again. And if it doesn't, I'll be none the wiser anyway, which is fine with me - there is all sorts of awesomeness going on in the world that I'm not part of.
When we catch up in person the awesome stuff generally gets relived, which is good enough for me.
I think for Discord the case that if you join a hobby / gaming etc channel, with a particular interest question in mind, you may want to look for answers in the history.
Also some people do go back and reread texts from personal history for sentimental reasons. I don’t, but I know those who do
Why would you use Olm/Megolm for your chat protocol? Even Matrix doesn't want to be using it anymore (they're in theory planning a transition to IETF MLS, last I checked). Group E2E is incredibly hard to get right, not just because of the underlying cryptographic constructions, but because all the metadata and signaling that rides on top of and alongside the group encrypted messaging layer also influences key distribution.
If you're literally just doing a front end to Matrix, I get why you have to use the current Matrix protocol. But if you're doing something that isn't Matrix, you should avoid Olm.
The thing with MLS is that it basically requires a central server for ordering the commits. For Matrix' interpretation of federation, this doesn't really work because a group isn't really owned by a server, it is a DAG of events, which, as is the nature of DAGs, does not have the total order needed for MLS commit ordering.
So either you introduce a central party that does ordering, or you do BFT-style consensus, or you try to get some idea of branching an merging of group states into MLS, which isn't really possible with what RFC 9420 offers.
My impression also is that the Matrix community really loves their DAGs and the group state management that they built, and from an MLS perspective it makes more sense to store that in the group context (either as extensions or as components as defined in draft-ietf-mls-extensions-10).
There is draft-xue-mls-decentralized which proposes two ways to MLS offer some foundations, one of which (IMO) only solves half the problem and the other (IMO) doesn't make sense.
Roughly speaking, the concrete disadvantages of Olm and Megolm are:
* In the current Matrix implementation, server tells the clients what the group membership is, so a server could spoof an invite to add a malicious user to a room and you'd have to rely on social mechanisms to spot it.
* There's no way to force everyone to rotate the sender key at the same time.
* On the plus side, it decentralises relatively well.
The concrete disadvantages of MLS are:
* Vanilla MLS needs a centralised sequencing function for changing group membership.
* The key bundles are much larger.
* On the plus side, only clients within the group can add new users/devices, and everyone in a given epoch shares the same group secret, so when someone rotates everyone has to rotate to participate in the new epoch.
Now, the server-controlled membership problem can be solved with Olm/Megolm if you instead have the client control the membership, using Matrix itself to define which users are authorised to be in the room, by running the Matrix DAG merge resolution on the client as well as the server. I did this a few weeks ago (in prep for The Matrix Conference next week) to show viability; it works, and has the advantage that you don't have to blow up the whole crypto implementation.
On the other hand, MLS can also be made to decentralise. DiMLS (draft-xue-mls-decentralized) isn't the only option here; DeMLS is the one we've been working with (using the Phoenix DeMLS OpenMLS fork) on the Matrix side - and works by letting MLS epochs fork and then merge again later, using puncturable functions to avoid undermining forward secrecy. This is a much bigger change; we experimented with it a few months back; details here: https://www.youtube.com/watch?v=jc7yfec3iIQ. It's promising, it works, but is much more complex and experimental.
So, TL;DR: it's possible to use olm/megolm securely (even if it's had a mixed record); I doubt strafe is doing fancy client-controlled group membership though. Separately, MLS can be used too, but it is way more complex and has its own complications. On the Matrix side we're still pursuing both (and finally making some progress, although it's a very slow burn).
I've been exploring Chatto as a self-hosted chat UI in my homelab for interfacing with durable agents and it works pretty well so far, although the API is (by the author's own admission) not fully stable yet.
Yes I am running it now, it is pretty nice though custom, not related to the original developer, mobile application, have few annoying problems. I.e. it does not allow you to connect to your own server right away. It does not have notifications working on stable version. I had to ask an agent to do some changes first before it was usable.
On the other hand Strafe does not have it at all, so it is not really a competition.
I would like one like this.. (Slack/Discord alternative) with a native iOS app, realtime push notifications, and self-hosted backend such that my AI assistant can be a “user” on it and participate in conversations like a team member(who has a lot of knowledge at their finger tips).
I can’t find any such free thing that has a native iOS app.
Buzz was one I looked at but it was way too complicated with Nostr and a bunch of things that are way too much for what I intend to use it for… :-(
This - Strafe, Chatto, Stoat all fall apart in the native iOS app requirement..
Linked. Also no screenshots, no details. Just a long black page with no substance. Github link form the hamburger menu doesn't work so it's a.... very premature submission at the very least.
Another Discord alternative that still lacks an iOS app. I personally don’t mind but if I am to switch my entire friend group to an alternative, native apps on mobile is a fundamental requirement.
Federation is annoying. Why does every Discord alternative insist that your whole interface, including the "server" list, is dedicated to one instance, as targetable and inconvenient as that is?
Each sidebar "server" entry should be an ACTUAL SERVER, with a unique username and connection. Like Mumble, Ventrilo, and Teamspeak. Federation is a strictly worse model than what they got right two decades ago.
And "discord" means "disagreement", "lack of harmony", "arguments" in English. Even weirder name for a chat application in an even more commonly used language.
"Slack" associates pretty strongly with "slack off" (get no work done) too, so that one's also strange.
I figured Slack referred to slack in task time estimation i.e. the amount of extra time allowed in a task. Collaborating on Slack would count towards that time.
The only explanation I can offer for “Slack” is that its founders and top brass have been adherents of the “parody religion” Church of the SubGenius, and have successfully interposed themselves into the everyday business machinations of a wide swath of Western businesses.
Meanwhile, “Discord” wouldn’t surprise me if it were a product of the Discordians themselves, a similarly disorganized “parody religion”.
I read it directly from the founder and former CEO, who included a screenshot from November 2012, about 9 months before the August 2013 release, of him using that acronym as a code name. https://xxcancel.com/stewart/status/780906639301812225
Can you elaborate on why E2E encryption is not "appropriate for childrens' messaging"? Does this imply that we should be able to surveil what children say to each other, or..?
yes, because most HNers are already old so none of that applies to them, thus it's either no internet, no phone or you have to have all kinds of spyware watching what your kids (right up until 18) do 24/7
I bet everyone would've loved to live like that when they were younger. right?
I could spend some cognitive effort explaining in concise terms what should bea very obvious reality. But you know how at one point you stop letting some stuff be open for debate, and spend that effort making jokes instead?
I had no clue videogames were for kids, silly me. I'd better uninstall Steam right now, and move to Microsoft Teams to talk to my friends while I'm at it.
Children shouldn't be using the internet unsupervised.
Games are also played by adults.
Discord is just a communication platform that isn't inherently tied to gaming.
Oopsies, that either means I can't play games or can't chat with friends because you say so.
I'd rather have my kids use e2ee apps and be smart about it than have them ignorant with false sense of security and lured into some 3rd party adhoc web chat server.
This is a sensitive topic, but I need to be straightforward.
If my children were abducted or sexually abused, or sold drugs, I would request the chat logs of my children, and I would expect the service provider to produce them, even if it takes a court order.
I wouldn't feel comfortable with my children using a service that doesn't or cannot cooperate in such cases.
But most importantly, as an engineer not as a parent, when building systems, it is our job to think of edge cases like that, in a manner that even a parent might not. As an engineer we have more resources to think about this stuff, and in a way more responsibility I don't know how someone arrives at an e2ee encrypted kid adjacent app, it might be incompetence, not necessarily malice, but to be honest, it kind of hurts their reputation one way or the other, they would need some kind of lesson learned and grow past such a sensitive mistake
You want discord reading all your kids messages? You own your kid's devices, you can still read them yourself. Why should third parties get to see what your kids are saying?
Not to claim that Discord has like copyright over their layout, but do you not anticipate eventually running into problems with them due to using pretty much the same layout/visuals verbatim? It is to the point where one could easily be visually mistaken for the other unless a much closer look is taken
That's silly. Neither is Discord the only one with that layout (Slack and even things like Gajim have similar layouts) nor would/should it count as something that cannot be copied.
The fact that Apple back in the early iOS days thought it invented desktop icons is still absolutely ridiculous.
There are still reasonable, noticable differences in the layout between slack and discord.
Compare strafe and discord, the only differences im seeing is the strafe icon instead of the discord icon and a small difference in the embed in the chat message.
I was there when teamspeak was forced out by the demands of the group. There was no fighting it. My individual ideological preferences cannot defeat those of a collective. These people just want to play games. They don't want to take up arms in my weird nerd battle against COTS software, closed platforms or buggy applications.
[1]. https://github.com/StrafeChat/web.strafe.chat
As bob1029 said, making apps is easy especially now but getting friend groups to move is the real challenge so I think a column in the table should include a score for how easy it is to import Discord server history, chat history, invite friends and so on. I think there would have to be next to no friction or risks. If self hosted then backups would have to be encrypted and automated so that the servers can be treated as mostly ephemeral. Operating and maintaining Discord takes a rather large team so these open source alternatives would have to be able to show they have automated most tasks in a secure and fault tolerant manor that is hard to get wrong.
Are we reliving particularly nice interactions with loved ones?
Photos and home videos I totally get. But even going back a day in a conversation history can be a significant chore if I didn't 'save the link' or remember a date or whatever. I couldn't imagine ever trawling through all that text unless by necessity.
The argument changes slightly if someone wants to recreate a friend by throwing conversation into the model or context or whatever, but I find that creepy and it's a relatively new thing.
Maybe I'm just sentimental via pictures. I love conversing in text, but I'm just not sentimental for it in any way. Other people are allowed to be, but I don't understand it.
And yes, a place for pictures between friends is handy, even if in running immich.
I personally agree but I think you and I are outliers in that most feedback I get is people want scroll-back history so they can see what they missed when they were offline. My preference is to treat chat as ephemeral and instead have my own forums, chan servers, sftp servers for longer term storage people can link to but it is rare I meet anyone that operates the same way. There are web front-ends to IRC for example but the moment someone ventures down that path the cost to scale up the chat server climbs exponentially due to the bloated web framework, message queues, database, etc... not that most people would really need to scale up for their small circles of friends.
Can't think of a worse chore. I'd rather do laundry, it's at least productive. Life can go on without our presence occasionally. That's "normal". It's not possible, nor healthy to try, to be everywhere all at once. I think I may have had notions in that direction when I was younger, but living life won instead. And for that I'm thankful.
Having ranted all that, here I am conversing on HN at 1am :\
When we catch up in person the awesome stuff generally gets relived, which is good enough for me.
Also some people do go back and reread texts from personal history for sentimental reasons. I don’t, but I know those who do
https://discord-alternative-tracker.pages.dev/
If you're literally just doing a front end to Matrix, I get why you have to use the current Matrix protocol. But if you're doing something that isn't Matrix, you should avoid Olm.
The thing with MLS is that it basically requires a central server for ordering the commits. For Matrix' interpretation of federation, this doesn't really work because a group isn't really owned by a server, it is a DAG of events, which, as is the nature of DAGs, does not have the total order needed for MLS commit ordering.
So either you introduce a central party that does ordering, or you do BFT-style consensus, or you try to get some idea of branching an merging of group states into MLS, which isn't really possible with what RFC 9420 offers.
My impression also is that the Matrix community really loves their DAGs and the group state management that they built, and from an MLS perspective it makes more sense to store that in the group context (either as extensions or as components as defined in draft-ietf-mls-extensions-10).
There is draft-xue-mls-decentralized which proposes two ways to MLS offer some foundations, one of which (IMO) only solves half the problem and the other (IMO) doesn't make sense.
The fediverse folks are also trying to solve this and it just is hard. https://github.com/swicg/activitypub-e2ee/issues/56
Edit: (I work on OpenMLS)
I mean, if you take that out, what's left of Matrix and its differentiating proposition?
* In the current Matrix implementation, server tells the clients what the group membership is, so a server could spoof an invite to add a malicious user to a room and you'd have to rely on social mechanisms to spot it.
* There's no way to force everyone to rotate the sender key at the same time.
* On the plus side, it decentralises relatively well.
The concrete disadvantages of MLS are:
* Vanilla MLS needs a centralised sequencing function for changing group membership.
* The key bundles are much larger.
* On the plus side, only clients within the group can add new users/devices, and everyone in a given epoch shares the same group secret, so when someone rotates everyone has to rotate to participate in the new epoch.
Now, the server-controlled membership problem can be solved with Olm/Megolm if you instead have the client control the membership, using Matrix itself to define which users are authorised to be in the room, by running the Matrix DAG merge resolution on the client as well as the server. I did this a few weeks ago (in prep for The Matrix Conference next week) to show viability; it works, and has the advantage that you don't have to blow up the whole crypto implementation.
On the other hand, MLS can also be made to decentralise. DiMLS (draft-xue-mls-decentralized) isn't the only option here; DeMLS is the one we've been working with (using the Phoenix DeMLS OpenMLS fork) on the Matrix side - and works by letting MLS epochs fork and then merge again later, using puncturable functions to avoid undermining forward secrecy. This is a much bigger change; we experimented with it a few months back; details here: https://www.youtube.com/watch?v=jc7yfec3iIQ. It's promising, it works, but is much more complex and experimental.
So, TL;DR: it's possible to use olm/megolm securely (even if it's had a mixed record); I doubt strafe is doing fancy client-controlled group membership though. Separately, MLS can be used too, but it is way more complex and has its own complications. On the Matrix side we're still pursuing both (and finally making some progress, although it's a very slow burn).
Can't use LLMs to contribute code
Read: write your PR. It doesn't say "do not contribute code touched by LLM".
It asks to take accountability for the thing you submit.
Technical output written by LLM is often very hard to read due to the ticks, fillers, fluff and idiosyncrasies. Even with rules or guidance.
This contribution rule ensures crap will be edited out and only the valuable content submitted. Cleaned up LLM code can be very valuable.
Developer gets it.
On the other hand Strafe does not have it at all, so it is not really a competition.
I can’t find any such free thing that has a native iOS app.
Buzz was one I looked at but it was way too complicated with Nostr and a bunch of things that are way too much for what I intend to use it for… :-(
This - Strafe, Chatto, Stoat all fall apart in the native iOS app requirement..
There’s a GitHub but it was all the way at the bottom of the page behind a tiny icon in a group of other socials. At least on mobile it was.
Nitpick: the bottom row on the front page shows a discord link, but not their own strafe link. I hope they can add this because of dogfooding.
- You can change the back end and store everything in an sqlite3 database.
- Spam is what killed usenet as a discussion medium. Topic-specific, moderated google groups are still active and see traffic.
- People keep reinventing the same things over and over again.
- irc.example.org
- news.example.org
could be the same thing. IRC would poll. NEWS would not.
It's way too early for this to be in HN.
Also all links under the resources heading are broken.
Each sidebar "server" entry should be an ACTUAL SERVER, with a unique username and connection. Like Mumble, Ventrilo, and Teamspeak. Federation is a strictly worse model than what they got right two decades ago.
"Slack" associates pretty strongly with "slack off" (get no work done) too, so that one's also strange.
I think "Zulip" has the best naming of all these.
slack and discord are very good household names, same with twitter (rip) and google etc.
nobody's gonna say "hop on Zulip"
What does Zulip mean?
Meanwhile, “Discord” wouldn’t surprise me if it were a product of the Discordians themselves, a similarly disorganized “parody religion”.
I always preferred Discordianism over CofSG, but both were cool.
is the completely german-less train-of-thought I could imagine leading to this name
Also “strafe on your desktop”. Plus this is obviously entirely vibecoded.
I bet everyone would've loved to live like that when they were younger. right?
https://www.youtube.com/watch?v=hjtr64ZQUWA
Children shouldn't be using the internet unsupervised. Games are also played by adults. Discord is just a communication platform that isn't inherently tied to gaming.
I'd rather have my kids use e2ee apps and be smart about it than have them ignorant with false sense of security and lured into some 3rd party adhoc web chat server.
You wouldn't?
If my children were abducted or sexually abused, or sold drugs, I would request the chat logs of my children, and I would expect the service provider to produce them, even if it takes a court order.
I wouldn't feel comfortable with my children using a service that doesn't or cannot cooperate in such cases.
But most importantly, as an engineer not as a parent, when building systems, it is our job to think of edge cases like that, in a manner that even a parent might not. As an engineer we have more resources to think about this stuff, and in a way more responsibility I don't know how someone arrives at an e2ee encrypted kid adjacent app, it might be incompetence, not necessarily malice, but to be honest, it kind of hurts their reputation one way or the other, they would need some kind of lesson learned and grow past such a sensitive mistake
Incase anyone is wondering, there is a screenshot here: https://github.com/StrafeChat
The fact that Apple back in the early iOS days thought it invented desktop icons is still absolutely ridiculous.
Compare strafe and discord, the only differences im seeing is the strafe icon instead of the discord icon and a small difference in the embed in the chat message.
That wasn’t a thing.