我是怎麼做開源的
| 2012-05-25 10:36 收藏: 1 分享: 2
我最近發現我對開源(Open Source)的看法和我的很多朋友不一樣。我對開源的態度一貫是:
這段程式碼能夠很好的解決我的問題。假如 它也能解決你的問題,我很欣慰。但是假如它不能,我願意做一些改進,但是我也會拒絕一些讓程式碼變的臃腫的的想法。最後,做一個成熟的庫大約需要幾年的時 間。成熟我是指足夠的穩定來釋出一個最終的版本,或者有人做了一個高階版本。我不認為一個開源的專案能說明我在這個行業的成就。
但是和別人的交流我發現他們不願意做開源的原因如下:
1. 程式碼不夠成熟
2. 不想寫文件
3. 不想被需求和各種郵件佔用太多時間
我完全理解這幾點,但是我開發生涯中的一些事件改變了我的看法。
那是我的第一個開源專案,我一直不敢拿出來開源,直到我把他用在生產環境中穩定的執行了一年,我有足夠的自信相信我這個專案能解決一些問題。它是一個 .NET 物件關係對映庫,叫做 NORM,在2005年釋出。我相信你沒有聽說過這個專案。我花了好幾個月的時間來完善這個專案,但是沒有人在乎。然後我就不想再發布什麼東西了。我現在 相信不論我釋出什麼都不會引起人們的注意,所以我最好還是儘快的釋出,如果不行,那就承認失敗,然後繼續前進。
沒有人會為自己寫文件,他們為其他將要用這個軟體的人寫文件。人們很少從使用他們開源軟體的人那裡得到什麼。這個簡單的現實導致文件的稀缺。但是,缺乏文件不代表你不能開源你的軟體,它只是意味著你的軟體推廣起來會比較慢。
我兩年以前開源了 expectations, 沒有任何文件,並且在一年之內都沒有任何文件。在這一年中,很少有人關注了這個專案。但是這個專案確實對一些人來講很有用,所以還是有一些應用。最終,有 一些使用者開始產生一些 pull request,提交一些文件。他們的共享讓我產生了撰寫文件的動力。我沒有動力為潛在的使用者提供文件。但是我把程式碼放在那裡,有人用了,這個就讓我產 生了動力,因為這些使用者實實在在就在那裡。
如果你很幸運的建立了一個廣泛使用的專案,你將毫無疑問的被各種郵件淹沒。剛開始,我相信任 何人都會被這種成功衝昏頭腦,認為增加的工作量不是什麼大問題。但是慢慢的你會發現,這就像是第二份全職工作,然後你會想著究竟是為了什麼?在開發者中的 聲譽並不能讓你提早退休。不管怎樣,這不能成為你不做開源的藉口。還有,我相信 GitHut 已經改變了遊戲規則。如果你的專案託管在 GitHub,當你打算停止維護這個專案的時候,會有很多人願意 fork 你的專案,繼續開發的。
我並沒有因為離開自己的專案而良心不安。如果你的想法真的有價值,會有人願意接替你的位置的。很有可能是有幾個人願意接替你,然後最強的那個生存了下來。我見到的類似的專案有 Capistrano。Jamis Buck 在2009年高調的離開了這個專案,但是我知道還是有很多人到今天還在使用它。我堅信假如你的專案真的很好,即使有一天你決定去做其他事情,這個專案也會活的很好。
我看起來不像是一個開源的好公民,過早的釋出,過早的離開。如果真的是這樣的話,我願意接受批評,但在我看來事實並不是這樣。
相關文章
- 我曾經是怎麼做面試官的面試
- 我想加入阿里,我該怎麼做?阿里
- 我在阿里實習做開源阿里
- 我們在開源專案中是怎樣埋彩蛋的
- 全鏈路灰度在資料庫上我們是怎麼做的?資料庫
- 從零學起到成功轉行資料分析,我是怎麼做的?
- 做開源專案的維護者,是怎樣一種體驗?
- 『JVM』我不想知道我是怎麼來滴,我就想知道我是怎麼沒滴JVM
- 開源是怎樣煉成的?
- 對於快取大家是怎麼做的?快取
- 專案中有效的資源管理怎麼做?
- 什麼是開源?
- 創業公司的開發流程分享:在HitSend是怎麼做開發的創業
- 科普遊戲:是什麼?怎樣做?遊戲
- 大公司開源怎麼做?SOFAStack 給出一個很好的例子AST
- 「建議收藏」我想進阿里,我該怎麼做?阿里
- topthink 這樣的小組是怎麼做的
- 開源社群做點改變是很難的
- 從一個開源專案到龐大的開源矩陣,他是怎麼做到的?矩陣
- 程式碼管理流程你們是怎麼做的
- 我是怎麼做遊戲策劃的? 那些易於上手,難於精通的基本功遊戲
- 海外市場的網賺遊戲是怎麼做的?遊戲
- [歪談]我們該怎麼學習?做一個學者還是習者?
- Flutter高內聚元件怎麼做?閒魚打造開源高效方案!Flutter元件
- 什麼是開源精神
- 開源堡壘機是什麼?開源堡壘機的優缺點是什麼?
- 商場分佈圖是怎麼做,地圖資料分佈圖怎麼做地圖
- 亞馬遜測評是怎麼做的?測評難嗎?亞馬遜
- 將老人拉出無聲的世界,AI是怎麼做的?AI
- 這個原始碼是開源的麼原始碼
- python怎麼做web開發PythonWeb
- 我能為開源做些什麼?
- 網站等保三級怎麼做?手續是怎樣的?網站
- 談談我是怎麼學習linux的Linux
- 什麼是大資料?大資料開發是做什麼的?大資料
- 當我談開源時,我談些什麼?
- 剛做測試工作一年的時候,我是怎樣的?
- 副業收入是我做程式媛的3倍,工作外的B麵人生是怎樣的?