Convert Figma logo to code with AI

discourse logodiscourse

A platform for community discussion. Free, open, simple.

41,716
8,259
41,716
72

Top Related Projects

46,718

Your self-hosted, globally interconnected microblogging community

21,885

For empowering community 🌱

13,113

🐀 A link aggregator and forum for the fediverse

6,281

HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.

2,884

Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.

14,093

Node.js based forum software built for the modern web

Quick Overview

Discourse is an open-source discussion platform and forum software designed for the next decade of the Internet. It aims to improve online discourse by providing a feature-rich, modern, and customizable platform for communities to engage in meaningful conversations.

Pros

  • Highly customizable and extensible through plugins and themes
  • Built-in moderation tools and spam protection
  • Mobile-friendly and responsive design
  • Active development and community support

Cons

  • Can be resource-intensive for large communities
  • Learning curve for administrators and power users
  • Limited built-in integrations compared to some proprietary alternatives
  • Requires technical knowledge for self-hosting and maintenance

Getting Started

To get started with Discourse, you can either use their official cloud hosting service or self-host the platform. For self-hosting, follow these steps:

  1. Ensure your server meets the minimum requirements (2GB RAM, 10GB storage)
  2. Install Docker on your server
  3. Run the official Discourse setup script:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup
  1. Follow the prompts to configure your Discourse installation
  2. Once setup is complete, access your Discourse instance at the specified domain

For more detailed instructions and advanced configuration options, refer to the official Discourse documentation.

Competitor Comparisons

46,718

Your self-hosted, globally interconnected microblogging community

Pros of Mastodon

  • Decentralized, federated social network architecture
  • Built-in privacy features and content warnings
  • More customizable user experience with instance-specific rules

Cons of Mastodon

  • Steeper learning curve for new users
  • Smaller user base compared to centralized social networks
  • Potential for fragmentation across instances

Code Comparison

Mastodon (Ruby on Rails):

class Status < ApplicationRecord
  include Paginable
  include Streamable
  include StatusThreadingConcern
  include RateLimitable

  rate_limit by: :account, family: :statuses

Discourse (Ruby on Rails):

class Post < ActiveRecord::Base
  include RateLimiter::OnCreateRecord
  include Trashable
  include Searchable
  include PostSearchData

Both projects use Ruby on Rails and share similar concerns like rate limiting and searchability. However, Mastodon's code focuses on social networking features, while Discourse emphasizes forum-style discussions.

Mastodon is ideal for those seeking a decentralized social media alternative, while Discourse is better suited for community forums and structured discussions.

21,885

For empowering community 🌱

Pros of Forem

  • More lightweight and focused on developer communities
  • Easier to customize and extend with a modular architecture
  • Better integration with third-party services like GitHub and Twitter

Cons of Forem

  • Smaller community and ecosystem compared to Discourse
  • Less mature and battle-tested in large-scale deployments
  • Fewer built-in features out of the box

Code Comparison

Forem (Ruby):

class Article < ApplicationRecord
  include CloudinaryHelper
  include Reactable
  include Searchable
  include Storext.model
end

Discourse (Ruby):

class Post < ActiveRecord::Base
  include RateLimiter::OnCreateRecord
  include Trashable
  include HasCustomFields
  include Searchable
end

Both projects use Ruby on Rails and share similar patterns for model definitions. However, Forem's codebase tends to be more modular and focused on specific use cases, while Discourse's codebase is more comprehensive and feature-rich.

13,113

🐀 A link aggregator and forum for the fediverse

Pros of Lemmy

  • Federated and decentralized, allowing for interconnected communities
  • Built with Rust, offering better performance and memory safety
  • Supports ActivityPub protocol, enabling interoperability with other platforms

Cons of Lemmy

  • Smaller community and ecosystem compared to Discourse
  • Less extensive plugin system and customization options
  • Steeper learning curve for administrators due to federation complexities

Code Comparison

Lemmy (Rust):

