Harmony - Yet Another Discord Alternative (github.com)
from briffy@lemmy.world to selfhosted@lemmy.world on 15 Mar 12:01
https://lemmy.world/post/44287584

Since Discord announced they’re going to help Petie T collect selfies of us all I’ve been working on a self hosted alternative mostly for my mates. I had five goals in mind when I started this:

I’ve reached that point now and figured why not slap the GPL on it and send it out into the wild.

I’m sure there’ll be lots of bugs and I don’t think it will scale well. I never set out to make something that would grow into a behemoth that’s used for customer support and all sorts of shit.

The goal was to make something that covers that trifecta of text/voice/screensharing, without relying on P2P connectivity, and able to do it well for small groups of people.

There are more features I have in mind if it gets any interest:

So yeah, I’m not a professional dev, this is a hobby for me. Would be cool to see if anyone manages to get it running.

#selfhosted

threaded - newest

Yaky@slrpnk.net on 15 Mar 12:32 next collapse

What’s up with these brand-new “Discord alternatives” being cranked out en masse? Would be easier to contribute to XMPP or Matrix IMO.

Initial commit 14,203 files changed +2872320 AI? Or “i worked on this for 10 years and uploaded just now”? /s

Overabundance of emojis in description. Probably AI.

Would be cool to see if anyone manages to get it running.

Were you able to run it yourself? What.

briffy@lemmy.world on 15 Mar 12:43 next collapse

Like I said, I’m not a professional dev, this is a hobby. I fucked up my initial commit and included all the source for the Vue framework. That was me fixing my mistake. You’ll find a few more of those in there. If you actually look at the commit instead of just knee jerking you can see for yourself what happened.

To be honest, I’ve run matrix, it’s an absolute headache and to get voice and video is even worse. I don’t really care about federation, I’ve been pretty clear in what this project is.

I used Claude to give me a template for GitHub and generate the logo/favicon because I suck at all things creative. It’s open source, if someone wants to make me some images and rewrite the readme then crack on. The actual meat and bones of the project, the code, is all written by me, a real human.

Yes, I have run this myself, it works quite well. Apologies for trying to be a bit candid.

Appreciate the feedback.

Badabinski@kbin.earth on 15 Mar 12:54 collapse

These other responses are annoying. This looks really cool, and I hope that it works well for you and your friends! We definitely need good discord alternatives ASAP, and more options are better imo.

One cool feature would be some sort of official support for interop/bridging to other services. That might help to boost adoption and would make the "why not just contribute to Y" people be quiet.

briffy@lemmy.world on 15 Mar 13:19 collapse

Heh, I’ve been around a while. I expect people to pick it apart so they can get that kick out of being right or whatever.

It does what I need, thought other people might have found a use for it. I’m always happy for constructive criticism on my code or feature suggestions but people crying because I used Claude to give me a template for the readme can kick stones.

I’m sort of reluctant to add bridging mechanics for a couple of reasons. I don’t think my coding ability is up to it and it’s not something I’m really interested in or a goal for the project. I set out to make something that can be spun up pretty quickly for a group of people to have voice/text/screenshare when gaming. I never intended for it to be federated or hook into all sorts of services, just a self contained service for mostly private comms that doesn’t report back all your activity to Palantir or advertisers.

iamthetot@piefed.ca on 15 Mar 14:22 next collapse

I expect people to pick it apart so they can get that kick out of being right or whatever.

This blasé attitude towards legitimate genAI concerns is only further concerning to me. Like the name and like the goal, but I don’t think I’ll be using it or contributing. Best of luck.

briffy@lemmy.world on 15 Mar 14:29 collapse

Appreciate the feedback, but if I’m going to be quoted, also me:

The actual meat and bones of the project, the code, is all written by me, a real human.

Let’s call a spade a spade here. It was not a legitimate GenAI concern. I considered rebasing the repo after I realised my mistake but I honestly thought no one would care, or the people that would care enough to look at commit histories would know enough about what they are looking at to realise what I did.

What OP did was look at the commit history, not understand it and then accuse me of being AI. So no, that is not in good faith.

iamthetot@piefed.ca on 15 Mar 15:06 collapse

I think there was a miscommunication and that after all I’ve seen, funnily enough, you seem more concerned than the original commenter about “being right or whatever”.

And you also did admit that you used genAI for some aspects, so the original commenter was not completely wrong. Some of us do not only care about the code.

briffy@lemmy.world on 15 Mar 15:18 collapse

There is a reason I am concerned about “being right”. This is a project I’ve worked pretty much non stop on for about a month, have written every piece of code myself. This is a public forum and the first time I’ve put my repo out there. To have the very first response be a dismissal that the literal hundreds of hours I’ve put it into it is just AI is not only insulting, it also makes it difficult for me to get valid feedback as people won’t read past that first comment and actually look at what I’ve made.

Sorry but I won’t roll over and take it when my hard work is dismissed because I used AI to generate the GitHub readme template. That is absurd.

iamthetot@piefed.ca on 15 Mar 16:08 collapse

