1. 程式人生 > >開源,不是一種道德綁架

開源,不是一種道德綁架

640?wx_fmt=gif

我開我的源,與你何干?

640?wx_fmt=jpeg

作者 | Phodal

責編 | 胡巍巍

Ant Design 事件之時,作為看熱度的吃瓜群體。我偶爾也會隨意地皮一下,雖然沒有這麼大膽。

過程中,大抵發現一些人吶,對於開源的態度並不是那麼友善——彷彿作為一個開源貢獻者,這些都是我等的義務,應盡的天職一樣。

我在最初也並沒有那麼友好,經賀老提醒之後,我發現自己的態度似乎也是不太對。但是,這種利用道德上的壓迫感,讓人覺得甚是不爽,便想寫一篇文章順帶吐槽一番。


640?wx_fmt=png

開源,並不意味著免費


我們開源了一個軟體,並不意味著你可以免費使用。我們花了幾天、幾個月、幾年的時間,打造出來的開源軟體,就好像自己的孩子一樣。我們會為之搭配一個滿足自己利益的協議,它可以是 GPL、Apache,也可以是 WTF 協議。它還可以針對個人免費,但是商業使用收費的軟體。你可以直接看到專案的程式碼,並不意味著你直接商用。

這個基本的原則,也是許多大公司所不懂的,騰訊的 QQ 語音 FFmpeg 恥辱名單事件,華為的 ServiceComb 抄襲事件,小米的 Linux 核心不開源事件……。

而即使是我給予了你免費使用這個庫、軟體的權利,也不代表我會向你免費提供支援服務。收費軟體,收費的其實並不只是軟體本身,還有相當一部分是服務的費用。而幫助你使用這個開源軟體,也是服務的一部分。在大部分的情況下,這個服務可以由作者自願提供的,但是不代表它是免費的。

選擇開源,能幫你省掉大量的時間和金錢,但是這些並不意味著開源是免費的。開源反而是最貴的,沒有人會 7x24 地為你提供售後服務,沒有人會向你保證軟體背後沒有漏洞,沒有人會向你提供新功能的支援——你需要自己承擔這一切的風險。


640?wx_fmt=png

開源,是權利而非義務


從 StackOverflow/Google 複製了一堆程式碼,作為一種迴應,我寫有一個對應的部落格,上面有一系列的部落格;我從 GitHub 上覆制程式碼,作為一種迴應,我編寫了大量的開源軟體。

但是這些都只是我的權利,我可以選擇不開源這些軟體——隨著時間的流逝,讓它們在我的電腦上腐爛。而不是將程式碼提交到網上、GitHub,再除去一些條件限制、環境限制、專利限制等相關的程式碼,配套上相應的 README、使用文件、Demo,以讓其他/她人可以順利地使用它們。

然而,從法律、道理上來說,我並沒有義務這樣做。我可以只上傳程式碼到 GitHub 上,你愛用不用。開源是一種權利,我可以使用這個權利,也可以放棄這個權利。不過,對於這個權利不得不提及的一點是,在工作時間、使用公司裝置開發的開源軟體,從原則上來說,並不屬於個人。公司有權利,收回以這種形式開發的開源軟體。

“貢獻的沒有幾個,嫌棄的卻有一堆”。在 GitHub 上遇到一個問題,幫助某開發者解決了問題。每次都會寫 comment 希望他/她能把解決方案放到 issue 裡,可多數時候並不會得到解決方案。明明它對於別人是有幫助的,卻有人總也不會去做。如果是你,那你還談論什麼開源的權利與義務?

若是不開源,虧欠的是那些開源的人。開源吧,又對那些不開源的人太好了。


640?wx_fmt=png

開源,不是我們的工作


對於絕大部分的開源工作者來說,開源並不是他/她的日常工作。作為一個 Geek,我們都向往一個更好的世界,一個我們願意為之奮鬥的世界——虛擬世界。

我們願意在這個世界裡,創造美好、引以為傲的事物。我們喜歡創造,喜歡和熱愛創造的人一起工作,我們喜歡分享,願意分享東西給喜歡分享的人。

所以呀,解決你的問題,不是我的工作。哪怕你十萬火急,我也沒有理由、義務去幫助你。白天,我也需要忙於工作,我也有一堆的問題希望有人能幫我解決。

可這些問題,往往只能由自己來解決。在工作的時間裡,幫助你解決你的問題,對我來說太難了。

我有自己的工作,我需要解決工作中的問題。回到家裡,還需要吃飯,還需要刷動漫,還需要洗澡,還需要浪漫的時間,這樣一來,所剩的時間就更少了。

有限的時間,我還想投入到自己的愛好中,投入到寫作中,投入到繪畫中。哪怕是不能為我帶來收入,但是我很開心。

可我們還是會抽出時間,去解決 GitHub 上的問題。這些問題我們有自己的優先順序分類:

  • 出 bug 了。修好它,是你應該做的,也是我應該做的。但是什麼時候修好,就得看時間。

  • 新的功能。我可以考慮,但是也可以不考慮。

  • 使用不當。可以適時考慮,幫你解決。

  • 與專案結合有問題。若是你能找到了問題,還有相應的答案,還可以協同解決。若是找不到問題,我也沒有原始碼、分析不出問題,你只能聽天由命了。

  • 不按文件使用。不好意思,請再把文件看一遍,再來提問。

可總有人,會去煩作者,說為什麼不回答他/她的問題。有時候,還會配上各種難聽的話。若是這樣的事情多了,怕是作者本人也會放棄開源。

正因為如此,我討厭在 IM 上新增好友,討厭郵箱、社交媒體以外的聯絡方式。我有我的工作,我有我的生活。


640?wx_fmt=png

開源,不是道德綁架


談及開源來說,我怕得是一個 “自私” 的人。我有自己的生活,出於生活考慮,我拒絕造基礎的輪子,如 UI 元件庫、模式庫等等。

所有的這些基礎設施,都在無時無刻地蠶食生活的角角落落。任何一點雞毛蒜皮的小問題,都會在 issue 列表中出現:

  • 明明是你不看 README,卻在說文件上沒寫清楚。

  • 明明是你不看示例程式碼,卻在說專案沒有 DEMO。

  • 明明寫的是給 Angular 用的框架,卻在說在 Vue 上不能使用。

  • 明明是你的能力不足,卻在說框架有問題,不能工作。

  • 明明是你的能力不足,卻在說作者不幫助你。

開心了,我就給解決方案;不開心或者工作累的時候,開啟 GitHub issue 的想法都沒有。

總有人會以道理的高點,來譴責一個開源軟體的作者,直到這個作者關閉了 issues,關閉了專案。甚至是到各種社交媒體上,對這個作者進行轟炸。

而點開這個人 GitHub 上的頭像,都是一個個 contributions 空白的人,在道德上和別人說義務。

拜託,只有有道德的人,才有資格談義務。不走向開源的人,哪裡有什麼資格,和開源人的談開源的義務。

和壞人講道理,哪是在電影裡才有的情節。主角們有主角光環,而鍵盤俠才是有主角光環的人,而開源軟體作者,才是所謂的 “壞人”。鍵盤俠是個超級英雄,他/她們來無影,去無蹤,卻又存在於世界的任何一個角落。

他/她們可以以任何的角度來抨擊一個人,哪怕是一個完美的人,他/她們也會以這個人太完美為理由進行抨擊。

沒有人強求你為開源做貢獻。你也不應該強求其它人為開源做貢獻。


640?wx_fmt=png

不開源,不足以談開源


當今世界最可怕的是,總有些自媒體,總有人會拼拼湊湊寫出一些可怕的文章——擁有大量的閱讀,帶領一堆吃瓜的群體,開始了輿論的批評。

這種文章吧,說是抄襲,倒也不是那麼赤裸裸,說是洗稿吧,倒也沒有稿可洗。而這些亂七八糟的文章,卻在不斷地為開源世界帶來罵名。

就我而言,寫一篇像本文一樣的技術文章,需要一天。而抄襲,卻只需要 10 分鐘。

不開源的人,不足以談論開源。不開源的人,怎麼可能知道開源的世界是怎樣的。不開源的人,怎麼會知道開源世界沒有英雄。

不開源的人,一切的資訊來源,都是道聽途說的。即是道聽途說的,哪來的準確性,又有什麼資格談論古今呢?

開源軟體,謀利太難了,謀名還是可以。以開源為名為自己的開源軟體宣傳,這種行為無可厚非。可要是以開源為名,去宣傳一個非開源的組織,怕就是在謀取私利。

可總有人借開源之名,宣傳自己。雖說我是半吊子——經常造坑到一半,但是至少能拿出一系列的作品。

兩者間的區別在於,開源貢獻者,會為自己的軟體作宣傳。開源利用者,則是以組織名和開源來為自己背書,卻拿不出作品。

不走向開源,你怎麼知道開源是怎樣的?不開源,你哪來的資格談開源?!……


640?wx_fmt=png

結論


有些人是該批評,有些人是該醒一醒了。

作者簡介:黃峰達(Phodal),ThoughtWorks 軟體開發工程師,CSDN 部落格專家。長期活躍於 GitHub,專注於物聯網和前端領域。出版著作《自己動手設計物聯網》《全棧應用開發:精益實踐》以及《微前端的那些事兒》、《Serverless 架構應用開發指南》等六本電子書,並譯有《物聯網實戰指南》等兩本書。

宣告:本文系作者投稿,版權歸作者所有。

【END】


CSDN 開源開發者交流群

立即掃小編的微信二維碼加入吧!

加好友時請備註#開源+公司+職位#

如無備註,不會通過哦

640?wx_fmt=jpeg

 熱 文 推 薦 

 “蘋果正在走下神壇” | 暢言

 ofo 迴應甩賣辦公桌;華為與袁隆平合作;羅永浩 1 億股權遭凍結 | 極客頭條

☞我如何用 21 天在 GitHub 上獲取 6300 個 Star?

 1年丟失140億!你是區塊鏈的受害者嗎?|年度安全事件回顧

 華為 36 歲工程師猝死,曾 22 月無休:比掙錢更重要的是活著

 細數阿里達摩院2019年的十個Flag

 Google AI騙過了Google,工程師竟無計可施?

☞ 趣挨踢 | 關於遺留程式碼的那些事兒


  

print_r('點個好看吧!');
var_dump('點個好看吧!');
NSLog(@"點個好看吧!");
System.out.println("點個好看吧!");
console.log("點個好看吧!");
print("點個好看吧!");
printf("點個好看吧!\n");
cout << "點個好看吧!" << endl;
Console.WriteLine("點個好看吧!");
fmt.Println("點個好看吧!");
Response.Write("點個好看吧!");
alert("點個好看吧!")
echo "點個好看吧!"

640?wx_fmt=gif點選“閱讀原文”,開啟 CSDN App 閱讀更貼心!

640?wx_fmt=png 喜歡就點選“好看”吧!