Mirroring Slack channels to Zulip

Clojurians have been mirroring at least 60 of their Slack channels to their Zulip instance since 2019: [ANN] searchable Slack-archive - Community Building - ClojureVerse. They wanted to make the Slack archive searchable, and so their solution was to mirror it to Zulip. Only 1 Slack bot is needed, I think, so it’s not going to overwhelm the bot quota in the Slack workspace.

The mirror seems to be unidirectional: https://clojurians.zulipchat.com/#narrow/stream/150796-zulip/topic/slack.20archive/near/174243071

I had asked for the source code (written in Clojure, of course) at some point in the past. But looks like the author, Gert Goet, hasn’t published it.

Do you think it is worth it to have a script to mirror some of the Slack channels?
Any channel admins on Slack can start enabling it by doing something like /invite @zulip-mirror-bot.

This is the script I made: slack-bridge: Implement unidirectional bridge. · rht/python-zulip-api@c5f9e24 · GitHub (the original script, python-zulip-api/zulip/integrations/bridge_with_slack at master · zulip/python-zulip-api · GitHub, was already in Python, and so this was a modification, but I could always rewrite it in Julia in the future, just like how the Clojurians use Clojure). Already tested in a test workspace, and so I’m waiting for agreement from the community.

Original message was posted in: https://julialang.zulipchat.com/#narrow/stream/137793-zulip-bridged/topic/mirroring.20slack.20channels. Reposted here for visibility.


Hey! Following up here to say this sounds like a good possible option for us. How would this be hosted? Any cost estimates there?

Not sure. Currently asking at https://clojurians.zulipchat.com/#narrow/stream/150796-zulip/topic/slack.20mirror/near/244412730. Whatever the cost is, I’m sure it is still lower than paying for Slack premium.

(I was initially thinking of hosting it from a DO droplet donated by Zulip, which I have been using to do Zulip dev stuff.)

1 Like

I was told that it is possible to host in a $5/month DO droplet.

Additionally, here is the source code of the Clojure mirror script: clojurians-zulip / slack-sync · GitLab.

1 Like

There has been fairly strong opposition to making the julia slack content public and non-ephemeral.
For a number of reasons.
(I will let someone who believes those reasons to be very important give them).

If we wanted to do it
I can probably host it on the same server I use for hosting all the bridges.
Some of which are set up for slack<->. Zulip,
but mattermost-bridge’s (name of the software the bridges Zulip, slack, Gitter, discord, IRC and a bunch of other things)
slack-zulip is not great: it doesn’t map threads to topics, it dumps everything in one topic.
It can probably even reuse the same bit token.

1 Like

Zulip supports non-public and ephemeral channels, so those could be used.

For people wondering “then what’s the point?”, I’d say it allows people to use only Zulip, which makes it easier to move more conversations into Zulip native. Moving everything into Zulip native would be a massive win, since we’re currently losing the design discussion of foundational libraries (and language changes) into the void.

Yeah, the Matterbridge only pipes to one topic. Technically, it is possible to add multiple gateways by hand, but this means that the bridge bot doesn’t automatically mirror a Slack channel once someone invites the bot. It should also be possible to fork Matterbridge to automatically pipe each subscribed Slack channels to a different topic, but for now we already have 2 different solutions: the forked Slack bridge script I made and the Clojure bridge script.

Huh, according to @logankilpatrick in Slack and the value of community heritage - #23 by logankilpatrick, the messages don’t go into the void. One can still download the whole archive. The problem is that old messages don’t show up if you search in Slack’s search bar. It should be possible to host this Slack archive as a static server, but then the content becomes web public, and is prone to search engine indexing.

The main point of the Zulip mirror is to make the Slack messages searchable and at the same time not web-public. The mirror is unidirectional.

1 Like



If the #general and #appreciation channels on Slack could be mirrored to Zulip, then I would have no particular reason to login on Slack every once in a while. Many of us are not using Slack for discussing technical stuff anymore because of the blackhole issue. I am personally just using it as a feed aggregator in #general and #appreciation because people sometimes share relevant news there.

1 Like