> Note: Using an unofficial client at all is against Discord's Terms of Service and may cause your account to be banned! Use at your own risk!
While Discord might officially not allow it, a lot of folks do want the option of using different clients. There are a few out there and generally speaking it does like discord doesn't crack down on it unless they see odd api usage. *DISCLAIMER:* Still very much use at your own risk. I am not responsible for banned accounts.
> Why not make a great Matrix client or improve that ecosystem somehow otherwise?
Likely for the same reason there are still relatively few feature complete matrix clients out there. Don't get me wrong, there are a ton of clients out there with some functionality. But few that support all functionality. For the longest time it was just Element.
A large reason for that has to do with how complex the Matrix protocol is to deal with. To be fair, the discord API also has become a hot mess with all the features tagged on over the years. But the basic API for just chat is fairly straightforward. Not to mention that there are multiple wrapper libraries for various languages out there that make things even easier.
Also, people work on projects they benefit from themselves. Or at least the ones they are motivated to do. If someone isn't on Matrix why should they invest the time and effort to get effectively nothing in return?
Alternatives bring in their own set of issues and generally focus on technicalities rather than delivering a good Discord/etc competitor, so nobody uses them.
Do you want to chat with people or do you want to waste time dealing with protocol fragmentation, half-baked clients (or no clients at all), fundamental protocol-level flaws (that can't be fixed without effectively starting from scratch on a new protocol), etc? Most people pick the first option and then tolerate the badness of Discord as a necessary evil.
From my dabbling, I would say Discord's API is a lot easier and better documented. Matrix has a billion different standards, a complex message format, and encryption to deal with. There are libraries, but they're not easy to use, sometimes incomplete, and are rarely documented beyond "this is how you send a ping bot".
Also, people actually use Discord a lot. Matrix is big, but not Discord big. In practice, Discord rarely ever bans anyone for using alternative clients either.
I don't like the way Discord is now the standard for communities, but I'm not too surprised about it either. At least open source projects seem to use Matrix, but I wouldn't recommend it to my gaming buddies because of how odd the clients generally are.
There is one specification, available on the official site. It isn't, and never will be, required to implement all of it.
> a complex message format
It is a very simple format. Here's an example message (as sent by a client; additional fields are added by the server, such as server-side timestamp):
{
"content": {
"body": "Hello, world.",
"msgtype": "m.text"
},
"type": "m.room.message",
}
> and encryption to deal withThis is also optional. If you want to talk in unencrypted public rooms, for example, you needn't bother with it.
The spec is so simple that you can send a Matrix message from a shell with curl. It's just JSON over HTTP.
Discord's hostility is irrelevant if you desire to write a client. Kind of like climbing a mountain because it's there; who cares if the mountain will probably kill you.
>I do wish people motivated to work on projects like this would dedicate that time elsewhere, somewhere they are wanted.
If that desire was expressed in the form of compensation, more devs would probably start lining up.
I realize the very concept of compensation is heresy for FOSS, though.
"Why make a Discord client when Discord literally does not want you to?" Why make another X when you could improve Y. Because most of the time if they wouldn't build X they wouldn't improve Y. This is no company that balance human resources.
Of course some premium features can be controlled server side, but not all of them.
For example, the extended message limit can quite easily be done by a custom client by splitting up the message. Similar for custom color themes.
Having said all that, in the case of Discord I honestly don't think they need to lock down third party clients for this. As most Nitro features are mostly server side anyway.
Dissent tries to minimize API calls by requesting information over the Gateway Websocket and caching them instead. This is actually what the official client does!
It's just way easier to say that it violates the ToS instead of explaining the whole deal, though. You might still get banned, use it at your own risk.
In a previous HN discussion from September 2021:
> [zorkian] It's still against the TOS -- my point is only that we don't specifically look for third party client users and we have no specific plans to do so.
[Note zorkian’s HN profile: “VP, Core Tech @ Discord. Opinions are my own and I do not speak for my employer (unless noted explicitly.)”]
> [tumult] Just curious -- where in the TOS are third party clients forbidden? I've read it a few times, and I'm not seeing it.
> [dge2020] Probably:
> You agree not to (and not to attempt to) (i) use the Service for any use or purpose other than as expressly permitted by these Terms;(ii) copy, adapt, modify, prepare derivative works based upon, distribute, license, sell, transfer, publicly display, publicly perform, transmit, stream, broadcast, attempt to discover any source code, reverse engineer, decompile, disassemble, or otherwise exploit the Service or any portion of the Service, except as expressly permitted in these Terms;
> It's a catch-all but the best restriction that prevents third-party clients is probably 'prepare derivative works based on' and 'reverse engineer' (which you would need if you want your third party client to use any regular client API calls, or if you want to support signing in with the user-facing login page/qr login).
> [tumult] A third party client like Ripcord isn't a derivative work. It also wasn't made by reverse engineering any of Discord's code. Even if it were, these rules still wouldn't apply to using third party clients.
So it seems that, as you note, the ToS do not explicitly mention third-party clients but Discord themselves believe that it forbids third-party clients.
maybe this: https://github.com/spacebarchat/spacebarchat
And so far, the DMA has only served to show malicious compliance on the side of Facebook. Nothing to better the lives of those who reject the walled gardens.
The sad reality is that we can either accept the monopolizing forces like everyone else, or make ourselves apart from important social contexts.
Eh no, I’d say it’s precisely the subset of tech enthusiasts who aspire to work for a profitable company like discord, or even build one. There are a few of us here who reject corporate tech, but i don’t think it’s the majority.
I don't think they've actually reversed position at all. I think the bottom line is they don't like anything that isn't their client because they can't pump nitro at you.
And considering part of their TOS is basically they can do whatever they want, I don't know why people would even risk it anymore.
after briefly scanning their website, i don't get it. there are multiple providers you can create an account with and multiple clients? is this for direct messaging to individuals or are there "rooms"? can accounts on different providers talk to each other? how do i know which provider i should sign up with?
these are mostly rhetorical questions because i've already lost interest and all of my online friends are already on discord. but the experience i just had is what they should be worried about imo.
There are a million clients because the official one has horrible UX and everyone thinks they can make a better one.
I know quite a few people who think it's the future of chat but every time I've tried to use it I've ended up having a bad time. I'd advise against trying personally.
> There are a million clients because the official one has horrible UX and everyone thinks they can make a better one.
I wish. My experience is that there are few clients and a lot of them have similarly ... beginner-unfriendly UX due to the SDKs, the protocol itself and cultural factors (there seems to be a good amount of "this is good enough"/"you don't actually need that" hubris in the community).
Matrix, besides XMPP, is the only federated chat protocol with any kind of traction, so I figure that it makes sense to invest in improving it rather than building something new. Ideally using it would be a no-brainer choice for delivering chat apps: Why would you invent something new when you could use a protocol that already exists and already has a vast ecosystem of libraries and users? That's where I wish it was, reality unfortunately looks quite different.
Unsafe. Discord uses the aforementioned header for client identification for certain endpoints. Lack of usage of this header is dangerous.
https://news.ycombinator.com/item?id=28435490 goes into this, but Discord doesn't actually care if you use a third-party client. They only care if said client misuses the API, and that happens to include a lot of past clients. I've been developing a handful of Discord clients for several years now and have never had my account banned, but I have a backup account just in case this scenario happens.
Of course, people may still be banned for using Dissent, so use it at your own risk.
I did use it in the past using the Rust library Serenity [0] (unofficial library ofc) to make a geoguesser-like bot [1] for a private server with friends. Pretty simple to use actually! Do note they have some pretty harsh ratelimits when it comes to API calls though, so pay attention to caching when fetching data (not likely to be an issue for your usecase at it'll mostly be server-sent events.
[0]: https://docs.rs/serenity/latest/serenity/
[1]: https://github.com/Tuetuopay/bot-ticelli (don't judge, this was thrown together between amongus games during lockdown)
Indeed since clients have a websocket connection to stream incoming messages, it should be nigh indistinguishable for them from a regular clients.
Also, the API abuse they are worried about is spam and scams, so just pulling out messages is likely to be the last of their problems.
Any chance something similar exists for slack? The discord client is not that much of a pain, but slack you have to pick between a client that OOMs the machine, and a browser tab that OOMs the browser.
Remind me again, why do people still use this garbage?