9 ms·
Dissent – A GTK4 Discord client written in Go
- AlbertoGP 3y agoThis would be very useful if it wasn't for Discord: > 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!
- amiantos 3y agoI know that we all work on what we want to work on for reasons even we do not understand sometimes, but I do wish people motivated to work on projects like this would dedicate that time elsewhere, somewhere they are wanted. Why not make a great Matrix client or improve that ecosystem somehow otherwise? Why make a Discord client when Discord literally does not want you to?
- jszymborski 3y agoWhile I agree with the sentiment, there is no lack of Matrix client side-projects.
- tymscar 3y agoI wholeheartedly agree but working on something you can use is much more fun, and the chances this person uses discord are much higher than of them using matrix
- Ezhik 3y agoWhat's a dev to do when their friends are on Discord?
- creesch 3y ago> somewhere they are wanted. 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?
- tcfhgj 3y agoWhat's complex about the Matrix Protocol?
- yungporko 3y agonobody cares what discord wants, their client sucks and lots of people want an alternative.
- Dalewyn 3y ago>Why make a Discord client when Discord literally does not want you to? 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.
- 0x073 3y agoAt the time when yim,icq,msnm had their primetime no company behind it wanted third party clients. "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.
- jeroenhd 3y ago> Why not make a great Matrix client or improve that ecosystem somehow otherwise? 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.
- githubalphapapa 3y ago> Matrix has a billion different standards 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 with This 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.
- jeroenhd 3y agoThe official spec is a combination of hundreds of tiny specs and extensions, akin to XMPP. There may be one single reference, but it's constantly evolving. > It is a very simple format. In a best case scenario, sure. The Discord version of your example would just be "Hello, world" without any of the other JSON. In practice, you need to deal with a whole range of message types with various references and slight variations. Inner Matrix message bodies are essentially freeform, which makes Matrix quite powerful but also difficult to deal with compared to the "different HTTP endpoint per request type" approach Discord takes. > This is also optional. If you want to talk in unencrypted public rooms, for example, you needn't bother with it. Sure, if you accept having your users install two different apps, one for encrypted chat and one for group chats.
- diamondburned 3y agoHi, developer here! I have worked on a Matrix client before (diamondburned/gotktrix)! I abandoned it because I couldn't be bothered to handle E2EE or rewrite it in a different Matrix library, but Fractal is also fairly stable now and it scratches the same itch, so I didn't see a point.
- Nextgrid 3y agoEveryone says "Discord bad" (and I agree, it has issues) but few bother to understand and learn about what makes it successful and makes people use it (even in spite of its badness). 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.
- fulafel 3y agoI wonder if there are open source Discord server impls around that could help making a switch from the walled garden? maybe this: https://github.com/spacebarchat/spacebarchat https://github.com/spacebarchat/spacebarchat
- creesch 3y agoIn that case you might as well use other options like Mattermost, Rocket.chat or of course the Matrix route.
- gsich 3y agoNo sane voice support.
- umbra07 3y agowhy do you need voice support? & is there no lower-level solution? IE why do you need your discord client to do voice transcription?
- mixedCase 3y agoBecause people like to talk to each other sometimes. And voice channels are a convenient feature people prefer rather than handling yet another tool with its own idiosyncrasies. And voice is not enough, it also needs video and screen sharing. It all needs to be "free" (AKA someone else pay for it) too, or people will keep using Discord. People should also be able to create their own servers without worrying about technical details, and again, without directly paying for it. That's how high the bar is.
- umbra07 3y agodoh, I forgot about voice chat. > People should also be able to create their own servers without worrying about technical details, and again, without directly paying for it. I think this is the real reason why Discord is so ubiquitous nowadays. I remember back in 2017/18, it was really only (PC) gamers who used Discord - because your average PC gamer is somewhat more tech literate than the general. Nowadays, every community and their mother has a Discord server.
- tumult 3y agoApparently, the developers of Dissent have never read Discord's Terms of Service, because it doesn't even mention third-party clients.
- jbstack 3y agoI just read all of the ToS and also didn't find anything which disallows third party clients. I did find some older references to it on Google. Perhaps they changed the rule?
- tumult 3y agoNo, it was never there. Some people assumed it was, said it out loud, and it spread like a meme (as in the original meaning of the word.)
- AlbertoGP 3y agoAfter a quick look at their ToS I too do not see a clear mention. 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. https://news.ycombinator.com/item?id=28435490 https://news.ycombinator.com/item?id=28435490
- aoike 3y agoWhy are companies like Discord, Slack, Reddit etc. so hellbent on having users stick to their god awful front end clients? You can easily perform all the data harvesting you want on the backend. Just provide some open-source api clients, and let the community build the UIs they want.
- jhoechtl 3y agoThey have it in their hands to display inbound advertisment?
- geraldhh 3y agoi suppose because of engagement metrics
- Timwi 3y agoBecause they want complete control over your experience.
- petabyt 3y agoIt tarnishes their grand 'vision' for the user experience.
- toastal 3y agoWhy are users, especially technically-inclined ones, hellbent on using these proprietary services? Throw them all out if they are going to be this way since there are great alternatives. The last thing communities should do is build UIs around these types of services instead of building ones for systems/services that aren’t so hostile towards users.
- tossit444 3y ago> still no x-super-properties use Unsafe. Discord uses the aforementioned header for client identification for certain endpoints. Lack of usage of this header is dangerous.
- GranPC 3y agoCould you elaborate? What exactly is in that header and what's dangerous about not passing it?
- diamondburned 3y agoHi, Dissent actually makes no effort to try and hide itself from Discord! In fact, API calls via Dissent have their User-Agent header set to "Dissent (https://libdb.so/dissent https://libdb.so/dissent)" to emphasize the fact that they're NOT performed by the official client. https://news.ycombinator.com/item?id=28435490 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.
- tossit444 3y agoYou're misusing the API by not following what headers are used by Discord itself, so this comes off as fairly irresponsible. 2021 was a long time ago, so I wouldn't take anything said there as accurate to current times.
- ZoomerCretin 3y agoThis would be great if it supported voice calls.
- rob74 3y agoHmmm... I don't use Discord a lot, but (depending on how resource intensive this app is) I wish someone would combine this with https://github.com/jpbruinsslot/slack-term https://github.com/jpbruinsslot/slack-term into a lightweight Slack client. Not sure about how Slack's policy regarding unofficial clients is though...
- darthrupert 3y agohttps://revolt.chat/ https://revolt.chat/ looks like a good alternative to Discord.
- ac130kz 3y agoWarning: alternative Discord clients will get you banned. I got my account permanently banned for no other reason other than using a 3rd party client, even though it (Ripcord) had insanely better UX.
- snowpid 3y agoIts so sad, that Discord is too small that the DMA kicks in and they would be forced to allow third party software.
- ezst 3y agoThis is a community of Tech enthusiasts and yet, so many entertain this party of leopards eating people's faces by accepting anything less than open federated/P2P protocols. 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.
- asgerhb 3y agoI don't want to speculate why this is the case, but tech enthusiasts rarely have the social capital that it takes to move friend groups or local forums over to specific platforms. The sad reality is that we can either accept the monopolizing forces like everyone else, or make ourselves apart from important social contexts.
- deleted 3y ago[deleted]
- xk_id 3y ago> This is a community of Tech enthusiasts 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.
- ijxjdffnkkpp 3y agoI like to use Mumble https://www.mumble.info/ https://www.mumble.info/ for voice chat while gaming. It's really effective at voice chat and runs on a toaster. The server was really easy to set up on my raspberry pi. Is there another software that might be helpful that you can think of? Free software would be preferable
- solarkraft 3y agoMore people choose to make clients for a proprietary services that will ban people for using them or even invent their own protocol than people choose to make clients for Matrix. This should worry the Matrix folks.
- yungporko 3y agoi'd never heard of matrix until now, and i had to search for it on two different search engines before i eventually found it (very far down on the list of results). 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.
- lexicality 3y agoIt's fediverse but for chat. It has group chats, but netsplits somehow behave even worse than they do on IRC and if you join public ones you'll get sent extremely unwanted images by bots on a regular basis. 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.
- solarkraft 3y agoI'm wearing a Matrix T-Shirt right now and can't disagree much about the experience not being great. > 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.
- G4E 3y agoI have tried quite a lot of alternative discord clients, my favorite is still Abaddon[0]. It works great, and its UI is fonctionnal enough for my needs. [0] https://github.com/uowuo/abaddon https://github.com/uowuo/abaddon
- mrklol 3y agoI simply wanted to write a user bot which reads messages from a channel (to write them to another messenger). After reading tos it seems to be a reason to get a ban, but did this ever happen for simply reading? I bet this stuff only triggers on actions.
- tuetuopay 3y agothey actually provide a pretty complete bot api that's perfect for what you want to do. since it's a bot api, the "user" will appear as a bot in discord clients, and a few restrictions will apply (e.g. bots cannot interact with each other). but for simply reading a channel, it's pretty trivial to do. 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/ https://docs.rs/serenity/latest/serenity/ [1]: https://github.com/Tuetuopay/bot-ticelli https://github.com/Tuetuopay/bot-ticelli (don't judge, this was thrown together between amongus games during lockdown)
- mrklol 3y agoI know about the bot api, but I want to use that as a user account.
- tuetuopay 3y agoI don't get why you would want that but what do i know :DI 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.
- mrklol 3y agoI mean that’s kinda the same as the linked project Dissent - they also use a user account. That’s why I thought about it that way.
- tuetuopay 3y agoThis looks like a very slick project and might just use it. GG! 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.
- mmgutz 3y agoWhat perfect timing, I started going down the GJS (Javascript) route for a custom app. Maybe it's time to build a Go + templ like package w/ GTK4 widgets.
- tamimio 3y ago> Using an unofficial client at all is against Discord's Terms of Service and may cause your account to be banned! Remind me again, why do people still use this garbage?