Discourseは、オープンソースのインターネットフォーラムシステムである。機能にはスレッド化、ディスカッションのカテゴリ化とタグ付け、設定可能なアクセス制御、ライブ更新、リンクプレビューの拡張、無限スクロール及びリアルタイム通知が含まれる。Discourseはプラグインアーキテクチャとテーマシステムを介してカスタマイズすることができる。

Discourseは作者のジェフ・アトウッド、ロビン・ウォード及びサム・サフロンによって2014年8月26日にリリースされた。

クライアントサイドアプリケーションはEmber.jsで書かれている。サーバサイドはRuby on Railsで書かれており、データベースにはPostgreSQLを、キャッシュにはRedisを採用している。ソースコードはGPLv2またはそれ以降に基づいて配布されている。

Discourseは積極的に開発されており、2023年6月時点で49,000を超えるコミットが記録されている。

## 特徴

### カテゴリ化

同様のディスカッションはカテゴリの下に整理することができる。管理者はカテゴリを作成し、カテゴリの説明とロゴを追加し、カテゴリ内のトピックへのアクセスを制御することができる。Discourseは読み取りと書き込みの権限を細かく制御することができる。

Discourseはサブカテゴリ化またはネストされたカテゴリも対応している。サブカテゴリはそれ自体がカテゴリなので、親カテゴリと同じ方向で制御することができる。唯一の違いは親子関係である。

### タグ付け

タグはカテゴリの軽量な代替だが、カテゴリと組み合わせて使用することもできる。

### トピック

Discourseの会話はトピックごとに纏められる。ユーザーは新しいトピックを作成したり、既存のトピックに返信することができる。カテゴリとタグをトピックに割り当てることができ、該当する場合はトピックがそれらのセキュリティルールに従うようになる。

トピックは最初の投稿とそれに対する返信から構成される。Discourseでの返信はスレッド化とは対照的に、平坦な投稿順に従う。Discourseのコア開発者は、返信をスレッド化することはディスカッション全体の健全性に有害であると信じている。ユーザーは各投稿を個別に操作することができる。ユーザーは返信、いいね、ブックマーク、引用またはモデレーションのためのフラグなどのアクションを実行することができる。

### 信頼レベル

ユーザー信頼システムは「Discourseの基本的な基礎」である。Discourseの信頼レベルは、新規ユーザーが誤って自分自身や他のユーザーを傷つけないようにサンドボックス化すると共に、経験豊富なユーザーにはコミュニティの維持とモデレートに役立つように、時間の経過と共により多くの権限を与える。

信頼レベルは、新規ユーザー、基本ユーザー、メンバー、レギュラー、リーダーの5つからなる。

ユーザーがより多くの経験を積むにつれて、信頼レベルは上昇し、より多くの権限が与えられ、より多くの機能へのアクセスが認められるようになる。

### Discourse narrative bot

Discobotは、トピックのブックマーク、埋め込みリンクプレビュー("oneboxing")、絵文字、メンション、基本的な書式設定、画像のアップロード、投稿のフラグ付け及び検索などのプラットフォームの機能の多くを新規ユーザーに紹介するカスタマイズ可能なボットである。

### 個人的なメッセージ

公開及び非公開のトピックに加えて、Discourseのユーザーはコミュニティ内の他のメンバーに個人的なメッセージを送信することができる。ユーザーは個人的なメッセージの通知を受信し、いつでもメッセージにメンバーを追加または削除することができる。各ユーザーには、送受信した全てのメッセージが含まれる個人用の受信箱がある。

### グループ

管理者はグループを作成することができ、そこにメンバーを追加することができる。グループは、特定のカテゴリへのアクセスの管理したり、グループでのメンション及びグループメッセージを管理することができる。

Discourseをインストールしたときに、管理者、モデレーター、スタッフ及び5つの信頼レベルの自動グループが作成される。カスタムグループは公開または非公開に設定することができる。ユーザーは自分自身をグループに追加することやグループの所有者に追加を要求することができる。ユーザーはサインアップ中にメールアドレスに基づいて自動的にグループに追加することもできる。

### エディタ

Discourseは高機能なテキストエディタ(the "composer")を備えている。このエディタはプレーンテキスト、Markdown、HTMLに対応している。Composerには書式設定、引用、アップロードボタンを含むツールバーが備わっている。Composerのプレビューパネルを使用すると、ユーザーは投稿のライブプレビューを確認することができる。このエディタはドラッグ・アンド・ドロップによる画像とファイルのアップロードに対応している。ComposerはOpen GraphとoEmbedに対応している。これらの標準に対応する外部ウェブサイトのURLは、URLの概要を表示するために自動的に展開される。Composerの重要な機能の1つは、公開前に投稿の下書きを保存できることである。

Composerのいくつかのアクションは、ユーザーの入力に基づいてトリガーされる。「@」文字を使用すると、他のユーザーに言及するためのパネルが表示される。「#」文字を使用すると、カテゴリとタグのための同様のパネルが表示される。Composerは礼儀正しいディスカッションを促進することを目的とした、設定可能なJIT教育パネルも備えている。

### 管理者インターフェース

管理ダッシュボードの設定セクションでは、コミュニティに関する情報のためのフィールドを含んだ、ソフトウェアの外観と動作を制御することができる。

ダッシュボードにはサインアップ数やその他の健康基準を示すグラフを介して、コミュニティの健康状態の概要も提供される。

ローカライゼーションセクションを使用すると、管理者はインタフェースで使用されるテキストを変更することができる。

### User directory

Discourseの「Users」ページ検索機能を備えたリーダーボードとして機能する。これには作成された投稿、読まれた投稿、受信したいいね、特定の期間内の訪問日数などの統計が含まれている。ユーザーはこれらの基準のいずれかに従って並べ替えることができる。管理者は任意で更に基準を追加することができる。

### プラグイン

Discourseはプラグインを介して拡張することができる。プラグインはアプリケーションのサーバサイドとクライアントサイドの両方を変更する機能を作成する。プラグインの例としては次のようなものがある:

- 数式のレンダリングの対応を追加するDiscourse Math。
- Discourseを人気のあるチャットプラットフォームと統合するChat integrations。
- BBタグの対応を追加するBBCode。

Discourseの開発チームは、公式サポートフォーラムで公式プラグインとコミュニティによるプラグインの両方の一覧を管理している。

### テーマ

Discourseテーマシステムを使用すると、管理者はクライアントサイドアプリケーションをカスタマイズすることができる。テーマは、ページのレイアウトを変更したり、新しい機能を追加したり、インタフェース内の要素に追加のスタイルを追加することなどができる。

### API

DiscourseはREST APIを提供している。開発者はサポートフォーラムでスタートガイドとAPIのエンドポイントのドキュメンテーションを管理している。

### セキュリティ

開発者はオープンソースコードのピア監査を歓迎しており、セキュリティ問題の報告を奨励している。彼らはHackerOneで脆弱性公表プログラムを維持している。

### DiscourseHub

DiscourseHubはAndroid及びiOS向けの公式のオープンソースDiscourseアプリケーションである。これにより、ユーザーは様々なDiscourseサイトに渡る新規や未読の投稿と通知を追跡できるようになる。リアルタイムプッシュ通知は、公式でホストされているDiscourseフォーラムではネイティブである。

## サーバ要件

公式に提供されているx86-64 Linux向けのDockerイメージは公式に対応しているDiscourseのインストール方法である。Discourseはコンテナを構成するのにカスタム「launcher」スクリプトを使用する。

DockerベースのディストリビューションにはWebサーバ(nginxとUnicornに基づく)、データベースシステム(PostgreSQL)、キャッシュ(Redis)及びバックグラウンド処理サービス(Sidekiq)が含まれている。

Discourseには発信MTAが必要である。

Discourseは電子メールを受信する機能も対応しているが必須ではない。Discourseは受信専用MTA向けの任意のDockerイメージを提供しており、POP3またはIMAPを介した電子メールの受信に対応している。

## 歴史

共同創設者のジェフ・アトウッドは2013年にCivilized Discourse Construction Kit, Inc.(CDCK)がFirst Round、Greylock及びSV Angelから最初のベンチャーキャピタル出資を得たことを発表した。

2017年5月、彼はインタビューで同社は毎月約12万ドルを稼いでいると述べた。同社はその資金で、Discourseの保守や新機能の開発を担当するフルタイム開発者の給与を支払っている。これは、企業が意欲的な顧客に専門的なサービスを販売するオープンソースソフトウェアのビジネスモデルの一例である。2022年3月時点で、3,000を超える企業またはインスタンスが、CDCKがSaaSとして提供する公式のDiscourseホスティングを選択していると開発者は共有した。

2021年8月、CDCKはPace CapitalとFirst Round CapitalによるシリーズA出資によってUS$2,000を確保したことを発表した。

2023年2月1日、ジェフ・アトウッドは最高経営責任者を辞任し、執行会長の役割を引き受けた。彼の後任にはサム・サフロンとサラ・ホークが就任した。

## 開発とサポート

DiscourseプロジェクトはCDCKの開発者によって開発及び保守が行われている。