- 開(kāi)源心法
- 任旭東等
- 3792字
- 2025-03-12 18:29:50
1.3 開(kāi)源的底層邏輯
1.3.1 運(yùn)行基座:軟件生態(tài)+現(xiàn)代軟件工程
1.軟件與開(kāi)源
在2007年的D5會(huì)議上,喬布斯和比爾·蓋茨共同接受了訪談。在訪談中,他們提到了蘋(píng)果公司的最大秘密——蘋(píng)果自視為一家軟件公司——可能已經(jīng)不再是秘密。喬布斯認(rèn)為,未來(lái)軟件將無(wú)處不在,深入人們的日常生活;而蓋茨則認(rèn)為,軟件將變得更加個(gè)性化,以滿足每個(gè)用戶的獨(dú)特需求。
軟件是連接用戶和硬件的橋梁,用戶通過(guò)軟件來(lái)釋放硬件的潛力,并通過(guò)多種應(yīng)用軟件實(shí)現(xiàn)面向不同場(chǎng)景的多樣化應(yīng)用。從需求提出的那一刻起,軟件的生命周期就涵蓋了設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、維護(hù),直至最終的廢棄。與硬件單一、靜態(tài)的生命周期不同,軟件的生命周期是一個(gè)動(dòng)態(tài)的過(guò)程,類似于生物的出生、成長(zhǎng)、衰老和死亡。然而,軟件的生命周期并不總是線性的,它可以通過(guò)更新、擴(kuò)展甚至重新設(shè)計(jì)來(lái)延長(zhǎng)使用壽命。一些軟件可能會(huì)選擇開(kāi)源,由社區(qū)繼續(xù)維護(hù)和開(kāi)發(fā),這不僅延長(zhǎng)了軟件的生命周期,還可能改變其生命軌跡。
此外,軟件具有天然的生態(tài)屬性——軟件本身、開(kāi)發(fā)人員、用戶及其他利益相關(guān)者構(gòu)成了一個(gè)相互依存的網(wǎng)絡(luò),形成了復(fù)雜且不斷發(fā)展的生態(tài)系統(tǒng)。這個(gè)生態(tài)系統(tǒng)的特點(diǎn)是相互作用、合作和競(jìng)爭(zhēng)并存。在這一生態(tài)系統(tǒng)中,開(kāi)源協(xié)作為軟件開(kāi)發(fā)提供了一種新型的合作模式。它不僅降低了開(kāi)發(fā)的門檻,還為用戶提供了各種各樣的軟件選擇,使軟件更加易于獲取和使用。
2.開(kāi)源模式助力現(xiàn)代軟件工程
在傳統(tǒng)的軟件工程領(lǐng)域,“瀑布模型結(jié)合CMM(Capability Maturity Model,一般譯作軟件能力成熟度模型)”定義了經(jīng)典的工程模式。通過(guò)強(qiáng)化過(guò)程管理,這種模式使原本混亂無(wú)序的軟件開(kāi)發(fā)過(guò)程變得有序、可控,對(duì)于增強(qiáng)軟件開(kāi)發(fā)的過(guò)程能力和提高產(chǎn)品質(zhì)量功不可沒(méi)。同時(shí),軟件開(kāi)發(fā)的規(guī)?;矟M足了社會(huì)對(duì)軟件產(chǎn)品日益增長(zhǎng)的需求。
瀑布開(kāi)發(fā)模式的出現(xiàn)是為了應(yīng)對(duì)20世紀(jì)60年代的“軟件危機(jī)”,由Winston Royce在1970年提出。盡管他沒(méi)有使用“瀑布”這一術(shù)語(yǔ),但他描述了一種線性順序的開(kāi)發(fā)流程,并指出了這種方法的潛在風(fēng)險(xiǎn)。隨著瀑布開(kāi)發(fā)模式成為軟件開(kāi)發(fā)的主流,其缺點(diǎn)也逐漸顯現(xiàn)。最主要的問(wèn)題是在開(kāi)發(fā)階段需要形成大量的反饋文檔,這不僅極大地增加了工作量,也讓開(kāi)發(fā)過(guò)程變得過(guò)于煩瑣和重復(fù)。
因此,從20世紀(jì)90年代開(kāi)始,“輕量級(jí)”的開(kāi)發(fā)方法逐漸興起。1995年,Jeff Sutherland和Ken Schwaber聯(lián)合發(fā)表了一篇論文。在這篇論文中,他們首次提出了Scrum的概念,后來(lái)這一概念逐漸發(fā)展成為敏捷開(kāi)發(fā)的重要流派。Scrum定義了一個(gè)運(yùn)作框架,重點(diǎn)關(guān)注項(xiàng)目流程、團(tuán)隊(duì)管理,包括需求收集、團(tuán)隊(duì)協(xié)作、項(xiàng)目運(yùn)營(yíng)等方面。最終,在2001年,《敏捷宣言》的發(fā)布標(biāo)志著“敏捷運(yùn)動(dòng)”的正式開(kāi)啟。
從運(yùn)作機(jī)理來(lái)看,相較于瀑布開(kāi)發(fā)模式,敏捷開(kāi)發(fā)模式更強(qiáng)調(diào):個(gè)體和互動(dòng)高于流程和工具;工作的軟件高于詳盡的文檔;客戶合作高于合同談判;響應(yīng)變化高于遵循計(jì)劃。這種轉(zhuǎn)變意味著傳統(tǒng)工業(yè)中對(duì)細(xì)致計(jì)劃和嚴(yán)格過(guò)程控制的依賴開(kāi)始減弱,取而代之的是一種全新的思維模式:軟件開(kāi)發(fā)過(guò)程被視為類似于植物自然生長(zhǎng)的過(guò)程,從底層開(kāi)始,逐步有序地向上發(fā)展。這種方法不僅與軟件開(kāi)發(fā)過(guò)程中不斷探索的特性相契合,而且能夠盡早地交付滿足客戶預(yù)期的產(chǎn)品。
這種邏輯與開(kāi)源協(xié)作的理念高度一致。自1998年Open Source一詞被正式提出以來(lái),隨著軟件工程中敏捷開(kāi)發(fā)方法的發(fā)展,開(kāi)源運(yùn)動(dòng)已經(jīng)成為全球范圍內(nèi)不可阻擋的趨勢(shì),并為現(xiàn)代軟件工程提供了新的范式。
隨著開(kāi)源軟件從MVP(Minimum Viable Product,最小可行產(chǎn)品)版本開(kāi)始發(fā)布,并通過(guò)后續(xù)版本的持續(xù)迭代和更新,用戶被邀請(qǐng)參與軟件的共同定義和開(kāi)發(fā)過(guò)程。這種方式可以更快、更直接地滿足用戶需求。開(kāi)源的這些特點(diǎn)與現(xiàn)代軟件開(kāi)發(fā)模式高度契合,并推動(dòng)了軟件工程的持續(xù)優(yōu)化。
SaaS(Software as a Service,軟件即服務(wù))正逐漸成為軟件交付的主導(dǎo)模式。這一模式的演進(jìn)歷程可追溯至大型機(jī)時(shí)代,當(dāng)時(shí)軟件主要解決特定的單一任務(wù)。隨后,隨著個(gè)人計(jì)算機(jī)的普及,軟件開(kāi)始滿足個(gè)人辦公信息化的需求。進(jìn)入21世紀(jì),互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的興起帶來(lái)了APP的革命,它們改變了人們的生產(chǎn)和生活方式,成為這一時(shí)期的軟件交付主導(dǎo)模式。如今,在數(shù)字化和智能化浪潮的推動(dòng)下,SaaS正在重塑企業(yè)的商業(yè)模式和生產(chǎn)流程,確立其作為軟件交付主要模式的地位,如圖1-1所示。

