當前有許多新興技術憑借著開源方式進行推廣。開源軟件的發(fā)展由來已久,目前已有數以萬計的開源社區(qū)和模型。由于開源軟件存在局限性,近來學術界開始對開源軟件和社區(qū)的發(fā)展進行反思,認為:開源軟件的使用比開發(fā)更重要;要重視發(fā)展開源軟件工程技術;在大數據和云平臺的環(huán)境下,應該建新的軟件工程,包括軟件的需求、設計、測試、整合、部署和監(jiān)測。一個流行的開源軟件擁有一群高效率的開發(fā)者和數量龐大的用戶群,在通常情況下,用戶無需支付費用。這些“免費”的開源軟件往往由拿著高薪的工程師完成。為什么這些工程師愿意無償從事開發(fā)?以Linux為例,以前很多人雖然反感微軟的Windows系統,但由于沒有其他操作系統,只能選擇Windows。當Linux系統開源項目一出現,許多軟件開發(fā)組織自愿加入進來。再如,OpenStack的開發(fā)也是如此,許多公司愿意付薪水給員工,并將其組成團隊進行開發(fā),期望OpenStack能取代市場的主導產品。如果市場上出現了能夠主宰市場的產品,而其他公司卻沒有足夠的資源能在短時間內開發(fā)出自己的產品與其競爭,這些公司就會結成聯盟使用開源軟件開發(fā)來改變競爭態(tài)勢。安卓系統也存在同樣的情形。該系統一直在利用開源軟件系統與其競爭對手蘋果iOS系統對抗。由于每個參與開發(fā)的組織都有自己的管理方式、企業(yè)文化及軟件開發(fā)流程,因此他們只能以開源的方式合作,通過社區(qū)交換代碼進行交流。這是開源軟件和開源社區(qū)的驅動力。比爾·蓋茨說過:“市場占有率是最重要的”。一旦占領市場,以后開發(fā)出來的軟件就不得不依靠 之前擁有市場主導地位的軟件,所以軟件公司以占領市場為首要任務。由于人們可以免費或低價獲取開源軟件,所以開源成為占領市場的利器。1. 雖然大多數開源項目沒有成功,但是成功的開源軟件占據了絕大多數市場份額,例如Hadoop、Linux、Spark和OpenStack。2. 成功的開源軟件大多是被“贊助”的(意指多個公司結成聯盟進行軟件開發(fā)),而“獨立”的開源項目則大多失敗。3. 成功的開源項目也可能走向失敗,其原因有:出現了新一代產品,開源軟件領導核心離開以及企業(yè)改變了經營策略等。4. 許多新的軟件技術也經常使用開源軟件來進行推廣。例如作為當前金融學領域炙手可熱的區(qū)塊鏈技術 。“開源社區(qū)”的核心是“開源”,社區(qū)是“果”,而不是“因”。“贊助”往往是“因”,有了大量的贊助,才有了大量的開發(fā)人員。此外,社區(qū)這個“果”并不意味著其相應的軟件已經成為“產品”。軟件產品和項目是不同的,一個軟件成為產品要花費大量的工程與測試。所以如果有人認為軟件放在開源社區(qū)開發(fā),就會有工程師免費參與,那是不切實際的。如果沒有贊助,相信大多數工程師都沒有興趣來開發(fā),愿意無償開發(fā)的工程師畢竟是少數。斯蒂芬·瓦利斯(Stephen Wallis)在其著作中提到了開源社區(qū)和顧客的不同:社區(qū)是一群開發(fā)者,對軟件有興趣,有大量的時間卻缺乏資金;顧客正好相反,沒有時間但有錢。在一個社區(qū)里,開發(fā)者也可能是顧客,但不是每一個開發(fā)者都是顧客,也不是每一個顧客都是開發(fā)者。社區(qū)活動的要素包括:社區(qū)辨識與認同 (identify community)、社區(qū)的使命(mission)、平臺工具、參與機制(architecture of participation)、行為準則、知識產權和治理結構等。開源社區(qū)需要顧客發(fā)現軟件和使用軟件,培訓顧客使其了解軟件并產生購買欲望。成功的開源社區(qū)形成的模式通常經歷以下過程:(1)項目開始于一些開發(fā)者對問題的討論;(2)開發(fā)者討論要發(fā)展的項目;(3)把軟件放在開源社區(qū),讓其他的開發(fā)者共同參與;(4)建立說明文檔及FAQ,讓眾人參與討論;(5)建立一個非盈利的基金會?;鸾M織確認知識產權管理的制度,使投資人從上述生態(tài)系統中獲益。
開源軟件的開發(fā)和應用:開源軟件技術分為軟件“開發(fā)”及“應用和采購 (adoption and acquisition)”兩部分。人們往往談論軟件開發(fā)多一些,但是,通過了解美國國防部對開源軟件的方針就會發(fā)現,他們更重視“采購”和“使用”。早期美國卡內基梅隆大學軟件工程研究所(SEI)曾提出軟件能力成熟度模型(Capability Maturity Model,CMM)理論,其重點是“軟件的開發(fā)遵循著一定的流程”,流程在一定程度上保障了軟件的開發(fā)質量。這在過去是正確的,但后來美國國防部的軟件開發(fā)項目幾乎全部采用了外包策略,這才有了軟件采購技術的研究。采購技術是一種關于設計軟件需求以及驗證外包商開發(fā)的軟件是否能夠 被采納的新興技術?!安少彙迸c“開發(fā)”技術有所關聯?!伴_發(fā)”是源于“生產者”的觀點,目的是用最高效的方法研發(fā)軟件;“采購”是源于“消費者”的觀點,目的是用最低的費用來快速地得到和使用有質量的軟件。例如,生產者(工程師)關注設計和制造軟件,消費者(用戶)則更關注軟件的質量、維護以及使用。采購技術是為了收集、批準和使用軟件。對于那些有開發(fā)進度數據的軟件系統,采購者需要檢驗開發(fā)進度中的數據,以判定開發(fā)者或者項目管理者是否存在欺騙。如果已經偏離了規(guī)定的進度,或者明顯落后于計劃,管理者就可以采取措施來改正或取消項目。如果沒有可利用的進度數據,則采購者需要檢驗產品來判斷軟件質量。因此,采購者關注的是測 試和評價數據,根據需要獲取足夠的此類數據,來確保系統符合質量標準、安全性和可靠性標準。這項工作通常包含端對端測試和集成監(jiān)測。采購者還需要確保所需的項目能夠集成到現有系統中。因此,采購技術包括計劃、承包、進度管理(包括規(guī)范、控制、跟蹤和審計)、測試和評價以及最終政策和指向。在開源軟件時代,采購的一個重要目標是創(chuàng)造可信賴的軟件庫,庫中只存有通過嚴格測試和用戶驗證的軟件。雖然國內外的開源社區(qū)非常多,也提供了大量的開源軟件,但只有極少數的開源軟件能通過嚴格的測試而放在可信賴的軟件庫中。美國國防部開發(fā)Forge.mil社區(qū)就采取了這個策略。Forge.mil與軟件開發(fā)社區(qū)有許多不同,主要有以下幾個特點:(1)需要用戶提前、持續(xù)地參與系統開發(fā);(2)軟件開發(fā)者必須經常發(fā)布不同版本的軟件;(3)所提交的軟件必須可以持續(xù)升級;(4)開發(fā)者必須使用一種可模塊化、開放的流程。社區(qū)包括軟件庫、協作開發(fā)/測試的環(huán)境、軟件過程管理與方法、軟件工具與資源這四個部分。其軟件開發(fā)的方法是敏捷開發(fā)方式加上開源軟件。要實現這個方法不僅需要社區(qū)有許多的開源軟件,還需要對這些開源軟件的使用提供大量的支持,包括傳統的軟件開發(fā)工具、社交網絡以及大數據??梢岳么髷祿椒ㄋ鸭總€開源軟件的元數據,并利用云計算上面的快速運算來幫助搜尋開源軟件。開源軟件元數據是SEI所做的工作,正是得益于他們的軟件支持以及云計算平臺的聯合,才有了持續(xù)集成(continuous integration)、持續(xù)測試(continuous testing)以及持續(xù)部署(continuous deployment)等技術。其他具有代表性的開源軟件社區(qū)有Black Duck(黑鴨軟件)、Stackoverflow以及CSDN(中國程序員大本營)。Black Duck是開源代碼審計和管理領域的領導者,軟件包含Protex、Codecenter和Export三個工具。Protex用于代碼掃描,可以幫助用戶發(fā)現自己的源代碼中是否含有開源軟件代碼,如果有,則幫助用戶判斷其是否有觸犯開源軟件知識產權法律的風險。Codecenter是幫助用戶在軟件開發(fā)生命周期中管理和有效使用開源代碼的工具。Export能夠幫助用戶發(fā)現源代碼中是否含有加密算法等。Stackoverflow是一個與程序相關的技術問答網站。用戶可以在網站免費提交問題,瀏覽問題,檢索相關內容。CSDN創(chuàng)立于1999年,目前是中國最大的信息技術社區(qū)和服務平臺,為信息技術從業(yè)者提供服務。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
明年1月1日起, 所有新房禁止接煤氣! 燒飯只能用電, 華人受嚴重影響!
MIT華人博士生將ChatGPT搬進Jupyter,自然語言編程一站式搞定
淚目!Vicuna數字孿生再現10年前的自己,跨越10年對話感動無數人
榮耀×AMD攜手亮相CJ MagicBook X Pro系列銳龍版8月8日發(fā)布