開源社區給黑客帶來了什麼?

2020-09-07 開源社


| 作者:tisonkun

| 轉載自:夜天之書

| 編輯:黃欣宜

| 設計:劉穎潔

| 責編:陳梅梅


近年來,以阿里巴巴、小米和華為為首的一批公司在開源社區中的活躍,以及在招聘條件上明確加入優先錄用具有開源經驗的候選人,使得開源軟體、開源社區以及具體到個人參與社區的方法和收益成為了業內熱議的話題。

我有幸在實習及工作中深度參與到 Apache Flink 社區中,並在社區成長一年之後加入到 Committer 團隊裡;又在轉換到業務為主的工作以後,根據自己的經驗和熱情成為了 Apache Curator 項目的 Committer 和 PMC 成員。時常有同學問我開源社區該怎麼參與,社區和工作之間的平衡應該要怎麼做的問題。我雖然算不得經驗豐富,有些理解也尚淺薄,但是也確實覺得開源社區對軟體開發有實際的好處,值得分享。

這篇文章先簡要的回答怎麼參與社區的問題,再談談開源社區給黑客,也就是熱愛代碼的開發者們帶來了什麼。


誠如《社區運營的藝術》一書中所說,開源社區本質上是開發開源軟體的人所形成的群體,其主要標誌是社區成員在社區中建立的歸屬感。參與開源社區,本質上是在社區中找到自己的位置,建立自己的歸屬感,並將自己融入到別人對社區的歸屬感的定義中去。

因此,參與開源社區的方法,說一千道一萬,首要的是建立自己對社區的認同。如果自己都反感某個社區,或者以社區為工具而不是歸屬,怎麼能努力參與其中呢?基於對社區的認同,才能說服自己付出時間和精力獲取社區的認同,而社區的認同實際上是一種社交經濟。

是的,參與開源社區的要點和參與任何社區的要點一樣,最重要的是社區中的社交貨幣,也就是那些對人們日常生活有重大影響的可感受到的東西。例如信譽、夥伴關係、同情心和成員之間的社會交往。開源社區的參與並不因為它圍繞著開源軟體展開而有所不同,只是在社交貨幣的具體表現上體現為以對開源軟體的貢獻為核心而已。

我在一篇早期的文章《如何參與 Apache 社區》中以交流技巧為開頭,以興趣使然為結尾,就是強調主動和社會交往的重要性。具體的實踐技巧非常簡單,想想看你要如何參與一次團體遊戲或者讀書研討?只要表現出你的興趣和基礎的能力,參與其中並展現自己,為團體做出貢獻就可以了。在社區中,這個貢獻可以從文檔和注釋開始,因為這能夠幫助你快速的了解社區。儘量不要在一個地方呆著,但是要花主要的時間在一個地方鑽研。因為在單點上更容易集中精力做出貢獻,積累社交貨幣,而廣泛地交遊才能讓你把握住社區的走向。主動承擔社區 RoadMap 上關鍵的職責,如果不知道是什麼或者怎麼做,就去問。這樣才能和開源社區一起成長。沒有人會拒絕一個能力合格而積極主動的貢獻者。

對於工作和社區的所謂平衡問題,我曾說過要寫一篇短文來討論,但是細想之後發現其實一句話就能說清楚。因為根本不存在需要刻意平衡的點。如果你的工作就是運營或者發展開源社區,例如著名社區的主要貢獻公司,那麼你的工作就是社區工作,並不衝突;如果你的工作建立在開源社區的成果之上的,那將你的工作成果在組織同意的情況下貢獻給開源社區,或者解答社區中的問題,都是與工作有益無害的;如果你的工作和開源社區不太搭邊,那參與開源社區就是純粹的個人行為,這跟工作時間完成工作又有什麼衝突的呢?

對於最後這一點稍作解釋。軟體開發不是割裂的,不是說你精力投入在公司工作中,就對開源社區的貢獻一無所用,也不是說精力投入在社區工作中,就必然影響公司工作。關於後者,下面我會討論開源之風給黑客帶來的影響,關於前者,這很顯然。開源社區大多圍繞開源軟體而展開,軟體開發是共通的,開源軟體也只有能夠很好的解決業界的問題才有擴大其影響面的機會。工作中遇到的問題可以成為開源軟體功能擴展的方向,工作中歸納的方法可以成為開源軟體優化的方案,工作中積累的經驗當然可以在開源軟體的開發中遷移和演繹。


聊完這些,我們再看看本文的標題,即開源社區給黑客帶來了什麼?標題我想了很久,稱呼碼農或者程式設計師,總有種把自己約束在職位上的不爽快感;稱呼開發者,又跟開源社區疊字。還是用黑客最爽快,雖然黑客在時代的流變下有 cracker 的別指,但是秉承《黑客與畫家》以及《大教堂與集市》的用法,黑客( hacker )還是指熱愛並精通程序設計的人。

開源軟體的解釋與布道近來在國內也是甚囂塵上( exactly )。我無意於代表某種嚴謹的定義,也沒想著坐而論道。只是作為一個實際的一線開發人員,分享我所看到、體會到的東西。

開源社區的衝擊或者說工程師的開源文化,在開發者的圈子裡至少帶來了良好的流程規範、優秀的代碼參考以及廣泛的自由信念。

良好的流程規範說的是開源社區的代碼開發規範、代碼評審規範、提議發起和投票規範以及軟體發布規範。這在某些方面是因為社區更有可能由優秀的技術人員主導,而不是公司利益所驅動。不少社區的束縛更少,更願意嘗試新的流程和規範。這使得一線開發人員觀察和總結出來的經驗有了實驗的場所,並最終在得到驗證後在公司業務的研發上落實。好的流程和規範能夠改善開發者的工作體驗,這一點應當毋庸置疑。

其實,軟體行業不過是一個出現還不超過百年的新興行業,如今卻要和機械、土木這種數百年的傳統行業一起成為工業時代的支柱。這個行業本身尚待總結和驗證的經驗有太多太多,而開源社區作為一塊創新的試驗田,傾向於更信任的、更簡潔的流程規範,無疑是軟體行業向更人性化、更公平化發展的好趨勢。

這些年來,刪除無用代碼、採用版本管理,強制代碼評審、完善單元測試,重視技術方案、推廣敏捷開發,實踐小步快跑、落地持續集成,這些現在已經成為業內共識的規範,很有許多是從 Linux、Apache、Perl 以及其他開源社區所嘗試和流傳開來的。誰又能說現在的開發者沒有享受到開源社區的發展帶來的好處呢?

優秀的代碼參考無需多言。這是一個很明顯的現象,如果你的代碼會被別人看到、會被別人評審,更直接的說,垃圾代碼的合併請求會被否決、垃圾代碼的作者會被議論,那麼開發者對自己的代碼質量就會有更高的自我要求。同時,垃圾代碼也能夠被社區中的貢獻者所修正。

雖然我經常調侃 Flink 的代碼,但是過度的面向對象和異步化代碼確實在我需要這方面的幫助的時候提供了典型且有效的指導。另外諸如 Spark 和 Etcd 也是各自領域以及語言的代表作,以至於有段時間人們提起 Scala 會跟 Spark 混淆起來,而 Etcd 則是了解 Go 語言程序設計的比複雜的 Kubernetes/Docker 更親民的實例。

從開源軟體的代碼中學習設計模式,歸納普遍問題的一般解法,對自己代碼水平的精進顯然是大有裨益。在業務開發中我們總是很容易重複發明解決方案。重複造輪子的壞處從公司利益角度來看主要並不在於浪費時間,反正都是在預定時間內完成工作,而是解決方案通常是需要長期完善的。不使用已有的成熟方案,反而靠自己拍腦袋瞎想,很多時候是在給自己埋坑。開源社區有的是成熟的解決方案,即使解決方案存在缺陷,那也更有可能被社區成員反饋。已知的問題總不比未知深坑可怕。

最後也是我最鍾情於這個行業的一點,就是開源社區的運作方式所表達出來的廣泛的自由信念。

曾幾何時,我們自然地以為華貴的服飾和稀有的食材只有特權階級才能享受的起,工匠和學者只把自己的經驗學識由血緣或師徒紐帶傳承,甚至還要留一手。但是隨著時代的發展,如詩中所言【舊時王謝堂前燕,飛入尋常百姓家】,我們已經進入到了一個文明高度發展,自由和平等被高度重視的時代。軟體的未來,必定不是某家公司所壟斷的命運。

開源軟體在中國的發展很快遇到了抄襲、濫用的問題,但是正如書影音作品在版權保護之下自由流通一樣,開源軟體在中國或者任何地方,都將在軟體協議的保護下自由的分發。軟體作為後工業時代的核心生產力,絕對不會也不應該成為私有物品,所有的人都應該平等的享受軟體行業高速發展帶來的紅利。開源社區的蓬勃發展,證明了自由將賦予軟體更旺盛的生命力。