圖1-1 SaaS正在成為軟件交付主要模式
根據(jù)華為內(nèi)部的調(diào)查報(bào)告,全球軟件市場(chǎng)的SaaS訂閱收入占比將從2020年的約30%增長(zhǎng)至2030年的約81%。這一增長(zhǎng)趨勢(shì)在美國(guó)市場(chǎng)尤為顯著,盡管其市場(chǎng)化程度已經(jīng)相當(dāng)成熟,但toB SaaS領(lǐng)域的投資年增長(zhǎng)率仍高達(dá)40%。在中國(guó),toB SaaS市場(chǎng)也正處于快速發(fā)展階段。展望未來(lái),SaaS不僅將成為推動(dòng)產(chǎn)業(yè)數(shù)字化的關(guān)鍵力量,還將徹底改變企業(yè)的商業(yè)邏輯和生產(chǎn)方式。
在SaaS的交付趨勢(shì)下,軟件與開(kāi)源之間的關(guān)系變得日益緊密,這已成為產(chǎn)業(yè)界關(guān)注的焦點(diǎn)。SaaS提供的是全面的軟件解決方案,而云服務(wù)則是這一解決方案中不可或缺的組成部分。開(kāi)源軟件通??梢酝ㄟ^(guò)云服務(wù)這一平臺(tái)提供給用戶,而云服務(wù)提供商在構(gòu)建SaaS平臺(tái)時(shí),也普遍采用了開(kāi)源架構(gòu)和工具。因此,開(kāi)源在構(gòu)建SaaS生態(tài)系統(tǒng)時(shí)扮演著至關(guān)重要的角色。
盡管開(kāi)源軟件具有諸多優(yōu)勢(shì),但要真正實(shí)現(xiàn)其增強(qiáng)軟件企業(yè)核心競(jìng)爭(zhēng)力的目標(biāo),仍需要克服一些挑戰(zhàn)。企業(yè)不應(yīng)持有“薅羊毛”的心態(tài),僅僅將開(kāi)源軟件視為降低開(kāi)發(fā)成本的廉價(jià)工具。開(kāi)源是現(xiàn)代軟件工程戰(zhàn)略發(fā)展的重要一環(huán),企業(yè)應(yīng)當(dāng)遵循這一戰(zhàn)略的核心原則,建立自己的開(kāi)源生態(tài)系統(tǒng)。
1.3.2 可持續(xù)發(fā)展:開(kāi)源軟件項(xiàng)目+商業(yè)價(jià)值實(shí)現(xiàn)
1.開(kāi)源軟件項(xiàng)目與源代碼公開(kāi)
根據(jù)OSI的定義,開(kāi)源軟件項(xiàng)目是指源代碼公開(kāi)可見(jiàn),并且允許自由修改、分發(fā)和使用的軟件項(xiàng)目。這意味著任何人都可以查看源代碼,對(duì)其進(jìn)行修改和分發(fā),而不需要事先獲得授權(quán)或支付許可費(fèi)用。
開(kāi)源軟件項(xiàng)目通常由社區(qū)或志愿者團(tuán)隊(duì)開(kāi)發(fā),他們?cè)诠泊a庫(kù)中共享代碼和文檔。社區(qū)成員可以貢獻(xiàn)代碼和文檔,通過(guò)協(xié)作改進(jìn)軟件。這種開(kāi)放式的開(kāi)發(fā)模式有助于加速軟件的開(kāi)發(fā)和迭代,提高軟件的質(zhì)量和穩(wěn)定性。此外,公開(kāi)源代碼使開(kāi)源軟件項(xiàng)目能夠吸引更多用戶和開(kāi)發(fā)者,形成一個(gè)龐大的生態(tài)系統(tǒng),推動(dòng)軟件的發(fā)展和創(chuàng)新。
在開(kāi)源領(lǐng)域的經(jīng)典著作《大教堂與集市》(Eric S. Raymond著)中,開(kāi)源的理念被比喻為“集市”,它代表了一種低成本、開(kāi)放式的協(xié)作方式,其特點(diǎn)是項(xiàng)目周期短,但品質(zhì)可能參差不齊。與之相對(duì)的是閉源開(kāi)發(fā),它類似于“大教堂”的建設(shè),品質(zhì)控制更為嚴(yán)格,但成本較高,開(kāi)發(fā)周期也較長(zhǎng)。
盡管“大教堂”和“集市”的模式將長(zhǎng)期并存,但由于技術(shù)研發(fā)的開(kāi)放性和人才流動(dòng)性,企業(yè)實(shí)現(xiàn)壟斷變得不現(xiàn)實(shí)。競(jìng)爭(zhēng)與合作才是永恒的主題。從這個(gè)角度來(lái)看,開(kāi)源所帶來(lái)的持續(xù)迭代與產(chǎn)品升級(jí),以及基于開(kāi)源構(gòu)建的人才生態(tài)系統(tǒng),能夠?yàn)槠髽I(yè)帶來(lái)持久的活力。
然而,在以商業(yè)為主導(dǎo)的市場(chǎng)環(huán)境中,“源代碼公開(kāi)”似乎與技術(shù)專利保護(hù)的原則相悖。開(kāi)源常常被貼上“共享智慧”“協(xié)作開(kāi)發(fā)”和“免費(fèi)”的標(biāo)簽,這引發(fā)了一些質(zhì)疑。但事實(shí)上,免費(fèi)并不意味著與商業(yè)化不相容,它通過(guò)模式創(chuàng)新,使商業(yè)運(yùn)營(yíng)變得更加高效和合理。
2.開(kāi)源運(yùn)動(dòng)下逐步走出的商業(yè)模式
從自由軟件運(yùn)動(dòng)的興起到開(kāi)源概念的確定,再到開(kāi)源定義和許可證的發(fā)布,以及不斷涌現(xiàn)的各類開(kāi)源項(xiàng)目,這一過(guò)程見(jiàn)證了從早期“自由精神”與商業(yè)看似沖突,到刻意避免Free一詞的免費(fèi)含義,進(jìn)而確定“開(kāi)放源代碼”的內(nèi)涵,使之與商業(yè)和諧共存,直至各種開(kāi)源商業(yè)模式取得成功。
在開(kāi)源運(yùn)動(dòng)的背景下,Linux操作系統(tǒng)是一個(gè)典型的代表。Linux操作系統(tǒng)擁有眾多系統(tǒng)開(kāi)發(fā)商,它開(kāi)創(chuàng)了由多家公司共同主導(dǎo)一款開(kāi)源產(chǎn)品的商業(yè)化模式。其中,最著名的開(kāi)發(fā)商是Red Hat,該公司在2018年被IBM以340億美元的價(jià)格收購(gòu),這筆交易至今仍是開(kāi)源領(lǐng)域最大的一筆收購(gòu)交易。
此外,基于Linux操作系統(tǒng)開(kāi)發(fā)的Android操作系統(tǒng)橫空出世,迅速成為全球最廣泛使用的智能手機(jī)操作系統(tǒng)。同時(shí),全球最大的開(kāi)源開(kāi)發(fā)者社區(qū)GitHub被微軟以75億美元的價(jià)格收購(gòu)……這些標(biāo)志性事件不僅展示了開(kāi)源產(chǎn)品的商業(yè)價(jià)值,也證明了在當(dāng)今大企業(yè)主導(dǎo)的開(kāi)源浪潮中,開(kāi)源模式能夠穩(wěn)固地立足并持續(xù)發(fā)展。
1.3.3 生態(tài)繁榮:開(kāi)發(fā)者貢獻(xiàn)+個(gè)人英雄情結(jié)
在前面的內(nèi)容中,我們從宏觀角度分析了開(kāi)源的產(chǎn)生和發(fā)展的底層邏輯。而從微觀角度,即開(kāi)發(fā)者的視角來(lái)看,正是開(kāi)源社區(qū)所倡導(dǎo)的“能者治理,才配其位”的理念,使眾多優(yōu)秀社區(qū)開(kāi)發(fā)者的貢獻(xiàn)得以被認(rèn)可和看見(jiàn)。當(dāng)開(kāi)發(fā)者的貢獻(xiàn)被整合到開(kāi)源項(xiàng)目中,并隨著后續(xù)版本的發(fā)布被廣大用戶下載并使用時(shí),他們將獲得巨大的成就感和自豪感。
在開(kāi)源社區(qū)中,頂尖開(kāi)發(fā)者扮演著“仁慈的獨(dú)裁者”的角色,他們并非傳統(tǒng)意義上的獨(dú)裁者,而是以一種更加溫和、謙遜的方式領(lǐng)導(dǎo)社區(qū)。這些開(kāi)發(fā)者通常具備卓越的技術(shù)能力和豐富的項(xiàng)目經(jīng)驗(yàn),能夠解決技術(shù)難題,并對(duì)項(xiàng)目的發(fā)展方向做出明智的決策。這種領(lǐng)導(dǎo)風(fēng)格在開(kāi)源社區(qū)中非常有效,能夠凝聚社區(qū)力量,推動(dòng)項(xiàng)目的持續(xù)進(jìn)步。因此,“仁慈的獨(dú)裁者”在開(kāi)源世界中被視作“英雄”。
開(kāi)源社區(qū)中不乏這樣的“英雄”人物,例如Linux內(nèi)核的創(chuàng)始人Linus Torvalds,他以開(kāi)明和睿智的領(lǐng)導(dǎo)風(fēng)格,以及個(gè)人魅力,吸引了全球頂尖開(kāi)發(fā)者共同貢獻(xiàn)力量,推動(dòng)Linux內(nèi)核的不斷進(jìn)步和發(fā)展;還有Python語(yǔ)言的創(chuàng)始人Guido van Rossu,他一直致力于推廣和普及Python語(yǔ)言,為Python社區(qū)的發(fā)展作出巨大貢獻(xiàn)。這種“英雄”般的待遇和成就感是推動(dòng)開(kāi)源運(yùn)動(dòng)持續(xù)繁榮的內(nèi)在動(dòng)力。
正如中國(guó)工程院院士孫凝暉所說(shuō):“開(kāi)源模式不僅僅是一種商業(yè)模式,它也是一種生態(tài)構(gòu)建方法;開(kāi)源是一種共享共治的精神;開(kāi)源是一種打破壟斷、開(kāi)放創(chuàng)新的精神;開(kāi)源是一種鼓勵(lì)奉獻(xiàn)的精神;開(kāi)源不僅僅是公開(kāi)源代碼,更重要的是協(xié)作開(kāi)發(fā)流程的建立與社區(qū)治理機(jī)制的建設(shè)。”正是開(kāi)源的宏觀正義性和微觀成就感,以及商業(yè)和生態(tài)的共同支持,共同構(gòu)成了開(kāi)源的完整圖景。
- 基于粒計(jì)算模型的圖像處理
- Kibana Essentials
- 測(cè)試驅(qū)動(dòng)開(kāi)發(fā):入門、實(shí)戰(zhàn)與進(jìn)階
- Learning RxJava
- Windows系統(tǒng)管理與服務(wù)配置
- Mastering SVG
- Selenium Design Patterns and Best Practices
- Magento 1.8 Development Cookbook
- 前端HTML+CSS修煉之道(視頻同步+直播)
- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例
- Swift 4從零到精通iOS開(kāi)發(fā)
- Mastering VMware Horizon 7(Second Edition)
- 超簡(jiǎn)單:用Python讓Excel飛起來(lái)(實(shí)戰(zhàn)150例)
- 從零開(kāi)始:C語(yǔ)言快速入門教程
- Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)例教程(視頻講解版)