Discourse in Outreachy Summer 2018

Erlend Sogge Heggen March 13, 2018

tl;dr: Discourse will be participating in Outreachy Summer. If you are eligible to participate in this internship, please consider applying!

About Outreachy

Participants of Outreachy work with an open source organization (in our case Discourse) on a 3 month programming project. It’s similar to events like Google Summer of Code, however the aim of Outreachy is to provide a collaborative environment in which newcomers from underrepresented backgrounds get an opportunity to learn from and contribute to FOSS by doing paid, full-time work.

Participation is open internationally to all women (cis and trans), trans men, and genderqueer people. Additionally, it’s open to residents and nationals of the United States of any gender who are Black/African American, Hispanic/Latino, American Indian, Alaska Native, Native Hawaiian, or Pacific Islander.


Furthermore, unlike GSoC, Outreachy is open to all ages, not just students.


We were planning to defer on Outreachy until this winter, seeing as our mentoring capacity is limited. However, since our application for GSoC got rejected we decided to participate in the Outreachy summer round after all! As a result of this sudden u-turn everything is happening at the last minute, but judging by our previous Outreachy interns we’re confident we’ll be hearing from some excellent candidates shortly.

How to apply

The main application is available at

Outreachy requires applicants to have made a contribution to the project they’re applying to. Make sure you carefully read the “Recommended reading before applying” and “What you’ll be working on” sections.

The formal application deadline is March 22, 2018, but we’ll be extending it by one week, to March 29.

Any questions? Please contact or ask questions on

1 Comment

How Does Team Discourse Use Discourse?

Sarah Hawk March 4, 2018

As we claim on our website, we use Discourse as our primary team coordination tool to build… Discourse!

That means escaping email silos and minimising the number of disparate communication channels required to manage a fully distributed team. We are able to keep distractions like calls and meetings to a minimum and focus on actual work, while still feeling connected to the rest of the team.

When I first joined the Discourse team I found this way of working unusual. I was used to Trello, Google Docs, Basecamp, Zendesk, Todoist and Slack.

Most organisations I have worked in tried multiple permutations of every conceivable version the above. It took less than a week to rejoice in how unencumbered I felt to be rid of all those systems. I felt as righteous as I do after an epic spring cleaning session.

We do use Rocket.Chat for ‘quick answers’ between team members but that data is ephemeral and has no long-term value — as anyone on a free Slack plan knows. We push important long-term knowledge across into Discourse. We also make light use of Google Docs as shared permanent file storage, of which we don’t need a lot, but that’s it.

We run two Discourse instances:

  1. Our public facing Meta where we interact with the community, provide general support, and gather feedback.
  2. A private instance where we have internal discussions and house our internal knowledge base and runbooks.

But general discussion isn’t the only thing we use Discourse for.

Product Management

We use Discourse to publicly manage our product roadmap. New feature requests are made by community members in the features category by following this process. The requests are reviewed by our team and approved features are moved through the roadmap using tags for visibility.

We use:

  • Tags to provide progress on feature requests.
  • Discourse Assign to allocate work to team members.

Product management workflow

Task Management

We use a category on our internal instance of Discourse to manage tasks. New tasks are written up in the todo category. In some cases they are immediately assigned and in others, we tag a group to give visibility of the task so that a team member can claim it using Discourse Assign. Once a task has been completed the topic is closed. We use topic timers to delete short or ephemeral todos when no record is required.

We use:

  • Discourse Assign to allocate the job to a team member.
  • Topic timers to close or delete topics once the task is complete.
  • Tags to organise tasks into business groups.

Task management workflow

Support Ticketing

We also use Discourse as a private email support portal which allows our entire team to share the support load. Anyone can email and we handle those interactions in a central discourse mailbox, as private group messages.

Support inbox

Staged user accounts are set up, allowing us to store contact history against an individual. More details on how that works here.

This setup means that everyone has full visibility of the open tickets and can also easily search through past tickets, either to learn or to stay abreast of what has been discussed or promised.

People can jump in seamlessly across time zones. Discourse notifications alert us of incoming requests. We can tag people in when we need them, assign team members when a task needs to be completed, bookmark messages for follow up, set topic timers to nudge people and we can use whisper topics to support each other, make notes and troubleshoot as a team.

We use:

  • Tags for private messages for organisation, similar to how labels work in Gmail.
  • Discourse Presence means that we don’t accidentally reply to someone at the same time.
  • Discourse Assign allows us to give or take ownership of a support issue.
  • “Whisper posts” let us privately research or troubleshoot as a team, keeping all the relevant information within the topic.

Support ticket details

Tip: Edit the post titles so that the message is identifiable by everyone at a glance.

Knowledge Base

We use Discourse as both a public and a private knowledge repository. The howto category on Meta is a crowdsourced knowledge base which houses community written tutorial topics that describe how to set up, configure, or install Discourse using a specific platform or environment.

Internally we use our private Discourse instance to store run-books. They are a great way for employees in mismatched time zones to document processes so that other employees are able to be productive without having to wait for a response to a question.

We use

  • Subcategories for grouping similar topics
  • Tags for categorisation
  • Trust levels to restrict posting to more experienced Discourse users

