Hacker News new | past | comments | ask | show | jobs | submit login
discordo: Lightweight, secure, and feature-rich Discord terminal client (github.com/ayntgl)
101 points by ducktective on Aug 15, 2022 | hide | past | favorite | 105 comments



Discord and other biggest communication platforms should be legally required to provide a fully featured API. Forbidding users from writing and using 3rd party clients is outrageous.


Why? What else should I be able to demand from other people's products, simply by dint of their products fitting a particular description?


The demand isn't being made to the product side; Discord and other chat clients already have a chat API which their clients authenticate and talk to, it's all already built and user-facing. They already distrust their clients. They already made everything a third party client would need.

It's a policy change, not a product change, and demanding a company adjust their bad policy is totally normal.


You mean "particular descriptions" like "is a vehicle", "contains radio transmitter", "stores personally identifiable information"...? We he regulatory requirements for all sorts of products for all sorts of reasons. Any specific example can of course be debated about, but the concept of "to demand from other people's products, simply by dint of their products fitting a particular description" is anything but the crazy unprecedented idea you seem to be implying it is.


Demanding opening and tolerating programmatic access to an extent would probably be a good thing tbh, even if from accessibility PoV.

Make it opt-in with advanced user verification if you want to fight spam, not simply blanket ban everyone whose data you can't monetize easily :shrug:


It's not just spam; in fact, spam might be the least of it. Part of the reason companies require specific clients is that doing so makes it easier for them to build the product and deliver the specific value that they've decided they want to deliver.


So, let's force that "value" on every user rather than let them build the experience they actually like?


Sure? Companies do get to dictate things to their customers: they can build things, or not build them. Customers don't get that control: their recourse is to the market.


They absolutely should get that control though. The only thing preventing them from having it, often, are artificial limitations. Don't place too much faith in "the market" to fix problems.


I don't like YouTube's UI therefore I should… use Vimeo?


The biggest plus is that — like Chrome, if they decide they made a mistake, they can pivot a change that many of their users would disagree with, and force it on the whole ecosystem immediately. Chrome has done this a lot, and almost all of it has been security-related stuff that's been jammed down our throats. And sure enough - the medicine has been quite distasteful, but it was good for the patient.

A lot of this stuff is UI-related; it's things that aren't a reskin, but they're a major shakeup of how the entire UI works, and would break all other clients using a framework.

The problem with "truly" federated protocols is that every design fuckup is preserved in amber for eternity.


They are in various ways more like utilities than products - like other utilities they/we would benefit from regulation - leveling the playing field and helping future proof these services.


Then we should name them as utilities before we start regulating them as such.

And who is the one to name them a utility? Is it the government of the company's base of operations? If so won't they just move (such as many companies do to avoid tax complications)?

And where do you draw the line? Why is Discord a utility and not, say, Truth Social?

And then how do you turn federated networks like Mastodon into utilities?

Once something is classified as a utlity, what are the rules for guarding customer data? Are they more beholden to governments to release customer data? Less?


> Then we should name them as utilities before we start regulating them as such.

Well, we should certainly make an effort so that regulations are predictable and sensible.

> And where do you draw the line? Why is Discord a utility and not, say, Truth Social?

> And then how do you turn federated networks like Mastodon into utilities?

I think this is going about it from the wrong side. Snail mail, phone service, internet service - these are things we regulate in various ways. Maybe we should with various, similar digital services too. Email? Messaging networks like discord?


Discord clients can't magically implement features that the Discord API doesn't have. The only thing they can do is personalize the experience locally, maybe by changing the interface or implementing more comfortable defaults and shortcuts. This is not a case of a Discord client offering Nitro (i.e. paid) features for free, to get the paid features you have to authenticate yourself through the API meaning Discord still gets the money and everyone's happy.


Why should companies that build products with serverside components be required to let you build your own clients? What you're saying when you make this demand is that it should be unlawful to build closed systems (or: unlawful to build closed systems if there's a network API anywhere in them).


The moment you have a publicly facing API you are saying "these are the rules to talk to us". It doesn't matter what the client is, if it follows the rules then it should work.

A website is a publicly facing API and if two different browsers can talk the HTTP protocol and implement all the other APIs the website requires then you shouldn't be blocked from accessing the website through one of them


You're not really answering my question. "One of the rules of this API is that you exclusively use this client" is an expressible rule. What gives you the right to dictate the terms that other people build by? I don't understand the principle here.


I'll explain why I want the right to dictate the terms by which software on my computer talks to software on other people's computers. It's because it's relatively easy to customize local software to work in ways I and other people want it to, and the only thing stopping us from doing so is arbitrary draconian laws and rules. This results in situations where you can't access a lot of straightforward websites and services unless you download an "app" that's actually just a wrapper around a web browser and a bunch of spyware, and it makes it impossible for people with various minor disabilities to use a lot of services comfortably.

The rule right now is "Any jerkoff can dictate what is and isn't allowed to run on my computer" and I would like to change that rule to "I'm in charge of what runs on my computer, you're in charge of what runs on your computer".


You are in charge of what runs on your computer, nobody is forcing you to use Discord.

There's no jerk dictating what is allowed to run on your computer, there's someone offering a piece of software that you can willingly install on your computer if you want.

If you don't want that, you're always free to not use the software or use workarounds to avoid the things you don't like.

I, for example, hate ads and use adblock always. But I don't think it's fair for me to go and say that everyone should forced to not put ads on their stuff.

I'm not a fan but I understand that I have no right to dictate what people do with their software


This is not true for platforms. If a community decides they're going to use Discord, then you, the individual, are out of luck. You either use that or miss out on the community or convince the entire community not to use Discord.


How is that different from, say, being forced to buy a PS5 or an X-whatever to participate in a gaming community, or to get a Spotify membership to hear a particular podcast?


They aren't very different. With Spotify we actually gave up a lot of power that custom clients had for the lowest-common-denominator sort of stuff, which is really sad.

With each of these products we keep giving up more and more of the powerful variety that was available before. While the average person doesn't lose much, the average person doesn't really exist and we've really lost a lot of long tails of value.


I see the potential value, I just don't understand the principle that enables us to dictate that private companies provide it to us.


I feel a lot of laws dictate what private companies provide us. For example a butcher's meat cannot be covered in rat poison. A hyperbolic example but for giant chat services like this where the wield an incredible amount of power because of scale they are still subject to restrictions by the government for the benefit of the people. The government totally has that overriding right because your companies operating in there county. Don't like it the same way the user has no choice but to not use your interface the company has the right now to operate in the country. Personally I think the api format is a little ambiguous but it's incredibly naive to think that companies cannot be subjected to laws on how they do business just because they built a computer service. With adoption comes regulation to protect both users and companies


The same principle behind antitrust laws: dismantling monopolies is good for the public and good for innovation


Lacking an open-for-all-comers API is not in fact an antitrust violation.


I agree of course, it's not a violation of any laws. I just thought you were asking for some moral principle to justify pressing a developer to make an API available


I mean, it's just not antitrust, at all. A vendor is not coherently a "monopoly for their own products".


As the world changes, we can't always expect new behaviors to ideally fit existing moral principles.

Is there a moral principle preventing a power company from providing you with all your electrical appliances and forbidding you from using those not provided by them?


There are a LOT of jerks coercing people into being used by Discord. Not only that, actively defending it.

FOMO on "community" is a considerable factor. The regular person is quite likely a social being. They will care and value being able to use the same platform.

It is a personal sacrifice to resist it while it remains. Even when a Free Software alternative becomes wide-reaching enough for an exodus, it'll be years too late.


> I, for example, hate ads and use adblock always.

> But I don't think it's fair for me to go and say that everyone should forced to not put ads on their stuff.

You can use ad blocking software because browsers are on our side. Our browsers support uBlock Origin whether webmasters like it or not and they don't have the power to force us to switch.

What companies like Discord and WhatsApp do is akin to contractually requiring us to use a specific browser that does their bidding on pain of banishment from the platform. That's how they get away with advertising, spamming, surveillance, DRM and countless other abuses: by forcing us to run their software on our computers if we want to use their service. If we could run our own clients, they would be powerless.


The terms of service are just Discord being transparent about what they’re doing.

The thing actually stopping you from using Discord with a third-party client is that Discord’s server software responds differently to the way the third-party clients talk to it.

You’re in charge of what runs on your computer, and they're in charge of what runs on theirs.


They are not transparent, since it's proprietary software.

The likelihood they sell/yield personal user data/metadata is too high to ignore.


> and I would like to change that rule to "I'm in charge of what runs on my computer, you're in charge of what runs on your computer".

Who is forcing you to install Discord?


A study group, a programming community, any social group that you want to be a part of and they've decided to use Discord.

Don't like the Discord client or have trouble using it? Pay the price of not participating in dozens of communities you would like to participate in.


It reminds me of being a little kid growing up in a house without any channels on TV which had been my parent's deliberate decision (to shelter us from all the advertising and presumably, help us become more active and creative). All of my friends would be talking and joking about some show they saw the other night, and I'd be out of that loop. Asking them to explain what they saw would annoy them a little, but I might get a begrudging explanation. For a solid couple of years, my friends' favourite characters from shows like South Park and Family Guy were mysterious figures from apocryphal legends, whose personalities I understood fragments of without actually ever seeing them.

Maybe sometimes I could pick up on a meme without knowing the source material and sort of fit in for a bit. That's what not participating directly can be like, when you're caught at the fringe of your community because you don't use <platform>.


Maybe take it up with those communities?


Or maybe we can just have interoperability and open systems so all users can be happy, and don't have to choose between being obnoxious social outcasts or bow down in total obedience to the surveillance capitalists?


The problem is that all users aren't happy. Having used federated services for years, they're never in synch, and some users always have access to some features that other users don't have.

In fact, the problem is chiefly that a certain group of assholes never upgrade their clients, ever, and disingenuously try to keep everyone on an old version of the protocol, because they don't see a need for new features. Period. I've been through this gauntlet with some long-running open-source projects, and basically these guys were like "plain text and command-line should be sufficient for everyone (and shame on you if it's not!)".

Of course, that's fine if you're a programmer, but then these guys were SHOCKED - shocked, I say, that people's whose primary working medium was images rather than text - you know, UI designers and artists - found it a struggle to work on their project and quickly gave up.

This kind of bigotry constantly stifles progress in the OSS community.

---

There's a damn good reason no federated service even comes remotely close to Discord, and it's because despite all of those features being developed for other clients, repeatedly, there is always heavy social pressure not to leave people out, so "newfangled" features get swatted down by communities, and people are forced to only use the features that everyone supports.

You can have IRC that supports pasting images just fine, but some asshole's client doesn't support it, so you're back to using a shithole solution like external pastebins or personal FTP servers, again. Otherwise you're dealing with a constant "I don't see anything! Why can't you just use something that works on my client!"

---

So no, "interoperability and open systems" doesn't mean all users can be happy. It's a trojan horse to let luddites force obsolete versions of the protocol on everyone because they don't want to update.


This is not the ask. Its just to have some kind of API.


We have interoperable, open systems; things like IRC and XMPP exist.

People chose discord over them.


Indeed. Discord also works just fine in a browser where it doesn't have any privileged access to your system.


While I understand your sentiment, no jerkoff is dictating what is and isn't allowed to run on your computer. You're always welcome to use something other than Discord.


At certain size companies should become platforms. Discord is just about there I feel.


How can a server know I'm using a different client if all the features are implemented? The condition that you may not use a third party client cannot be imposed by the API but is stipulated externally.


> Why should companies that build products with serverside components be required to let you build your own clients?

It's the only way to ensure we have the ability to adversarially interoperate with the offered service.

https://www.eff.org/deeplinks/2019/10/adversarial-interopera...


> Why should companies that build products with serverside components be required . . . ?

Because consumers should be able to make demands in return for adoption?

