The value of a thousand little features

Why is the Discourse codebase so big? Aren’t they just taking text and showing it on a web page?

Well, yes. But isn’t every web application ultimately just taking text and showing it on a web page? If it were that simple I think we would have packed it up a long time ago.

If you zoomed in closer on Discourse, say to the 5000ft view, you’d see that we have many big features we had to implement but might not seem obvious at first including: Sub-categories, User Groups, Theming, Moderator Tools, a Setup Wizard, etc). I think a lot of experienced developers would recognize that you’d need all that stuff as your product gets used by more people.

.. The thing that has been a great learning experience for me though, is the thousands of little features that most people don’t see.

.. For example (and this is nowhere near an exhaustive list):

  • If your reply is too short, we’ll encourage you to say more. Short replies offer little value.
  • If your post links to something recently mentioned, we’ll say “Hey that was already posted x replies above you.”
  • If your new topic is similar to one that already exists, we link to it and tell you to check it out first before perhaps creating a duplicate.
  • If you start dominating the topic by replying too much, we ask you to slow down and give other people a chance to participate.
  • If you are only replying to the same person over and over, we suggest that you might be derailing the topic and perhaps should take it elsewhere like a private message.

.. Of course, a truly toxic user will find a way to be toxic regardless of how many times to discourage their bad behavior, but the vast majority of users are not toxic and will happily follow hints that lead them towards a better discussion. Many of our users will never see this work, but the ones who do will hopefully be pointed in the right direction.