I understand that you’re emotionally invested in it, and I respect and sympathize with that. But when you’re putting yourself and your work out there to the public, that’s kinda the deal you’re agreeing to. Not everyone’s going to like it.

You call it absurd, but genAI is an extremely important issue to a lot of people. I would recommend you just not engage with people if you cannot emotionally handle it.

briffy@lemmy.world on 15 Mar 16:43 next collapse

Defending my work in a public setting is not being unable to emotionally handle criticism. Framing it that way is disingenuous but I think you know that and just want to push your anti AI agenda.

Sorry, you can call me emotionally unstable all you want but if you think generating the template for the GitHub readme (not even the install instructions or anything, just the template) and some favicons invalidates hundreds of hours of work then it’s you that needs to do some reflection.

MagnificentSteiner@lemmy.zip on 15 Mar 19:18 collapse

This is incredibly condescending.

The OP has put hard work into something and has shared it with other people out of the goodness of their heart.

You’re out here trying to bait them into an emotional reaction and when they defend themself far more eloquently than you criticised them you call them emotional.

MalReynolds@slrpnk.net on 15 Mar 14:48 next collapse

Sensible, limiting scope and knowing your limits are wisdoms all too many lack. Having something that fills the text/sound/vidya needs and is easy to spin up will find uses, doesn’t need to do everything.

To the end of being easy to spin up, which is likely to attract other developers in time if that’s something you’d like, consider wrapping it up in a docker container. It’s not that hard, basically follow your own instructions in a special docker build format.

briffy@lemmy.world on 15 Mar 15:04 collapse

Thank you for your feedback.

Honestly, there are a few more features I want to add like markdown/gif support, image/video uploads and user settings (push to talk, volume leveling, etc. are sorely needed) but outside of that and cleaning up bits of the UI, I’m terrified of creating an unwieldy codebase. I don’t want something that requires constant tweaks and updates, just something that focuses on those core features and nails them down. You can just install it and pretty much forget about it.

Docker is definitely on my list, I was going to have a chat with one of my mates that lives in docker land to see if he could give me a hand setting it up properly. I’ve used docker before but mostly in hacky ways rather than something I’d be comfortable deploying to other people.

MalReynolds@slrpnk.net on 15 Mar 16:18 next collapse

Sounds good.

PabloSexcrowbar@piefed.social on 15 Mar 18:51 collapse

I’d be happy to contribute the docker stuff if you want as well. I do it for fun and profit, and I’m gonna be awake for the next three months straight with a newborn so I’d absolutely welcome the opportunity to do something other than feed this poor child.

early_riser@lemmy.world on 15 Mar 17:35 collapse

And this is exactly what I want, something easy to deploy and host for a small group of friends. It doesn’t need to scale infinitely or federate.

obelisk_complex@piefed.ca on 15 Mar 12:45 collapse

Would be easier to contribute to XMPP or Matrix IMO.

Synapse is in the middle of a rebuild without much compatibility between the legacy and new builds, and it’s a pain in the dick to set up at the moment. I know, because I did it.

XMPP I haven’t tried to set up yet, but I imagine it to be similarly in-depth.

As to why not contribute: edit: not AI, they just don’t have the confidence in their own skills to contribute to anyone else’s project.

Now… why do the whole thing from scratch instead of forking? Great question. XMPP might just need a nice coat of paint, if it can handle voice and video and screen share; I haven’t come away with great impressions of matrix/synapse.

briffy@lemmy.world on 15 Mar 13:00 collapse

I ran synapse for about a year with a STUN server so I could have voice/video and it was painful to set up and painful every time an update came around.

When discord started doing the ID verification thing I looked at alternatives and it seemed to be mumble, Teamspeak and matrix/synapse as the top contenders. None of them quite did the three text/voice/screen share though. Mumble is good at text/voice. Teamspeak 3 does the full package but screen share doesn’t work in Linux and requires additional setup/P2P, you also need an account with them so they will eventually go down the same route as discord. Matrix/synapse can do all three but as mentioned, it’s a nightmare.

As for why I’d create my own instead of forking an existing project: I just wanted to, it’s that simple. I don’t think I have the skillset to contribute to major projects, most of my code would get rejected. If I make my own, doesn’t matter. If people use it, great, if not, I’m not too bothered. I’ll probably end up pulling the whole repo down though if I keep getting called AI, that’s fucking infuriating.

obelisk_complex@piefed.ca on 15 Mar 13:26 collapse

I’m right there with you, bud. I tried StoatChat too, and I got a nice email from the German government about using an outdated version of React with RCE vulnerabilities. I think this must be a very difficult problem to properly solve, given the number of different approaches and how all of them have their own issues to contend with. Nextcloud Talk is the most usable option I’ve found because it does voice, video, and screen sharing and it also has call links you can send for unregistered people to join the calls. But performance is spotty even with the “high performance backend” set up (that may be due to my server being in Germany though 😅).

As to being accused of using AI, don’t let it get to you. The people yelling the loudest can’t tell the difference between handwritten code and AI, because they can’t code. If you pull down your repo, you’ll be depriving people who might be able to use your project because of trolls who never would have tried it in the first place.

I do use AI for coding, and I’ve gotten plenty of hate for it, but also people who don’t care and just want the functionality of the tool I built.

And in fact I’m going to check out your project and see if I can get it up and running, so please don’t take it down. I’ll likely be putting it on my German server so I’ll let you know what the performance is like with extreme round trips 😁

briffy@lemmy.world on 15 Mar 13:42 collapse

Thank you so much. I’ve run through the setup so many times and got a few instances of it running but I also understand how it’s all working under the hood so I have a home field advantage. It would be a massive help to have someone go through the setup and make sure it’s actually doable by someone that didn’t make the thing because I’m so paranoid I’ve missed something in the instructions and it just simply doesn’t work.

The poll rate on the audio is pretty aggressive, will be interesting to see what happens if your requests take longer than the poll rate of sending/receiving audio. I’ve accounted for packets arriving out of order so should be okay but… We’ll see. 👀

thinkercharmercoderfarmer@slrpnk.net on 15 Mar 12:46 next collapse

Yet Another Discord Alternative would be a better name than Harmony.

briffy@lemmy.world on 15 Mar 12:52 next collapse

I thought the same right after I posted. Damnit. :(

thinkercharmercoderfarmer@slrpnk.net on 15 Mar 13:09 collapse

IME, code projects either die or live long enough that you think of a better name for them long after a name change becomes not worth the effort. Naming things is hard 🤷‍♂️

fonix232@fedia.io on 15 Mar 13:23 collapse

Meanwhile the people over at Element:

Anarki_@lemmy.blahaj.zone on 15 Mar 13:02 next collapse

Has the problem of having Discord in the name. Also Harmony is pretty much opposite of Discord. Good name.

briffy@lemmy.world on 15 Mar 13:06 next collapse

It was originally going to be Entropy (there might actually still be references to that in the code) but 3 seconds in Google turned up a decentralised messaging app called that so went with a name change. Now it just sounds like an early internet dating site.

Anarki_@lemmy.blahaj.zone on 15 Mar 13:08 next collapse

A little bit, but it’s probably okay. Hope it takes off!

SaltySalamander@fedia.io on 15 Mar 14:39 collapse

Now it just sounds like an early internet dating site.

Also a failed cryptocurrency.

thinkercharmercoderfarmer@slrpnk.net on 15 Mar 13:32 next collapse

That’s true, maybe “Yet Another Discourse Alternative”? Discussion Alternative? I just like the idea of a chat platform whose acronym is YADA.

Anarki_@lemmy.blahaj.zone on 15 Mar 13:38 collapse

Discourse is already a platform, too 😅

YADA is a funny acronym though.

Onomatopoeia@lemmy.cafe on 15 Mar 15:08 collapse

I’d you just call it YADA without it being an acronym…

voxthefox@lemmy.blahaj.zone on 15 Mar 13:04 next collapse

No for real love this name, just call it YADA, though you might get a cease and desist from seinfield.

At work one of our application names is “just another generator of…” and we just call it jag

[deleted] on 15 Mar 13:30 next collapse

.

joyjoy@lemmy.zip on 15 Mar 13:45 collapse

They could’ve shortened it to YADA YADA. 

HelloRoot@lemy.lol on 15 Mar 13:34 next collapse

I like fluxer.app

FlowerFan@piefed.blahaj.zone on 15 Mar 16:48 collapse

is not e2ee :(

briffy@lemmy.world on 15 Mar 16:55 collapse

So the group channels and audio/voice aren’t but DMs are. It uses asymmetric signing and per conversation keys. These can be imported/exported so you can see your conversations across devices but by default the keys are never transmitted.

Unless there’s an issue with my code I’m missing?

Edit: oh wait, this was a reply about fluxer, I’ll leave it up just for info in case anyone is interested. Can you tell this is day one using Lemmy… 🫠

TrippinMallard@lemmy.ml on 15 Mar 17:51 collapse

Would I be able to sign into multiple servers simultaneously? In case I have 2 friends hosting this on their own separate servers?

I care about that more than federation.

briffy@lemmy.world on 15 Mar 18:12 collapse

This will probably be the first update I release. I’ve pre emptively built the front end in Quasar and there’s even some bits of commented out code in there from where I started looking at storing authentication data per server. The plan as I see it, and I think this makes sense, is to have the web app based front-end be for people that want to run their own contained instance of both the API and front-end but then also have a Quasar desktop based app that has server switching built in. This then allows the server owner to just run the API if they want and let the user worry about how they connect.

It hasn’t been a priority for me at the moment because I’m literally the only person running a server. 😅

Now that it’s out in the wild, my next focus will be on the multi server side of things and making the text channels a bit more functional than just plaintext.

TrippinMallard@lemmy.ml on 15 Mar 18:51 collapse

Sounds awesome! No rush, I’m a big believer in taking the time to do it right, not twice.

Just wanted to let you know that I find value in that + feel like it could help adoption especially in the self hosting community.