軟體自由流通的實現,不應該像普羅米修斯盜火一樣伴隨著巨大的犧牲,而應該在工程師的開源文化潛移默化當中成為共識。我們開發軟體,是為了改善人的生活,為了社會的發展。軟體開發的經驗和結果,自然應該自由地流通在社會上。

相關焦點

  • 程式設計師大本營GitHub遭黑客劫持,是時候認真聊聊開原始碼安全了
    著名的「交友網站」GitHub是程式設計師的「大本營」,很多人都將原始碼託管在上面,並不斷利用社區開源資源開發新的算法、軟體、應用。這樣一個極客雲集的平臺,居然被黑客給一窩端了,委實有點玄幻。5月2日開始,GitHub遭到了黑客的攻擊勒索,有370多名用戶的原始碼和信息被名為「gitb ackup」的帳號刪除。
  • 社區大於代碼 從Apache看中國開源發展
    在開源社成立六個月的座談會上,微軟開放技術(中國)董事總經理雲浪生,GitCafe創始人兼執行長姚欣宇、以及Apache 軟體基金會總裁Ross Gardler共聚一堂,探討了國際開源社區的運作經驗以及對中國開源社區帶來的借鑑和啟示。
  • 開源遊戲:開源會為企業帶來什麼?
    上周在公司內部又做了一次關於開源的分享,與三月份那次稍有不同的是,這次的關注點主要是:企業與開源軟體。開始之前,讓我們再說說開源軟體到底代表的是什麼?開源軟體是原始碼可以任意獲取的計算機軟體,任何人都能查看、修改和分發他們認為合適的代碼。開源軟體依託同行評審和社區生產,皆以分散、協作的方式開發。
  • 黑客和開源革命之間的關係
    在 Linux 的推動下,開源黑客文化已從地下浮出水面。業餘黑客程式設計師開始和軟體生產和分銷部門結成聯盟。於是新的公司和組織伴隨著新產品、許可證和團隊一起建立了。1997年的春天,一群自由軟體社區的領導人聚集在加利福尼亞州。這夥人包括 Eric Raymond 、Tim O』Reilly 和 VA Research 主席 Larry Augustin 等等。
  • 黑客p0sixninja:openjailbreak開源越獄
    知名黑客p0sixninja(Joshua Hill)近日在推特上發布了一則消息:「好的,我恨redsn0w,也恨snowbreeze,以及6.1.3,我準備要發布openjailbreak了。」
  • 基於代碼、社區,兩步成為開源贏家!
    當然是開源的那種。全球有數以千萬計的開發者使用的是開源平臺,因為他們可以訪問它的代碼,修改應用程式,為項目貢獻代碼並成為社區的一份子。因此,建立在開源基礎上的軟體公司擁有成為有數十億美元級別企業的潛能。但是,開源軟體的本質在於免費,如何高效變現就成為一個巨大的挑戰。
  • 基於代碼、社區,兩步成為開源贏家
    當然是開源的那種。全球有數以千萬計的開發者使用的是開源平臺,因為他們可以訪問它的代碼,修改應用程式,為項目貢獻代碼並成為社區的一份子。因此,建立在開源基礎上的軟體公司擁有成為有數十億美元級別企業的潛能。但是,開源軟體的本質在於免費,如何高效變現就成為一個巨大的挑戰。
  • 全球黑客大會BlackHat上京東安全開源發布人工智慧反黑客利器FUZE
    全球黑客大會BlackHat上京東安全開源發布人工智慧反黑客利器FUZE  北京時間8月14日在美國拉斯維加斯舉行的第26屆全球黑客大會BlackHat上,京東安全矽谷研發團隊發布了一款利用人工智慧對抗黑產的利器——FUZE,這是全球第一個利用人工智慧對漏洞進行評估分析的工具
  • 開源軟體及國內發展現狀 - OSCHINA - 中文開源技術交流社區
    很多人可能尚未意識到,我們使用的電腦中運行 有開源軟體,手機中運行有開源軟體,家裡的電視也運行有開源軟體,甚至小小的數碼產品(如電子相框)中也運行有開源軟體,尤其是網際網路伺服器端軟體,幾乎 全部是開源軟體。毫不誇張地說,開源軟體已經滲透到了我們日常生活的方方面面。那麼,開源軟體到底什麼,開源軟體尤其是國內的開源軟體及社區的現狀如何, 發展面臨哪些困難和問題?
  • 從OpenCV看開源社區的商業性
    導讀:在技術領域生存,你是不是經常問自己,那些開源社區是如何產生的?又如何生存的?開源社區和商業領域是不是敵對關係?他們是如何博弈的。開源究竟是一種精神,還是一種手段?本文就試圖從機器視覺領域最為著名的開源庫OpenCV說起,聊一聊開源社區的那些事。1、什麼是開源社區?
  • 如何成為一名黑客?
    因此,若你有上述的特性及參與同類的社區,亦有對以上種種作出貢獻,同時社區的人知道你是誰又稱你為「hacker」,你便是黑客。然而,黑客的理念並非只局限於軟體社區。有很多人將黑客的態度應用於其他事物,如電子學或音樂上——實際上,黑客的理念存在於任何學科領域。由於了解黑客的理念及精神,軟體社區的黑客亦會稱後者為黑客。
  • 諾雲積極參與開源社區 發布開源交換機網絡作業系統
    在會上,諾雲高層先後分享了諾雲參與開源社區的初衷,並重點介紹了諾雲開源交換機網絡作業系統、諾雲開源系統網絡產品及應用實例。諾雲***執行官朱姮憓談及舉辦這個會議的初衷時表示,中國在開源社區具有巨大的影響力,諾雲想藉由這次會議與國內業界加深交流,共同推動中國開源社區的發展。
  • Apache啟示錄 開源社區應該怎麼玩?
    【IT168 評論】開源給軟體行業帶來的創新效果是顯而易見的,以開源為基礎所強調的開放、透明、共享的創新理念和分布式的軟體開發協作模式已經被越來越多的人開始接受,而作為開源項目孵化器的開源社區則扮演著不可或缺的角色。
  • 當我被問到開源是什麼的時候
    「開源是什麼?」「開源就是免費麼?」前一陣子,筆者跟 @車庫開源技術小組 的幾位成員和一個做律師的朋友一起聊IT,不免再次被問及這個話題。我遇到這種問題,一般而言,會是這樣:我:「簡單來說,開源就是開放原始碼的意思。」對方:「原始碼是什麼?」我:「就是程式設計師在開發軟體的時候寫的代碼,給機器看的語言。」對方:「哦。」然後話題就轉移了。估計對方心裡在想:「這跟我有毛關係?」
  • 如何評估開源項目的社區參與度?
    社區是我們對開源項目評估框架的六個標準之一,是衡量項目健康狀況的重要指標。作為我們在這一領域的研究和投資的一部分,我們分析了GitHub上排名前一萬的開源項目,以更好地了解是什麼驅動和支撐著過去十年裡這些頂級開源項目。下面是我們從分析中得到的結論。
  • openGauss 正式開源並成立開源社區
    在去年九月的華為 CONNECT 大會上,華為宣布將開源其 GaussDB 資料庫,開源後命名為 openGauss。現在,openGauss 資料庫原始碼已正式開放,openGauss 開源社區也正式成立。
  • 金融行業開源技術應用社區(FINOC)研討實錄:開源組件安全問題與...
    在開源成為全球趨勢的今天,搶跑科技創新的金融機構成為開源技術的重度用戶。然而,由於我國金融機構對開源軟體的管理尚不完善,不具備較成熟的開源治理體系,金融機構在引入和管理開源軟體時總會遇到種種困難,這也帶來了一定程度的開源風險。
  • 社區勝於代碼,OSC 上線開源專區
    代碼是社區的原始驅動,但健康的社區遠比優秀的代碼重要,Apache Web 伺服器項目負責人 Brian Behlendorf 曾說「代碼太爛可以重寫,但社區太爛,代碼也會付之東流。」作為開發者溝通交流的必要途徑,任何項目都離不開社區,都需要建立基於社區的開源生態。
  • 華為openGauss 資料庫正式開源,並成立開源社區
    IT之家7月2日消息 近期,華為正式宣布開源資料庫能力,開放 openGauss 資料庫原始碼,並成立 openGauss 開源社區。社區官網(http://opengauss.org)同步上線。openGauss 是一款開源關係型資料庫管理系統,深度融合華為在資料庫領域多年的經驗。希望通過開源的魅力吸引更多的貢獻者,共同構建一個能夠融合多元化技術架構的企業級開源資料庫社區。
  • openGauss開源社區正式成立
    昨日,華為正式宣布開源資料庫能力,開放openGauss資料庫原始碼,並成立openGauss開源社區。社區官網(http://opengauss.org)同步上線。openGauss是一款開源關係型資料庫管理系統,深度融合華為在資料庫領域多年的經驗。