連接微信羣、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 / 微信的美好的一面的同時,把它們中的討論消息歷史全都歸檔、索引並公開到這兩個域之下了,是不是很酷呢?來訪問下下面的鏈接,感受“私密消息”下消息被公開的快樂吧:

後續工作

這個同步微信的項目是 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 用戶一起交流圖數據庫技術和應用技能,留下「你的名片」一起玩耍呢~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章