|
|
Subscribe / Log in / New account

Discourse releases version 1.0

Benefits for LWN subscribers

The primary benefit from subscribing to LWN is helping to keep us publishing, but, beyond that, subscribers get immediate access to all site content and access to a number of extra site features. Please sign up today!

By Nathan Willis
August 27, 2014

Since early 2013, the Discourse project has been developing a modern commenting-and-discussion system intended to be plugged in to a wide variety of web-based content-management systems (CMSes). Although the code has been available for outsiders to experiment with or even use on production sites for quite some time, the project only officially released version 1.0 on August 26.

The project's goals are to develop a free-software web-based discussion system that implements features expected by readers, but which were not available in the commenting systems of existing open-source CMSes. For example, Discourse supports "infinite scrolling," in which additional comments are loaded on the page as the user scrolls downward. There are also features to condense long discussion threads, to allow users to rate individual comments (with "likes"), methods to hide text in a comment (for protecting "spoilers"), to enable comment moderation, and to send users real-time notifications about replies.

[Discourse 1.0]

A lot of attention has also been paid to the actual comment-editing process; the editor pops up as an overlay on top of the page, and it supports several text-markup languages (e.g., HTML, Markdown, BBCode). Drafts of users' comments are automatically saved as they edit, and there are handlers for image upload, emoji, and automatic URL embedding.

Discourse is also designed to integrate with popular outside services. Although it has a built-in login system, it also supports OAuth2 (which is used by Google) as well as logins through several prominent social-media services (e.g., Twitter and Facebook). Similarly, it supports both local user-account avatars and those from remote services. It can be hooked into various commercial content-delivery networks (CDNs) for increased access speed. In addition, Discourse can be deployed in a mailing-list emulation mode, in which all messages on a topic can be relayed to users via email, and email replies are also visible as posts.

By any account, that is a hefty set of features. Even looking only at the fundamentals, Discourse is an attempt to provide a single codebase that fills several distinctly different roles: a full-featured discussion forum (like one might see deployed with phpBB), a commenting system for use on blog posts or individual articles, and even a mailing list (and its accompanying web archive). "Do all the things and do them well," after all, is not the Unix philosophy—often with good reason.

Adoption and deployment

