Discourse is the by far most awesome solution for open source community platforms


(Michael Friedrich) #1

Hi there,

first of all, I want to say thank you for this awesome, brilliant, modern, reliable, thought-ahead and free open source software :heart: It feels like the one and only Xmas present I now got to use and play with :slight_smile:

A little more background

I’m the maintainer of monitoring-portal.org which is mainly focussed on monitoring tools, integrations, metrics, automation, and such things.

I’m used to help and support users being a long term Icinga developer since 2009. Knowledge transfer and a steep learning curve is key when you create a new project (namely, Icinga 2 and variants in 2014) and want to bring this baby to your users.

It is more of a Q&A basis, many users just ask one question and then leave again. Some stay, as they see how much a “thank you” or “like” means to them. They love the tools, engage with the community, join real life events, become friends even.

You need a platform for that, which is easy to start with, and also easy for those replying to hundreds of threads during workhours or in their spare time.

Before I found Discourse

I used to administrate phpBB2 and 3 years ago, before we got the Woltlab platform, v3 at that time. In 2009 I’ve joined the monitoring-portal.org community, became more active, asked the admins to change categories, and so on. In 2015 I’ve taken over the forum entirely, now also doing the server and maintenance tasks.

I did this until Woltlab Forum 5, and tried to make at easy as possible. The real problem was more or less, “change”. How could I migrate the users and data collected since 2003 … 17k users, 250k posts. I have read about Discourse import scripts, but feared to hack my own. On the other hand, the data stored inside Woltlab is huge. 155 MySQL tables you need to understand, and collect data from.

I was eagerly looking at Discourse, just the simple “Add new topic” button from the front page, and the overlay editor. Suggested this upstream to Woltlab, but it is not inside the core. Luckily community members had written a plugin. Which I needed to modify for different views.

Didn’t like that solution. I also wanted to add oauth for login sessions from Github/Twitter. It isn’t implemented in Woltlab, only the registration can fetch the email, but activation is still needed. No real oauth in Woltlab so.

Holidays and an idea

I used to be in Austria on 281.2.2017, and thought - why not try it. Moved the existing setup aside, put an Nginx proxy in front, and read about Discourse being put behind such a proxy. Hey, there is a full guide which is super easy to follow.

Note: I learned a lot about Nginx in the last year, and also Ruby on Rails with Gitlab. This is real benefit for bringing this up in under one hour :slight_smile:

A web setup wizard, how awesome is that. Just works, and greets me with a shiny administration interface. Hmmm, which options would fit. I did not really need much, the defaults are just there.

Then I discovered that I can only show overridden settings with an easy restore functionality. This is more than I ever expected :slight_smile:

Plugins

We always had a spam problem in the old platform. reCaptcha was cracked by humans, and lots of fancy chinese characters with spam URLs were in posts. We “solved” that problem by putting all the alphabet characters into the forbidden word list (it worked, somehow). Akismet isn’t supported by Woltlab, so when I found your plugin I was like - “really? I have that already for my WP instances, just awesome!”.

The “solved” plugin continues the joy. Our users rely on solving questions, and many google for answers and find threads which are solved. Your plugin goes one step further - it marks the post itself as solution (this isn’t possible in Woltlab).

Badges

Not only solving things is key, but also “collecting” rewards for hard work. Previously we had “points” for posts and likes, which raised some user levels from “trainee” to “master” (renamed the defaults in Woltlab, didn’t like them). Still, the calculation was boring and predictable. The more you post and like, the easier you get a super status.

I had many chats with well known active members who said that they wanted a more rewarding system, similar to StackOverflow. I already knew that some of team Discourse invented StackOverflow, and was all for it when looking into the badges here. At first glance, I was wondering why the up/down vote wasn’t there, but then I had a read about the differences in this interview with @codinghorror

https://velocitize.com/2017/05/26/jeff-atwood-on-building-engaging-communities/

A conversation with explanations, where the user learns and probably solves it on its own, is the real thing we want. We don’t need a run for a single question, and possible solutions. We want to help each other, sometimes discuss off topic, and go for a solution together. This makes Discourse a 100% perfect fit.

The badges reward the many of us, I’ve also gone for additional ones for the solved plugin. Added a gold one for 100 solved posts, as I expect that we will hit this one in the first year already :slight_smile:

Writing a topic

I love writing documentation and howtos. Many parts of the Icinga documentation were written by myself, and we all do that with Markdown, in vim, on Github, in Atom, etc.

When I found out that the overlay editor (which has sessions, this is pure magic!) goes for markdown natively, I was like WOAH, this is hilarious. The live rendering as I type was even the icing on the cake. IIRC that’s an 1.9 feature, but I just built the app, didn’t think I need to pin anything to “stable”. Actually your beta is really stable.

Endless scrolling. The old platform had pagination. So you knew it already, if the discussion hits page 3, the topic is dead already. No-one likes it to navigate back and forward to re-read the conversation. Now we can scroll up and down - even when writing a reply, we can even leave the current page to look thinks up.

My workflow has become super easy in just 7 days I’m using Discourse now :heart: I’m fast, and can answer more questions while Icinga 2 is compiling on my Macbook :wink:

Uploading an image works the same as I’m used to on Github. Then I saw that “something” edited my post with the image in it. Hmmm? At that point, I learned about Sidekiq, job scheduling and how awesome the idea of local cached images is. No more broken URLs and a contained archive on its own. You really know the good stuff, unbelievable :+1:

Btw, a cronjob in Woltlab needs something which fetches the php script. A user or a cron. I prefer something built-in, just as reliable as done in Discourse.

Paste a link, and have onebox rendering it as a preview. Even Github with code syntax highlighting. Oh dear, I am in heaven.

Stats galore

I’ve activated the daily nginx log analysis. In there I saw wrong redirects (need to rewrite /index.php?foo to /woltlab/index.php?foo for example), and many many insights which help a lot with stats and configuration.

The overall page stats are really really important for me in the first week. I made a radical decision - I did not migrate anything from the old platform, but started from zero. After 7 days, during the holidays, we’re at 200 users and 1k posts already again. Fully visible by your awesome software.

Development and Administration

I’ve noticed the page load icon on the left upper corner. Profiling for free? For me? Holy shit. That’s pure open source spirit, sharing the good advanced knowledge. A query analyzer even.

I don’t know much about Ruby on rails, but when I wanted to add new badges, I was wondering about the “daily” execution. Then I began to read here on meta. Admins have full access to /sidekiq - into the heart of Discourse. There, I learned so many things, the simple one to trigger an event, the more important one - performance dashboards and executed jobs.

Woah. Then the developer in me started to read more about the components. Ok, EmberJS is something I need to learn from scratch. But I hit @sam 's message bus implementations and many other things. I have a lot of things to learn :slight_smile:

More

Wiki topics. Documentation for everyone. Howtos to be written. You’re even doing this for anything you describe here. That’s a long term thing for me as well, we previously had Confluence for Icinga, but that did not work out well, too complicated for users.

Trust Levels with a self-moderating community. Modern interface, notifications. Emojis as I type - I love it.

The discobot interactive learning bot is the by far most impressive addition I have ever seen. Many many many thanks for that, no more explaining how to click and use the interface :heart:

Just awesome

I knew that Elastic, New Relic, Docker and Graylog were using Discourse already. On Jan 1st I learned that Foreman made the move from Google groups as well.

It took me 5 days to build a new community platform from scratch. This includes adding basic content with wiki topics, to some more introductions, to ensuring everything was running stable.

I did rebuild the app only for installing a plugin, or adjusting the pgsql/unicorn configs. No visible bugs, running smooth and stable. Upgraded to 2.0.0beta1 today :slight_smile:

You’ll definitely see me around posting things in here. I am hoping to send some more PRs in the future too. Meanwhile I am spreading the love :slight_smile:

Again, thanks a million for Discourse. I’m in love :heart_eyes:

PS: If you need a comparison to Woltlab, let me know. And if you ever need insights into Woltlab for writing a migration script, just ping me. I’m glad to help :slight_smile:

More references here:


(Erlend Sogge Heggen) #2

Fantastic write up! Looking forward to this same level of detail and historical forum comparison when you feel the urge to propose a new #feature :wink:


(Michael Friedrich) #3

That’s a good idea to put in the historical side :slight_smile: I’ll look into it, and I think I found a feature I’d like to have for creating a feature request or bug report - an issue template just like Github has, just assignable for specific categories.

Now you really got me :sunglasses:


(Jeff Atwood) #4

That already exists, edit category settings and create a topic template for the category.


Use default topic template for features and bugs
(Michael Friedrich) #5

Woah :heart:

Then I have to rewrite my feature request draft now into #meta suggestions to have such for the #feature and #bug categories :slight_smile: