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


The Discourse Encouragement Fund

Erlend Sogge Heggen February 16, 2017

For almost a year now, we’ve been doing something that’s considered quite risky for an open source project: Paying contributors. Communities like ours are fundamentally built on intrinsic motivation. Getting money involved can jeopardize the whole ecosystem, but for the past year we’ve been experimenting with a model that lets us pay contributors for mission-critical work, while maintaining a culture of volunteerism.

It all started with the Mozilla Open Source grant* about a year ago. This grant effectively enabled us to pay our own developers to work on features that were strategic to our business, as long as these features were also aligned with the “common good” mission statement set forth in our MOSS roadmap (which was to improve our email capabilities). So with some of our company’s developer time being paid for by this grant, we decided to pay it forward by using an equivalent amount of our own money on some more experimental ventures for developers from our community to take on.

To date we’ve paid 16 different developers a total of $17’000 to work on bite-sized tasks. All of the work is open source, and two of the developers we’ve worked on paid assignments with are now core members of our team!

A process for rewarding contributors

For the past year, we’ve been fine-tuning the process of handling paid contributor work. These are the key lessons we’ve learned:

  1. Define a rough spec. A one-pager with bullet points, posted as a public discussion topic on, would usually suffice. The important part is to move past any implementation controversy. Unlike in-house development where we sometimes start work while the spec is still being defined and talk, argue and finally agree through code, this is not ideal for outsourced work. The spec can still be rough as long as there is 100% consensus on the key ideas among the core developers.

  2. Make it a bite-sized task. All tasks pay between $150-$1500. Any less and it’s usually better to leave it as a pro-bono contribution opportunity. Any more and it’s gonna become a project (i.e. dependencies, deadlines) instead of a one-off task.

  3. No hourly rate. A fixed fee simplifies the transaction. We say “would you be interested in doing Task-X for Y$?”; the contributor assesses the scope; after cutting out a couple stretch goals we’re in business. This payment is not so much a freelance assignment as it is an acknowledgement of a valued contributor.

  4. We choose who, what and when. At first we tried to put tasks “up for grabs”, but this method didn’t work too well. You end up with multiple takers and you have to pick one and let others down. Instead, we approach developers individually, one at a time. Since we’re an open source project we know fairly well who’s capable of what, so we’ll tap our top prospect, present the task & “bounty”, and get a yes or no. If no, we move on to the next good prospect. If we run out of good prospects for a specific task, we’ll either do it ourselves or put it on hold.

  5. Tasks are mostly strategic. As in, directly or indirectly, this improvement is gonna save or earn CDCK Inc. money. This is the easiest way to draw a line between “what type of job deserves funding?”

  6. Tasks are mostly time insensitive and free of dependencies. Doesn’t really matter to us if it’s done tomorrow or next month as long as it gets done. It’s not a good idea to expect part-time contributors to jump on to the speeding train that is core development.

  7. Spread it out. We’ve tried to not play favorites. Most volunteer contributors appreciate the opportunity to work closely with the core team at a more professional level – as do we with them – so we want to have that experience with as many regulars in our community as possible: programmers, designers and technical writers alike. What’s more, as a sporadic call-to-action it doesn’t appear to disrupt the give & take spirit of open source volunteerism.

This is a process that will continue indefinitely, as we are extremely happy with the outcome for both our product and community.

For a long time this was just something we were doing, but eventually it became “The Discourse Encouragement Fund”. As much as we’d like to, we can’t put every one of our contributors on a steady payroll. What we can do is remind them that the work they’re doing is valuable, in every sense of the word, and that there is money to be made from specialising in Discourse. For the truly committed, the opportunities are out there. A bigger ecosystem benefits us all, so if you’re entertaining the thought of generating a steady income through Discourse work, we’d love to talk about it.

p.s. we recognise that having the time to volunteer in the first place is a privilege. In conjunction with the Encouragement Fund, we are also experimenting with contracting gigs and paid internships, but that’s a different post for another time!


Discourse New User Tips and Tricks

Jeff Atwood December 16, 2016

If you’re new to Discourse, here are a few quick tips and tricks to get you started:


Selecting a topic title will always take you to your last read post in the topic. To enter at the top ↑ or bottom ↓ instead, select the reply count or last reply date.

topic list click areas in Discourse

Topics above the light red line are new or updated since your last visit. If you have read all the way to the end of a topic, its title will be light grey instead of black.

last visit date shown on topic list in Discourse


For search, the menu, or your user page, use the icon buttons docked at the upper right.

search, menu, and notifications in Discourse

While reading a topic, use the timeline on the right side to jump to the top, bottom, or your last read position. On smaller screens, select the bottom progress bar to expand it.

(If you have a physical keyboard, you can also press ? for a list of keyboard shortcuts.)


Press any Reply button to open the editor panel at the bottom of your browser. Continue reading (and even navigate to different topics) while you compose your reply; minimize the editor for more room. Drafts will automatically be saved as you write.

collapsing and expanding the editor in Discourse

To insert a quote, select the text you wish to quote, then press the Quote button that pops up. Repeat for multiple quotes.

selecting a quote in Discourse

To notify someone about your reply, mention their name. Type @ to begin selecting a username.

mentioning a username in Discourse

To use standard Emoji, just type : to match by name, or traditional smileys ;)

completing Emoji in Discourse

To generate a summary for a link, paste it on a line by itself. To start a topic with a link, paste the link into the title field.

pasting link to onebox in Discourse

Your reply can be formatted using simple HTML, BBCode, or Markdown:

This is <b>bold</b>.
This is [b]bold[/b].
This is **bold**.

For more formatting tips, try our 10 minute tutorial.


There are action buttons at the bottom of each post:

  • To let someone know that you enjoyed and appreciated their post, use the like button. Share the love!
  • Grab a copy-pasteable link to any reply or topic via the link button.
  • Use the button to reveal more actions. Flag to privately let the author, or the site staff, know about a problem. Bookmark to find this post later on your profile page.


When someone is talking directly to you — by replying to you, quoting your post, mentioning your @username, or even linking to your post, a number will immediately appear over your profile picture docked at the top right. Select it to access your notifications.

notification in Discourse

Don’t worry about missing a reply – you’ll be emailed any notifications that arrive when you are away.


All topics less than two days old are considered new, and will show a new indicator.

new topic indicator in Discourse

Any topic you’ve actively participated in — by creating it, replying to it, or reading it for an extended period — will be automatically tracked on your behalf, and will show an unread post count indicator.

unread topic indicator in Discourse

You can change your notification level for any topic via the notification control at the bottom, and right hand side, of each topic.

topic notification control in Discourse

Notification level can also be set per category. To change any of these defaults, see your user preferences.


For more blog posts, visit the archives