Month: 2021-03


Mars / Kevin Chen 16:33:05
@flyingmars has joined the channel
ael 16:35:41
@aelcenganda has joined the channel
ael 16:41:20
@flyingmars patcon put his old repo of translation bot here

I think it needs some maintenance: • was tied to my heroku, but I will admit that my financial situation is not always great, and it sometimes goes unpaid :disappointed: Probably better that it live in someone else's account or some other service for stability • Also, it's a fork from matterbridge, and what that project is very maintained and getting lots of new features, my feature branch with translation is not. I'm happy to migrate both the heroku app and my repo to a shared space where it can be better maintained with others! :) Not sure if this is the sort of thing hosted on g0v github org

ael 16:41:49


bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)

ael 16:42:01
And here's the shim/buildpack that allows it to run on heroku and manage config in public repo:


A Heroku buildpack to help bridge chat tools like Slack.

pm5 16:53:51
@pm5 has joined the channel


patcon 01:41:07
@patcon has joined the channel
patcon 01:42:00
thanks @flyingmars!
patcon 01:42:19
re: easy configuring of translation bridges.
i think there are a few options here:
@pm5 mentioned using the slack app bot itself, which is a great idea
• the past i was hoping before was to think how to do it without any configuration, just by creating the room
the the No-UI approach, it would be that the software would look for rooms that ended in a language code (like “-en” or “-ja”)
and then if it found one, it would look for other rooms like that, either without a language code (leave all messages untranslated in there) or with another language code, then it would auto-configure them into a bridge
in order to get the no-UI approach working, the simplest way would be to create a small app that talks to slack and builds a matterbridge config file dynamically. Then, the config could live at a URL, and matterbridge could be poked to “reload” it’s config from that external file. This would require this feature to be merged into matterbridge, as currently remote config isn’t possible:
and if matterbridge is reloading/restarting itself, this might be helpful too: (every restart means that matterbridge “forgets” it’s cache of msg IDs used for threading, which is a bit inconvenient
Mars / Kevin Chen 12:45:42
I'll need some time to digest the materials above. I'm new to matterbridge 😅
patcon 22:26:56
Heh oh hey, no rush! Happy to record a Loom summary video if helpful. Would make it easier for the next ppl too. Lemme know :)


Mars / Kevin Chen 12:55:54
@patcon If I understand correctly, we are going to deploying the matterbridge with Docker on the heroku, and bridge multiple slack workspaces? But I am not sure where the translation part can be involved under the architecture of the matterbridge ...
patcon 13:07:58
(1) is translation still desired? it was part of my fork, but if no one wants it, we don’t need to rescue it right now
patcon 13:08:27
(2) to clarify, docker wasn’t how i was doing it before. do we want to start using docker on heroku? (i’m not sure whether this came out of another conversation you had with someone else, or if it’s a misunderstanding of how things worked previously)
Mars / Kevin Chen 14:11:02
For the part of the translation, @aelcenganda wants to use the matterbridge with the feature of translation, if available, for connecting the #herstory channel to the same channel in Japan and South Korea's slack workspace, and this may be very helpful for connecting three communities on sharing the discussion of the local events.

For the heroku/docker, it's just a misunderstanding of the previous work. Thank you for the clarification 😃


pm5 02:45:19
Just so that we won't duplicate our works --- there is a matterbridge deployed and running already and currently waiting for other slack workspaces to setup the bot users on their sides.
to clarify, is this the one set up years ago, or is there a new one? and if new, where does it live? sorry, i’m still playing catch-up 🙂
a new one currently living on a linode server supported by a fund from g0v intl
nice! any code repo?
just trying to catch up and not reproduce work
if there’s a [public] summary of status, i’m curious, but also: no worries if that hackmd doc is all that exists — i get that sometimes things move fast and informally :slightly_smiling_face:
there isn't much documentation at the moment. I'm still waiting for all the slack tokens, so the whole thing actually haven't left the proof of concept stage (although it should largely work). after that I'll probably spend a little more time laying out its logging and monitoring infrastructure to make it a more stable and reliable service.
I think some of these bridges in the past suffer from the occasional out-of-service, and when they break there are not indications until someone finds out from the silence after a while. Probably will try to tackle that problem first.
Mars / Kevin Chen 18:08:11
I saw that @pm5 has passed the message to the people in other slack workspace. If I understand correctly, the current state is to wait people in other workspace to agree with the setup of the matterbridge bot, and there's no technical issue need to be solved so far, am I right ?
patcon 21:23:01
i’m still catching up on the state of this after 2 years of being away, but my impression was that matterbridge core has had thousands of commits since I made our translation fork, and so we should try to rebase our forked feature branch onto the newest code. so that’s work that is more like a growing technical debt
ael 21:31:22
I am sorry for the confusion. @pm5 is building a cross-workspace Slack bot to connect channels in, Code for Japan and Code for Korea, bridging on Mattermost. Here is the document from @pm5

Matterbridge Slack bot setup - HackMD

🙌 1
ael 21:37:17
At the same time, Herstory project I am working on has 3 channels in 3 different languages in, Code for Japan and NullFull (Korea). Now the communications rely on 3 coordinators in 3 countries to copy, translate and paste to each channel, so I am thinking if it is possible to add translation bot upon @pm5’s work. I also think bringing translation bot back to g0v Slack can help growing foreigners coming to the space, so I asked @flyingmars if he is interested to build the translation bot and shared @patcon ‘s previous work on translation bot within g0v Slack to him as references.

I think I should write another document to clarify the translation needs.
1 🙌 1
pm5 23:23:46
I'm more inclined to see if there's a way of adding translation to the stack without changing too much of matterbridge's core, if only to simplify future maintenance work
2 💯 2


pm5 14:38:17
Don't feel sorry @aelcenganda. @flyingmars yes I'm still waiting for the tokens. Without them there isn't much I can do to move forward. But there might be some technical work that you can look into and plan for if you wish.

@patcon’s bridge worked pretty well but like he said, we need to rebase from time to time to keep the service up-to-date, and that is kind of not ideal. So like I said, I'm inclined to take a more modular approach to add translations to matterbridge. There are also some privacy concerns and user consents we should take care of, because translation means we are automatically sending everything to Google or other companies, and people might not like it.

Also I think someone wants to add translations for Japanese communities (is it @dai?) but I don't know if it's Google translation or other translation services that is being considered. So it would be nice if people can choose the translation service they would like to use.
> there are some privacy concerns and user consents to take care of

I really appreciate the consent thinking :) you're making me reflect on the balance between accessibility and consent. For e.g., in Civic Tech Toronto we use closed caption tools for events. If we held ourselves to individualized consent, it likely wouldn't work, because a single person can't easily opt out of being captioned. And even if they could, it would degrade the whole experience for others, effectively excluding some ppl who rely on closed captions. So we instead collectively communicate "if you're here, this is what's happening and here is why we do it, and by virtue of being here, you accept this."

Not saying we have to take the above approach, but just sharing it as path :) I could imagine a per-channel version of this social contract perhaps
> I'm inclined to be a bit more modular

matterbridge added a simple scripting language after I stopped working on it. It may be a better way, but it also might not provide the deep "hooks" we need in the system. But a path of investigation, for sure
> other translation services that are being considered

Yes to options for other services! I've heard on multiple occasions that deepl is better for many translations where english is not source language. My sense is google translate has an english bias

Making it globally set (for whole matterbridge app) is an easier first step. Neat to imagine that it might someday be per-channel (or per-gateway rather, using matterbridge internal naming conventions)
Yay! This is all great pm5! I'm really grateful that you have energy for this and thank you thank you thank you. Sorry I was absent in your past attempts, but I will try to be a better support now :)
Hey there's now one channel #facing-the-ocean that connects with code for korea so if you guys want to take a look🤘


patcon 13:20:04
Re: @pm5's #facing-the-ocean. Realized I didn't want to share "meta" stuff in that channel in case noisy, but here are some bridge docs:
patcon 13:20:13
• channel-specific doc:


#organizing-canada: What is this? - HackMD

# `#organizing-canada`: What is this? :link: **Shortlink:** [`<`|`>]

patcon 13:20:22
• General bridge doc:


Slack Bridges: What are they? - HackMD

# Slack Bridges: What are they? :link: **Shortlink:** [`<`|`>](<http://li>

patcon 13:20:25
• Simple app to render matterbridge config as webpage showing connected slack teams: