Discourse as Sole Communication Platform for catsoop?

As of right now, there are at least four separate ways to engage with catsoop-related discussion:

  1. this forum (pretty much unused)
  2. Gitea issues (which has seen a small amount of use, mostly from @vrichmon and @edemaine)
  3. the mailing lists (pretty much unused)
  4. e-mail, call, or come find me personally (this is the one everyone uses)

I don't really have a problem with people contacting me individually with questions, in theory, but I think everyone wins if more of those conversations are public (at least the ones that aren't super specific to one subject). I also think that it would be nice to have a single place to go for these conversations, rather than having the forum, mailing list, and Gitea as three separate places.

Given those concerns, my gut feeling is that using Discourse is probably the best way to unify all of the communications. As such, I think I would like to shut down the mailing lists and the Gitea issue tracker (but probably keep Gitea for source hosting and pull requests). To me, that seems like a win across almost all dimensions. But I wanted to ask for more thoughts/opinions before making any changes.

I tried to write out some of my thoughts below, maybe there are things I've gotten wrong, or things I'm missing?

Discourse vs Mailing Lists

I think Discourse fills the role of a mailing list nicely, in that it's possible to engage with Discourse via e-mail (both sending and receiving content).


  • nice web interface, searchable archives
  • nice rich-text editor for those who want it, e-mail-based interface for those who don't


  • creating an account is required in order to 'subscribe' to different categories
  • slightly more difficult to make good use of e-mail tools people already like?

Discourse vs Gitea Issue Tracker

With the use of the solved, assign and tickets, feature requests and bugs can be handled pretty nicely here. Having those kinds of things in the same place as support questions, etc, has some nice effects (more people using one medium, easier to tie related things together, no need for a separate account, etc).

If we wanted to take more drastic steps, we could do away with Gitea entirely and move to a standalone Git or Mercurial repo, and coordinate code contributions through Discourse as well. But as of right now, I think it probably still makes sense to use Gitea for hosting the code and for pull requests and related code review / conversation (rather than moving all of that machinery to Discourse).

@edemaine, maybe you have a better sense of some of the tradeoffs here?


  • better suited to long-form discussions and open-ended conversation, but suitable for shorter issues as well
  • nice to only need to make one account and have all conversations in one place
  • easy to spin out diverging threads (like issue 81) into separate topics, and to otherwise moderate conversations
  • better rich text editor than Gitea
  • more flexibility in terms of ways of contributing (patches via email or upload, for example, for people who don't want to do the fork/PR thing via Gitea)
  • fine-grained control over notifications/emails (mute or subscribe to threads, categories, or the whole forum)


  • less tightly integrated with the source code, PRs, changelog, etc
  • maybe people are used to Gitea-like issue trackers moreso than a forum like Discourse?

I'm all for replacing the mailing lists with Discourse forums, especially given that they aren't used much, so there isn't much existing pattern of use you have to change.

I feel less comfortable with Gitea issues disappearing. To me, there's a separation between "development discussion" and "support discussion" that would naturally go to Gitea and Discourse respectively. For me, the former includes feature requests. Admittedly, many of my feature requests have turned into "you can actually do that, like this" because I didn't know it was possible... But conceptually I still feel like there's a difference. Something like: Gitea is for those who know (some of) Catsoop's code and are discussing it, while forums are for "normal users". This distinction isn't the best because using Catsoop requires programming... (In the case of #81, I didn't know that there was a Discourse forum until you mentioned it, and then I was in the middle of writing a support request when I found the issue and got things working, which led me to a feature request to make it easier.)

I come from a Github world (spend lots of time there). As a developer I find it very helpful to use issues like a to-do list (including bug reports and feature requests), and PRs to make very explicit how to change things (and reviewing diffs is nice too). Github is added "soon" a discussion forum to all repos (currently a few have them) that will finally give a place for support questions (currently issues are overused for that). The main difference is that issues get closed when done, and become mostly invisible (don't usually need to know about old to-do items) while discussion hangs around in case other people encounter similar questions. Admittedly, I don't have nearly as much experience with Discourse - probably it supports some of those things too. But I do appreciate that Gitea feels almost like Github.

All that said, Discourse's editor works much better on my phone, while Gitea is more annoying. :slight_smile:

Ideally there'd be a way to integrate Gitea and Discourse auth, which would fix your single-account issue. Even more ideally, there'd be a way to move a discussion/post between Gitea issues and Discourse, but that may be overcomplicating things. (I'm trying to replicate the future-Github technology.)

1 Like

Thanks for the thoughts here!

Right. I think the difficulty is really in trying to politely suggest redirecting the relevant e-mails that come directly to me, to Discourse instead. And maybe seeding the forum with some of the common things that have been asked in the past so that people don't see an empty screen when they come here, which I can imagine might make it difficult to start contributing (that might be another secondary benefit of moving the issues here, as newcomers would see that there is conversation ongoing, and not just an empty void).

I think we agree about this in principle, but maybe differ in where it makes sense to draw that line. For me, the line naturally happens at the PR / code review stage, since that's where things usually become explicitly about code rather than about symptoms / surface features, and also the main place where I see Gitea as having a real leg up on Discourse (specifically, nice code review and CI tools that have no real analog in Discourse).

I also think that line is generally somewhat hazy, and maybe moreso for catsoop than for other projects, for the reasons you mention (a catsoop course is code, and code that is tied pretty closely to the internals of catsoop itself).

Part of this idea is also maybe selfish, in that I don't want to have to be switching between tools as often. I suppose I can see there being some benefit, in principle, to the context switching, but I'm not sure. At the same time, and more importantly, I want to make changes that encourage newcomers (both users and developers) rather than scaring them away.

I'm also probably overthinking this, given catsoop's current size...

Right. That was the main reason for standing up Gitea in the first place, as opposed to the old standalone Mercurial repo that I (still) prefer. I'll confess that I don't like the Github workflow in a general sense, but I do think it's a good thing to try to set up structures that make it easy for new people to get involved if they want, without requiring learning a whole new set of tools.

I think it does, kind of. Some of those things have kind of been shoehorned in via plugins, but there are reasonable ways to keep track of things like you would in a normal ticket tracker (status, priority, assignee, etc) that I think mimics at least some of that functionality.

I think the disappearing piece is a bit harder (it's ~easy to mark something as resolved, but I think it probably requires a search to filter out the resolved pieces, as opposed to having them disappear automatically).

Discourse's functionality for closing threads is also quite heavy (the equivalent of "locking" a thread on, e.g., Github). But I think that adding a softer locking mechanism is doable (something I talked about with some of the Discourse devs a while ago). In general, Discourse is pretty flexible/extensible, which I think is a win.

Hmmmm...yeah, I can definitely see that distinction. So maybe part of what I'm running up against is projects who have tried to shoehorn support into things like the Github issue tracker, which aren't particularly well suited for it (someone asks a question, it gets answered, the thread is closed and vanishes, someone asks the same question, it's answered with a link and is closed and vanishes, rinse and repeat) :slight_smile:

So maybe there is a way for the two systems to live in harmony that avoids these pitfalls.

I definitely didn't really mean to call #81 out as specifically egregious or anything like that; that's just a common pattern that I feel like I've seen a lot in issue trackers, and one that they don't handle particularly well.

I agree that it would be nice to have a way to move conversations between the two places if both stick around. Linking or quoting work, but they're not ideal. Maybe it's possible to integrate the two more tightly (Gitea has a nice API, as well as the notion of web hooks, so in theory it's possible to make them talk to each other), but I think that would take work, and I'm not sure that's where I want to spend my time.

That (kind of) already exists, though probably added after you created your accounts, in that both Gitea and Discourse now allow signing in with either MIT credentials or with Github credentials (in the hopes of reducing the overhead of creating a new account). That's definitely not a complete solution, but it makes some amount of progress.

Some of the pain points with multiple accounts are less about signing up, though, and more about what happens afterward (having to manage e-mail subscriptions separately on the two platforms, for example, might contribute to pain and/or to missing things).

Ah yeah, I meant to agree with that too -- I think it's great to have a Discourse forum for this purpose. (I was very happy in #81 to learn of it -- I would have used it last semester and especially when teaching 6.009, instead of the various personal emails/questions.)

Seeding with old release notes (from the mailing list, especially if you can 'back-date' those posts) and other common questions/answers seems like a good idea too. We could even put up some of the old email discussions we had if that'd be helpful. Random example: I'm trying to use cs_user_info in preload.py but it doesn't seem to be populated then. [...]. I do think an empty forum is intimidating.

Looking to the future, perhaps when you get a question by direct email, you can ask them whether it's OK to post their question to the forum (anonymously or not) and answer it there, because it might be useful to others? Having some stock paragraphs to include in email like that could help set the right behavior without being pushy.

You are really the primary user here, so it's a reasonable argument. (Though if you keep Gitea for PRs, you'll still be switching systems :slightly_smiling_face:.) For example, if you can build a to-do list for yourself out of a Discourse query, and you prefer that, that's probably fine -- I don't think others need a to-do list per se.

I think I'd personally be comfortable writing bugs/feature requests on Discourse (in addition to questions, which I was already going to put here), despite being "unlike Github". (It's not actually that different -- both support Markdown, and replies. They just look different.) I wanted to tell you "the Github way" in particular because it is "the way developers will be familiar with" [and I was guessing that you were calling on me to describe that] and so we could compare the pros/cons. I agree with the problems you raise about the Github way, especially until forums are finally active for all repos. I guess an alternative to think about is integrating Discourse into Gitea (as a tab, possibly replacing issues), which is roughly what Github is doing, but that sounds difficult...

In summary, I'm coming around to your original proposal (assuming there's a clear link from Gitea to Discourse, and still keeping PRs on Gitea). At least, I don't see any major downsides from my perspective, so if it's better for you, I think it could be worth the experiment.

1 Like

Thanks again for the input. Yes, sorry for asking you to speak on behalf of all Githubbers about how disruptive of a change this might be :slight_smile:

I'm still a little unsure about the issue tracking, but I think replacing the mailing lists is a definite yes.

So in the short term, I'll bring over some of the old posts from the mailing lists (and maybe bring over that e-mail exchange you mention, too, as well as a couple of other questions I answered a couple of times this past semester), and some other resources. It looks like Discourse gives me the ability to back-date things, change ownership, etc, so if it's OK, when I pull things over, I'll mark you as the author here of the things you wrote. I'll only bring over things that I think are generally useful (not some of the questions that are more about specific subjects). I may also try bringing over some of the issues from Gitea, too, just to see what that might actually look like.

1 Like