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: Zulip

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 main · 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: Zulip. Reposted here for visibility.

8 Likes

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 Zulip. 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

Bump.

2 Likes

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

Background:
I volunteer for an org that has a number of slack teams (like orgs on Zulip), and due to the restrictions on Slack we want to move to Zulip, and this sounds like the best tool for easing the migration.

  • A lot of users are involved, and some don’t check slack often.
  • There are several years of history we cannot see in slack due to the changed and changing restrictions.

We have already imported two Slack teams, and it worked well for anything that is open to read by all inside that Slack team. And the search is great.

After an import, this mirroring which is mentioned in this thread would serve well for the transitional period.

I am NOT a programmer, but am a retired IT pro on Windows workstations and servers, but have migrated my personal computers to Linux since retirement.
And I am not the only IT person on this team, though it is very busy with other projects.

How would I set up this mirroring for the migrations we need to do. What steps on what location, in what order, etc. Specifics are what I need.
I expect that as a team, we will mirror hundreds of channels and many tens of teams to zulip.

Thanks

The instruction can be found at python-zulip-api/zulip/integrations/bridge_with_slack at main · zulip/python-zulip-api · GitHub. You can DM me (Rein Zustand) at chat.zulip.org to speed up the process if you encounter some problem. The most complicated part of the steps is the creation of the Slack API token. I’m not sure why Slack is making it difficult to create just an API token, with lots of clicks in their web UI.

Thanks for the email response. I do have some questions.
In item #3, what is the configuration file and its location?

1. Zulip endpoint

3, In the zulip section of the configuration file, enter the bot’s zuliprc details (email, api_key, and site).

@JLRowe just wanting to make sure you have seen my reply on chat.zulip.org.

Yes, sorry I did not respond before.

And so much thanks tor the additional mirror of zulip to zulip. The is a bonus hoped for but not expected.
Looks like I need to sit down and get both working, document it, and when that happens there is a LOT of work to do with migration.

Again, thanks.
Jerry