成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開源是免費的,維護也是免費的

開源 系統
開源軟件對于程序員的生產力是一種巨大的恩惠,節約了人類數個世紀的努力。但是請記住,正如你擁有自己的可用性,你還擁有你的軟件和與此相關的一切。

[[123428]]

五金店

最近Zach Tellman和Factual開源了一些資源庫,他們想處理根本不存在的具體需求。在Reddit的評論里,有人發牢騷,因為這個軟件可能在1-2年內被拋棄,如果他們依賴這個軟件,他們將陷入困境。我認為這種想法源于對開源軟件的誤導和自私的視角。

做為軟件工程師,應對開軟資源庫、應用程序和框架,就像在一家五金店,這是非常有吸引力的。如果你有問題,而標準資源庫無法解決,就拉取一個依賴項。需要工具集函數?在GitHub搜索一下,并增加一個依賴項。想發揮最近瘋狂流行的單頁應用程序?那就拉取另一個依賴項。需要用Ruby處理XML?只需瞬間安裝Nokogiri你可以笑到***

或許這可以應付一段時間,但是漏掉了軟件工程中最關鍵的地方:軟件隨著時間而衰落,也叫。軟件不是以獨立系統的形式存在的,它與其它隨著時間而變化的軟件交互,包括你的操作系統、內存、其它外部服務、數據庫、CPU、網絡、IO設備(打印機、顯示器)和最重要的因素—用戶。這些系統被新的系統取代或更新。有時候變化是向后兼容的,有時候卻不是。因此,代碼被一次寫完、而終身維護。使用某人的開源代碼對你是個巨大幫助,因為你不必去寫了。然而,隨著時間的流逝,狀況有所改變,熵就起了作用,代碼需要維護和更新了。

一個資源庫的供養需要一個村子的努力

除了把開源軟件看做五金店,我認為更好的比喻應該是,加入一個村子去供養一個孩子。你拉取的每個依賴項需要隨著時間一直維護,還有它所依賴的依賴項,如此往復。這里的問題不是關于維護是否需要去做,而是誰來做。較大的社區有更多的資源和時間來做,成熟的項目已經經過了優化、良好的測試以及具有穩定的API。如果你正忙于新生的模糊的快速變化的語言中,那么更多的維護將要壓到你的身上。

我認為,把開源軟件做為禮物獻給世界的某個人,不會覺得負有為你維護軟件的責任。一些項目的確聲明了責任,但是不能僅僅因為有人在GitHub上發布了項目就說明責任被自動授予了。我想,更多的責任應該在于使用該項目的人。將要使用它的是你的代碼,你的代碼需要更新、你的代碼將要崩潰。在你開始使用一個資源庫或框架之前,你應該考慮以下問題:

  • 這個軟件取決于誰?它的依賴的依賴項是什么?它們更新合理嗎?資源庫在用類加載器、字節碼做著奇怪的操作、搞亂了運行時嗎?這些情況更有可能出現在你的語言或運行時的新版本里。
  • 除了使用另一個或自己寫,我使用這個資源庫或框架能得到多少好處?
  • 這個資源庫寫得不錯嗎?有對代碼做全面測試嗎?通過測試了嗎?
  • 作者建議你用在生產環境中了嗎,或者它只是概念驗證(proof of concept)或探索型想法?
  • 作者有過維護開源軟件的經歷嗎?他們自己使用嗎?如果我想增加一個特性或修復bug,作者樂于接受,或者它是“沒有開啟pull request的開源”?順便說一句,這是不錯的,意味著當你的需求偏離時,你需要維護自己的fork。
  • 如果它是一個數據庫驅動器,它能夠及時地為數據庫新版本更新嗎?例如,Netflix的Cassandra驅動器Astynax就落后于Cassandra的***版本。
  • 我和老板的風險容忍度怎么樣?
  • 我有時間、且征得了老板的許可、有能力來自己維護或優化這個資源庫嗎?
  • 如果有必要,這個資源庫通過安全審查了嗎?
  • 作者有談到API的穩定性嗎?
  • 項目的issure tracker執行情況怎么樣?作者有響應,或者他們不再參與了?
  • license和軟件的其它部分兼容嗎?
  • 如果它由一家商業公司提供支持和發布,他們傾向于修改license或者為將來的企業客戶保留重要特性嗎?
  • 具有多個資源庫實現的通用API嗎,我可以在它們之間切換。在Java里,有JPAXQJ之類的軟件,可以避免被綁在一種資源庫上。
  • 最近一次的重要提交是在什么時候?整個項目存活了多長時間?
  • 有相應的用戶社區嗎?有郵件列表嗎?
  • 我正在編寫的代碼的預計使用周期和危險程度怎么樣?

一旦你考慮清楚了這些問題,你將對所使用的資源庫繼承下來的風險有更好的理解,還有項目的極有可能的未來方向。如果你決定采用了,那么我建議你加入郵件列表,在GitHub上關注它,以隨時關注更新變化。

可替代的依賴項的選擇

拉取一個依賴項應該是經過深思熟慮的,可以先看看其它選擇:

  • 如果你僅僅需要非常少量的、相對簡單的代碼,在license允許的前提下,只把代碼拷貝到你的項目就可以了。
  • 確保標準資源庫沒有提供類似的功能。如果它只是另一種依賴項的包裝庫,那么你可以直接使用那種依賴項嗎?
  • 如果為了某種數據結構而在拉取另一種依賴項,那么是否存在一種可替代的算法,你可以使用不需要這種數據結構的算法嗎?
  • 存在一些應該你自己編寫的代碼嗎?雖然這不總是***的選擇,有時候為了滿足你的質量標準,也沒有其它選擇了,你需要自己來構建。
  • 有一個商業化的選擇嗎?開源是免費的【注1】,維護它也是免費的。給維護軟件的其他人員支付費用,將增加他們繼續為你維護的動力,這可能是很多公司***的選擇。

***

開源軟件對于程序員的生產力是一種巨大的恩惠,節約了人類數個世紀的努力。但是請記住,正如你擁有自己的可用性,你還擁有你的軟件和與此相關的一切。

英文原文:http://danielcompton.net/2014/11/19/dependencies

譯文出自:http://www.labazhou.net/2014/11/while-open-source-is-free-as-in-beer-it-is-also-free-as-in-baby/

責任編輯:林師授 來源: 臘八粥
相關推薦

2010-03-03 14:11:23

Android操作平臺

2020-03-02 08:25:38

免費開源軟件FOSS軟件安全

2020-09-18 06:00:51

開源Markdown編輯器

2023-10-11 12:25:35

2020-04-22 15:45:59

Linux shellLinux命令

2024-08-16 08:31:05

2012-01-05 08:57:08

2023-09-05 09:13:43

2012-05-22 13:18:23

2010-02-24 16:11:42

Python程序庫

2020-04-21 09:16:47

開源Linux Shell

2010-03-04 10:41:38

Android操作系統

2013-10-29 14:37:03

2011-07-13 10:32:09

開源

2010-12-14 09:37:02

數據挖掘工具開源

2017-03-09 20:20:42

2023-12-15 09:59:14

開源GIF編輯器圖片格式

2024-04-23 08:16:21

2015-08-31 09:19:59

UPYUN云存儲

2012-09-10 09:50:40

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜成人免费视频 | 视频在线一区 | 日韩精品在线看 | 色五月激情五月 | 本地毛片 | 亚洲精品一区中文字幕 | 91精品国产91久久久久久最新 | 伊人久久综合 | 欧美一区二区三区四区视频 | 色一阁| 国产一区二区在线播放 | 国产精品久久久久久吹潮 | 韩国毛片一区二区三区 | a级片播放 | 亚洲福利视频一区二区 | 看一级毛片视频 | 日本精品一区二区三区在线观看视频 | 在线视频一区二区三区 | 红桃视频一区二区三区免费 | 欧美日一区二区 | av大片 | 韩国毛片视频 | 超碰在线免费av | 99re视频在线 | 91香蕉视频在线观看 | 免费欧美 | 日韩在线播放第一页 | 91在线看| 欧美在线 | 国产精品美女久久久久久久久久久 | 中国一级毛片免费 | 春色av| aaaaaaa片毛片免费观看 | 毛片网站在线观看 | 亚洲第一av网站 | 97精品一区二区 | 性一交一乱一伦视频免费观看 | gogo肉体亚洲高清在线视 | 久久精品一区二 | 五十女人一级毛片 | 福利一区二区在线 |