- 開源項(xiàng)目成功之道
- (美)約翰·梅爾蒂卡
- 2836字
- 2025-07-11 16:45:19
1.3 運(yùn)用開源
開源有著漫長而曲折的歷史,它的發(fā)展主要是由對技術(shù)充滿熱情的愛好者推動的,隨著時(shí)間的推移,商業(yè)投資也逐漸融入開源,而這些開源社群則始終保持了其原有的理?念。
經(jīng)過多年的努力,人們嘗試了許多成功和不太成功的開源模式。開源的概念不僅應(yīng)用在計(jì)算機(jī)領(lǐng)域,還應(yīng)用到了拼布圖案、家釀啤酒、基因組模式研究等領(lǐng)域。通過大眾的努力,我們發(fā)現(xiàn)了一些成功應(yīng)用開源的模式,下面讓我們來看看這些模?式。
1.3.1 愛好者之間的信息分享
我們看到的最早的(也可以說是最普遍的)開源應(yīng)用只是能夠與他人分享信息和知識,以解決共同的問題。這通常是開源的基本動機(jī),與開源基于黑客和創(chuàng)客文化的歷史精?神相契合。
信息分享的形式有很多種。雖然在開源領(lǐng)域中,我們通常會想到代碼,但實(shí)際上,也可以通過設(shè)計(jì)、工具或流程的文檔、圖表、數(shù)據(jù)集以及其他類型的媒介進(jìn)行分享。我將在第3章中介紹許可證在這些非代碼環(huán)境中的運(yùn)作方式,但是要知道,幾乎每種類型的工作和社群都期望有相應(yīng)的許可證存?在。
一些專注于信息分享的開源項(xiàng)目包括以下4個(gè)。
● Ubertooth:該項(xiàng)目構(gòu)建了一個(gè)用于藍(lán)牙實(shí)驗(yàn)的開源無線開發(fā)平臺。該項(xiàng)目不僅構(gòu)建了硬件的軟件堆棧,也開源了硬件的設(shè)計(jì)圖,供其他人構(gòu)建實(shí)際的硬件(并培養(yǎng)了一個(gè)獨(dú)立社群,提供硬件套件以及完全組裝好的無線接收器)。
● PiFire:該項(xiàng)目為煙熏爐或燒烤爐提供了一個(gè)支持無線網(wǎng)絡(luò)的智能控制器,包括基于Raspberry PI平臺的軟件設(shè)計(jì)和硬件設(shè)?計(jì)。
● SecurityExplained:該項(xiàng)目專注于為軟件安全社群提供各種信息。
● Darwin Core:該項(xiàng)目是一個(gè)由Darwin Core維護(hù)興趣小組維護(hù)的標(biāo)準(zhǔn),標(biāo)準(zhǔn)中包括一個(gè)術(shù)語表,旨在促進(jìn)生物多樣性信息的分?享。
“Awesome列表”是社群合作的一種方式,它們匯集了特定主題領(lǐng)域內(nèi)的一些最佳資源。我知道的一些很棒的“Awesome列表”如?下。
● Awesome 3D Printing:為3D打印的愛好者提供各種鏈接和資?源。
● Awesome Interviews(工作面試問題列表):可以幫助求職者更好地準(zhǔn)備工作面試,同時(shí)也讓面試官能夠更好地篩選和評估申請各類職位的人?才。
與編程語言和框架相關(guān)的“Awesome列表”也有很多,如NodeJS、Erlang和極簡框?架。
1.3.2 基礎(chǔ)技術(shù)
在基礎(chǔ)技術(shù)中,有一個(gè)概念被稱為UNIX方式或UNIX哲學(xué),它描述了一種最小化和模塊化的軟件編寫方法,這種方法是由Douglas Mcllroy和Peter H.Salus等人最先闡述的,并在Ken Thompson和Dennis Ritchie的著作中被進(jìn)一步推廣。雖然對于UNIX方式有多種解釋,但基本上可以歸結(jié)為一個(gè)核心概念:專心做好一件事。因?yàn)殚_源軟件社群成員大多有 UNIX 背景,所以開源項(xiàng)目也秉承了這一理念。我們所依賴的Linux和其他UNIX派生系統(tǒng)中的許多基本命令行工具的設(shè)計(jì)都遵循了這一原則,如以下3個(gè)工?具。
● grep:一個(gè)命令行工具,用于在純文本數(shù)據(jù)集中搜索匹配正則表達(dá)式的?行。
● sed:代表流編輯器,用于解析和轉(zhuǎn)換文?本。
● cat:該工具用于從一個(gè)程序中獲取輸出并寫入標(biāo)準(zhǔn)輸出,以便作為另一個(gè)程序的輸入。
現(xiàn)代軟件具有多層庫和框架,可以構(gòu)建完整的解決方案,并且這些庫和框架都是以同樣的極簡主義和以集成為中心的思維構(gòu)建的。以下是我們經(jīng)常看到的一些開源項(xiàng)?目。
● 安卓項(xiàng)目:構(gòu)建了一個(gè)底層操作系統(tǒng),截至2021年,支持超過30億臺活躍設(shè)?備。
● Ruby on Rails:推廣了Model-View-Controller(MVC)的Web開發(fā)方法,這對Web開發(fā)產(chǎn)生了重大影響,截至2022年,全球有超過120萬個(gè)網(wǎng)站使用該框?架。
● Pandoc:文檔轉(zhuǎn)換工具中的“瑞士軍刀”,支持將文檔轉(zhuǎn)換為幾十種不同的格式(在本書的創(chuàng)作中非常有用)。
● Memcached:這是一個(gè)分布式的高性能鍵值存儲系統(tǒng),可以通過減少訪問數(shù)據(jù)不經(jīng)常變化的數(shù)據(jù)庫的方式來加速Web應(yīng)用程?序。
你會注意到這些項(xiàng)目主要是開發(fā)者工具,這不是巧合。開源大大降低了構(gòu)建軟件的成本,更重要的是,開源也使高質(zhì)量的工具、編程語言和框架變得更容易獲取,這幫助許多Web 2.0時(shí)代的公司成功啟動,如Google、Meta、Netflix(網(wǎng)飛)等數(shù)百家公?司。
1.3.3 構(gòu)建技術(shù)生態(tài)系統(tǒng)
有一些項(xiàng)目屬于前面的基礎(chǔ)技術(shù)類別,但開源項(xiàng)目的形成和動機(jī)在本質(zhì)上與構(gòu)建生態(tài)系統(tǒng)更相關(guān)。換句話說,構(gòu)建這些項(xiàng)目的目的是,使得無論是開源解決方案,還是商業(yè)解決方案,都能夠具有一定的兼容性和技能適配性。這背后有多種原因,例如在行業(yè)水平或垂直市場上建立標(biāo)準(zhǔn),探索新的技術(shù)領(lǐng)域,或者整合競爭性解決方案。在這些解決方案中,投資會被集中在更高層次的棧上,而這個(gè)層次的技術(shù)已經(jīng)變得商品?化。
我們將在第4章中深入探討通過開源構(gòu)建技術(shù)生態(tài)系統(tǒng)的內(nèi)容。以下是一些屬于此類別的項(xiàng)?目。
● Kubernetes:這是一個(gè)開源系統(tǒng),用于自動化部署、擴(kuò)展和管理容器化應(yīng)用程序。它針對Kubernetes的解決方案構(gòu)建了Kubernetes認(rèn)證計(jì)劃,目前擁有超過130種產(chǎn)品,同時(shí)Kubernetes認(rèn)證服務(wù)提供商計(jì)劃也已經(jīng)有250多家供應(yīng)商提供支持和服務(wù)。這些項(xiàng)目由Kubernetes社群構(gòu)建并由CNCF工作人員管?理。
● Anuket Assured:這是一個(gè)開源的、社群主導(dǎo)的合規(guī)性和驗(yàn)證項(xiàng)目,用于展示商業(yè)云原生、虛擬化產(chǎn)品和服務(wù)的準(zhǔn)備情況和可用性,包括NFVI、云原生基礎(chǔ)設(shè)施、VNF和CNF,它們使用了Anuket和ONAP組?件。
● The Zowe Conformance Program:該項(xiàng)目建立了與Zowe開源項(xiàng)目構(gòu)建或集成解決方案之間的互操作性需求。同樣,這是一個(gè)由社群構(gòu)建的項(xiàng)目,并由開放大型機(jī)項(xiàng)目工作人員管理,截至 2022年,已經(jīng)提供了70多種獨(dú)特的解決方案和服務(wù)產(chǎn)?品。
需要注意的一點(diǎn)是,雖然這些項(xiàng)目旨在構(gòu)建技術(shù)生態(tài)系統(tǒng),但它們對開源許可證和代碼倉庫的重用沒有影響。真正確立代碼重用和其他實(shí)現(xiàn)規(guī)則的是許可證的條款。這些項(xiàng)目純粹是為了提供一個(gè)供應(yīng)商中立和社群運(yùn)營的程序,以識別和認(rèn)可各種實(shí)現(xiàn)。
1.3.4 提供高質(zhì)量的免費(fèi)軟件
雖然我們中的許多人都很幸運(yùn)地出生或生活在一個(gè)能夠輕松購買和獲取軟件的環(huán)境中,但并非所有人都如此。即使對于富裕地區(qū)的人來說,某些軟件的高成本也會讓人望而卻步。想象一家創(chuàng)業(yè)公司,可能會努力控制成本,或者一個(gè)學(xué)校,可能需要成百上千份軟件副本。但免費(fèi)軟件使得這個(gè)本來無法實(shí)現(xiàn)的目標(biāo)成為可?能。
然而,同等重要的一個(gè)方面是自由,并不僅僅是指“免費(fèi)啤酒”的那種免費(fèi),而是指擁有自由或開放的使用權(quán)。擁有高質(zhì)量的軟件,用戶就可以根據(jù)自己的需求和工作流程修改軟件,或者可能在上游項(xiàng)目停滯不前時(shí)保持更新,這是自由軟件運(yùn)動的核心原則之?一。
Linux發(fā)行版,如Debian、Fedora、Ubuntu、ArchLinux等,為免費(fèi)桌面環(huán)境鋪平了道路,讓用戶在使用計(jì)算機(jī)時(shí)更加靈活;在許多情況下,這也讓使用現(xiàn)代軟件重用過時(shí)的硬件成為可能,這在那些難以獲得現(xiàn)代硬件的地區(qū)很有價(jià)值。此外,我們還看到大多數(shù)主要的桌面應(yīng)用程序都有活躍的開源替代品,以下僅是一小部分。
● LibreOffice:該應(yīng)用程序提供了一個(gè)與Microsoft Office相當(dāng)?shù)耐暾k公套?件。
● GNU圖像操作程序(GNU Image Manipulation Program,GIMP):該應(yīng)用程序的圖像編輯和操作類似于Adobe Photoshop。
● Inkscape:這是一個(gè)開源矢量圖形編輯器,很像Adobe Illustrator。
● Mozilla Firefox:它源于1998年Netsuite Communicator的開源版本,提供了一個(gè)先進(jìn)且安全的網(wǎng)絡(luò)瀏覽?器。
這個(gè)列表還在不斷增長,當(dāng)我們談?wù)撻_源軟件時(shí),都會認(rèn)為它是一個(gè)被更廣泛認(rèn)可的領(lǐng)域。這也是社群增長不僅僅是開發(fā)者增長的一個(gè)例子;在上述列表中,你可以看到經(jīng)驗(yàn)豐富的項(xiàng)目經(jīng)理、用戶界面專家以及具有特定領(lǐng)域知識和專業(yè)能力的個(gè)人匯聚在一起,共同構(gòu)建用于專業(yè)環(huán)境的高質(zhì)量軟?件。
現(xiàn)在我們已經(jīng)了解了開源是如何實(shí)現(xiàn)的,下面讓我們看一些項(xiàng)目,并了解他們選擇開源的動?機(jī)。
- Python快樂編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- Mobile Application Development:JavaScript Frameworks
- 深入實(shí)踐Spring Boot
- Vue.js快跑:構(gòu)建觸手可及的高性能Web應(yīng)用
- Nexus規(guī)模化Scrum框架
- PostgreSQL Replication(Second Edition)
- Learning ELK Stack
- Building an RPG with Unity 2018
- Node Cookbook(Second Edition)
- 區(qū)塊鏈技術(shù)進(jìn)階與實(shí)戰(zhàn)(第2版)
- C++編程兵書
- 精通MySQL 8(視頻教學(xué)版)
- Extending Unity with Editor Scripting
- Zabbix Performance Tuning
- JavaScript悟道