Thursday, January 23, 2014

An Introduction to Discourse

If you're looking at building a new community or refreshing an old one, Discourse should be on your short list of systems to consider. Discussion forums have been a part of the web for a long, long time. If we compare a 1990s web site with today, it’s clear that the art of web design has moved on a long way since then, yet web forums… haven’t really kept up. Discourse bills itself as a reboot of forum software for the next decade. Let's see why. 

Discourse

The Discourse Design Philosophy

The Discourse project is spearheaded by Jeff Atwood, who was also a co-founder of Stack Exchange. With north of a hundred Stack Exchange Q&A boards around the web, it's clear that the new, modern design has resonated with web communities. Like Stack Exchange, Discourse set out to revitalize and modernize question and answer sites, and has been very successful, even inspiring quite a lot of competitors, such as OSQA. Discourse embodies a similar approach to forums.
Because Discourse was started from scratch recently, it has been relatively easy for the Discourse team to build modern web approaches directly into the core of the software. A small sampling of modern design touches include:
  • Much greater emphasis on the conversation rather than the scaffolding of the web pages compared with older forums software
  • New posts to a topic appear as you scroll down, rather than having a collection of minuscule “1, 2, 3, Next” links along the bottom
  • Adding images to a forum post, for example, is done by modern dragging-and-dropping those images
  • Responsive design for mobile users is built in
  • If someone else posts to the thread you’re looking at then their addition shows up as you browse, without needing constant page refreshes to keep up
  • Pasting a link to Wikipedia or YouTube or Amazon into a topic automatically “expands” that link to show the video or a summary of the article in question, saving readers from having to click through (and click away from your forum)
Unlike older systems, with Discourse, these features are native to the platform. Discourse itself is open source, and there’s a growing hacker community centered around the project and github; importantly, they’re not just interested in code contributions, but in our experience willing to help out with problems and listen to suggestions.

Installing Discourse

Discourse is implemented as a server which provides a JSON API, along with a JavaScript application which runs in the web browser and talks to that API. Discourse is built on Rails, Postgres, and Redis, and setting it up is done best on a public cloud (EC2, Rackspace, Azure) or Rails cloud hosting (Heroku, etc). The Discourse source contains step-by-step instructions for deploying to Heroku onto an Ubuntu server and others, but is made considerably easier by using something designed for the job. Obviously (at least we hope it is!), we provide one-click installs of Discourse to a local machine, as a virtual machine or into the cloud.
Discourse contains its own API, which at least in theory means that one never hits the situation where the forum provides a feature but the API doesn’t support it. However, because Discourse is still new and under heavy development, the API is a moving target. Support can be found on Discourse’s own support forum, meta.discourse.org.

What does this mean for the community manager or admin?

The Discourse team themselves are pretty clear that Discourse is best suited “for new discussion communities,” and not as a drop-in replacement for an existing forum full of posts and users and avatars. If you’re in the position of setting up such a thing, and you have easy installation or skilled devops available to you, Discourse is a good and modern tool to help you build a community. That community will thank you for it.
You’ll be ready for the next decade of discussion rather than trying to escape from the one before last, which means that you can get beyond fiddling with your forum software and instead focus on what you should be doing: enabling discourse.

Next steps