“我的開源項目被科技巨頭拿去做產品了,註釋中還刪掉了我的名字”
這是一個擁抱開源的程序員大牛的“神奇”經歷,成文幾個小時就在社交網站上獲得了數千點贊。“擁抱開源”不是說說那麼簡單的,如今很多科技公司都會把這句話掛在嘴邊,把開源當作一個重要戰略,它們希望自家的工程師投身開源社區,為領域內創造出良好的氛圍,以此推動技術的進步,並從中獲得更多開發者的支持關注。
但有的時候,你很難放心把自己賴以生存的新技術拿來分享,它們可能會被用在各種預料之外的地方,有時別人甚至會藉鑑你開源過的代碼,反過來針對你。
如果你是一個人,對方是一家大公司,這事情就會讓你變得懷疑人生了。來自澳大利亞的開發者Brendan Gregg在最近的一篇博客中,控訴了IT公司Sun Microsystems竊取他開源項目“DTraceToolkit”的代碼。DTrace全稱Dynamic Tracing,即動態跟踪,是由Sun Microsystems開發的一個用來在生產和試驗性生產系統上找出系統瓶頸的工具,可以對內核和用戶應用程序進行動態跟踪並且對系統運行不構成任何危險的技術。
這是一個很久以前的故事,如今的Sun Microsystems 鮮有動態,上一次出現在眾人視線,還是因為Google和甲骨文的十年版權之爭獲得最終裁決。
1995 年,Sun Microsystems 推出了Java。當年Google構建Android操作系統,用了Sun Microsystems 的一萬多行代碼。2009 年,甲骨文以74 億美元價格收購了Sun Microsystems 和Java 軟件。2010 年,甲骨文以“Google擅自使用Java API 作為Android 操作系統的一部分侵犯專利及版權”為由提起訴訟。歷經十年,2021 年4 月,美國最高法院判處Google勝訴。
曾經的Sun Microsystems 是一家極具創新能力的IT 巨頭,但慢慢被其他競爭對手取代。接下來,Brendan Gregg 詳細回憶了當年的故事。
一個熱門開源項目如何被盜
這是我在開源世界中遇到的難以置信的經歷,絕對不是編造。
2005 年,我被捲入颶風中心。當時我是一名獨立績效顧問,而Sun Microsystems 剛剛發布了DTrace,這是一個可以檢測所有軟件的工具。當我忙著使用DTrace 編寫和發布高性能工具時,我發現一個問題:此前我開源的DTraceToolkit 和其他DTrace 工具,比Sun 公司推出的工具要更全面,難道是一些內部項目消耗了他們的技術能力?
DTraceToolkit v0.96 工具(2006)
由於不是Sun 公司的員工,我對其內部項目一無所知。當時我住在澳大利亞悉尼,正在為Sun 公司進行培訓和諮詢工作,幫助他們的客戶提升系統管理和性能方面的工作。Sun 公司有時會邀請我以本地專家的身份參加他們的客戶會議和其他我可能感興趣的活動。
有一次,我被告知,有一位非常重要的人物從美國來。我不認識那個名字,但聽說他是Sun 公司的DTrace 專家和開發人員,並且正在世界巡迴演講,展示Sun 基於DTrace 的新產品。
我見過一些來自Sun 公司的頂尖技術,但我從未見過巡迴展示的開發者。這位大人物在去下一個澳大利亞城市之前,要在悉尼停留幾天,所以我同意在Sun 公司的悉尼辦公室見面。
兩名澳大利亞的Sun 公司員工向這位大人物介紹了我:“Brendan 為我們講授一些課程,並且一直在做DTrace 的相關工作。”低調介紹在澳大利亞是常態(尤其是對澳大利亞人)。
我試圖表達我寫了DTraceToolkit,以此來打開話題,但他並沒有留下什麼深刻印象。他不認識我的名字,也沒有聽說過DTraceToolkit。對他來說,我只是隨便一個陌生人。
無論如何,他還是友好地做了一個快速演示。他的DTrace 產品是我非常熟悉的一個更大的Sun GUI 的附加組件。加載後,他展示瞭如何通過雙擊圖標來運行多個DTrace 工具。原始輸出在單獨的窗口中,或者將結果顯示為折線圖,這些似乎相當平庸。我希望有一個新的GUI 功能。
唯一的新東西是工具本身。他進行了一番銷售式宣傳,就是那些說過很多次、期望能給客戶留下深刻印象的話術。我有一種感覺,他不希望我正確地欣賞它們的價值。
但我十分了解他講的這些工具,我為自己的DTraceToolkit 編寫了類似的功能。所以我說:“我以前做過這些,我自己寫過做這些事情的工具!”
“當然可以。”他沒說別的,但是有一種不太相信我的感覺。畢竟這是估值數十億美元的跨國公司Sun Microsystems 的重要創新,而我只是隨便一個澳大利亞人。
隨後,我瀏覽了一些新的GUI 圖標,其中有用於跟踪套接字I/O 的工具。我在2004 年嘗試過這個(socketsnoop.d)並將其作為開源項目發布,但我當時寫的工具不完整:它沒有訪問內核源代碼的權限,所以不得不使用黑盒分析來解決所有問題;它適用於大多數TCP 流量類型,但不適用於某些類型,我在腳本註釋中對此進行了提示;它沒有包含在DTraceToolkit 中,因為我認為它還沒有完成。
這也是為什麼,在所有工具中我最感興趣的是看到這個。Sun 公司應該可以做得更好,並實際應用這個工具。
“我可以看下套接字I/O 腳本嗎?”然後我啟動了一個終端。他看起來很驚慌,好像我不應該看後台,然後他彷彿意識到了另一個賣點:“嗯當然,你甚至可以在GUI 中添加更多工具!”停頓片刻後,他加上了一句“如果你有的話”。
經過一番搜索,我找到了包含他此前演示的所有工具的目錄。
這些工具的名字都很熟悉,其中一個甚至叫做“socketsnoop.d”。這讓我想到了一種新的可能,難道……
於是我輸出了socketsnoop.d,屏幕上都是我寫的腳本,是我一年前的不完整嘗試,並作為開源項目發布的內容。它包含一些奇怪的代碼,並且是用我早期的編碼風格編寫的。我輸出其他工具並看到了同樣的結果——腳本都是我寫的。
Sun 公司的這位人物在世界各地炫耀的新產品,其實就是我自己的開源工具。
我在我所有工具中都寫了一條帶有我名字的註釋,因此我使用grep 在他們的工具中搜索我的名字,以證明這本來是我的項目。但我什麼也沒找到,我的名字被刪掉了。
我編寫的一些工具甚至包括:
現在,在澳大利亞悉尼,他們試圖將Brendan Gregg 的工具賣給Brendan Gregg。
一位Sun 公司的澳大利亞員工打斷道:“那些人說版權是Sun Microsystems 的。”我的大部分工具都有我自己的版權和GPLv2 或CDDL 許可證。但這些工具現在只有Sun 的標準版權信息,開源許可證也已經被剝奪。
“你刪掉了我的名字!還有版權和許可證!”
另一個澳大利亞人對大人物補充道:“你『不能』這樣做。”
基於發生事情的嚴重性,整個房間陷入了沉默。雖然Sun 的一些人鼓勵開源貢獻並建立了一個社區,但其他人卻在同一個社區行盜竊之事:拿走他們的作品,更改許可和版權,然後將其出售。
這位大人物對此毫無準備,一臉疑惑。他沒有說太多,也許並不知道發生了什麼,只是從其他人那裡得到了已更改版權的工具,意思是“這不怪他”,並且他似乎對我們說的話半信半疑。
會議很快結束了。我建議他,直接從DTraceToolkit 獲取我的工具的更新副本,因為我主頁上的這些舊版本已經過時,而且有些錯誤我已經修復了。我還提醒他保留我的姓名、版權和許可證。
我仍然無法相信,在我所有的開源項目中,居然是socketsnoop.d 被引用了。因為我認為這個項目並不是最佳的,我後來又寫了更好的套接字(socket)工具。
幾年後,蘋果也將我的數十種工具添加到OS X,但他們保留了我的姓名、版權和完整的CDDL開源許可證,甚至改進了其中一些代碼。後來,甲骨文為Oracle Solaris 11做了同樣的事情,BSD社區也為FreeBSD做了同樣的事情。對於這些尊重版權的行為,我由衷地表示感謝。
可能有人會說,這不是Sun 公司的本意,而是個別粗心大意的工作人員的所作所為,但我認為這可能是受到了Sun 企業文化的影響。我和身邊一些同事都認為:Sun 認為只有Sun 才能充分利用自己的技術,而在Sun 之外創建的任何東西都是垃圾。當Sun 的員工發現一些優秀的項目時,他們傾向於假定這些項目是來自Sun 的,因此可以安全地重複使用和重新命名(甚至是重新許可),因為他們認為他們已經擁有版權。
Sun 公司確實也有一些人努力通過我和我的工作來做正確的事情。我的DTraceToolkit 至少四次被內置到可觀察性產品中,並且保留了許可證。有一次,他們想重新獲得GPL 許可,便與我就此事進行了討論,但這是另一回事。
這也不是唯一一次有人無意中試圖向我出售我自己開發的項目。後來我學會了不告訴銷售人員我發明了他們展示給我的東西,因為他們覺得我像一個瘋子,只是簡單地說:“我對這項技術有很多經驗”,就這樣吧。
我的BPF 工具現在出現在可觀察性產品中,並且規模將增長到比我的DTrace 工具大得多。但我對開發人員的直接建議是:不要重寫我的BPF 工具和bcc 庫;按原樣構建它們(bcc Python 或bcc libbpf-tool 版本)。重寫會劃分工程資源並使您的客戶使用過時的版本。
我想開源開發者發現他們自己的代碼被重新命名的情況並不少見。但這種情況應該不多:一位美國開發人員帶著並非他編寫的軟件進行了世界巡迴展示,其中包括在澳大利亞無意中向作者進行了銷售宣傳。他甚至沒有說過一聲“謝謝”。
這就是作者Brendan Gregg 講述的故事。Sun 公司如今已經成為歷史,無論如何,不可否認的是開源社區內每一位開發者都對今天的計算機事業做出了自己的貢獻,就像該文章的熱評所說:
當蘋果準備為OS X 提供“更小尺寸的更新”時,我很好奇實現細節,因為我博士階段的研究涉及到這個話題,所以我詢問了蘋果相關研究團隊的成員,幾個月後我得到回复:“我們正在使用一個名為bsdiff 的工具,你熟悉它嗎?”我確實很熟悉,因為我是這個工具的作者。
在這個計算機掀起技術革命的時代,每一位開源貢獻者都應該被尊重。