Top Related Projects
Your self-hosted, globally interconnected microblogging community
For empowering community 🌱
🐀 A link aggregator and forum for the fediverse
HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.
Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.
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:
- Ensure your server meets the minimum requirements (2GB RAM, 10GB storage)
- Install Docker on your server
- Run the official Discourse setup script:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup
- Follow the prompts to configure your Discourse installation
- 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
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.
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.
🐀 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.
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.
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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
Browse lots more notable Discourse instances.
Development
To get your environment set up, follow the community setup guide for your operating system.
- If you're on macOS, try the macOS development guide.
- If you're on Ubuntu, try the Ubuntu development guide.
- If you're on Windows, try the Windows 10 development guide.
- 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:
Browsers | Tablets | Phones |
---|---|---|
Apple Safari | iPadOS | iOS |
Google Chrome | Android | Android |
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
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:
- Please read the complete mission statements on discourse.org. Yes we actually believe this stuff; you should too.
- Read and sign the Electronic Discourse Forums Contribution License Agreement.
- Dig into CONTRIBUTING.MD, which covers submitting bugs, requesting new features, preparing your code for a pull request, etc.
- Always strive to collaborate with mutual respect.
- 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.
Top Related Projects
Your self-hosted, globally interconnected microblogging community
For empowering community 🌱
🐀 A link aggregator and forum for the fediverse
HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.
Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.
Node.js based forum software built for the modern web
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot