# Bridging Slack's #Helpdesk and Discourse (Proposal, feedback welcome!)

**URL:** <https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554>\
**Category:** Community\
**Tags:** question, announcement\
**Created:** [January 18, 2021, 6:38pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554 "2021-01-18T18:38:23Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 18, 2021, 6:38pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/1 "2021-01-18T18:38:23Z")

</div>

Hey all, following up on this proposal: [#Helpdesk channel on Slack (proposal to close the channel)](https://discourse.julialang.org/t/helpdesk-channel-on-slack-proposal-to-close-the-channel/47697) and a thread here: [I’ve heard a number of people say Julia is not mainstream because it doesn’t have many stackoverflow questions answered but they don’t know about discourse](https://discourse.julialang.org/t/ive-heard-a-number-of-people-say-julia-is-not-mainstream-because-it-doesnt-have-many-stackoverflow-questions-answered-but-they-dont-know-about-discourse/53168), I decided to work actively on these ideas to look into bridging Slack and Discourse.

It turns out that it is indeed possible and pretty straightforward. I setup some integrations with Zapier (and previously made a version with Slack.jl) and have the basic functionality working:

 ![Screen Shot 2021-01-18 at 10.17.33 AM](https://global.discourse-cdn.com/julialang/original/3X/d/6/d6b4a3bc9e82642640277ea23a7bfa6c868baf44.jpeg)

This integration, when turned on, will post each new message from the #helpdesk channel into a dedicated section on Discourse for bridged questions. There are a number of obvious issues with this including but not limited to people posting messages which aren’t questions outside of a thread and then those accidentally being cross posted. (We can actively work on this by giving gentle reminders to folks to use threads as well as impose some basic rules potentially, like only cross post a message with a “?”)

When a message is posted to this dedicated Discourse section, it will automatically show as a “wiki” entry rather than a normal post so it is editable by all of those with the correct permission levels (this will help distribute the workload more evenly in case there’s cleanup needed for these questions). Here is how things may look on the Discourse side (note that in production, the posts will come from a bot user):

 ![Screen Shot 2021-01-18 at 10.24.19 AM](https://global.discourse-cdn.com/julialang/original/3X/5/8/587cc0b5339521a330cfe115ac0c52f11a24ac9d.jpeg)

The only other potential issue is privacy. In my opinion, folks are free to use whichever name and profile image (within reason) they want on Slack. Thus, if someone is concerned with asking a question that will be traced back to them, they are welcome to ask pseudo-anonymously. We can also highlight in #helpdesk that all questions are posted publicly and visible to the world.

On the topic of Slack Questions not being on par with other Discourse or Stack Overflow questions, in my opinion, it’s a non-issue. I don’t see an issue with having potentially (but not limited to) simpler and shorter questions crossposted from Slack to Discourse. This will only improve the richness and accessibility of questions on Discourse.

TLDR; this is ready to go and pilot. I would love to hear feedback or suggestions on how to make this idea/system better. I already played around with auto-tagging answers but have not been able to get that working yet (hopefully sometime in the future after the question bridging is done I’ll figure it out).

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [January 18, 2021, 6:47pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/2 "2021-01-18T18:47:18Z")

</div>

Can you clarify how the answering of these questions should work?

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 18, 2021, 6:54pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/3 "2021-01-18T18:54:55Z")

</div>

@tbeason A few different options:

- the person who asked the question would port over an answer to Discourse
- someone from Helpdesk would answer the question on discourse rather than Slack (perhaps the best option?)
- Someone on Discourse would see the ported question after the fact, click the Slack link, and then find the answer (then ideally port the answer over if it wasn’t already).

---

<div class="post-metadata">

**Author:** ![kevbonham](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kevbonham/32/216165_2.png) [@kevbonham](https://discourse.julialang.org/u/kevbonham)\
**Post date:** [January 18, 2021, 6:59pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/4 "2021-01-18T18:59:40Z")

</div>

I think rather than doing this automatically, it would be nice to have some intervention. Something like a response from a slack bot saying - “I’d like to cross-post this to discourse, is that OK?” A more sophisticated thing might return some search results on discourse, and then say “Do any of these posts answer your question? If not, let’s cross-post so that more people can benefit!”

I have no idea how complicated this would be though 😆

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 18, 2021, 7:02pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/5 "2021-01-18T19:02:24Z")

</div>

@kevbonham Totally agree this would be ideal, would love to build on this iteratively and have something like this in v2.0. (Discord actually has really great tools for this sort of thing, we can definitely get close with Slack).

---

<div class="post-metadata">

**Author:** ![kevbonham](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kevbonham/32/216165_2.png) [@kevbonham](https://discourse.julialang.org/u/kevbonham)\
**Post date:** [January 18, 2021, 7:14pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/6 "2021-01-18T19:14:56Z")

</div>

That makes sense. I think the biggest things are 1. Being friendly about it; don’t want to shame people if they didn’t search discourse first, but reminding people that their answer might be on discourse might be a good nudge, 2. As you said on slack, don’t make it onerous enough or worded in a way that people might be shy to do the cross-post. It should seem like the default is to cross post, but if anything is sensitive, they have the option not to

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [January 18, 2021, 7:27pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/7 "2021-01-18T19:27:22Z")

</div>

I think that the lack of a topic system in Slack makes me skeptical that this can be done in a way that’s useful. You can try to force people to use threads, and then treat threads like topics, but then you make the helpdesk channel less useful because threads get buried fast.

I worry that there’s no simple set of rules one can program into a bot that would make such a cross posting system work without a lot of cacophony.

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 18, 2021, 7:32pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/8 "2021-01-18T19:32:06Z")

</div>

> [@Mason](#):
>
> You can try to force people to use threads, …

@Mason Gentle reminders 🙂 not force.

> [@Mason](#):
>
> but then you make the helpdesk channel less useful because threads get buried fast.

Hm, interesting, can you elaborate on this? I don’t follow. Wouldn’t a thread have a longer visible half-life if there were only questions with threads in Helpdesk?

> [@Mason](#):
>
> I think that the lack of a topic system in Slack makes me skeptical that this can be done in a way that’s useful.

Yeah, who knows, maybe it will fail spectacularly, but seems worth a shot to preserve thousands of useful questions and answers.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [January 18, 2021, 7:40pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/9 "2021-01-18T19:40:47Z")

</div>

> [@logankilpatrick](#):
>
> Hm, interesting, can you elaborate on this? I don’t follow. Wouldn’t a thread have a longer visible half-life if there were only questions with threads in Helpdesk?

Yes, if all conversations happen in threads, the visible half-life of all threads will get longer. However, that half-life is then unrelated to how active or interesting the thread is.

Someone could ask a very compelling and interesting question that drags in dozens of people and has them discussing the question for many days, but if it’s in a thread, that conversation will stay visible just as long as if nobody ever replied. This is the problem that [Zulip’s](https://julialang.zulipchat.com/#recent_topics) topics solve.

Imagine if Discourse only displayed posts in the order they were originally posted and didn’t bump them when they get new replies.

> [@logankilpatrick](#):
>
> Yeah, who knows, maybe it will fail spectacularly, but seems worth a shot to preserve thousands of useful questions and answers.

Yeah, it’s definitely worth trying something. I’m just pessimistic that the actual solution to this problem involves keeping Slack as a core part of our community.

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 18, 2021, 8:14pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/10 "2021-01-18T20:14:21Z")

</div>

> [@Mason](#):
>
> I’m just pessimistic that the actual solution to this problem involves keeping Slack as a core part of our community.

This is a stop gap until we leave Slack IMO. It’s inevitable that it will happen, just a matter of when.

Edit: but we can save that conversation for another thread 🙂

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [January 18, 2021, 8:16pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/11 "2021-01-18T20:16:52Z")

</div>

I’m actually also skeptical of the idea that we’ll ever have a Slack community that’s much smaller than the current one. But I’m hopeful that we can grow out other sectors of the community such that the relative weight of Slack is much less than it is now.

> [@logankilpatrick](#):
>
> Edit: but we can save that conversation for another thread 🙂

Edit: Oops, sorry for continuing the digression

---

<div class="post-metadata">

**Author:** ![Wolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wolf/32/21103_2.png) [@Wolf](https://discourse.julialang.org/u/Wolf)\
**Post date:** [January 18, 2021, 10:56pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/12 "2021-01-18T22:56:11Z")

</div>

If it’s still relevant (I mentioned this in Slack previously):

A bot that listens to a specific instruction, possibly even with tags, might be a good middle ground.  
That way, people could clarify whether they mind being mentioned in a crosspost. Simultaneously, it’s still fairly trivial and low-effort to mark something as “worth keeping”, if people remember to.

A more (probably overly so) elaborate setup to automate this further (would require a database though):  
We could set up an opt-in system where it is tracked whether a user has already decided to agree to crossposting in general. If every participant of a thread opted in, there’s no need for further questions, otherwise the bot could wait some time for people to opt in or something.

---

<div class="post-metadata">

**Author:** ![TheCedarPrince](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thecedarprince/32/17323_2.png) [@TheCedarPrince](https://discourse.julialang.org/u/TheCedarPrince)\
**Post date:** [January 19, 2021, 2:30am UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/13 "2021-01-19T02:30:59Z")

</div>

@logankilpatrick - I think this is a wonderful idea! If you are ready to pilot, one idea that I can think of before we do a jump from integrating it directly into helpdesk is to have a helpdesk-bridged sort of channel to debug things. That way, we can start getting Discourse posts made and figure out how to handle the problem of Slack threads.

I think going ahead and starting a small pilot in the Julia community is a great idea. If things go well, perhaps we can even make some sort of bot based off of Discourse that could answer questions on StackOverflow with links to relevant questions on Discourse to increase visibility. Going even further would be perhaps some level of Natural Language Understanding to link new questions asked in helpdesk with questions that were already answered in Discourse as @kevbonham suggested.

---

<div class="post-metadata">

**Author:** ![antoine-levitt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/antoine-levitt/32/4008_2.png) [@antoine-levitt](https://discourse.julialang.org/u/antoine-levitt)\
**Post date:** [January 19, 2021, 11:09am UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/14 "2021-01-19T11:09:56Z")

</div>

How about simply a bot that just archives a thread on discourse when asked by somebody? Manual is better than automatic here IMO

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [January 19, 2021, 7:20pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/15 "2021-01-19T19:20:17Z")

</div>

I really like this idea. The helpdesk channels on Slack and Zulip are filled with lots of good information that should be captured on Discourse.

Is this kind of bot possible on Zulip as well? @Mason?

---

<div class="post-metadata">

**Author:** ![SaschaMann](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/saschamann/32/2852_2.png) [@SaschaMann](https://discourse.julialang.org/u/SaschaMann)\
**Post date:** [January 19, 2021, 7:29pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/16 "2021-01-19T19:29:52Z")

</div>

It would be possible to bridge it to Discourse, probably even easier than bridging Slack due to the topics. There are a few topics discussing if and how Zulip’s #helpdesk should be archived (e.g. [1](https://julialang.zulipchat.com/#narrow/stream/137793-zulip-bridged/topic/Helpdesk.20archival), [2](https://julialang.zulipchat.com/#narrow/stream/137793-zulip-bridged/topic/Publicly.20searchable.20Zulip)).

The Zulip team is working on a feature that would allow making streams publicly searchable, which would be easier than setting up our own thing with either [zulip-archive](https://github.com/zulip/zulip-archive) or a Discourse bridge.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [January 20, 2021, 5:15pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/17 "2021-01-20T17:15:44Z")

</div>

Thanks to @SaschaMann, we now have an archive running: [Zulip Chat Archive](https://juliacommunity.github.io/zulip-archive/)

Due to privacy concerns where people in Zulip expected that only people who agreed to the community standards can view our messages, we created a new channel for this rather than archiving the old one. Hence, there’s currently not a lot there, but hopefully we can get people to prefer this channel in the future going forward.

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 26, 2021, 4:49pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/18 "2021-01-26T16:49:22Z")

</div>

Hey all, so in order to avoid re-posting unwanted questions or the like, I will add a “No Repost” check on the backed. So if your question contains “No Repost” or “Do not Repost”, then it will **not** be bridged to Discourse. This should help solve the privacy concerns.

---

<div class="post-metadata">

**Author:** ![TheCedarPrince](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thecedarprince/32/17323_2.png) [@TheCedarPrince](https://discourse.julialang.org/u/TheCedarPrince)\
**Post date:** [January 26, 2021, 6:21pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/19 "2021-01-26T18:21:20Z")

</div>

I think that sounds reasonable. Could you maybe program Slackbot to notify users that when they join helpdesk, they are warned about the bridging functionality?

---

<div class="post-metadata">

**Author:** ![logankilpatrick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/logankilpatrick/32/38123_2.png) [@logankilpatrick](https://discourse.julialang.org/u/logankilpatrick)\
**Post date:** [January 26, 2021, 6:23pm UTC](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554/20 "2021-01-26T18:23:08Z")

</div>

Yes, I will add at least 3 notices of bridging through slack via the initial note when someone joins, greet bot, direct message, and a note in the helpdesk channel description.

[Next page](https://discourse.julialang.org/t/bridging-slacks-helpdesk-and-discourse-proposal-feedback-welcome/53554.md?page=2)
