關於“開源”的思考
本文由碼農網 – LifeApprentice原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
最近,我經歷了一次有意思的討論。討論的主題是程式碼開源,尤其是指那些用作商業用途的程式碼,比如用於創造你自己的產品或者服務的程式碼。以下就是這次討論所得的,對“開源”的各個方面的思考。同時我也真心希望讀者能進行討論,分享自己的經驗。
質量
不論何時,只要你決定公開地做一件事,你就會傾向於對其付出更多的努力,力求將其做好。不管是一場演講,一次營銷活動,還是一個軟體專案。只要你想把這個軟體專案公開,你就絕不會希望你提交的程式碼糟糕透頂,使你蒙羞。正因為其他人可以輕易地瀏覽,甚至評價你的程式碼,所以你會開始思考,自己到底在做什麼。另一方面,你也希望寫出漂亮而有效的程式碼,這樣,其他的程式設計師會欣賞,並在他們自己的程式碼中使用你的方案,或者對你的程式碼提出修改意見。
社群
不管你使用的是哪一種技術,也不管你做的專案有多小眾,可以肯定的是,只要你付出最低限度的努力,在一些論壇或者使用者小組中為你的專案做點宣傳,就一定會有人對你的專案感興趣。當你的程式碼出現第一個分支,你就可以為自己感到驕傲,因為有人覺得你的程式碼有用。這整個過程實際上與寫部落格非常相似。所有人都很喜歡讀那些能夠解答我們正在面臨的問題的文章。同時,我們也很喜歡使用一些免費和開源的軟體,不管它是一款應用還是隻是我們使用的一個庫。既然其他的開發者們用他們自己寶貴的時間,分享了他們的成果,為什麼我們不分享點什麼呢?不要只做一名消費者,也做一名生產者吧: )。
透明
在應用中處理使用者資料是常常發生的事,因此,透明就顯得尤為重要。部分使用者對於使用我們的服務會心生疑慮,因為他們會懷疑我們用他們的私人資料做一些不太正當的事。而當你的服務物件是政府部門時,這一點更是非常關鍵。如果程式碼不是開源的,勢必會產生懷疑。反之,如果你的專案是開源的,那麼所有人都能看到,並確認這款應用並沒有侵犯他的個人隱私,沒有洩露他的個人資料,也沒有後門程式等。這可能是讓使用者相信你的唯一方法。
效益
不管你是獨自開發一個專案,還是管理著一群人,隨著你的專案越來越大,程式碼開源都將會給你帶來巨大的效益。對你個人來說,你將會更容易獲得一份好的工作。因為你的目標公司,可以輕易地瀏覽到你寫的程式碼和你的思路。同樣的道理,如果你經營的公司是程式碼開源的,那麼,潛在的客戶們就可以輕易的看到你的程式碼,並判斷你的服務是否是他們想要的。
管理
不便於管理可能是開源的一個劣勢。當你在管理一個大專案時,好幾只團隊同時工作,許許多多的參與者們都會提交他們的修改。此時,你就必須要做好兩件事——首先,堅持按照最初的計劃,進行核心部分的開發,同時你還應該處理所有發現的bug或者需要加強的地方,給所有員工的工作排出優先順序。如果你完全不考慮(或者很少考慮)參與者的建議,那麼很可能會民怨四起。所以,對於開源專案來說,這個問題可能比較棘手。
禁忌
當然,我們不能讓所有的專案都開源。大部分的公司都不希望將程式碼公開,這是完全可以理解的。比如,有些專案可能使用了某種特別的演算法,公開則有可能被盜用等等。不過,如果你只是在開發自己的專案,不要害怕與世界分享你的經驗和知識。實際上,不會有人真的偷你的程式碼,而你卻為整個開發者社群提供了高質量的程式碼。
譯文連結:http://www.codeceo.com/article/think-about-open-source.html
英文原文:Open source implications
翻譯作者:碼農網 – LifeApprentice
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 關於共享資源保護的思考
- 關於近源滲透的一些思考
- 關於開發流的一點思考
- 關於難點的思考
- 關於面試的思考面試
- 對開源的冷思考
- 關於限流實現的思考
- 關於中介軟體的思考
- 關於Flux,Vuex,Redux的思考VueRedux
- 關於工廠模式的思考模式
- 關於寫部落格的思考
- 關於Fork和Malloc的思考
- 關於Spring+Mybatis事務管理中資料來源的思考SpringMyBatis
- 關於 Spartacus 開源專案的 peerDependencies
- 關於近期幣安事件的思考事件
- 關於 Method Swizzling 的一點思考
- 關於同步的一點思考-下
- 關於 PHP 框架的簡單思考PHP框架
- 關於研發效能提升的思考
- 關於運營邊界的思考
- 關於CodeReview的一些思考View
- 關於git flow的一點思考Git
- 關於知識付費的思考
- 最近關於工作的幾點思考
- 基於開源軟體構建儲存解決方案的思考
- 【odoo】關於odoo二開模組規範的一點思考Odoo
- 關於社交圈子的一點思考
- 關於PHP協程與阻塞的思考PHP
- 關於資料視覺化的思考視覺化
- 關於-生物資訊-入門-的思考
- 關於 Masonry 的一些思考(下)
- 關於農業種植的若干思考
- 關於黑暗力量(BlackEnergy)的一點思考
- 關於重寫equals()和hashCode()的思考
- 關於【男怕入錯行】的思考
- 關於爬蟲 retry 機制的思考爬蟲
- 關於 Go 程式碼結構的思考Go
- 關於程式碼質量退化的思考
- 關於專案中 Repository 層的思考