Should we move high-volume discussions to Reddit?

This post is spurred by the quantity of activity on recent SIP-related threads:

Each of these topics has a large amount of interest and discussion, which is healthy. Nonetheless, each Discourse topic has multiple concurrent threads of discussion, and I don’t think I would be alone in saying that following any individual logical thread is difficult. Even splitting out things into multiple topics (e.g. as we have done for high-level principles v.s. low-level syntax) only helps to a limited extent: each sub-topic’s discussion is still far too large and diverse to understand in this linear Discourse format.

As a result, comments get repeated often, comments get buried. Sub-discussions of interest to only a few participants can easily overwhelm everyone else, and topics tend to stop not when all points have been made, but simply when the weight of the understanding the 100+ post topic history becomes too much for any human to handle. This is not the fault of any individual, but simply due to the format of the Discourse forum.

The Scala Reddit ( provides an interesting counter-proposal: Reddit’s topics are hierarchical, meaning multiple logical threads of discussion within a single topic are easily segregated and discussed independently. Top-level posts of broad interest are unlikely to get buried, while throwaway posts of little interest naturally move out of the way of discussion. It is much easier for someone to navigate a large discussion, collapsing the subsections they are not interested in and finding the parts which are most relevant to them. Active sub-discussions can take place for those who are interested without causing any inconvenience to others who are not.

While r/scala has a reputation in the past for being hostile, recent changes in active moderation has greatly improved the situation. While we could always do better, I don’t think the current quality or friendliness of discussion on Reddit is any lower than this Discourse or other places.

Personally, I find understanding and interacting with a large discussion (e.g. 5 separate sub-topics of 20 posts each) is much easier on r/scala than in this Discourse forum. I think this would help greatly in structuring the discussion around these more high-volume topics, making it more productive and less frustrating for everyone involved.

What do people think? @odersky would you be interested in trying this?


It’s worth considering. I think for most threads Contributors is the best forum. Except if a thread gets too long. So the question is when and how migrate?

Another problem is that then migration would involve a change of audience, with the new audience on Reddit being much broader, That could make the thread snowball further. Not sure how to address this.


Well, I’m permanently banned from posting on the Scala subreddit without a reason, and they do not implement the Scala Code of Conduct (choosing instead their own rules), so I oppose this as it would silence my voice.


You took the words out of my mouth! Complex, long-winded, multi-threaded discussions on Discourse are so unbearable IMHO that I was considering making such a proposal myself.
I think linear discussion formats are woefully ill-suited to this kind of exchanges, and this also applies to smaller, less consequential threads.

Let’s take the recent ‘Proposal to add top-level definitions (and replace package objects)’ thread, for example, which is not that big. Although I think I’ve read through almost all messages there as they were coming, looking at it now (for example to refresh my memory on what was discussed), it seems entirely impenetrable unless I am willing to spend (again!) a large amount of time skimming through the entire timeline of discussion. Discourse’s flaky lazy-loading of messages and highjacked search does not help.
And for someone who hasn’t read through it already, understanding what was discussed requires an enormous time and energy investment that I think not many are willing to undertake.

If this had been a reddit-like thread, I would have been able to very quickly (in O(log n) instead of O(n)) skim through it by following and collapsing logical threads of discussion. For example, see this reddit discussion of length similar to the Discourse one mentioned above.

Now, I’m not sure reddit is the best place to have these discussions. We could create a new “scala-contributors” subreddit with the same rules as this forum. But I think people often abuse downvoting on reddit (downvoting when they don’t agree instead of when the comment is not constructive), which means that slightly more popular opinions may appear way more popular than they really are — i.e., when every team is downvoting the other in addition to upvoting their own.

1 Like

I think discourse is a much better and focused platform. I always hesitate strongly whether I want to engage on Reddit which is often prone to fights and has this (IMO bad) down-voting feature. Could a solution be to keep an eye on the threads and suggesting to split them into explicit sub-threads early enough? (I agree that discourse is not very helpful in showing the paths of concurrent threads within a topic). Edit: Also being able to quickly log on with your GitHub account is a big plus for Discourse I think.


I think that “moving” a thread once it gets too long will just make things worse. At that point, the damage is already done: the thread is already long and confusing and a lot of context is already built up. Starting a “successor” on Reddit amounts to archiving the built-up history and starting the thread over from scratch. I personally think it would be better to either accept the limitations of discourse (and maybe surface that this gives us pain to its maintainers) or else move “contributors” to a different platform completely (not to be decided lightly).


Perhaps we could start off by posting next few SIP-ish topics for user-facing features on reddit, and then posting a forwarder-topic to the Discourse to make sure people find their way over? I think it is a safe assumption that discussion over user-facing features will generate more activity than internal-ish topics like name-based pattern matching or megamorphic-call encodings, who are of niche interest enough the discussions remain manageable.

If the pilot discussions on reddit don’t work out for whatever reason (different audience, threads snowball too much, people hate the UI, …), we could fall back to Discourse for future discussions.

@LPTK I would be reluctant to create a separate “contributors” subreddit, simply to avoid fragmenting the discussion among too many locations (in contrast, using the primary reddit simply maintains the current level of fragmentation). For the same reason I’m reluctant to spin up some other discussion platform (e.g. using the forum software), which apart from fragmentation would also mean more operational overhead for people to onboard and for someone to maintain.

With regard to moderation, I think the current moderator joshlemer is generally reasonable, and if we need to tweak things (Scala CoC, unbanning sam, giving some of the discourse moderators reddit moderator rights to help manage these specific discussions) I think it’s within the realm of possibility to discuss.

I think all long discussions are likely to be overwhelming, we could experiment with using Reddit but I’m not sure it’d be a net win (e.g. Reddit can’t even show you which messages you haven’t read yet). As an alternative maybe we could try to codify a stricter standard for posting something in a discussion thread, of course that only works if there’s someone to enforce this standard and delete or move to their own thread anything which is off-topic. It’s interesting to note that Rust seems to be facing the same sort of problems:, I don’t know if they’ve come up with any solution to them yet.

1 Like

How extensible is Discourse?

It seems like the issue is primarily how the history is rendered, how much trouble would it be to get a tree-like representation of the comments without moving to Reddit?

The thought occurred to me too. And voting is nice, if you agree with something you don’t have write a whole post to say “me too.” Actually, regarding the thread I started a while ago about releasing new features more incrementally than all at once, people told me on gitter they didn’t bother commenting because their view was already expressed (they agreed with me :grinning:). So voting could result in getting more people’s opinions. Conversely, if someone disagrees but doesn’t know how to do so politely and articulately they may take advantage of the ability to downvote instead.

It doesn’t have to be r/scala, there might be a benefit to having a more formal and focused Reddit. Perhaps it should have a stricter standard, like the Scala CoC.

In terms of scope, it could take the place of the good old scala-debate mailing list. It could be named accordingly.

In terms of what to post where, everything should still be posted here, but some posts here could just say “please discuss on Reddit thread X that I just created,” at the author’s discretion. You might have a rule about not posting on the Reddit (if we make a new one) without posting it on the Contributors discourse. Also, the Discourse thread could be used for “meta” comments about the Reddit thread.

1 Like

The Discourse authors say this is impossible, and deliberately so.

1 Like

IMHO this is a huge problem with Reddit, which makes it virtually impossible to follow a thread once it becomes too big.


True, that’s a big showstopper. Technology is just too primitive… Or maybe we’re just spoiling ourselves trying to solve everything with technology…

Perhaps we could start off by posting next few SIP-ish topics for user-facing features on reddit, and then posting a forwarder-topic to the Discourse to make sure people find their way over? I think it is a safe assumption that discussion over user-facing features will generate more activity than internal-ish topics like name-based pattern matching or megamorphic-call encodings, who are of niche interest enough the discussions remain manageable.

I believe that with the implicits redesign we have reached the crest of activity. It’s by far the biggest proposed change to the language.

Wow, I had forgotten that this is not officially part of Reddit.

Thankfully there is, in fact, a way to have a similar functionality: it’s in the form of a Tampermonkey user script. I couldn’t use Reddit productively without it.

I agree with @nafg that not having this makes Reddit too primitive. Also, many other quality-of-life features are only provided via the Reddit Enhancement Suite. And we can’t really require users to install Tampermonkey and another extension to benefit from an acceptable experience.

So it seems we need something else. Something that may not currently exist, which is a shame given how many people would benefit from such a tool (as evidenced by other communities having the same issues, which @smarter pointed out with Rust).

1 Like

I am soooo tempted to suggest trying Querki out for this purpose – I believe that, once all of the designed conversation features are in place, it would suit our needs extremely well. The design of Querki’s conversations is around what I call “heavyweight threading”, a deliberate mid-point between bushy trees (which can be hard to follow chronologically) and pure flat conversations (which make tangential conversations difficult).

Unfortunately, it’s not done enough yet to be appropriate to our needs; there are at least half a dozen features that would need to be more fleshed out first. (It’s tempting to see if members of the community would be interested in contributing to the platform…)

Maybe we should use Google Wave?

In the abstract context of this being a proposal favouring exclusion.

I would prefer we focus on doing better (inclusion) then offloading to other platforms (exclusion).

Though I empathise with the loss of productivity and feelings of frustration and can only imagine how difficult it must be for SIP-related threads, I would be in favour of allowing those that contribute in other ways than writing code.

Maybe we just need to do a better job of anticipating subthreads and create more fine-grained topics from the start


Maybe we just need to do a better job of anticipating subthreads and create more fine-grained topics from the start

Yes please! And also react to developing threads. Discourse admins can split topics in a way that moves existing posts and makes the two topics clearly link to one another.

For example, in each of several recent threads about implicits, a topic about naming and trivial syntax changes could have been split from the topic(s) about semantics.

1 Like