編者按:這篇文章寫得很真實。作者講了自己的心路歷程:在他的 startup 失敗後,那些原來不願掏錢的客戶、甚至是競爭對手紛紛要求他開源產品;一開始他當然很不爽,當然不願意開源;後來理性地思考後,還是決定開源了。以下是由akacd 翻譯的作者原文:
2014年10月底,我宣佈將Mogotest專案關閉。經過接近五年的運營,我很清楚這塊業務無法繼續增長了。並不是由於沒有機會,我覺得是專案早期的一些商業決策導致現在專案舉步維艱。具體是什麼導致現在的失敗我改天再談。這篇文章我想討論一下專案關閉後我是如何處理原始碼的。
你會將程式碼開源麼?
正如我所料的,我宣佈關閉專案後人們問我的首先事情之一就是我是否準備將專案開源。我的客戶、對我們的專案感興趣的公司(儘管他們從來沒有覺得需要給我支援)、網友,還有其他一些人他們都很關心這個問題。我在之前有過思想準備,但是在我宣佈之後遭到這麼多人的問題轟炸還是出乎意料的。
其實我之前參與過很多開源的專案。但我沒有我自己的“品牌”可以維護,我也沒有專門銷售過開源的軟體或者開源軟體的諮詢服務,但我確實參與了很多開源專案。我所有的專案基本都用Apache 軟體2.0版本開源許可。對於開源軟體,我想我更傾向於實用主義而非理想主義。
如我以上所說的,我的第一反應就是不開源。我在理智分析之後的決定也是不開源。
為什麼不呢?
這裡我需要插播一段免責宣告。以下的觀點都是我源於我自己的經驗和慣性思維,如果我說的大道理讓你反感,請你原諒,我這個人還是很謙遜的。
第一點是情感上的。我剛從專注了整整五年的專案裡面緩過神來。那時候我損失了兩年的工資外加大概4萬美元的存款來應對商業上的合夥人之間競爭。我覺得這是最有可能的結局,所以我一直不想要大家同情我。但是經過這麼多事情之後又讓我回到專案,把專案無償奉獻出來實在是太困難了。
還有一點可能是我比較小氣的地方。一些人認為我們的專案不值得付錢,所以讓我們免費開源給大家。當我想把專案轉手的時候,那些潛在購買公司建議我開源,因為他們不想要付錢來使用我們的授權。所以,儘管我想讓我現有的使用者有時間來“軟著陸”以解決我們專案關閉的問題,我也不想讓那些佔便宜的人在一旁看笑話。
把這些都放在一旁,將原始碼開源也是個極為繁瑣的事情。我先不談清理一些讓我感到尷尬的東西,下面是我想到的可能不太全面的一些需要說明的點:
- 網站的主題是從WrapBootstrap 購買的,我沒有權利來將它用到開源專案
- 富UI元件是ExtJS的商業版本。這需要被剔除,或者這個專案需要遵循GPLv3協議。
- Sidekiq Pro需要被剔除掉。
- 用到的每一個JS庫和所有的圖片資源都需要檢查並保證得到了授權。
- 涉及到客戶資訊的程式碼需要被剔除。比如我們建立了針對客戶資料的元件就不能釋出。這個過程意味著需要編輯檢查每一個檔案。
- 需要確保所有的介面祕鑰或者密碼不能在程式碼中或者配置檔案中出現。(聽起來很糟糕,但是確實有這種情況。)
- 服務執行中潛在的安全漏洞
- 移除所有的涉及錢款的程式碼
- 移除所有的郵件宣傳程式碼
- 移除所有的非Web整合測試部分的程式碼。
這中間有很多的責任。把所有的點都做好需要很多的工作。
這之後我讓我自己打起精神,關注之前我根本不在乎的地方。我有時候會在程式碼中詛咒的。我對英語有著傳統的觀點,我也希望我豐富語言能符合我的觀點。所以我在日常寫作中使用了很多性別代名詞,現在也必須公開了。我確定在程式碼裡會“埋葬”著每一個寫瀏覽器程式碼的人:)。毫無疑問,程式碼中會冒犯一些人,我的個人聲譽也會受到影響。這些都是因為程式碼要公開。
我所做所有事情基本就是不斷的清理之前的程式碼,而且是免費的。
即使我清理了所有的問題,接下來的問題就是我覺得開源的意義不太大。開源專案,是的,開源所有的程式碼,怎麼說呢?我沒有時間和財力在這個專案上。開源之後肯定很多人會詢問各種各樣的問題,而我有沒有時間去逐一回答。這就會讓我一直感覺這個專案只是個廢品。另外,即使我有精力,我也沒有動力去完成各種各樣的新的設計任務。有些設計肯定會看起來很傻,但那又是受到時間和各種條件約束不得不做的。聽起來很簡單, 但是現在看來也許沒那麼容易。實現新的設計肯定是個進步,但是這些設計大多數都不是經過嚴格推敲的。如果不知道這個設計的來龍去脈,我可不想犯傻去做這個事情。
更多的思考
今天的晚些時候,我想修改一下Web持續整合測試這塊,讓它更好的執行起來。如果把Mogotest開源肯定對這有幫助。我會忽略掉一些困難。我已經在ASLv2的協議下開放了ancillary 類庫,很快我也會在AGPL協議下開放主題程式的程式碼。經過上週14個小時的清理工作,我現在仍不敢100%確認程式碼裡面沒有洩露使用者資訊。把所有的程式碼都看一遍我可不太想幹。
由於遵循AGPL協議,我決定嘗試一下 crowd-sourced campaign 來幫助開源。要求我開源的公司沒有做出任何實質性的事情來幫助開源這件事情。之前眾多的從IndieGogo網站和Twitter來的評論郵件現在也同樣令人灰心。
結論
對開源這件事。我有過因為情感因素的第一反應。我分析了原委後,我決定不按照我的第一反應來開源我的專案。但是我沒有成功。我認為我已經開源的那些工具會有利於他人,我在google的自動化測試會議上也說明了事情的進展。淨屋實現(clean-room implementation)不應該太過複雜。鑑於我現在做了這麼多的工作,你現在加入正是時候。不幸的是,我到站了。今天就到這裡。