NebulaGraph 社区如何构建工具让 Slack、WeChat 中宝贵的群聊讨论同步到公共领域。
在开源社区中,开放的一个重要意义是社区内的沟通、讨论应该是透明、包容并且方便所有成员访问的。这意味着社区中的任何人都应该能够参与讨论和决策过程,并且所有相关信息应该公开和自由地与他人共享。
在公共场合进行沟通在开源理念中是重要的,正是这种方式使得社区的成员可以进行有效地共同工作,分享想法和反馈,为项目或社区做出贡献。
但是,社区在实践开放性沟通的过程中,或多或少都会遇到以下一些情况:
为了使社区(或工作环境)的沟通保持透明、高效和健康,其实已经存在一些共识,和通用的做法:
但是,还是存在一些特例的情况,我们不能盲目追求异步、绝对的开放。正如前面提到的,能让更多参与者公平、方便与社区连结本身也是开放的一部分,尽管使用的基础设施可能是封闭的。事实上,几乎所有的开源社区都在用类似的方式建立他们的社区沟通平台:
在 NebulaGraph 社区中,上面这两个平台承担了主要的沟通工作,但这些信息在出现后的几个月后就会消失,它们在短时间内只能被割裂的一部分社区成员看到,而未来没有人或其他平台可以读到、搜到和参考、引用这些有价值的讨论。
曾经有一段时间,NebulaGraph 会自己手动收集 Slack、微信群里的讨论摘要,定期分享、归档在公共领域,这个方法也确实带来了一些价值。然而,我们最后都没坚持下去,原因很简单:
2022 年 10 月,我注意到了 linen.dev 这个开源项目,同时它也是一个 SaaS 服务。有了它,我们可以把 Discord 和 Slack 中的每个 thread 保留。linen.dev 整站看起来和 Discord / Slack 几乎一样,但是,它完全是可以被匿名访问、引用,以及被搜索引擎收录供他人检索使用。
经过几个月的评估,我们最终决定了订阅 linen.dev 服务,并收获的果实:
这个站会实时同步 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 / 微信的美好的一面的同时,把它们中的讨论消息历史全都归档、索引并公开到这两个域之下了,是不是很酷呢?来访问下下面的链接,感受“私密消息”下消息被公开的快乐吧:
这个同步微信的项目是 Apache 2.0 协议开源的,并且现在由我和Frost Ming在维护,这里还有很多待增强、实现的新功能、新任务,欢迎大家来试玩、贡献。
让我们一起把开源社区的沟通做的多一点开放、少一点封闭吧~
项目地址 https://github.com/wey-gu/chatroom-syncer
在圣诞节前,Linen 的工程师允许了 chatroom-syncer 同步到 Slack 的消息,详见:
现在,我们可以在 https://community-chat.nebula-graph.io/c/wechat-sync-venus 看到 WeChat 中的群聊的文本备份了!当然啦,如果你更喜欢 GitHub Discussion 的方式,help yourself,选你选的方式就好。
有效的沟通是成功的开源社区的基石,因为它让协作、分享思想与知识、以及所有成员的参与成为可能。为了确保沟通透明、包容和有效,对于开源社区来说,让所有成员有机会参与讨论和决策以及公开自由地分享相关信息是非常重要的。
我们 NebulaGraph 社区的建设者/贡献者将继续寻找和黑客方法,以开放和良好的方式使人们连接在一起,和大家共建更好的开源、技术社区。
谢谢你读完本文 (///▽///)
要来近距离体验一把图数据库吗?现在可以用用 NebulaGraph Cloud 来搭建自己的图数据系统哟,快来节省大量的部署安装时间来搞定业务吧~ NebulaGraph 阿里云计算巢现 30 天免费使用中,点击链接来用用图数据库吧~
想看源码的小伙伴可以前往 GitHub 阅读、使用、(з)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~