Discourse (software)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Discourse logo.svg
Developer(s)Civilized Discourse Construction Kit, Inc.
Initial releaseAugust 26, 2014 (7 years ago) (2014-08-26)[1]
Stable release
2.8.2[2] / 2022-03-22[±]
Written inRuby, JavaScript
Operating systemLinux
Available inAlbanian, Arabic, Bosnian, Chinese, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Indonesian, Italian, Japanese, Korean, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish, Telugu, Turkish, Ukrainian, Urdu, Vietnamese
LicenseGNU GPL version 2 (or later)
Websitewww.discourse.org Edit this at Wikidata

Discourse is a modern, free and open-source Internet forum software. Features include support for categorization and tagging of discussions, configurable access control as well as usability improvements recently popularized by large social networks, such as live updates, expanding link previews, infinite scrolling, and real-time notifications. It allows for a high level of customizability via its plugin architecture and its theming system. It was released on August 26, 2014,[3] by its founders, Jeff Atwood, Robin Ward and Sam Saffron.

The client side application is written in EmberJS.[4] The server side is written in Ruby on Rails and backed by a Postgres database and Redis cache. The source code is distributed under the GNU General Public License version 2.[5] Discourse can be self-hosted by anyone. Alternatively, hosting service can be purchased from the company of the founders.


The default homepage features a list of active topics as well as navigation buttons that help users find discussions they're interested in.
The default homepage in Discourse

"to raise the standard of civilized discourse on the Internet through seeding it with better discussion software" is one of the core goals behind the development of Discourse.[6]

It enables admins to create and grow communities - large or small - and provides them with tools that encourage civilized discussions to thrive. Discourse follows responsive design principles[7] and supports the latest, stable releases of all major browsers on both PCs and mobile devices.[8]

Ever since its release, Discourse has been undergoing active development with over 40,000 commits as of March 2022.[9]


Similar discussions can be organized under categories. Admins can create categories, add category descriptions and logos, and control access to topics in the category. Discourse provides granular control over reading and writing permissions.[10]

Discourse also supports sub-categorization or nested categories. Subcategories are categories in themselves so they can be controlled in the same manner as parent categories. The only difference is the parent-child relationship.


Tags are a lightweight alternative to categories, but they can also be used in conjunction. Unlike the heavy walls of categories, tags are nimble, flexible and lightweight. According to the Discourse developers:

  • Tags can be used more liberally
  • Users, if allowed, can create their own tags to help with organization
  • Tags don’t imply any kind of security or permissions
  • Multiple tags can apply to the same topic.[11]


Conversations in Discourse are organized into topics. Users are able to create new topics or reply to existing ones. Categories and tags can be assigned to topics which makes them follow the security rules for those if applicable.

A topic consists of the initial post as well as any subsequent replies to it. Replies in Discourse follow a flat chronological order as opposed to being threaded. The Discourse core developers believe that threading replies is detrimental to the health of the overall discussion.[12] Users can interact with each post independently. They can take actions such as reply, like, bookmark, quote or flag for moderation.

Dynamic Content[edit]

Unlike traditional forum software, Discourse focuses on the conversation. Instead of splitting discussion into multiple pages, Discourse uses infinite scrolling to make reading simple. New content is dynamically loaded as the user scrolls. Discourse stores the user's last read position and takes them back to it upon subsequent visits. This ensures that users never accidentally miss any part of the conversation.

Trust Levels[edit]

According to the developers, "The user trust system is a fundamental cornerstone of Discourse".[13] The trust level is a built-in feature that helps guide the progress of new members while they learn about the community.

Newly registered users are sandboxed so they cannot accidentally hurt themselves or others while they learn about the community. As they become more experienced, by participating in the community, they are granted more rights and access to more features.


The notification system in Discourse allows users to opt-in for real-time notifications. Some examples of notification are:

  • Receiving a reply
  • Being quoted
  • Receiving likes
  • Receiving a new personal message or reply
  • New topics published in a watched category or tag
  • Bookmark reminders[14]

Discourse Narrative Bot[edit]

The initial greeting message sent by Discobot sent to new users. It encourages them to interact with the software to learn some of its basic features.
Discourse Discobot greeting message

Discobot is a customizable bot whose purpose is onboarding new users,[15] interactively, to use many of the platform's features like bookmarking a topic, oneboxing links (embedded previews), adding emojis, using mentions, basic formatting, uploading images to a reply, flagging posts and using the search function.

Personal Messages[edit]

In addition to public and private topics, users on Discourse have the ability to send personal messages to other members in the community. Users receive notifications for personal messages and can add or remove members to a message at any time. Each user has a personal inbox that contains all of their sent and received messages.

The activity tab can be used to track recent activity from users in a certain group.
The group activity tab in a Discourse group


