Skip to content

Switch to Discord for realtime official communications #53

@Fishrock123

Description

@Fishrock123

So... switching off of IRC has been discussed in like a 20 threads over probably like 5 or 6 repos.

I think it might finally be time to make a move, and I strongly suggest that we use Discord.

Some reasons we might want to switch:

  • We only have two real irc channels, #node-dev and #node.js, one of which is 'unofficial-ish'.
    • Specific conversations often overlap, adding new channels is difficult without owning the irc server.
  • IRC spams join/disconnect messages because IRC.
  • Moderation tools require arcane commands that are difficult to remember.
  • No notifications, requires a bouncer.
  • Horrible web interfaces.

Here's a little tools comparison:

IRC:

  • Is capable of supporting every feature everyone would ever want except voice
  • Those features will never exist because it all basically needs to be built from scratch and will never get done
  • Requires a bouncer for chat history
  • Mobile clients exist but are not great (in my experience)
  • Horrible web interfaces

Gitter:

  • Has awful moderation support
  • Limited feature set
  • Has mobile clients, web interface
  • Can be connected to via an irc client

Slack:

  • Not technically public
  • Has poor tools for being used as a public channel (i.e. moderation tools)
  • Great notifications system
  • Has mobile clients, web interface
  • Can be connected to via an irc client

Discord:

  • Literally built for large-scale open communities
  • Has public-space moderation and management functionality
    • No built-in temp bans / muting, but can be done through user roles
  • Has voice channels for meetings
  • Has mobile clients, web interface
  • A middleware thing exists to connect via IRC
  • Notification system not has good as Slack

All of these require an account because we also require freenode registration on IRC.


Here's a more detailed run-down of what Discord supports, relevant to us:

Public invite / join links

  • Discord has a built-in system for sharing joinable links.
  • Permanent links are available.
  • The ability to create new links is completely configurable.
  • There is support for levels of verification an account must have to be able to join (such as email, 2fa) in order to reduce spam / bots.

Text channels

  • Support for markdown-style text input like Slack, emojis, embeds, etc.
  • Has pinned message functionality, channel topics.
  • Channels have individual full configurability for restrictions, including the ability to limit embeds, links, files, @everyone mentions, and more.
  • Channel can be grouped by category.

Voice channels

  • Also have individual full configurability for restrictions.
  • May be removed altogether.
  • Can be restricted to certain users.

Server roles

  • Allows multiple administrators .
  • Permissions for moderators, including kick, edit nicknames, bans.
  • Full configurability of text / linking / attachments / etc permissions.
  • Full voice configuration including connect / speak / mute members / move members.
    @mentions for channel role groups.
  • Online member lists for roles groups.

Moderation tools

  • Configurable server-wide explicit content filter.
  • Support for server kicks / bans (account + ip by default) / lower-role editing.
  • Ability to do member muting / temp-banning via role changing.
  • Bans list.

Other stuff

  • Is free for what we want, uses an account-subscription based model for extra, shiny, per-user features: https://discordapp.com/nitro
  • Support for webhooks.
  • Has support for custom integrations we could potentially make use of.
  • Has an audit log.
  • Has an embeddable server widget. (We could embed a chat into some Node.js website page if we wanted to.)
  • Private messages from server users can be disabled.
  • Typical notifications muting / only @mentions / suppress @here & @everyone / mobile notifications settings / overrides.

Other projects using Discord:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions