Forum+chat app plans

I’ve received some funding to create an in-depth tutorial for Biff. I’m going to have the tutorial show people how to create a forum + chat application. While the primary purpose of the app is thus educational, I would nevertheless like it to become a genuinely useful piece of software. It’ll be complementary to Yakread and Platypub. (I need to come up with a good animal-based name for it I have just bought and I am undecided; personally leaning towards minkchat, but my spiritual advisor prefers eelchat. I will refer to it as minkchat for now.)

I need to hash out the main features/differentiators for this, vs discord/discourse/reddit/slack etc. And then need to decide which of those things to include in the first version for the tutorial.

So, here’s what I’d like to have:

multiple discussion types

It seems quite broken to me that you have to have separate apps for both long-form asynchronous discussion and real-time chat. e.g. I currently use both Discord and Discourse. I’d prefer to have that all in one application. It’s hard enough to grow a community; I don’t want to try to get people to join two. I want a single place that works for any type of discussion I might want to have.

Discord is actually kind of doing this in that they have a “forum channels” feature in private beta. So I’d like to mimic that, and also add a third channel type for threaded discussions (like reddit or twitter).

Minkchat should be able to grow with the community. When it’s tiny, one or two chat channels might be enough. As it grows, then perhaps you start adding forum and/or threaded channels.

Public/private settings for channels

I want the option to make channels public and linkable. In general I’d probably do that for forum channels and threaded channels, and perhaps leave chat channels private (i.e. visible only to members of the community).

Better welcome page

I want to customize the main page that people see when they haven’t joined yet. Discourse does this alright; there’s a welcome post you can edit. On Discord, when you give someone an invite link, they aren’t given any additional context after they click the link, it’s just “click here to join this server”.

I’d also like a separate customizable message for when people join, for onboarding. It should be highly visible, not just a pinned post that no one ever sees.

Integrate with readers, publishers, and aggregators

Going along with my grand unified theory, it should be assumed that members have a separate reader app (like yakread or gmail) where they’d like to aggregate all their feeds. Minkchat should do stuff to enable that kind of workflow. At a minimum, we want to send daily/weekly digests of new posts and replies, like Discourse does. We could also expose more kinds of feeds, e.g. for notifications, individual channels, individual users, … See Grand unified theory of how social media ought to work - #3 by jacobobryant – “reader apps should display notifications from discussion communities” and “publishing apps should be able to publish a single feed with a user’s activity from all the (public) discussion communities they’re in”

It should support embedded blog comments, including letting people write comments on the blog post page. (Discourse lets you embed comments, but to write a comment you have to leave the site and go to Discourse).

It should also have an API for getting authentication tokens, so that publishing apps can send emails with “Comment”/“like”/etc buttons that sign you in at the same time. (In the same way that if you click “Comment” on a Substack email, you’ll be signed in automatically so you can leave a comment right away–no need to create an account/sign in after clicking the comment button). There may not be any newsletter services currently which could be made to integrate with the API yet, but at least we could make Platypub support the API.

Single account for multiple communities

This is the best thing about Discord and the absolute worst thing about Slack. (Slack is especially stupid because their authentication page is on the same domain, so my password manager can’t differentiate between different slack communities).

Help community members get to know each other

The “value prop” of checking out the community shouldn’t be “please write a comment on my blog post!!”, it should be “make valuable connections with peers.” There are probably lots of interesting things that could be done. Maybe have a bot that sends people messages like “here’s a random other person in the community + their bio and a post from their own blog or something, click this button if you want to say hi”. idk. maybe let people connect their blogs/social accounts or whatever and aggregate it into a channel (“posts from the community”).

So that’s everything that comes to mind right now. As for what should be implemented in the tutorial, perhaps:

  • chat, forum, and threaded channels
  • public/private channel settings
  • email digests (anyone learning to make web apps as a business should get into the habit of sending retention emails)
  • single account for multiple communities (better to bake this in from the start)
  • aggregate posts from community members’ RSS feeds into a single channel. (It’ll be a good way for the tutorial to demonstrate how to do background syncing jobs and such.)

And then the other stuff (reader/publisher integrations, welcome pages, get-to-know-you stuff) can come later. I can leave those as open issues for people who finish the tutorial and want to keep developing it!

Admin/moderator roles have also been suggested. And comment edit history (good opportunity to demonstrate XTDB features).

This should copy a thing Substack does: it’s easy to see the newsletters of other commenters. In your profile settings, there should be dedicated fields for your website/newsletter/rss feed/twitter/etc etc/whatever. Make it as frictionless as possible for people who interact with you to see your stuff.

Also expose that data via API. So readers/aggregators would have a feed(s) of all the public posts/reactions in the forum, and they’d be able to look up the profile info for all the people (unless they set their profile to private).

I tried out Circle and wrote up some first impressions: Is Circle an adequate replacement for Discord + Discourse? | Tools for Online Speech

You can make “spaces” which can have different formats, either “post” or “chat”. so far so good. If you make the community public, then post discussions are totally public, but you still have to sign in to see chat discussions. Also good.

However the post discussions have too much of a “facebook post” feel. I don’t think they make a good replacement for Discourse-style discussions.

Also, it still lacks a moderation feature I’d like to have: require new members to have their first post be manually approved.

Plus there’s no free plan! That alone would merit moving forward with an alternative :).