Admins can create and add members to groups in Discourse. Groups can be used to manage access to certain categories, group mentions as well as group messages.

When Discourse is installed, it creates automatic groups for administrators, moderators, staff, and the various trust levels.[16] Custom groups can set to either public or private, Users can add themselves to a group or request to be added by the group owners. Users can also be automatically added to a group during signup based on their email address.


The editor in Discourse features supports HTML, Markdown and plain text. It features a preview panel as well as a formatting toolbar.
Discourse Editor (Composer)

Discourse features a rich-text editor, referred to as the composer. It supports plain-text, markdown, and HTML. The composer features a toolbar which includes formatting, quoting and upload buttons. The preview panel in the composer allows users to see a live preview of the post. It supports drag and drop image and file uploads. The composer supports OpenGraph and oEmbed. URLs from external websites that support those standards will automatically expand to provide a summary of the URL. One of the key features of the composer is its ability to save drafts prior to publishing them.

Certain actions in the composer are triggered based on user input. The "@" character creates a panel for mentioning other users. The "#" character creates a similar panel for categories and tags. The composer also features configurable and dismiss-able JIT educational panels with the goal of promoting civilized discussion.

Admin Interface[edit]

The admin dashboard in Discourse features key metrics about the community's health as well as various sections that help admins configure the software to their liking
Discourse admin dashboard

Discourse includes a feature-rich administration dashboard. It has various sections that allow admins to tweak many features in the software. The settings section includes a wide variety of controls which can be used to modify the display options and behavior of the software. It also includes easy-to-configure fields for meta information about the community.

The admin dashboard provides an overview of the health of the community. It displays charts that indicate trends in the number of signups alongside other community health metrics. Theres is also a dedicated section where admins can examine certain metrics over a specific period of time.

The localization section allows admins to change any text used in the interface to their liking.

The badges page provides users with information about existing badges, their levels, and how many times they've been awarded
The badges page in Discourse


Discourse features a built-in badge system. According to the core developers, it facilitates “learning by doing”.[17] There are a few default badges that encourage users to learn about the software; however, admins can create and award additional custom ones. They can be awarded manually or set to be granted automatically if certain conditions are met.

Badges can be optionally set to display next to the username if required. All badges users earn are displayed on their profile page. Discourse also includes an index page for badges where users can learn more about them.

User Directory[edit]

The "Users" page in Discourse serves as a leader-board with search functionality where a quick overview of members' activity is displayed. It includes statistics such as posts created, posts read, likes received and days visited for a given time frame. Users can be sorted according to any of those metrics. Admins can optionally add more metrics.  


Discourse is extendable via plugins. Plugins create the ability to modify both the server and client sides of the application. Some examples of plugins include

  • Discourse Math which adds support for math rendering.
  • Chat integrations, which integrates Discourse with popular chat platforms.
  • BBCode which adds support for BBtags.

The discourse team maintains a list of both official and community contributed plugins on the official support forum.

The Discourse Air theme demonstrates the ability to customize the layout of Discourse.
Discourse Air Theme


The Discourse theme system allows admins to fully customize the client side application. Themes can modify the layout of pages, add new functionality and add additional styles to any element in the interface.[18]

A list of official and community contributed themes can be found on the official discussion forum.


Discourse is backed by a full REST API.[19] The developers maintain a starting guide on the support forum as well as documentation for the API endpoints.


The developers take security "very seriously".[20] They welcome peer audits of the open source code and encourage reporting security issues. They maintain a vulnerability disclosure program at Hacker One.[21]


DiscourseHub is the official, open source Discourse application for Android and iOS devices. It allows users to keep track of new and unread posts and notifications across multiple Discourse sites. Real-time push notifications are native for officially hosted Discourse forums.


The Discourse developers maintains a number of custom migration scripts that aid admins wanting to switch from other platforms to Discourse. An exhaustive list of importers is available in the project's repository on GitHub, and an official guide is maintained by the team on the support forum.

Server Requirements[edit]

The officially-provided, x86 64 Linux, Docker images are the supported method for installing Discourse.[22] Discourse uses a custom "launcher" script to configure the containers. The software can successfully support small sized discourse groups with servers having as little as 1GB of ram.[23]

The Docker-based distribution includes the web server (which is based on nginx and Unicorn), database system (PostgreSQL), cache (Redis), and background processing services (Sidekiq).

Discourse requires an outgoing MTA and does not provide one itself. The developers recommend paying for an outgoing MTA from a reputable commercial provider to ensure that transactional mail arrives in a forum user's inbox.

Discourse also supports, but does not require, the ability to receive email. Discourse provides an optional Docker image for an incoming-only MTA, and supports receiving email via POP3 or IMAP.[24]


According to its developers, Discourse can be installed in under 30 minutes with no prerequisite knowledge.[25] The developers maintain the official installation guide on Github.


