文|三易生活
2022年剛開始沒幾天,開源社區(qū)就發(fā)生了一件大事,一個知名開源庫Faker.js的作者Marak Squires,選擇主動惡意破壞自己的這個項目,并且不僅“刪庫跑路”、還注入了導致程序死循環(huán)的惡意代碼,使得全球大量使用該項目的個人與企業(yè)都受到了不小的影響。
作為GitHub上的知名開源庫,F(xiàn)aker.js的主要作用是能快速為項目生成可用于測試的假數(shù)據(jù),包括用戶名、密碼、郵件、日期、地址、文章等內(nèi)容。對于開發(fā)者而言,在實際的軟件開發(fā)過程中使用假數(shù)據(jù)進行測試是一個必要環(huán)節(jié),其同時也能夠幫助開發(fā)者驗證前端設計的合理性。
如今打開GitHub上的Faker.js頁面,所有配置文件最后的提交信息都是“endgame(游戲結(jié)束)”。并且耐人尋味的是,Marak Squires在Readme中寫下了“What really happened with Aaron Swartz”這句話。據(jù)悉,Aaron Swartz是傳記電影《互聯(lián)網(wǎng)之子》的主角,作為Reddit的聯(lián)合創(chuàng)始人,他用生命捍衛(wèi)了互聯(lián)網(wǎng)的開放、自由和共享。
發(fā)生在Faker.js這個項目上的故事,簡單來說,就是這一項目的開發(fā)者Marak Squires去年因為公寓失火,導致各種貴重物品丟失、無家可歸,因此他提供了自己的PayPal賬號尋求捐贈。但顯然依靠網(wǎng)友捐款并不是長久之計,因此他還選擇了在Faker.js的基礎上,探索付費增值服務Faker Cloud,而這也是開源軟件的一種重要商業(yè)模式。
然而意想不到的事情發(fā)生了,Marak Squires開發(fā)的Faker Cloud是提供在線“假數(shù)據(jù)”生成的云服務工具,而作為Faker.js的第二大捐助者,Retool.com在每月捐出500美元后,隨即也以Faker.js為基礎開發(fā)了與Faker Cloud一模一樣的工具,并且還完全免費。更絕的是,Retool.com引用的CDN域名是cdn.fakercloud.com,簡直是“殺人還要誅心”。
事實上,Retool.com是一家已融資7500萬美元的公司,這也使得Marak Squires的Faker Cloud在商業(yè)競爭中幾乎是毫無勝算的。不過Marak Squires也很“識時務”,直接就給Retool.com的CEO寫了封郵件,表示既然你們?nèi)绱讼矚g這個項目,要不就把Faker.js與Faker Cloud直接買了。而Retool.com隨后做的,則是嘴上說著這個提議我們會認真考慮,然后就沒有然后了。
這一操作就相當于是把Marak Squires當成了猴耍,所以難怪他會心態(tài)“爆炸”,最終不但刪庫“跑路”,還要往庫里注入惡意代碼,實實在在地惡心使用者。
而現(xiàn)在的情況也已經(jīng)十分明了,結(jié)果是開源項目的參與者盡管嘴上喊著支持、在實際行動上卻并非如此。更何況,F(xiàn)aker.js也并不是沒價值,其在GitHub上一共獲得了3.4萬顆star、全球有近千萬的開發(fā)者在使用、共計2萬余個項目依賴它,并且每周下載量超過250萬次、總計被下載了超過1.21億次。
上億的下載量以及千萬級的活躍用戶群體,這樣的數(shù)據(jù)即便是放到消費級市場都是相當出色的,更遑論Faker.js屬于生產(chǎn)力工具。如今對于Marak Squires的這一操作,開源社區(qū)的風向則是相當分裂,有人認為“開源就是這樣的,玩不起別玩,放惡意代碼屬于惡意破壞”,但也有認為“代碼是人家的,人家有權(quán)在開源協(xié)議的范疇內(nèi)任意處置”。
顯然,這兩種說法都有一定的正確性。畢竟開源代表的開放包容,是互聯(lián)網(wǎng)精神在現(xiàn)實中的投射,開源追求是的降低技術(shù)門檻、避免重復造輪子、用價值回饋社區(qū),是一種開放和共享的軟件開發(fā)方式。開源精神講究的是“人人為我,我為人人”,所以一旦將代碼開源后,自己作品的命運可就不完全掌握在自己手中,變?yōu)榱藢儆谒虚_源參與者或社區(qū)的了。
具體到Faker.js這個項目,Marak Squires所使用的開源協(xié)議是MIT License,并且其應該是所有開源協(xié)議里最寬松的,除了必須包含許可聲明外、再無任何限制,也就意味著開發(fā)者和使用者各自自行承擔一切的責任和后果。開發(fā)者不需要肩負為社區(qū)提供可信引用源的責任,使用者也沒有為開發(fā)者付費的義務。
但之所以會造成開源社區(qū)里對Marak Squires這一行為的態(tài)度分裂,其實也是開源軟件先天性的缺陷所導致。開源軟件帶有鮮明的烏托邦色彩,然而現(xiàn)實卻是“人人為我,我為人人”,并且這一切在利益面前也變得極為脆弱。對于商業(yè)公司而言,開源是展示技術(shù)實力、對行業(yè)產(chǎn)生影響力的一種方式,是服務于公司戰(zhàn)略,屬于實現(xiàn)商業(yè)利益中的一環(huán)。
而對于個人開發(fā)者而言,開源軟件則更像是屬于程序員的自媒體。在過去的很長一段時間里,有不少程序員因為開源獲益,主要途徑都是用開源軟件在社區(qū)里打響名聲、獲得聲望,然后借助聲望來獲得高薪的工作,或者是去創(chuàng)業(yè)。但做一個出色的開源項目與掙大錢之間并沒有因果關(guān)系,個人開發(fā)者直接借助開源軟件來掙錢也是少之又少。
并且開源與商業(yè)化也并不沖突,其中最著名的例子,應該算是Red Hat Linux(紅帽)了。他們免費提供Linux發(fā)行版,企業(yè)也可以通過付費訂閱來獲得技術(shù)支持,最終其更是在2018年被IBM以340億美元的價格收購。然而問題就在于,依靠Linux掙大錢的紅帽并不是Linux的創(chuàng)始團隊,Linux的創(chuàng)始人Linus Torvalds也只是在紅帽上市時被贈送了50萬美元的期權(quán)而已。所以這就是問題所在了,并非所有的開發(fā)者,都有著如同Spring框架創(chuàng)始人Rod Johnson一樣出色的營銷能力。
發(fā)生在Faker.js作者Marak Squires身上的悲劇,就在于換取影響力是開源的核心收益,但在影響力的變現(xiàn)上,個人開發(fā)者甚至還不如自媒體,畢竟自媒體的受眾是讀者,而開源的受眾卻是同行。自媒體將流量賣給廣告主等甲方,而開源軟件作者的同行就是一個個的甲方,這就很尷尬了。
當然,發(fā)生在Marak Squires身上的事情,其實對于開源本身的影響并不大。畢竟開源軟件能夠存在數(shù)十年,自然是有著可取之處的,開源軟件作者與社區(qū)之間的相互成就關(guān)系還是能維持的,但其對Faker.js所使用的MIT許可證協(xié)議,卻可能帶來很大的影響。
前文中曾提及,F(xiàn)aker.js項目采用的MIT協(xié)議是所有開源許可中最寬松的一個,基本上等于開發(fā)者將自己的知識產(chǎn)權(quán)提供給所有人免費使用。因此這件事勢必會讓許多開發(fā)者意識到,如果Faker.js使用的是GPL協(xié)議來開源,情況則可能會大有不同。
由于MIT協(xié)議對雙方都毫無約束力,導致Retool.com復制Faker Cloud也完全任何阻礙。而自由軟件基金會(FSF)發(fā)行的GPL協(xié)議中,則是這樣規(guī)定的,如果你使用了GPL協(xié)議發(fā)布的代碼后,在法律上你的代碼也得依據(jù)GPL開源出來,這就是在軟件開發(fā)領(lǐng)域中GPL許可證擁有“傳染性”的來源,也就是所謂“我開放了我的代碼,所以也要求你開放的代碼”。
GPL的“傳染性”導致了相當多的商業(yè)公司,會在自己的項目中想方設法隔離GPL,例如當初谷歌為了將Android隔離GPL,直接重寫了作為Linux系統(tǒng)中最底層API的glibc。所以GPL協(xié)議的意義,就在于開源軟件的作者在向社區(qū)付出善意的同時,還可以避免商業(yè)公司利用開源獲益、卻不回報社區(qū)。
但不管怎么說,為眾人抱薪者、不可使其凍斃于風雪。