蔡維德李 磊北京航空航天大學當前,許多新型技術憑藉開源方式推廣。開源 軟體的發展由來已久,目前已有數以萬計的開源社 區和模型。由於開源軟體存在侷限性,近來學術界 開始對開源軟體和社群的發展進行反思,認為 :開 源軟體的使用比開發更重要 ;要重視發展開源軟體 工程技術 ;在大資料和雲平台的環境下,應該建立 新的軟體工程,包括軟體的需求、設計、測試、整合、 部署和監測。
乙個流行的開源軟體擁有一群高效率的開發者和數量龐大的使用者群,在通常情況下,使用者無須 支付費用。這些「免費」的開源軟體往往由拿著高 薪的工程師完成。為什麼這些工程師願意無償從事 開發?以linux為例,以前很多人雖然反感微軟的 windows系統,但由於沒有其他作業系統,只能選 擇windows。當linux系統開源專案一出現,許多 軟體開發組織自願加入進來。再如,openstack的 開發也是如此,許多公司願意付薪水給員工,並將 其組成團隊進行開發,期望openstack能取代市場 的主導產品。如果市場上出現了能夠主宰市場的產 品,而其他公司卻沒有足夠的資源能在短時間內開 發出自己的產品與其競爭,這些公司就會結成聯盟 使用開源軟體開發來改變競爭態勢。安卓系統也存 在同樣的情形。該系統一直在利用開源軟體系統與
其競爭對手蘋果ios系統對抗。 由於每個參與開發的組織都有自己的管理方 式、企業文化及軟體開發流程,因此他們只能以開 源的方式合作,通過社群交換**進行交流。這是 開源軟體和開源社群的驅動力。 比爾·蓋茨說過: 「市場占有率是最重要的」[1]。 一旦占領市場,以後開發出來的軟體就不得不依靠 之前擁有市場主導地位的軟體,所以軟體公司以佔 領市場為首要任務。由於人們可以免費或低價獲取 開源軟體,所以開源成為占領市場的利器。 從許多開源軟體的事例可以發現以下幾個事實:
1. 雖然大多數開源專案沒有成功,但是成功的 開源軟體佔據了絕大多數市場份額,例如hadoop、 linux、spark和openstack。
2. 成功的開源軟體大多是被「贊助」的(意指 多個公司結成聯盟進行軟體開發),而「獨立」的 開源專案則大多失敗。
3. 成功的開源專案也可能走向失敗,其原因有: 出現了新一代產品,開源軟體領導核心離開以及企 業改變了經營策略等。
4. 許多新的軟體技術也經常使用開源軟體來進 行推廣。例如作為當前金融學領域炙手可熱的區塊 鏈技術 [2]。 「開源社群」的核心是「開源」,社群是「果」, 而不是「因」。「贊助」往往是「因」,有了大量的贊助, 才有了大量的開發人員。此外,社群這個「果」並 不意味著其相應的軟體已經成為「產品」。軟體產 品和專案是不同的,乙個軟體成為產品要花費大量的工程與測試。所以如果有人認為軟體放在開源社 區開發,就會有工程師免費參與,那是不切實際的。如果沒有贊助,相信大多數工程師都沒有興趣來開 發,願意無償開發的工程師畢竟是少數。
史蒂芬·瓦利斯(stephen wallis)在其著作中提 到了開源社群和顧客的不同 :社群是一群開發者, 對軟體有興趣,有大量的時間卻缺乏資金 ;顧客正 好相反,沒有時間但有錢。在乙個社群裡,開發者 也可能是顧客,但不是每乙個開發者都是顧客,也 不是每乙個顧客都是開發者。社群活動的要素包括 :社群辨識與認同 (identify community)、社群的 使命(mission)、平台工具、參與機制(architecture of participation)、行為準則、智財權和治理結構等。 開源社群需要顧客發現軟體和使用軟體,培訓 顧客使其了解軟體並產生購買慾望。開源社群與顧 客的關係如圖1所示。
成功的開源社群形成的模式通常經歷以下過程 :
1. 專案開始於一些開發者對問題的討論 ;
2. 開發者討論要發展的專案 ;
3. 把軟體放在開源社 區,讓其他的開發者共同參與 ;
4. 建立說明文件及 faq1,讓眾人參與討論 ;
5. 建立乙個非盈利的**會。**組織確認智財權管理的制度,使投資人從上述生態系統中獲益。
開源軟體技術分為軟體「開發」及「應用和採 購(adoption and acquisition)」兩部分。人們往往談 論軟體開發多一些,但是,通過了解美國國防部對 開源軟體的方針就會發現,他們更重視「採購」和 「使用」[3]。早期美國卡內基梅隆大學軟體工程研 究所(sei2)曾提出軟體能力成熟度模型(capability maturity model, cmm)理論,其重點是「軟體的開 發遵循著一定的流程」,流程在一定程度上保障了軟 件的開發質量。這在過去是正確的,但後來美國國 防部的軟體開發專案幾乎全部採用了外包策略,這 才有了軟體採購技術的研究。採購技術是一種關於 設計軟體需求以及驗證外包商開發的軟體是否能夠 被採納的新興技術。 「採購」與「開發」技術有所關聯。「開發」是 源於「生產者」的觀點,目的是用最高效的方法研 發軟體; 「採購」是源於「消費者」的觀點,目的是 用最低的費用來快速地得到和使用有質量的軟體。 例如,生產者(工程師)關注設計和製造軟體,消 費者(使用者)則更關注軟體的質量、維護以及使用。 採購技術是為了收集、批准和使用軟體。對於 那些有開發進度資料的軟體系統,採購者需要檢驗 開發進度中的資料,以判定開發者或者專案管理者 是否存在欺騙。如果已經偏離了規定的進度,或者 明顯落後於計畫,管理者就可以採取措施來改正或 取消專案。 如果沒有可利用的進度資料,則採購者需要檢 驗產品來判斷軟體質量。因此,採購者關注的是測 試和評價資料,根據需要獲取足夠的此類資料,來 確保系統符合質量標準、安全性和可靠性標準。這 項工作通常包含端對端測試和整合檢測 [4]。採購者 還需要確保所需的專案能夠整合到現有系統中。因此,採購技術包括計畫、承包、進度管理(包括規範、 控制、跟蹤和審計) 、測試和評價以及最終政策和 指向。 在開源軟體時代,採購的乙個重要目標是創造 可信賴的軟體庫,庫中只存有通過嚴格測試和使用者 驗證的軟體。雖然國內外的開源社群非常多,也提 供了大量的開源軟體,但只有極少數的開源軟體能 通過嚴格的測試而放在可信賴的軟體庫中 [5]。美國 國防部開發forge.mil社群就採取了這個策略。 表1比較了開源軟體的 「開發」 與 「應用和採購」。
forge.mil與軟體開發社群有許多不同,主要有 以下幾個特點 [6] : (1)需要使用者提前、持續地參與系 統開發 ; (2)軟體開發者必須經常發布不同版本的軟 件 ; (3)所提交的軟體必須可以持續公升級 ; (4)開發 者必須使用一種可模組化、開放的流程。社群包括 軟體庫、協作開發/測試的環境、軟體過程管理與 方法、軟體工具與資源這四個部分。 其軟體開發的方法是敏捷開發方式加上開源 軟體。要實現這個方法不僅需要社群有許多的開源軟體,還需要對這些開源軟體的使用提供大量的支 持,包括傳統的軟體開發工具、社交網路以及大數 據。可以利用大資料方法蒐集每個開源軟體的元數 據,並利用雲計算上面的快速運算來幫助搜尋開源 軟體。開源軟體元資料是sei所做的工作 [7],正是 得益於他們的軟體支援以及雲計算平台的聯合,才 有了持續整合 (continuous integration)、持續測試 (continuous testing)以及持續部署(continuous deployment)等技術。
大量的開源軟體造福了許多公司,也改變了軟 件工程的發展。雖然開源軟體的發展是市場的自我 選擇,但它也在一定程度上促成了開放、共享的軟 件工程,包括軟體開發、採購和應用。不僅如此, 它還改變了軟體工程教育。這些都必須通過公開的、 分享的且持續不斷的更新來實現。
ONAP開源社群
5g是下一代移動通訊技術,其應用範圍將包含無人駕駛汽車 智慧型工廠 城市 教育行業等社會生活和生產的各個領域,改變社會這一特性並不是誇大其詞。在大環境下,5g會給通訊技術工作帶來怎樣的挑戰呢?如何實現網路自動化,讓5g變成一張可以同時動態支援多種不同服務的網路,成為影響5g穩定發展的關鍵因素。為什麼...
開源社群的力量
陸主席 昨天,開發系統世界 編輯部約我為今年第八期寫一篇 刊首語 我就 開源社群 問題,寫了幾段話,請您過目。袁萌 7月29日清晨 開源社群的力量 當今,人們經由網際網路進行溝通的實際成本急劇降低,因而容易根據個人愛好 喜好 的異同形成某種觀念 或理念 一致的 網路團體 這就是 網路社群 任何 網路...
open source camp校園開源社群聚會
主要是為了件t恤和免費的東西吃才去的。不過在聽別人的講的過程中也有點點滴滴的體會,同時也擴充套件了自己的知識面。rspec這個是可以將文字語言轉換為 的工具。感覺挺新奇的。於是有了些想法 程式語言 中間語言 自然語言。似乎必須經歷這乙個過程。所以人們一味的建立自然語言到程式 的強制轉換,似乎有些勉強...