In a world less completely asymmetrically imbalanced toward capital, consumers would have a say in the products offered them, not merely the option to purchase (or not) rights to use technology as-is.


Network size on a spectrum from "me and my dog" to "society-wide monopoly" should be taken into account. (Not arguing Discord is at any particular point on that spectrum; only that it matters when considering policy decisions and how it burdens a company vs. benefits the public).


You got the causation backwards. There are chat server with open API much before discord like IRC. The only reason discord or something else worked is because they got private funding and operates at loss for many years. And the only reason they got private funding is because they want to reap the benefits of monopoly on its users in future. So if there is some rule like you suggest, discord wouldn't even exist.


> So if there is some rule like you suggest, discord wouldn't even exist.

Yes, exactly! Monopolies are bad and shouldn't exist, so companies that only exist to create them shouldn't exist either. Without Discord and other providers wishing to make a chat monopoly for themselves, development would be driven by need. That tends to create solutions that are much more open and less exploitative of its users.


> Why?

Computing freedom: it should be law. Clauses like "you can't reverse engineer" and "you can only connect via our software" should be null and void.

> What else should I be able to demand from other people's products

You should be able to demand that your computing freedom be respected. We should all be able to run whatever software we want to interact with their servers.


Regardless of what you feel should be true, the reality is that Discord considers using software like this "self-botting" and will ban your account for it. The disclaimer to this effect is buried at the very bottom of the README, seemingly on purpose.


Ideally there should be no way for them to even know we're running custom clients.


Do anybody checked if the European DMA (Digital Markets Act) will be able to force Discord to open their platform for third-parties? Whether or not it constitutes a "gatekeeper" (in the DMA parlance) is a bit confusing for me...


IANAL though, according to the figures they don't appear to be the subject.

Definition of gatekeepers in DMA:

> A size that impacts the internal market: ... equal to or above €7.5 billion in in each of the last three financial years, ... The control of an important gateway for business users towards final consumers: ... more than 45 million monthly active end users ... and more than 10,000 yearly active business users ...

https://ec.europa.eu/commission/presscorner/detail/en/QANDA_...

Discord's performance:

> Discord generated $130 million revenue in 2020, ... Discord has over 140 million active monthly users...

https://www.businessofapps.com/data/discord-statistics/


> "10,000 yearly active business users"

Without a definition - which I have not located - this is ambiguous - does anybody know what they use here to determine if a user is a "business user" or not?

If the definition is "account represents and is owned by a business rather than an physical person and is used in the course of business" I'm pretty sure Discord would come out above that?


As someone following the “discord for business” matter in multiple support channels… I don’t think they have any business customers. They have end users and individual customers. So it would have to be the 45 million users.


They shouldn't exist as proprietary software in the first place.


IMO they can do what they want, they are a private company. Weird is just how many people are actively using that pile of s.


1. "Companies can do whatever they want" isn't a universal human right. We can and often should both limit them from doing things that harm people and force them to do things that benefit people.

2. I see this all the time on HN, but it's never substantiated. Besides being laggy on older devices, which can be said for at least half of all modern software, what specifically makes it anything but an excellent communication platform?


Cool easter egg: if you click on the notification icon in discord 15 times really quickly a Japanese sounding bot speaks out "DISCORDO"


> Discord > "secure".

Pick one. Put the other in the fire.

Creating a client does not protect the absurd amount of personal user data and metadata it already has, and will continue to acquire. Does not protect new users from having their personal information stolen, processed and sold/yielded by Discord. Further creating conditions for more people to be coerced into using it "because others are too" is not quite neat, let's put it like that.


will you get banned for using it like you will for every other alt client?

  Automated user accounts or "self-bots" are against Discord's Terms of Service. I am not responsible for any loss caused by using "self-bots" or Discordo.
hmm. seems like no.


Official Twitter account:

>All 3rd party apps or client modifiers are against our ToS, and the use of them can result in your account being disabled. I don't recommend using them.

https://twitter.com/discord/status/1229357198918197248