Co-founder Jeff Atwood announced in 2013 that Civilized Discourse Construction Kit, Inc. had obtained initial venture capital funding from First Round, Greylock, and SV Angel[26]

In May 2017, he said in an interview that the company was generating approximately $120,000 per month.[27] With the money, the company pays salaries for its full-time employees who maintain the software and develop new features. This is an example of an open source software business model where a company sells professional services to willing customers. As of March 2022, the developers shared that more than 3000 businesses[28] or instances have chosen the official Discourse hosting which CDCK provides as Software as a service.

In August 2021, Civilized Discourse Construction Kit announced it had secured US$20 million in Series A Investment by Pace Capital and First Round Capital.[29]

Development and Support[edit]

Key Developers[edit]

The Discourse project is developed and maintained by the developers at Civilized Discourse Construction Kit, Inc. (CDCK).

Local Development[edit]

There are a number of official guides that cover setting up Discourse locally for development purposes. Developers interested in plugin development for Discourse can read the plugin guide. For developers interested in creating Discourse themes, the theme development guide is the recommended starting point.


Support and documentation for admins using Discourse is provided by the Discourse team as well as community contributors at the official discussion forums.

See also[edit]


  1. ^ Atwood, Jeff (2014-08-26). "Introducing Discourse 1.0". blog.discourse.org. Archived from the original on 2020-07-04. Retrieved 2020-07-04.
  2. ^ "Tags - discourse/discourse". github.com. Retrieved 2022-03-25.
  3. ^ "Introducing Discourse 1.0". Discourse. 2014-08-26. Retrieved 2022-03-31.
  4. ^ "Why Discourse uses Ember.js". Evil Trout’s Blog. 2013-02-10. Retrieved 2022-03-31.
  5. ^ "What is Discourse?". Discourse - Civilized Discussion. Retrieved 2022-03-31.
  6. ^ "Civilized Discourse Construction Kit". Coding Horror. 2013-02-05. Retrieved 2022-03-31.
  7. ^ "What is Discourse?". Discourse - Civilized Discussion. Retrieved 2022-03-31.
  8. ^ "What is Discourse?". Discourse - Civilized Discussion. Retrieved 2022-03-31.
  9. ^ "Commits · discourse/discourse". GitHub. Retrieved 2022-03-31.
  10. ^ "How to create a category in Discourse". Discourse Meta. 2021-07-15. Retrieved 2022-03-31.
  11. ^ "It's Time We Talked About Tags". Discourse. 2017-10-20. Retrieved 2022-03-31.
  12. ^ "Threaded discussion is ultimately too complex to survive on the public Internet?". Discourse Meta. 2017-05-23. Retrieved 2022-03-31.
  13. ^ "Understanding Discourse Trust Levels". Discourse. 2018-06-25. Retrieved 2022-03-31.
  14. ^ "Discourse New User Guide". Discourse Meta. 2021-04-10. Retrieved 2022-03-31.
  15. ^ "Who is Discobot?". Discourse. 2017-08-29. Retrieved 2022-03-31.
  16. ^ "Understanding Discourse Trust Levels". Discourse. 2018-06-25. Retrieved 2022-03-31.
  17. ^ "What are Badges?". Discourse Meta. 2021-05-27. Retrieved 2022-03-31.
  18. ^ "Beginner's guide to using Discourse Themes". Discourse Meta. 2021-03-11. Retrieved 2022-03-31.
  19. ^ "How to reverse engineer the Discourse API". Discourse Meta. 2021-05-24. Retrieved 2022-03-31.
  20. ^ discourse/discourse, Discourse, 2022-03-31, retrieved 2022-03-31
  21. ^ discourse/discourse, Discourse, 2022-03-31, retrieved 2022-03-31
  22. ^ discourse/discourse, Discourse, 2022-03-31, retrieved 2022-03-31
  23. ^ discourse/discourse, Discourse, 2022-04-02, retrieved 2022-04-03
  24. ^ "Direct-delivery incoming email for self-hosted sites". Discourse Meta. 2022-02-11. Retrieved 2022-03-31.
  25. ^ discourse/discourse, Discourse, 2022-03-31, retrieved 2022-03-31
  26. ^ "Stack Exchange Co-Founder Jeff Atwood Launches Forums Startup Discourse, With Funding From First Round, Greylock, And SV Angel". TechCrunch. Retrieved 2022-03-31.
  27. ^ "Jeff Atwood on Growing Discourse to $120,000/mo". Indie Hackers. Retrieved 2022-03-31.
  28. ^ "Discourse customers". Discourse - Civilized Discussion. Retrieved 2022-03-31.
  29. ^ "Discourse Announces $20m Series A Investment by Pace Capital and First Round Capital". Discourse. 2021-08-27. Retrieved 2022-03-31.

External links[edit]