Nevertheless, thus far, Discourse appears to have amassed quite a sizable following. The project has made considerable headway in a relatively short time, in part by working with several high-traffic partner sites (such as Boing Boing and Ubuntu's discussion forum) that provided real-world testing as development continued. During that process, however, the main Discourse site actively warned users against installing Discourse, due to its pre-release nature. Those warnings have vanished with the arrival of the 1.0 release, of course.

But it is probably worth noting that the major "partner" sites that helped Discourse during its pre-release development phase seem to focus on the standalone web-forum deployment scenario. Similarly, the full-forum approach is used by Discourse's own discussion site, meta.discourse.org, and if the discussions on meta are any guide, it seems to be the preferred use case of most Discourse users.

The blog-commenting engine use case can most easily be explored via the official Discourse plugin for Wordpress. Interestingly enough, the WordPress plugin page points visitors to the site How-To Geek in order to see the plugin in action, although How-To Geek's site seems to run an essentially standalone web forum for its discussions. If there are any sites that have deployed Discourse in mailing-list mode, they are not easy to locate.

Hopefully this disparity will change, now that the 1.0 release is out the door and interested parties are being encouraged to take it for a spin. The only officially supported installation method is via a Docker container, although there are guides available for a number of other deployment scenarios. Alternatively, the Discourse project offers a hosting option, the revenue from which goes to support development.

Discourse is built with Ruby on Rails—which, according to the documentation, is the main justification for requiring Docker deployment: correctly configuring the necessary Rails stack otherwise is, evidently, difficult. It also uses PostgreSQL 9.1 (or later) and the Redis storage system. The hardware requirements include a dual-core CPU and 1GB of available RAM (though 2GB are recommended). The code itself is hosted at GitHub, and is released under GPLv2.

A nice touch for sites with existing communities is that Discourse includes several utilities for importing existing user and comment databases from several other forum packages (including vBulletin, phpBB, Drupal, and BBpress). Here again, though, the project's attention seems to be centered squarely on the discussion-forum use case; when a user asked recently about importing messages from Mailman, the answer was that it should not be attempted at all. There are also periodically questions about how to integrate Discourse with other web frameworks, such as those built with PHP; the current state of affairs seems to be that it is possible, but requires considerable work.

That is not to suggest that Discourse is falling short of its goals, of course. Rather, the salient point is that Discourse 1.0 can already deliver a demonstrably beautiful and feature-rich discussion site—but the broader goal of bringing the same level of features and aesthetics to other discussion systems is still an ongoing process. The Discourse interface is undeniably pretty to look at it, and it does an admirable job of presenting posts, activity statistics, and metadata in a clean and easy-to-find manner. But integration with other packages will be a trickier task—especially if Discourse wants to preserve its aesthetics and features when welded to other software.

But world domination is not necessary to declare Discourse a success. There will always be users and sites who prefer other frameworks for one reason or another. Infinite scrolling, for example, can be an obstacle to in-page text searching, while others may simply find Discourse's heavy reliance on JavaScript to be a negative. But, when viewed in conjunction with other recent advances in free-software discussion software—like Mailman's Hyperkitty interface, it is undeniable that the free software community is pushing the bar forward when it comes to conducting its conversations online.


(Log in to post comments)

Discourse releases version 1.0

Posted Aug 28, 2014 3:35 UTC (Thu) by roskegg (subscriber, #105) [Link]

I was very excited by your article about Discourse. Until the end, where I found out it is written for Ruby on Rails. Sigh. Django I would have been ok with; it has a sensible secure-by-default ethic. Rails gives me the shivers with its recklessness. If only it was written in C, so that every other language could quickly and easily write wrappers for it. It sounds like a piece of software that has been needed for a very long time.

Discourse releases version 1.0

Posted Aug 28, 2014 7:17 UTC (Thu) by eru (subscriber, #2753) [Link]

If only it was written in C,

I suspect that if if were in C, they would still be trying to get even rudimentary parts of it working...

But scratch your itch and re-implement it in your favourite language and framework!

Discourse releases version 1.0

Posted Aug 28, 2014 12:34 UTC (Thu) by sml (subscriber, #75391) [Link]

Concerned about security, wishes it was written in C.

I lol'd.

Discourse releases version 1.0

Posted Aug 29, 2014 11:30 UTC (Fri) by dgm (subscriber, #49227) [Link]

Security is not a feature of the language.

Discourse releases version 1.0

Posted Sep 3, 2014 13:19 UTC (Wed) by rwmj (subscriber, #5474) [Link]

It's certainly not a feature of the C language.

Discourse releases version 1.0

Posted Sep 3, 2014 23:54 UTC (Wed) by nix (subscriber, #2304) [Link]

Depends on the sort of security you mean. If you write the code "correctly", job security can definitely be a feature! (I have had to remind coworkers in the past that IOCCC entries are not an instruction manual :) )

Discourse releases version 1.0

Posted Aug 28, 2014 7:13 UTC (Thu) by riking (subscriber, #95706) [Link]

> The code itself is hosted at GitHub, and is released under GPLv2.

Note that Discourse also requires a CLA for contributions, which includes both (a) the right of the company to relicense contributions and (b) the obligation of the founders to keep the full code under the GPL.

> 6. We, as authoritative representatives of "The Company" (Civilized Discourse Construction Kit, Inc.) do solemnly swear and commit back to You that the "The Project" remains freely accessible under these terms. As "The Project" continues to remain under the control of co-founders Jeff Atwood, Sam Saffron and Robin Ward, "The Work" (Discourse/Discourse) will always and forever remain publicly free and available in its entirety under the same terms as are described in the GNU General Public License (GPL) v2.0. If, at which time, Jeff Atwood, Sam Saffron and Robin Ward no longer retain control as co-founders of "The Company", and the licensing model for "The Project" (Discourse/Discourse) changes to another scheme other than the GNU General Public License (GPL) v2.0, then an effort will be made, if possible, to hand "The Project" off to a third-party under the guidance of the Free Software Foundation.

The intention of the CLA is to be able to extract certain parts of the code and dual-license them under the MIT license.

Additionally, all supporting code repositories ( everything at https://github.com/discourse/ except https://github.com/discourse/discourse ) are MIT-licensed.

Overall, I think these terms are eminently reasonable.

Discourse releases version 1.0

Posted Aug 28, 2014 20:20 UTC (Thu) by Baylink (guest, #755) [Link]

> For example, Discourse supports "infinite scrolling," in which additional comments are loaded on the page as the user scrolls downward.

It's cute how they say that like it's a good thing.

If you write code like this, and you do *not* rewrite the URL when you do so, so that if I click a link, my back button takes me back to a place that *actually exists*, I will hunt you down.

Discourse releases version 1.0

Posted Aug 30, 2014 1:57 UTC (Sat) by riking (subscriber, #95706) [Link]

The URL is rewritten using replaceState(). :)

Also, if you go back to the main page and re-enter the topic, it will bring you down to where you stopped.

Discourse releases version 1.0

Posted Aug 28, 2014 20:29 UTC (Thu) by Baylink (guest, #755) [Link]

In other news: if you import some other forum into this, *you're going to violate Rule 1: Never Break A URL*.

If you have lots of useful google links, and more to the point, links from other non-arachnid websites, into your forums, they're all going to break. In many cases, these will be links *inside messages in your own forums*.

This Is Bad.

Discourse releases version 1.0

Posted Aug 30, 2014 13:26 UTC (Sat) by guus (subscriber, #41608) [Link]

It has already been in use for a few months at The Daily WTF. It can be interesting to search that site for comments about Discourse.


Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds