Every single service nowadays has private messaging. Twitter, Facebook, Reddit, Steam, etc. Every single programmer just learning about Tcp wants to make a simple one. Yet there are still not enough.
Alright, since there are so many services I am going to filter them by a simple requirement:
- One server can have multiple channels.
If you don't get what I mean by that, I mean basically something like IRC.
Who meets the requirement? IRC, Discord, Slack, Mattermost. Those are the only ones I know of. Now let's check how each individual one falls short:
- Client side validation
- Huge cache files
- Not following the XDG standard (cache files should be in ~/.cache)
- Using regex over linkify
- Closed source
- Stores currently written message in the JS local storage for every single keypress
The main reason Discord has so many points here is because it's what I've been using (and suffering from) the most.
- Closed source
- Only stores the last 10 000 messages
I have never tried Slack. This is all I know.
- Channel join/leave system is kind of useless
- Can only use one server at a time
- No real message storage
- No real authentication system apart from unofficial NickServ
- No real bot API
One thing that hurts me a lot here is how many of these are using Electron. Is programming GTK+ really so difficult that you have to steal all the client's CPU? Discord is using 7% CPU idle for me. Sure, Electron is easy and looks good, but it's also the biggest hack ever made. Launching an independent web browser copy because you want to look professional having an EXE file for your webapps... really?
So what I'm trying to say, is that if any of you feel urged to make a chat application but aren't because of how many there already are... think again. We need more alternatives out there.
Myself, I've been writing one that's currently in beta. Although it's been a useful experience for me, it's not very fun at times.
And of course, if any of you know an alternative (even if you made it yourself) that seems to be what I'm looking for, please do link it in the comments!