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