乐趣区

关于开源:连接微信群Slack-和-GitHub社区开放沟通的基础设施搭建

NebulaGraph 社区如何构建工具让 Slack、WeChat 中贵重的群聊探讨同步到公共畛域。

要凋谢,不要关闭

在开源社区中,凋谢的一个重要意义是社区内的沟通、探讨应该是通明、容纳并且不便所有成员拜访的。这意味着社区中的任何人都应该可能参加探讨和决策过程,并且所有相干信息应该公开和自在地与别人共享。

在公共场合进行沟通在开源理念中是重要的,正是这种形式使得社区的成员能够进行无效地独特工作,分享想法和反馈,为我的项目或社区做出奉献。

然而,社区在实际开放性沟通的过程中,或多或少都会遇到以下一些状况:

  • 工具抉择 ,本该是用来升高沟通老本的工具,却妨碍了局部社区成员在开源社区中的凋谢沟通。例如:

    • 邮件列表交换模式是我集体很偏爱的形式,但在中文社区背景下,因为邮件列表不是所有用户都可能 access,其作为中文社区繁多沟通渠道可能会带来沟通的不对等性(肯定水平只有局部的人有特权表白本人),反而挫伤中文开源社区的开放性。
    • 抉择交换工具的时候抉择了付费产品,社区成员须要为此买单,而并非所有社区成员都能负担得起,这也导致了局部社区成员不能参加到社区中。
    • 所用工具难用,或者须要肯定的技术教训积攒,而这教训并非所有社区成员都具备。
    • 用于交换的工具在某些操作系统或设施上不兼容,这可能使一些社区成员难以拜访它们,更别提应用它们。
  • 信息共享 ,在不与社区其余成员分享上下文、过程或后果的状况下,只在线下(例如:通过当面沟通、IM 或电话会议)进行决策可能会使重要信息只被多数社区成员把握。这可能会阻止其他人基于这些信息做奉献,或是从中学习常识,妨碍了开源社区所必须的凋谢沟通和合作。
  • 材料公开 ,没有把零碎、功能设计和提案信息以公开形式文档化、归档下来,例如:只提供某一个公司内网的链接,从而可能挫伤开源社区的透明度和包容性。这样的关闭后果会使得社区的其余成员很难放弃对社区停顿的理解、就更不用说参加进来做奉献了。为了促成透明度和包容性,开源社区应尽量确保所有重要的信息公开和自在地共享、尽可能保有细节地被公开归档。

开放性挑战

为了使社区(或工作环境)的沟通放弃通明、高效和衰弱,其实曾经存在一些共识,和通用的做法:

  1. 异步优于同步 ,在分布式和寰球合作的状况下,同步通信在大多数状况下老本高且效率低。因而,举荐应用 GitHub Discussion 和 Stack Overflow 进行发问式的沟通。
  2. 专题(Thread)探讨优于播送(Fan out),注意力是贵重的,习惯性向所有人群发送信息会最终导致重要信息没有人真的读到信息,都晓得狼来了的故事。因而,在 GitHub Discussion 和 Slack 中设有分类、频道。建设 SIG 来探讨一些乏味的主题并归档沟通的后果,而不是将所有事件带到社区会议宽泛探讨。
  3. 优先选择可搜寻 / 文本、版本控制、合作的形式与工具 ,并在可能的状况下激励成员们给其他人反馈;在基础设施上跟踪文档、设计流程,并且提供评论、review 的能力。为此,实际过程中采纳 etherpad.opendev.org 来记录社区会议文档。

然而,还是存在一些特例的状况,咱们不能自觉谋求异步、相对的凋谢。正如后面提到的,能让更多参与者偏心、不便与社区连结自身也是凋谢的一部分,只管应用的基础设施可能是关闭的。事实上,简直所有的开源社区都在用相似的形式建设他们的社区沟通平台:

  • Slack 反对丰盛的格式化信息(反对 Markdown!)和 Thread 零碎,其现代化的设计和凋谢 / 软定义接口使咱们的工作流程能够十分柔美晦涩。
  • 与 Slack 相比,因为微信不是专为凋谢的技术交换场景设计,所以微信在技术社区中在许多方面都很不现实。但在国内,它是社区中所有人都能够拜访的惟一平台。简直每个人都有一个微信账号,简直每天都会查看微信信息。但与之相同的是,简直上每个人都有不止一个邮箱,且只有很少一部分人会每天查邮件。

在 NebulaGraph 社区中,下面这两个平台承当了次要的沟通工作,但这些信息在呈现后的几个月后就会隐没,它们在短时间内只能被割裂的一部分社区成员看到,而将来没有人或其余平台能够读到、搜到和参考、援用这些有价值的探讨。

摸索的计划

已经有一段时间,NebulaGraph 会本人手动收集 Slack、微信群里的探讨摘要,定期分享、归档在公共畛域,这个办法也的确带来了一些价值。然而,咱们最初都没坚持下去,起因很简略:

  1. 这太费事儿了,齐全不 scale;
  2. 这种摘要其实不好均衡能被归档信息的裁剪水平,有时候细节十分重要却不容易被摘要保留。

搞定 Slack 的信息孤岛

2022 年 10 月,我留神到了 linen.dev 这个开源我的项目,同时它也是一个 SaaS 服务。有了它,咱们能够把 Discord 和 Slack 中的每个 thread 保留。linen.dev 整站看起来和 Discord / Slack 简直一样,然而,它齐全是能够被匿名拜访、援用,以及被搜索引擎收录供别人检索应用。

通过几个月的评估,咱们最终决定了订阅 linen.dev 服务,并播种的果实:

  • 不必去革新现有 Slack,保留 Slack 所有的益处;
  • 有了这样 https://community-chat.nebula-graph.io/ 的一个站点收录 Slack 信息。其中,Slack 中的每个公共频道内容都能被匿名拜访、被搜索引擎收录,而访客还能够很容易地晓得怎么退出咱们的 Slack,如图右上角:

这个站会实时同步 Slack 里的音讯,重要的是,它是面向搜索引擎优化过的,你能够搜搜 Kotlin 社区通过 Linen 被收录的网页有多少,搜这个:”site: slack-chats.kotlinlang.org”。

此外,每一个 Slack thread 都有一个无需登录的只读 URL,咱们能够不便去分享、援用它。尽管,这件事儿自身就是超链接、URL 的作用。然而,在当初曾经变得十分不容易了,比方:这个新闻里提到当初新一代的年轻人更偏向于在抖音里搜寻而不是在公共畛域里。

有了 Linen,咱们能够十分开心地在 GitHub 里援用任意一个 Slack 探讨话题:

解决了 Slack 的问题之后,惟一剩下的痛点就是微信群了。微信群每周都有许多贵重的探讨在社群中进行,却不能被保留下来,真是太令人疼爱了。终于有一天,我决定直面这个问题。

解决微信群的信息公开化

首先,能不能间接用 Linen 一把梭,同步群音讯呢?我的确在 Linen 社区和他们的 Kam 探讨间接解决 IM 同步的可能,不过到当初,他们都没有优先思考😭。

但,机智如我,我想如果间接把微信同步到 Slack,Linen 不就能把微信的信息也收录了吗?

在 Twitter 上 求助黑客 / 开源社区 + 一番调研确定了没有这样的货色存在之后,我决定搞一个,做成开源我的项目,我花了一点工夫实现了最后的版本。

万万没想到,当我做到把音讯从微信同步到 Slack 之后,随之而来的问题是,通过 Slack API 收回的音讯 Linen 并不会收录。

为此,我放弃了 Linen 一把梭的美好愿望,转而思考把音讯同步到其余公共畛域。而我第一个想到的就是 GitHub Discussions 之中,又花了周末的下午加早晨,把它做进去了:

当初,这个机器人程序会把配置好的微信群音讯同时同步到 Slack 频道和 GitHub Discussion 中给定的标签下的主题中,每一个群一个礼拜是一个主题,所有的音讯都是主题下的评论。

小结

当初,咱们保留了所有 Slack / 微信的美妙的一面的同时,把它们中的探讨音讯历史全都归档、索引并公开到这两个域之下了,是不是很酷呢?来拜访下上面的链接,感触“私密音讯”下音讯被公开的高兴吧:

  • https://community-chat.nebula-graph.io/
  • https://github.com/vesoft-inc/nebula-community/discussions/categories/wechat-chat-history

后续工作

这个同步微信的我的项目是 Apache 2.0 协定开源的,并且当初由我和 Frost Ming 在保护,这里还有很多待加强、实现的新性能、新工作,欢送大家来试玩、奉献。

让咱们一起把开源社区的沟通做的多一点凋谢、少一点关闭吧~

我的项目地址 👉🏻 https://github.com/wey-gu/chatroom-syncer

最新进展

在圣诞节前,Linen 的工程师容许了 chatroom-syncer 同步到 Slack 的音讯,详见:

  • Linen-dev/linen.dev#761
  • wey-gu/chatroom-syncer#42

当初,咱们能够在 https://community-chat.nebula-graph.io/c/wechat-sync-venus 看到 WeChat 中的群聊的文本备份了!当然啦,如果你更喜爱 GitHub Discussion 的形式,help yourself,选你选的形式就好。

论断

无效的沟通是胜利的开源社区的基石,因为它让合作、分享思维与常识、以及所有成员的参加成为可能。为了确保沟通通明、容纳和无效,对于开源社区来说,让所有成员有机会参加探讨和决策以及公开自在地分享相干信息是十分重要的。

咱们 NebulaGraph 社区的建设者 / 贡献者将持续寻找和黑客办法,以凋谢和良好的形式使人们连贯在一起,和大家共建更好的开源、技术社区。


谢谢你读完本文 (///▽///)

要来近距离体验一把图数据库吗?当初能够用用 NebulaGraph Cloud 来搭建本人的图数据系统哟,快来节俭大量的部署安装时间来搞定业务吧~ NebulaGraph 阿里云计算巢现 30 天收费应用中,点击链接来用用图数据库吧~

想看源码的小伙伴能够返回 GitHub 浏览、应用、(^з^)-☆ star 它 -> GitHub;和其余的 NebulaGraph 用户一起交换图数据库技术和利用技能,留下「你的名片」一起游玩呢~

退出移动版