為什么我的代碼進入閉源狀態
我做出了一個可能讓很多人遺憾的決定。從今天開始,我曾經開源放在 GitHub 上的代碼,除了教育性質的代碼,全部進入私有狀態。這些代碼包括 PySonar2,RubySonar 等等。從今以后,除非用于教育目的,我將不再開源任何代碼。當然,你們已經下載的那些代碼,仍然可以按照開源許可證免費使用,然而***的改進以及將來的新產品,將全部閉源。做出這個決定的大部分原因,是因為多次對人心的失望。
PySonar2 一度處于開源狀態,使用寬松的 BSD 和 Apache 版權。PySonar 的用戶包括了 Google,Sourcegraph,還有其它幾個我不能透露名字的做專業代碼管理工具的公司。很多人崇尚 BSD 這樣的寬松版權,因為這樣可以***限度的傳播代碼。他們甚至把這作為了一種信仰,對于 GPL 這類嚴格限制商業用途的版權嗤之以鼻。甚至遮住眼睛對你說:“你的代碼是 GPL 的,我不能看!看了之后寫出一樣的代碼來,你會起訴我!” 然而多年的經歷之后,我才發現 BSD 并不是好的開源版權,而 GPL 才是真正保護軟件“自由”的。這個故事要從 Sourcegraph 講起……
Sourcegraph 是一家做代碼管理工具的公司。他們初期的系統,其實只是 PySonar 之上做了一個簡單的 web 包裝。把 PySonar 分析出來的信息倒到數據庫里面,然后通過 web 方式顯示給用戶。PySonar 本身早就有一個演示程序,可以生成互動的 HTML,所以其實 Sourcegraph 能做的事情,我很容易就可以做到,只不過多一些雜活而已。Sourcegraph 并沒有在 PySonar 之上增添很多的新東西,也無法做出 PySonar 這樣的核心技術。但是因為我一直不在乎 Python 這語言,也沒覺得這種工具有什么市場,所以一直沒有動手開發一套完整的服務。不是不能做,而是沒有動力去做。
BSD 的版權使得 Sourcegraph 的兩個創始人可以完全免費,***制的使用 PySonar。這樣的結果,使得我無法為 PySonar 收到任何的回報。后來 Sourcegraph 的兩個人找到我,想招我進去,幫助他們制造 RubySonar 和改進 PySonar。這樣就開始了經濟的不平衡。Sourcegraph 使用了 PySonar,按理我不需要另外做什么,就應該有一定的回報。然而現在他們把我招進去作為員工,我必須要做點其它事情,才能得到回報,也就是說我反倒成為了他們的打工仔。幾個月之后,我逐漸發現這兩個人的膚淺和不尊重。***在得到了最重要的技術改進之后,兩個創始人翻臉不認人,把我趕出了公司。
新的 PySonar2 里面已經沒有了 Google 的代碼。由于對人心的失望,我曾一度把 PySonar2 的版權改為 AGPL。這是 GPL 的增強版,它要求任何使用這些代碼的人和公司,在對它做出改進之后,必須把改進的代碼能讓人下載。就算你在自己的服務器上運行這些代碼,不把它作為產品提供給人,也一樣需要讓人能夠下載到改進的代碼。
把版權改為 AGPL 之后,出現了一個奇怪的事情。申請美國綠卡的時候,我找以前 Google 的上司要一封“工作經歷證明”。這本應是一種公司應該無條件提供給任何前員工的文件,然而我的舊上司卻對我說:“我可以給你這個證明,然而我想讓你給我一個好處。你的 PySonar2 現在改成了 AGPL 版權,我們想用你的代碼,卻因為這個版權沒法用。你能否把版權改為 BSD 一類的,這樣很多人都可以用它?” 面對這樣的無理要求,我很鄙視。所以干脆沒要 Google 的工作經歷證明,直接找其它公司開了證明。
又過了一段時間,我感覺 AGPL 似乎確實限制了 PySonar 的應用,所以又把版權給換成了 BSD,進而換成了 Apache,一種比 BSD 還要寬松的版權。剛換成 BSD,我就發現有一家代碼工具公司 fork 了 PySonar,***的 commit 正好是改為 BSD 版權的時候。這個公司從來沒聯系過我,從來沒感謝我,只是本地里在用 PySonar 來賺錢。曾經一直在用 PySonar 的另一家公司的創始人 Z,當天也發信來跟我說:“正在考慮給你版稅呢,結果你就換成 BSD 了。哈哈哈!” 這是什么意思呢?本來都要付錢給你了,結果你換了 BSD,所以我就不給你錢了,就是這個意思。不過他***還是象征性的給了一千美元。
我一直把 Z 作為朋友。平時如果他報告點 PySonar 的 bug,我樂意免費給他改進。我給他介紹投資人,甚至給他介紹妹子…… 我并沒有圖他什么,并沒有要求回報。我只是想積點德,將來總有好的后果吧。然而,前幾天當我宣布離開美國的時候,我才發現我的好心,其實并沒有好報。Z 發信息來,說看我想回國,所以想招我進他的公司。給我開了一個價,具體的數字我就不說了,不過這個工資,現在國內是個程序員都能拿到。我想給那點錢,給他當個顧問,關鍵時刻給點方向,隔幾個月改改 PySonar 的代碼也就算了,結果他要求我全職給他工作。嘲笑了他開得太低,結果得到的回答是:“你做出過什么真正的產品嗎?” 是的,PySonar 不是真正的產品。你在外面做個包裝界面,然后功勞都是你的了,我還得給你打工?哎,我再也不相信任何免費用我代碼的人了。
這就是我用 BSD 版權發行有價值的代碼的辛酸史。由于這個原因,從今天起,我的代碼完全進入閉源狀態。沒有人再能免費得到 PySonar ***的改進,沒有人再能看見我***的技術。另外,PySonar 其實一直以來都有一個為開源的分支,里面含有對于靜態分析邏輯的重大改進。從今以后,這一切都只能屬于我私有,它們其中一些將會成為我未來產品立于不敗之地的支柱。