Thus it looks like in practice you can't have a client that has local chat history, local search, or just better information density on the screen, and simultaneously hope to not have your account nuked.


Note that this is a slightly different way to phrase the actual ToS [1]:

You may not copy, modify, create derivative works based upon, distribute, sell, lease, or sublicense any of our software or services. You also may not reverse engineer or decompile our software or services, attempt to do so, or assist anyone in doing so, unless you have our written consent or applicable law permits it.

In the other words, they want to disallow derivative works as long as law permits. There are two possible workarounds:

1. If your software doesn't actually depend on Discord clients and servers at all, for example AutoHotKey macros, you would be probably fine as they wouldn't be derivative works. Legal 3rd-party clients may be created with this way (I haven't seen any such attempts though); create a virtual desktop where the official client runs and reconstruct an alternative interface from screen captures, in principle.

2. They can only do things allowed by the law. Reverse engineering in particular is allowed in many jurisdictions when it's necessary to operate with other programs or devices, and a virtual desktop mentioned in 1 may qualify for this (but: IANAL). If a broader allowance is desired though, the law has to be changed.

[1] https://discord.com/terms


They also have:

>We reserve the right to block, remove, and/or permanently delete your content for any reason, including breach of these terms, our Community Guidelines, our other policies, or any applicable law or regulation.


This is a wrong paragraph to cite, because "your content" does not include an "account" (the ToS is very clear about this). The relevant paragraph would be the following:

Subject to applicable law, we reserve the right to suspend or terminate your account and/or your access to some or all of our services with or without notice, at our discretion, including if:

- You breach these terms, our policies, or additional terms that apply to specific products.

- We’re required to do so to comply with a legal requirement or court order.

- We reasonably believe termination is necessary to prevent harm to you, us, other users, or third parties.

- Your account has been inactive for more than two years.

Given the current ToS using a third-party client already qualifies as an explicit reason for the account suspension and it doesn't seem to be wise to risk that. Yes, they still reserve the right to suspend your account for other unstated reasons, but that's another matter.


Yes, you likely will. They have heuristics that will snuff out custom clients, and it's frequent to see people get nabbed by this. It's unfortunate, because from an abuse perspective I understand why (they have issues with spam from user accounts joining guilds and spamming users with "Free Nitro" (premium membership for Discord)).


(I work at Discord and manage our Infrastructure, Security, and Safety engineering organizations.)

We currently don't intentionally block or disable third party clients or action the accounts of people who use them.

We do monitor the traffic of spammers and we build heuristics around how to identify them -- and sometimes third party clients get caught up in that. Cold comfort, I know, but it's not us trying to block/come after well-behaved third party clients.

Anyway, to OP, good luck with discordo! For one of our internal hack weeks a few years ago I tried to build an RFC1459 compliant Discord gateway... it was a fun POC, but definitely lots of rough edges because the paradigms don't exactly match up. :)


Is it possible those heuristics could accidentally trigger for browsers other than Chrome? I had an old account where I normally used the android app, then one day I logged in with Firefox on desktop (with adblocker) and my account was banned about a minute later.

At a business level, can you share why the ToS forbids third party clients at all? We all know that "trusting the client" is not a viable security plan, so why does it matter what client people use?


> At a business level, can you share why the ToS forbids third party clients at all? We all know that "trusting the client" is not a viable security plan, so why does it matter what client people use?

Because if something breaks for a user and they complain, the company cannot diagnose it or fix it. Simply dealing with the complaints would be an extra cost on the company.

And when they decide to change part of the API, you have an unknown number of users that would be broken.


If you actually read the ToS it doesn’t forbid third party clients at all.


Eh, this reads weird to me. So third party clients are "ignored," but things like Better Discord which modify the first party client are explicitly not kosher? I'd love for better clarification around this at some point honestly.


Clearly Discord as a corporation is not ok with third party clients or modifications to the client.

But the engineers who would be in charge of enforcing those rules do not spend time explicitly seeking out third party clients or modifications. They instead look for "non-standard behavior", which may incidentally catch either.

PS: This is why you don't speak about your employer's business unless asked to by your employer.


Which brings me back to my initial post, despite the (mind you, high level engineer)'s opinion, you should probably stay way clear. Support will just not help you in certain situations, and it's not worth the risk. Was surprised to even see a reply from him, Discord the organization has typically been _very_ clear it's not kosher.


He might not be around too much longer if it's any consolation.


disclaimer : I'm not involved in the project in any way. I just posted for publicity.


I would better understand why if I wasn't still seeing people's accounts getting hacked regularly and spammers going around with botted accounts. Spammers also generally don't care if their accounts get shut down after a few days.


It was so so so much worse before, to be fair. We just see the limited stuff that does get through, for better or for worse.


That's the really frustrating part about this - I understand they want to keep their walled ecosystem/garden/whatever for whatever reasons they want.

I just wish I could customize discord's GUI so:

-The GUI have so less empty space

-Have a "compact" version where it just shows the users in the channel and who's speaking, and compact view of a chat channel.

The default window is just an absolute PAIN, it doesn't go smaller than a certain size and it just has so much irrelevant information not pertinent to the voice/video call I'm in or who I'm chatting with.

Maybe I'm the boomer longing for individual/group chats a la MSN messenger 20 years ago. :O


I think the really frustrating part is that tons of knowledge and discourse is getting blackholed into Discord's walled dumpster where it's not searchable and likely to disappear forever within a few years


FTR there is a compact setting for discord. I use it together with 80% zoom so that it has a "normal" font size. Turns it into an actually usable product :).


Maybe I'm the boomer longing for individual/group chats a la MSN messenger 20 years ago.

Since this is relevant to the other discussion going on here: To my knowledge, Microsoft has never banned accounts for using third-party MSN clients; and there were definitely plenty of them back then. I even wrote my own and used it right up until they shut down the servers. MS had updated the protocol many times, but MS being the "good old MS", highly valued backwards compatibility and up to the day they shut down the servers, they still negotiated and worked with one of the very first protocol versions.


> Maybe I'm the boomer longing for individual/group chats a la MSN messenger 20 years ago. :O

I know, right? The thing is, the vast majority of the generation using this don't have these qualms, it works for them. This must be how it felt like when we stopped used corded phones, haha. Or hand written stuff to type writers..


You don't get banned for using Ripcord since it uses the same APIs as the web client.


It has happened before https://annaclemens.io/discord


Yes, I remember when this happened. Everyone who got banned had their accounts unbanned (I was not banned however, and I've used Ripcord daily since 2018). You were also just as likely to have gotten banned if you used an outdated Android client.


If they're willing to lie about using a third party client (which is what they did to initially reach front page here many moons ago), I'd wager they were actually attempting to automate their actions instead of "BANNED after manually pressing 6 buttons".


What prevents Discord from doing a synchronized change of their web client and server APIs and using accesses to the old API to detect Ripcord users, then banning them?


Nothing, but in doing so, they'll likely ban non-Ripcord uses who are using outdated clients as well, followed by a bunch of support tickets by confused users.


Nothing whatsoever.


Yeah, this is what I use, and I've not been banned or anything.

I have been locked out of my account, though. There was a week during which I got locked out, and had to re-authenticate with 2FA to get into my account, once a day. However, they eventually stopped doing that after enough support tickets rolled in, and Ripcord has been rippin' along ever since.


I'm using Ripcord for over 3 years now and love it.


Super cool to see this underway, I've been waiting for a cordless replacement for a while now!


> lightweight

> golang

yet another terminal discord client that will be abandoned shortly


Why though? Sorry if I don't understand the meaning.


Go is the slowest compiled non vm language


"Go is the slowest very fast language."


Which is completely irrelevant. It's very fast and it's competition is a slow and heavy web app anyway.


because that has happened to every single one of them so far


I cannot wait not to use it because it's against ToS


What does `ToS` stand for?


terms of service


What do you disagree with?

EDIT: wow, people really hate jokes. No fun allowed!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: