維護高 Star Github 專案,會遇到什麼有趣的問題 2023 版

語言: CN / TW / HK

theme: smartblue

不知不覺做開源也有 7 年了,目前還在維護的專案裡最老的 GSYVideoPlayer 大概也有 6 年多了,儘管現在已經不像以前那麼「沉迷」,但是作為個人開源的專案來說,這麼多年能不 「Deprecated」 也是實屬不易。

其實這個系列能寫第三篇我也是很「詫異」,因為我也沒想到在繼「維護兩個10k+Star的Github專案,會遇到什麼有趣的問題」「維護高 Star Github 專案,會遇到什麼有趣的問題 2022 版」 之後,時隔半年就又湊到了第三篇的素材,怎麼說呢,吐槽帶來「快樂」,所以我想把「快樂」讓大家一起分擔

⚠️注意:閱讀本文可能會浪費您寶貴的 5 分鐘,本篇主要是吐槽和分享過去半年維護 Github 專案以來的一些有趣的經歷,所以閱讀本文並不會增長你的技術,但是如果你想做開源,想了解開源專案維護者的心理,那可能會給你帶來一些啟發😊。

在 GSYVideoPlayer 裡「視訊無法播放」是永恆的話題,而歷史總是在輪迴,如下圖所示,上一次看到類似的 issue 應該還是 「無法播放 https 的優酷連結」,而面對「瀏覽器可以」的質問,我只能說:

這個播放器它只是一個“孩子”,它讀不懂 HTML 這麼高深的內容

當然,雖然你告訴了大家「專案可以怎麼用」,但是總有使用者「不按套路出牌」,比如「播放途中拔出 U 盤」的場景····說實話,這個「測試用例」我是真的沒覆蓋到,並且也不想覆蓋·····

手機正常人誰用 U 盤播放,電機上用 U 盤播放你說你去拔它幹嘛,使用者也「不按套路出牌」?

當然,不友好的交流也是時有的,其實做開源就是提供服務,只是這個服務很多時候是「用愛發電」,但是有時候變成「理所當然」的情況下,就變成是「你欠我」的。

「我不管,我不會,你幫我寫」

| | | | ------------------------------------------------------------ | ------------------------------------------------------------ |

而溝通能力和理解能力絕對是 issue 裡的重災區,比如因為「視訊無法播放」,所以我問「編碼是什麼」,但是對方可能就是關注不到問題的點在哪裡?

當然更多時候 issue 是因為「沒用對」,跟進 issue 的結果大概率會是「我自己的問題」,其實這也是為什麼開源專案會有 Demo 的原因,你通過 Demo 去復現問題,這樣才能儘可能減少溝通上的障礙。

比如這裡的「小米電視」就是一個很大的誤導,況且我也沒有一個 「小米電視」 去幫你復現問題。

類似的還有如下圖這種場景,我測試 Demo 裡同樣的 「巢狀」情況下可以正常工作,然後對方說「我有異常的錄屏」,問題是我看你業務實現的「異常錄屏」也猜不出來是什麼原因。

提出最好有帶上問題的 log 和程式碼,並附帶可以復現的情況和條件,這樣可以減少 80% 以上的無效溝通。

當然,對於我無法復現的「裝置場景」,我確實沒辦法針對去測試和修復,對於這種場景確實是「鞭長莫及」。

SDK 的目標和意願是通用,說實話也確實沒有支援定製裝置的慾望。

提 issue 是求助的過程,但是「幫你解決問題」並不是義務,它更多是一種「交流」的形式存在,所以你不需要很「卑微」,但是網際網路上也沒有誰是「必須幫你」,你總不能「逮到一個是一個」的方式去工作吧?

如果你的提問暴露了你連文件都沒看,那麼真的是「愛莫能助」,RTFM 吧~

| | | | ------------------------------------------------------------ | ------------------------------------------------------------ |

RTFM 是屬於「文明」的網路用語,意思大概就是是:“去讀那些TM的手冊”(Read The F**king Manual)

其實「不看文件」的比例是還是很高的,明明文件有的,卻還是通過 issue 來解決,會給我一種「我的文件是不是哪裡有問題」的錯覺?

另外,這個 issue 用 「視訊每次播放都需要下載,關閉網路無法播放」作為核心問題合適嗎?

類似的還有這種,「一進去就自動播放」難道不是就是開啟頁面的時候,自己呼叫下點選播放的 API 就可以了嗎?

當然有些 issue 屬於「基礎知識」問題,一提出來就可能會「暴露」,比如「播放器沒辦法只用用 ViewBitmap」 一樣。

為什麼視訊播放的 View 不支援支援 toBitmap,難道面試的時候不會問到?

相同的還有這個問題,「App退到後臺只播放音訊,在前臺同事播放音視訊」,看到這個問題的時候我陷入了沉思,最後我回復了「不可以」,實則是我不知道怎麼解釋。

因為當 Activity 進入 onPause 狀態之後,SurfaceViewSurface 本來就是會被銷燬,所以,就·······

當然,還有 XD 和我說「希望完善下 Demo」 ,但是本來 Demo 的作用就是提供實現思路而已,另外是這裡用到的「彈幕 SDK」 也並不是我在維護,實則「愛莫能助」啊

所以時不時出現的類似「需求」實在是超出了我的「底線」。

當然,有時候也又一些有趣的,比如這位熱心的 XD,他通過文件發現了「盲點」,然後在 issue 裡發出來希望「警示大家」,我相信他應該是「希望幫助到迷茫的大家」,但是我覺得提 issue 的連文件都不看了,怎麼可能去翻一個歷史 issue 。

最後,時不時遇到「國際友人」也是很有趣,比如原來「巴鐵」的手機居然會是 Oppo ,作為一個只有中文 Readme 的專案,能被國際友人接受其實我是很開心的,因為他們可能連文件都看不懂。

好了,浪費了大家寶貴的 5 分鐘,其實我也沒想到做開源專案會一堅持就這麼多年,一開始只是想著儘可能「給自己搏個好的背書」,可以說是「動機不純」。

但是現在對我來說更多的只剩是「情懷」,一種工作之外的「自娛自樂」,大概就是這種沒有期待的心態,才讓我能一路堅持到現在,所以 2023 還是要慣例喊出那句口號:

GSY,垃圾 ~!