Hacker News new | past | comments | ask | show | jobs | submit login

The issue I have with Matrix/IRC/IRCv3 compared to Discord is that they don't really work well with public communities.

Discord's server/channel/role system is amazing, and I don't know why everyone else isn't replicating it.

For instance, let's take the Pine64 Discord server. It has a grand total of 27 channels split into 10 categories (including top-level). Using Discord's permissions system, some of those channels are read-only like #announcements.

Pine64's server is also bridged to Matrix. Matrix requires every single channel to be bridged individually into their own Matrix chat, just look at this table (https://wiki.pine64.org/wiki/Main_Page#Chat_Platforms)! In fact, some of the channels aren't even bridged at all! Meanwhile on Discord, everything's all in one easy to use place. You just join the server, and that's it.

But what about Matrix spaces? Aren't those the equivalent of Discord servers? The issue is that rather than an integrated experience, Matrix servers are just a built-in version of the table I listed above. You still have to leave/join chats individually and it doesn't even have categories!

But that's all from a user's perspective, what about from a server admin's perspective? Discord's permission system is great and flexible, and Matrix's system is just kind of bad. In case you don't know Matrix's system from what i understand is basically: every user gets a permission level number, and users with certain levels can do certain things. That's it, no flexibility whatsoever.

Meanwhile on Discord, you can create roles which when given to users allow them to do certain things. Like anyone with a "Moderator" role can delete messages or ban people. But you could also make it so "moderators" can't delete messages, only ban people. And you can also make roles behave different on per-channel or per-category basis. You can even make it so users can't see a channel at all without a role (for instance, a server I'm an admin on has a #mod-chat channel and a #admin-chat channel).

Matrix's system just can't do that. And it really doesn't integrate with their Spaces system. There's no way to make it so only certain people can see certain channels in a Matrix Space. In fact, there's no way to manage permissions for an entire Matrix Space at all! It's limited to a per-chat basis.

And that long-winded rant is why I will stick with Discord.




You list out a lot of propositions in your comment about what Matrix's role model can or cannot do compared to Discord's, but only some of them are actually true.

To attempt to distill the real deficiencies:

- Non-monotonic roles. You can't have Deleters (who can only delete things, but not ban) and Banners (who can only ban, but not delete things) in a single channel (room).

- Auto-joining rooms upon joining a space.

- Room roles/permissions inheriting from space roles/permissions.

- A permission to control which members of a space can see a channel.

Luckily all of those except the first one seem easily built upon the current protocol by relatively tame extensions.

The last two in particular stem from the fact that spaces are too "weak" to support this at the moment: unlike in Discord, a room can be in more than one space at once. This means you can use spaces to define your own private categorizations, which is something Discord doesn't support at all. However, to be able to support those last two use cases, we'd need to define a mechanism by which a room could designate one special space as the owning space for that room.

On the other hand, Matrix does have:

- Categories. These are simply modeled with spaces within spaces. Spaces can be infinitely nested.

- The ability to make roles behave differently on a per-channel and per-space basis.

- A role which can only delete things but not ban people, or a role which can ban people but not delete things. You just can't have both at the same time.


> However, to be able to support those last two use cases, we'd need to define a mechanism by which a room could designate one special space as the owning space for that room.

This actually exists, so a room knows its canonical parent space, but the feature is not used: https://spec.matrix.org/unstable/client-server-api/#mspacepa...


This was a much better (and more accurate) description of my complaints about Matrix's permissions system. Thanks!


Insomuch as this may be an adequate design, for many cases the fact that it’s not open source is a nonstarter. I’d certainly never touch it for my teams and workgroups at work, because we need to be able to host it and isolate and harden.

Discord is also sorta prone to this weird and cringy sort of internet culture which regular people find a little gross, I’d think.

I’m old enough to distinctly remember the rise of IRC and I can’t see a reason aside from better security for it to be reinvented rather than just updating the standard. Emojis and attachments and whatnot.


> [IRC, MSN/ICQ/etc, ...] is also sorta prone to this weird and cringy sort of internet culture which regular people find a little gross, I’d think.

Nothing new under the sun.


For irc that just seems like a UI difference. Of course you can have announce only channels in irc, people have been doing that forever.

The big thing is that discord shows you all related channels on the project. If you are on libera, there isn't the same discoverability. So in a sense announcement only channels are much less useful because users cant find them (not to mention lack of history if you dont have a bouncer).


When hosting your own IRC server, you can "force-join" users to arbitrary channels to replicate what it's like to join a discord guild. Pine64 does it, for example.


It goes much farther than that I think the most interesting use of its API i've seen was using the dumb little reaction "press icon to add to the counter thing" as a way to opt in or confirm stuff.

I remember one server where the #welcome channel just have a bunch of "categories" to choose from and depending on which one you clicked you got assigned a role that unlocked a bunch of channels related to the topic. Some also used it to the new user onboarding where you got access once you read the rules and accepted it by clicking the reaction.

> So in a sense announcement only channels are much less useful because users cant find them (not to mention lack of history if you dont have a bouncer).

That's my issue with projects or corporations using discord for generic chat - it is entirely undiscoverable to outside world, can't just google a question.


See, you can decide to stick with discord, and discord can decide to not stick with you.

That's the difference.

"Your" discord "server" turns out to be neither of those.


I agree with the sentiment that Discord is overall much nicer for Discord communities :p No, but really, Matrix isn't quite there yet in terms of those nice and easy community management features, but what you listed isn't quite accurate, as others have pointed out. Either way, besides Matrix, I'm also really interested in the development of Revolt[1], and I suspect you will be too :)

[1]: https://revolt.chat


agree and the issues with IRC are so much more basic. there isn't even a built in history. i could miss DMs directly addressed to me or an important conversation just by being offline and have no way of even knowing. a technical user could set up a bouncer, but just using discord is much easier. for any of the 95% of general non-technical communities discord hosts, IRC is a complete non-starter.


You seem to complain mostly about the bouncer. There are services that will "just work" for you, like IRCCloud or chat.sr.ht (and certainly others). You just will just have history without knowing about what a bouncer is.


It's also difficult to have a good working permalink to Matrix chats that don't throw a bunch of errors for people. Nowhere as seamless as Discord's invite links.

Ask for mercy if you want to do multiple channels invite-only. Need to upgrade rooms first. Then the space is out of sync for some clients, some permalinks to chats break. Maybe it'll work, just maybe.


Discord and IRC are not competitors. Discord is just a product you choose to use or not. Discord Inc. runs the servers, and you use whatever software they approve to connect. Using unapproved software could result in a ban from the service.

IRC is a set of protocols to enable a federated service. You choose which server implementation you want to host, and your users choose from dozens of available clients, which all work together because of the relevant standards, to which everyone has access.

The rest of your comment seems to be a comparison of Matrix, which is not IRC, and Discord. It's great that you've found a product you like, which suits your needs. Don't make the mistake of thinking IRC is competing with it, though. IRC will still be here long after Discord Inc. exits.


The protocols might not be competitors.

But that doesn't change the fact that Discord has been swallowing up almost every single community that either previously used IRC, or would have used IRC if it was created 10-20 years ago.

The sad fact is that other than openness (in several senses of the word), Discord delivers a much better experience to the communities that use it. It preserves scroll back. It has a proper mobile app that reliably delivers notifications (I'm not aware of anyway to do this with IRC, other than a closed and paid service like IRC cloud). It has moderation tools. It has community building tools and ways to split off sub-conversations. It has platform wide anti-spam. It both embeds images and videos, and stores them.

It is incredibly depressing watching communities die on IRC, either moving to discord, or being replaced by new communities on discord that serve the same role. Most of the ones still holding on are run by older people who have strong views on the importantness of openness.

I actively support those communities staying on IRC. But at the same time, I use discord myself, and I understand why it's winning.


"It preserves scroll back."

For limited definitions of 'preserves' if you aren't a paying user.

"It has a proper mobile app that reliably delivers notifications"

Not really, you can't tell who pinged you half the time (and this is a common complaint from most everyone in a discord server with 70+K members.)

"It has moderation tools."

Limited ones unless you get a bot to add in granularity (such as duration of moderation action.) I can think of a few HTTP chat sites from the late 90s that had better moderation for all users (and a reverse-ignore feature, which seems to have just disappeared from everyone's collective memory.)

"It has platform wide anti-spam."

Which more often than not takes my pictures of rocks and flags them as NSFW. Useless.

"It both embeds images and videos, and stores them."

This is about the one thing it does right.

I should note IRC had video chat functionality with pIRCh98.


> For limited definitions of 'preserves' if you aren't a paying user.

You might be thinking of slack. Discord preserves unlimited scroll back for everyone.

> Not really, you can't tell who pinged you half the time

Which is still an improvement over IRC.

> (and this is a common complaint from most everyone in a discord server with 70+K members.)

And how does a 70K user IRC channel handle this?

> Limited ones unless you get a bot to add in granularity (such as duration of moderation action.)

They recently added "Timeout bans", and other features to reduce the need for bots (regex actions that will auto-filter, flag or timeout on match).

Which is far more than IRC offers without needing a bot.

> can think of a few HTTP chat sites from the late 90s that had better moderation for all users

But discord isn't competing with HTTP chat sites from the late 90s. It's competing with IRC.

> I should note IRC had video chat functionality with pIRCh98.

I don't really think you can use a propriety feature of a single (obsolete) client to defend IRC.

It really doesn't matter what did what first, or what IRC could theoretically do if you extend it. The only thing that matters to users and communities is the that the out-of-the box experience for discord today is far better than the out-of-the box experience for IRC.


"You might be thinking of slack. Discord preserves unlimited scroll back for everyone."

Only if the server has been boosted enough to allow for it. Boosts = paying money.

"And how does a 70K user IRC channel handle this?"

It doesn't, the client is usually programmed to notify upon specified trigger words or the user name, and handles that itself.

"I don't really think you can use a propriety feature of a single (obsolete) client to defend IRC."

I'm not defending IRC - I'm simply saying IRC did it first.


> Only if the server has been boosted enough to allow for it. Boosts = paying money.

This just isn't true.

I'm on a server which has never been boosted and I can scroll back all the way to the server's creation with no limits.


> For limited definitions of 'preserves' if you aren't a paying user.

What do you mean by this? I don't pay for Discord and I have never had any issues scrolling as far back as I want to.

> Not really, you can't tell who pinged you half the time (and this is a common complaint from most everyone in a discord server with 70+K members.)

Personally I have notifications disabled so I can't comment on that, but both the web client and the Android app have a specific view to list all past pings or replies.

> Limited ones unless you get a bot to add in granularity (such as duration of moderation action.) I can think of a few HTTP chat sites from the late 90s that had better moderation for all users (and a reverse-ignore feature, which seems to have just disappeared from everyone's collective memory.)

While limited, they are there by default and pretty convenient. And they're getting better.


"What do you mean by this? I don't pay for Discord and I have never had any issues scrolling as far back as I want to."

The servers need to be boosted to keep certain things like extended history preservation and what not available to the users of that server.


This just isn't true.

I'm on a server which has never been boosted and I can scroll back all the way to the server's creation with no limits.


After seeing almost every single community I frequented on IRC move to Discord and some to Matrix over the last 10 years, I just don't agree that Discord is not competing. It's captured almost all of the users. IRC will always "exist" in the same way steam powered trains and analogue cameras exist. IRC certainly isn't relevant anymore.


Discord and IRC are competitors. Where do you think the terms servers and channels came from? Just because IRC is losing to Discord badly you can't just retroactively redefine IRC as a chat service for people who want to use something with an open protocol.


Those 3 product fill same function, chatting between people. Of course they are competitors, it's just IRC isn't competitive in normal people space.

The fact IRC might or might not choose to compete doesn't mean it isn't one of choices people wanting chatting app consider.


In fact, the Matrix permission system allows for what you describe. For each room, you can define what actions a certain access level can perform.


Ya but there’s little client diversity. I can’t have discord running on a headless dev box and remote in to catch up. This is what irc better for terminal enthusiasts


The only reason you need to do that in the first place is that IRC servers don't save chat history/dms when you're offline. You'd gain no benefit from doing that with Discord.


I use all sorts of computers for personal and professional use. I don’t want to install discord on all those clients.

The point is more about the possibilities which have been severely muted with chat apps like discord.


You don't have to install discord on any device, it runs in a web browser


And I don't want to download a full embedded browser (not my browser of choice, on top of that) for every small app under the sun. And ElectronJS is just that.


Quassel does bring an experience very close to that though. Still IRC, but a bit more modern and nice.


Why would you want to do that? You can install Discord on your phone if you want to catch up if you are out somewhere doing something.


Not a fan of being on my phone, especially when I’m already on a device.


Discord is on all major platforms including the web and you also have the option to remote in to another machine that has Discord.


I get it but that’s not how I want to use my chat app. I understand my workflow is unique but that’s why I prefer IRC


works fine with bitlbee




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: