自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開源是免費(fèi)的,維護(hù)也是免費(fèi)的

開源 系統(tǒng)
開源軟件對(duì)于程序員的生產(chǎn)力是一種巨大的恩惠,節(jié)約了人類數(shù)個(gè)世紀(jì)的努力。但是請(qǐng)記住,正如你擁有自己的可用性,你還擁有你的軟件和與此相關(guān)的一切。

[[123428]]

五金店

最近Zach Tellman和Factual開源了一些資源庫,他們想處理根本不存在的具體需求。在Reddit的評(píng)論里,有人發(fā)牢騷,因?yàn)檫@個(gè)軟件可能在1-2年內(nèi)被拋棄,如果他們依賴這個(gè)軟件,他們將陷入困境。我認(rèn)為這種想法源于對(duì)開源軟件的誤導(dǎo)和自私的視角。

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

或許這可以應(yīng)付一段時(shí)間,但是漏掉了軟件工程中最關(guān)鍵的地方:軟件隨著時(shí)間而衰落,也叫。軟件不是以獨(dú)立系統(tǒng)的形式存在的,它與其它隨著時(shí)間而變化的軟件交互,包括你的操作系統(tǒng)、內(nèi)存、其它外部服務(wù)、數(shù)據(jù)庫、CPU、網(wǎng)絡(luò)、IO設(shè)備(打印機(jī)、顯示器)和最重要的因素—用戶。這些系統(tǒng)被新的系統(tǒng)取代或更新。有時(shí)候變化是向后兼容的,有時(shí)候卻不是。因此,代碼被一次寫完、而終身維護(hù)。使用某人的開源代碼對(duì)你是個(gè)巨大幫助,因?yàn)槟悴槐厝懥恕H欢?,隨著時(shí)間的流逝,狀況有所改變,熵就起了作用,代碼需要維護(hù)和更新了。

一個(gè)資源庫的供養(yǎng)需要一個(gè)村子的努力

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

我認(rèn)為,把開源軟件做為禮物獻(xiàn)給世界的某個(gè)人,不會(huì)覺得負(fù)有為你維護(hù)軟件的責(zé)任。一些項(xiàng)目的確聲明了責(zé)任,但是不能僅僅因?yàn)橛腥嗽贕itHub上發(fā)布了項(xiàng)目就說明責(zé)任被自動(dòng)授予了。我想,更多的責(zé)任應(yīng)該在于使用該項(xiàng)目的人。將要使用它的是你的代碼,你的代碼需要更新、你的代碼將要崩潰。在你開始使用一個(gè)資源庫或框架之前,你應(yīng)該考慮以下問題:

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

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

可替代的依賴項(xiàng)的選擇

拉取一個(gè)依賴項(xiàng)應(yīng)該是經(jīng)過深思熟慮的,可以先看看其它選擇:

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

***

開源軟件對(duì)于程序員的生產(chǎn)力是一種巨大的恩惠,節(jié)約了人類數(shù)個(gè)世紀(jì)的努力。但是請(qǐng)記住,正如你擁有自己的可用性,你還擁有你的軟件和與此相關(guān)的一切。

英文原文: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/

責(zé)任編輯:林師授 來源: 臘八粥
相關(guān)推薦

2020-03-02 08:25:38

免費(fèi)開源軟件FOSS軟件安全

2010-03-03 14:11:23

Android操作平臺(tái)

2012-05-22 13:18:23

2010-02-24 16:11:42

Python程序庫

2020-04-21 09:16:47

開源Linux Shell

2023-09-05 09:13:43

2020-04-22 15:45:59

Linux shellLinux命令

2024-08-16 08:31:05

2020-09-18 06:00:51

開源Markdown編輯器

2023-10-11 12:25:35

2012-01-05 08:57:08

2015-08-31 09:19:59

UPYUN云存儲(chǔ)

2010-12-14 09:37:02

數(shù)據(jù)挖掘工具開源

2017-03-09 20:20:42

2024-04-23 08:16:21

2023-12-15 09:59:14

開源GIF編輯器圖片格式

2012-09-10 09:50:40

2021-09-15 23:28:20

開源項(xiàng)目Jetbrains

2013-10-29 14:37:03

2010-03-04 10:41:38

Android操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)