幾個月前,我收到一封電子郵件,發信人是一位系統軟件領域開源項目的維護者,該項目有一個相當大且活躍的社區。他在信中說,維護多年之后發現難以持續,因為這樣的工作在心理上非常累人。
他一直在向我尋求建議,我不確定自己是否能夠提供建議,但我回他我會寫一篇博客來說說我的看法。
幾周過去了,有好幾次我開始提筆,但都停了下來,因為我沒有足夠的時間來處理這些想法。現在我想我能夠分析我自己,在我自己的弱點、掙扎和對自由的渴望中找到答案,當人們在做一些事情的時候,不可避免地會侵入他們的思想,這些事情也有消極的一面,持續很長一段時間。
維護開源項目也是一件非常快樂和有趣的事情,我最近 10 年的職業生涯,即使不是絕對最好的,但肯定是令人難忘的,畢竟我在創業期間獲得了更多的樂趣。然而,本文我將關注維護開源項目的消極一面。
洪水效應(Flood Effect)
我不相信快速行動,快速思考,按時贏得比賽等等。我不喜歡我們生活的世界總是缺少焦點,因為社交網絡、聊天、電子郵件和滿滿的活動安排。
所以,當我在項目早期收到一封關于 Redis 的郵件時,當我還有很多時間的時候,我就能夠專注于發信人想要告訴我的東西。然后我想起了我們之前討論過的 Redis 的相關部分,經過仔細的思考,我終于用真實的想法回復了。
我相信大多數人都應該這樣工作,不管他們的工作是什么。
新的社交工具讓個體之間的溝通更為便捷,當某個軟件項目到達 Redis 級別的熱度之時,你能收到的消息、issue、Pull Request 和建議,其數量將呈現指數級增長。
這造成了信息堵塞。大多數人試圖用錯誤的方式來解決這個問題,比如:
① 有人發 issue,我追問后,2 周內他都沒有回復,那直接關閉;
② 關閉所有不明確的 issue;
③ 直接把收件箱都設為已讀;
想要很好地處理社區反饋,必須花時間。否則只會假裝你的項目有少量的公開 issues。為每個 Redis 子系統雇傭核心級專家,讓他們為開源項目全職工作,這方法能奏效,但不切實際。
那么會發生什么呢?你開始把事情分輕重緩急,優先級高的事情越來越多。你覺得自己是一坨狗屎,因為你忽視了那么多的人和事,而且貢獻者認為你不在乎別人給你什么。
這是一個復雜的情況。通常最終的結果是,形成一種主要處理關鍵 issues 的態度,但忽略所有新東西,因為新東西還沒有進入核心,而且誰想擁有一個更大的包含更多的 PR 和 issue 的代碼庫? 與您通常的編程風格相比,它的編寫方式可能更加復雜。
角色轉移
由于上述“洪水效應”問題的暴露,你也突然換了工作。Redis 之所以流行,是因為我應該能夠設計和編寫軟件。不過現在我的大部分工作是研究 issues 和 PR。
(Redis 的 issue 和 PR 數量,2019-06-04 截圖)
我收到的許多貢獻,我也覺得我能做得更好。但有些人會比我做得更好,因為有比我更優秀的程序員在參與 Redis。
但就本質而言,“大多數”都是平均貢獻,它們只是為了解決某個特定問題而編寫的,而這個問題是由提交它的人決定的。
然而,當我為 Redis 設計時,我傾向于認為 Redis 是一個整體,因為我花了幾年的時間來寫這個東西。所以你擅長的,你沒有時間去做。這反過來意味著更少的有機新功能。
我的解決方案是?有時我好幾個星期都不去看 issue 和 PR,因為我埋頭在編程或設計,那是我真正熱愛和喜歡的工作。然而,這反過來又給我帶來了更多的心理壓力。做我喜歡做的事,我可以做得很好,但我感覺很糟。
時間
至少對我來說,在一個項目上工作很長時間有兩個問題。
首先,在 Redis 的經歷之前,我從未每周都工作。我可以工作一周,休息兩周,然后工作一個月,然后消失兩個月。總是這樣。
做創造型工作,人需要充電,獲得新的能量和想法。高水準的編程,特么就是一項的創造型工作。
在最初的兩年里,Redis 就是這樣創建的。也就是說,當項目以最快的速度發展時。因為當我想工作的時候,我的工作效率比我每天被迫以穩定的方式工作時的效率要高。
然而,當我獨自為公司工作時,職業道德允許我有一個中斷分散的時間安排。在我開始接受 Redis 的工作報酬后,職業道德再也不可能允許我像以前那樣,所以我開始強迫自己在正常的時間安排下工作。
這對我來說是一場巨大的斗爭,已經很多年了。我確信我做的比我能做的少。
我從來沒有找到解決這個問題的方法。我可以說 Redis Labs 我想回到我原來的時間表,但這是行不通的,因為我的報告對象已經是社區,而不是公司。
另一個問題是,從心理上講,在同一個項目上做很多工作,也是一件復雜的事情。
過去我每 6 個月就換 1 次項目,但 10 年來我一直在做同一件工作。
在這方面,我試圖通過在 Redis 中包含子項目來保持理智。一次是集群,另一次是磁盤存儲(現在已經廢棄),還有一次是 HyerLogLogs 等等。
基本上,那些為項目帶來價值的東西,單獨來說,是其他的東西。因為最終你必須回到 issue 和 PR,每天處理相同的事情。“副本由于超時而斷開連接”,或諸如此類。我們再來研究一下。
恐懼
我一直擔心失去項目的技術領先地位。這并不是因為我在設計和開發 Redis 不夠優秀,而是因為我知道我的方法并不符合:① 大量用戶的需求,② IT界的大多數人對軟件的看法。
因此,我必須不斷地在我認為好的設計、一組特性、開發速度(慢)、項目規模(最小)和大多數用戶期望交付的內容之間保持平衡。
幸運的是,有一定比例的 Redis 用戶完全理解 Redis 的方式,所以至少我可以不時得到一些安慰。
摩擦
有些人完全是***。他們無處不在,這是很自然的。我相信編程比其他領域有更多的好人,但總能看到一定比例的***。
作為一個熱門開源項目的領導者,在某種程度上,你將不得不面對這些人,這可能是我在 Redis 開發過程中最有壓力的事情之一。
徒勞無功
有時我相信,軟件雖然優秀,但永遠不會像可以流傳幾個世紀的書那樣優秀。注意,雖然軟件本身并不是很好,但其副作用也是有用的。最終被其他更實用的軟件替代。
我也想有時間做其他的活動。所以有時候我認為我所做的一切最終都是徒勞的。我們設計和編寫系統,但新的系統將會出現。
但是,任何僅僅停留在軟件領域,而不是停留在“軟件大創意”領域的人,將會創造一個新的標志嗎?
有時我認為我有潛力去實現優秀的點子(big ideas),但因為我專注于編寫軟件而不是思考軟件,所以我無法在這方面發揮我的潛力。
這與騙子綜合癥基本上相反,所以我想我對自己有一個很大的想法:對不起,我應該更謙虛。
騙子綜合癥(ImpostorSyndrome),指“一直無法相信個體成功是自身努力的結果,或是不相信個體成功是自身努力或自身技能過硬的結果”。
也就是說,我可以很多年都從事自己喜愛的事情。從中我結交了朋友、得到了認可和報酬,所以這不是一筆糟糕的交易。
然而,我完全理解,一旦開源項目開始流行起來,他們就開始為了生活而掙扎。這篇博文就是獻給他們的。
-
開源
+關注
關注
3文章
3252瀏覽量
42407 -
GitHub
+關注
關注
3文章
466瀏覽量
16387
原文標題:Redis作者:開源維護者的掙扎和無奈
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論