We believe strongly in using Discourse to help us build Discourse, and we’re constantly improving both our process, and Discourse, to make it a better team collaboration tool.


Discourse 1.9 released!

Jeff Atwood January 8, 2018

We released Discourse 1.9 on January 3rd, building on Discourse 1.8 from last June.

Show Who’s Replying

Discourse is all about replies being disconnected in time and space, but we agree that showing when people are actually replying to a topic is genuinely useful in a variety of contexts. So we’ve added live indicators at the bottom of a topic, and in the composer itself, to let you know when other people are actively replying.

You may also notice we’ve restyled the composer to bring it a lighter, airier, more modern look.

Improved Emoji Selector

We’ve completely revamped the emoji selector to support search by typing and skin tone selection — and of course we’ve incorporated the latest Unicode Emoji, too.

We’ve also added support for the Messenger emoji set (in addition to Apple, Twitter, Google, Microsoft, and EmojiOne), which is selectable in your admin site settings.

Improved Rich Pasting

Discourse natively supports basic bbcode, HTML, and of course Markdown. When pasting content into the composer, we’ll now attempt to convert what is in your clipboard to native Markdown on your behalf!

This turned out to be a bit more complex than we expected, but Excel (and clones) table pasting definitely shipped in 1.9, and further HTML / RTF paste conversions are behind the enable rich text paste site setting — update to 2.0 beta and flip that flag to see it working live!

Better Automatic Link Formatting

If you paste a link on a line by itself, Discourse will summarize the link on your behalf — we call this oneboxing. We’ve improved our default onebox to support more metadata from the link, such as the site icon, the date, and the site title.

Discourse 1.9 improved onebox metadata

And now, even if you paste a link that’s not on a line by itself, we’ll summarize that link for you by pulling the title out of the link, like so:

We call this “inline oneboxing”, and it’s on by default for internal links. If you’d like to turn on this feature for all links, tick enable inline onebox on all domains in your site settings.

Admin Search Stats

Discourse has robust native search and advanced search, as well as excellent web spider search indexability through Google and other popular search engines. But nothing beats looking at what your community is actually searching for and making editorial tweaks to ensure that the most searched for information is easily available. To that end, we now show stats in the admin dashboard on what people are actually searching for on your Discourse:

Large Image Handling

Discourse tries to onebox and mirror all remote linked images by default, so that your topics look good, and don’t decay over time as images disappear from the web. But we also don’t want to use up all your file storage — or blow up your mobile plan when someone links a 30 megabyte GIF file! We now provide better visual feedback when giant remote linked images are posted:

Discourse image too big to display

Watched Words

One question we heard a lot from site owners was how to take action based on the presence of certain words (or word patterns) in posts.

Discourse 1.9 watched words

As of Discourse 1.9, you can set it up so that when any particular word or words appear in posts, you have the option of automatically flagging the post, censoring those specific words, requiring manual staff approval for the post, or completely blocking the post altogether.

Improved Personal Messages

If you’d prefer not to receive any personal messages, you can now disable those in your user preferences. (Staff PMs will still go through, of course.)

Discourse 1.9 disable PMs

Speaking of staff, it’s now possible for staff to specify an email address in PMs, if you want to bring someone into a PM that isn’t yet a member of your Discourse.

Discourse 1.9 email address in PM

Improved Groups

All security in Discourse is handled through groups, and we continue to refine groups in each release to make them easier to understand and organize. If you are a group owner, it’s now possible to send an invite that includes membership in your group:

Discourse 1.9 invite to group

If you are a member of the group and would like to send a message to the entire group, we’ve added a helpful message button to the group page.

And More!

These are just highlights of 1.9 — there are literally hundreds of other tiny improvements, refinements, and bugfixes in the full release notes.

Easy One Click Upgrade

We launched a public exploit bounty program at Hacker One as a part of our security policy one year ago. We continuing to follow up on any concerns and issues raised, and there are important security fixes in 1.9, so we urge everyone to upgrade to it as soon as possible.

If you are on our hosting, you’re already upgraded. Otherwise, upgrading is as easy as clicking the Update button in our built in one click updater linked right from your dashboard:

In some upgrade scenarios, you may need to SSH in to update your server. It’s just 3 commands:

cd /var/discourse
git pull
./launcher rebuild app

If you don’t have a Discourse to upgrade, why not? Install it yourself in under 30 minutes, or get a free 14 day hosting trial!

Thank You

As always, let us first thank our customers for their direct financial support, without which there would be no Discourse project at all.

Any open source project is only as good as its code contributions, and we’re lucky enough to have 104 contributors in this release — 17 more than last time! Thanks for the pull request contributions in this release from:


We had a remarkable number of translators in 2017 who contributed their time and effort into translating Discourse into dozens of languages. It’s because of you that so many people in the world can benefit from great free, open source discussion software!

Finally, thanks to the greater Discourse community for posting support / bug request / feedback topics on meta.discourse. All your suggestions make Discourse better for yourself, and everyone else, too.

As far as we’ve come with Discourse, there are so many important things left to do. Keep an eye on the releases category to see what’s coming … and we’ll see you in Discourse 2.0!