pub fn create_post(conn: &PgConnection, post_form: &PostForm) -> Result<Post, Error> {
    use crate::schema::post::dsl::*;
    insert_into(post)
        .values(post_form)
        .get_result::<Post>(conn)
        .map_err(|e| e.into())
}

Discourse (Ruby):

def create_post(user, post_attrs)
  PostCreator.new(user, post_attrs).create
rescue => e
  Rails.logger.warn("Failed to create post: #{e}")
  nil
end

Both repositories offer forum-like functionality, but Lemmy focuses on federation and decentralization, while Discourse provides a more traditional centralized platform with extensive customization options. Lemmy's use of Rust may offer performance benefits, while Discourse's Ruby codebase might be more accessible to web developers.

6,281

HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.

Pros of HumHub

  • More comprehensive social networking features, including user profiles, spaces, and activity streams
  • Greater flexibility for customization and theming
  • Built-in modules for various functionalities like calendar, wiki, and polls

Cons of HumHub

  • Steeper learning curve due to more complex architecture
  • Potentially slower performance for large-scale deployments
  • Less focus on pure discussion forums compared to Discourse

Code Comparison

HumHub (PHP):

public function actionIndex()
{
    $searchModel = new ContentSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [
        'dataProvider' => $dataProvider,
        'searchModel' => $searchModel
    ]);
}

Discourse (Ruby):

def index
  discourse_expires_in 1.minute

  @list = TopicQuery.new(current_user, list_opts).public_send("list_#{filter}")
  @list.more_topics_url = construct_url_with(:next, list_opts)
  @list.prev_topics_url = construct_url_with(:prev, list_opts)

  respond_with_list(@list)
end

Both repositories offer robust community platforms, but HumHub provides a more comprehensive social networking experience, while Discourse focuses on discussion forums. The code snippets showcase their different programming languages and approaches to handling requests.

2,884

Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.

Pros of Vanilla

  • Lighter weight and potentially faster performance
  • Simpler setup and configuration process
  • More flexible for customization and integration into existing projects

Cons of Vanilla

  • Less feature-rich out of the box compared to Discourse
  • Smaller community and ecosystem for support and plugins
  • May require more development effort for advanced functionality

Code Comparison

Vanilla (PHP):

class DiscussionModel extends Gdn_Model {
    public function getID($discussionID, $permission = 'Vanilla.Discussions.View') {
        $discussion = $this->SQL->getWhere('Discussion', ['DiscussionID' => $discussionID])->firstRow(DATASET_TYPE_ARRAY);
        if (!$discussion) {
            return false;
        }
        // Additional logic...
    }
}

Discourse (Ruby):

class Topic < ActiveRecord::Base
  def self.find_by_slug_or_id(slug_or_id)
    if slug_or_id.to_i.to_s == slug_or_id.to_s
      find_by(id: slug_or_id.to_i)
    else
      find_by(slug: slug_or_id)
    end
  end
end

The code snippets showcase different approaches to retrieving discussion/topic data, reflecting the languages and frameworks used by each project.

14,093

Node.js based forum software built for the modern web

Pros of NodeBB

  • Lightweight and faster performance, especially for smaller communities
  • More flexible theming and customization options
  • Easier setup and configuration for beginners

Cons of NodeBB

  • Less feature-rich out of the box compared to Discourse
  • Smaller community and ecosystem, potentially leading to fewer plugins and integrations
  • May require more manual maintenance and updates

Code Comparison

NodeBB (JavaScript):

socket.emit('posts.getRawPost', { pid: pid }, function (err, post) {
    if (err) {
        return app.alertError(err.message);
    }
    composer.posts[post.pid].body = post.content;
    composer.load(post.pid);
});

Discourse (Ruby):

def create
  manager = NewPostManager.new(current_user, params)
  result = manager.perform

  if result.success?
    post = result.post
    render_json_dump(serialize_data(post, PostSerializer, root: false))
  else
    render_json_error(result)
  end
end

Both projects use different programming languages and frameworks, making direct code comparison challenging. NodeBB utilizes JavaScript and a socket-based approach, while Discourse is built with Ruby on Rails and follows a more traditional MVC pattern.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Discourse is the online home for your community. We offer a 100% open source community platform to those who want complete control over how and where their site is run.

Our platform has been battle-tested for over a decade and continues to evolve to meet users’ needs for a powerful community platform. Discourse allows you to create discussion topics and connect using real-time chat, as well as access an ever-growing number of official and community themes. In addition, we offer a wide variety of plugins for features ranging from chatbots powered by Discourse AI to functionalities like SQL analysis using the Data Explorer plugin.

To learn more, visit discourse.org and join our support community at meta.discourse.org.

Screenshots

Discourse 3.1

Boing Boing

X Community

Mobile

Browse lots more notable Discourse instances.

Development

To get your environment set up, follow the community setup guide for your operating system.

  1. If you're on macOS, try the macOS development guide.
  2. If you're on Ubuntu, try the Ubuntu development guide.
  3. If you're on Windows, try the Windows 10 development guide.
  4. If you're looking to use a simpler Docker-based install, try the Docker development guide.

If you're familiar with how Rails works and are comfortable setting up your own environment, you can also try out the Discourse Advanced Developer Guide, which is aimed primarily at Ubuntu and macOS environments.

Before you get started, ensure you have the following minimum versions: Ruby 3.2+, PostgreSQL 13, Redis 7. If you're having trouble, please see our TROUBLESHOOTING GUIDE first!

Setting up Discourse

If you want to set up a Discourse forum for production use, see our Discourse Install Guide.

If you're looking for official hosting, see discourse.org/pricing.

Requirements

Discourse is built for the next 10 years of the Internet, so our requirements are high.

Discourse supports the latest, stable releases of all major browsers and platforms:

BrowsersTabletsPhones
Apple SafariiPadOSiOS
Google ChromeAndroidAndroid
Microsoft Edge
Mozilla Firefox

Additionally, we aim to support Safari on iOS 15.7+.

Built With

  • Ruby on Rails — Our back end API is a Rails app. It responds to requests RESTfully in JSON.
  • Ember.js — Our front end is an Ember.js app that communicates with the Rails API.
  • PostgreSQL — Our main data store is in Postgres.
  • Redis — We use Redis as a cache and for transient data.
  • BrowserStack — We use BrowserStack to test on real devices and browsers.

Plus lots of Ruby Gems, a complete list of which is at /main/Gemfile.

Contributing

Build Status

Discourse is 100% free and open source. We encourage and support an active, healthy community that accepts contributions from the public – including you!

Before contributing to Discourse:

  1. Please read the complete mission statements on discourse.org. Yes we actually believe this stuff; you should too.
  2. Read and sign the Electronic Discourse Forums Contribution License Agreement.
  3. Dig into CONTRIBUTING.MD, which covers submitting bugs, requesting new features, preparing your code for a pull request, etc.
  4. Always strive to collaborate with mutual respect.
  5. Not sure what to work on? We've got some ideas.

We look forward to seeing your pull requests!

Security

We take security very seriously at Discourse; all our code is 100% open source and peer reviewed. Please read our security guide for an overview of security measures in Discourse, or if you wish to report a security issue.

The Discourse Team

The original Discourse code contributors can be found in AUTHORS.MD. For a complete list of the many individuals that contributed to the design and implementation of Discourse, please refer to the official Discourse blog and GitHub's list of contributors.

Copyright / License

Copyright 2014 - 2023 Civilized Discourse Construction Kit, Inc.

Licensed under the GNU General Public License Version 2.0 (or later); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Discourse logo and “Discourse Forum” ®, Civilized Discourse Construction Kit, Inc.

Accessibility

To guide our ongoing effort to build accessible software we follow the W3C’s Web Content Accessibility Guidelines (WCAG). If you'd like to report an accessibility issue that makes it difficult for you to use Discourse, email accessibility@discourse.org. For more information visit discourse.org/accessibility.

Dedication

Discourse is built with love, Internet style.