讀開源項目成功之道01什么是開源

1. 自由軟件
1.1. 自由軟件運動發端于個人計算機及軟件產業起飛的20世紀80年代初期
-
1.1.1. 在個人計算機時代,開源創新很“煎熬”?,而在互聯網時代,開源創新很“光鮮”
-
1.1.2. 從表象上看,在個人計算機時代,開源創新沒有取得商業成功,而在互聯網時代,開源創新造就了互聯網產業的蓬勃發展
1.2. 開源創新在互聯網時代成為主流的因素
-
1.2.1. 開源是應對不確定性時代挑戰的重要創新模式
- 1.2.1.1. 面對互聯網產業的巨大不確定性,創新者通過開放源代碼,以更低的成本吸引更多創新同路人和“新潮”消費者參與到新技術新產品的迭代和傳播之中,以尋求將邊緣低端產品迅速轉變為主流高端產品
-
1.2.2. 開源是挑戰行業壟斷者的重要創新途徑
-
1.2.2.1. 20世紀90年代,微軟是個人計算機時代的壟斷者,并試圖利用其在個人計算機上的壟斷地位將其控制力延伸至新興的互聯網產業
-
1.2.2.2. 互聯網時代的不確定性遠非微軟的閉源模式所能駕馭,以Google為代表的互聯網挑戰者堅持走開源發展路線,成功打破了微軟的壟斷企圖,成為互聯網時代的商業贏家
-
-
1.2.3. 開源是激發創新者及其社區創新活力的重要創新手段
-
1.2.4. 開源是保障軟件安全發展的“陽光”創新機制
- 1.2.4.1. 廣大開源社區參與者成為發現和解決軟件問題的主要力量,任何軟件問題在無數開發者的“眾目睽睽”之下都“無處遁形”?
1.3. 人工智能時代
-
1.3.1. 人工智能時代,開源作為應對不確定性挑戰的創新模式,其內在邏輯沒有變
-
1.3.1.1. 人工智能的不確定性依然存在
1.3.1.1.1. 大模型如何盈利尚未達成共識,多元探索勢不可擋
1.3.1.1.2. 大模型能否實現通用人工智能尚存爭議
-
-
1.3.2. 人工智能時代,開源作為挑戰行業壟斷的創新途徑,其內在邏輯沒有變
-
1.3.2.1. Meta為抗衡OpenAI,重新扛起開源大旗,吸引了大量規模追隨者
-
1.3.2.2. 人工智能時代的開源與閉源之爭將長期存在
-
-
1.3.3. 人工智能時代,開源作為激發創新者活力之創新手段,其內在邏輯沒有變
- 1.3.3.1. 越來越多的人工智能研究者更加傾向于開放自己的研究成果,從而獲得同行的關注和參與
-
1.3.4. 人工智能時代,開源作為保障安全發展的“陽光”機制,其內在邏輯沒有變
- 1.3.4.1. 人們更傾向于開源安全的“陽光”機制,即通過大眾參與保障人工智能的安全發展
2. 開源簡史
2.1. 數百年來,新的技術和創新都是在彼此分享思想的過程中誕生的,在每個發展階段中都能看到前人所打下的基礎
- 2.1.1. 唯一的挑戰就是思想的傳播能力,古登堡發明了印刷機,加速了知識的傳播,進而開啟了文藝復興時代
2.2. 協作精神和商業化之間一直存在著一種天然的緊張關系
- 2.2.1. 15世紀和16世紀建立專利制度的初衷是保護發明者,但在許多情況下,這一行為也造成了扼殺開放協作的壟斷
2.3. 開源作為一個術語可以追溯到1998年2月3日,但其精神和理念可以追溯到幾十年前
-
2.3.1. 查看、修改和分享,以及開放協作的概念,可以追溯到互聯網和計算機出現之前
-
2.3.2. 這在黑客和創客文化中很常見,兩者都根植于工匠精神
2.4. 在計算機領域,開源可以追溯到1955年加利福尼亞州洛杉磯市的一個房間里
2.5. 在20世紀50年代和60年代,隨著計算機技術的興起,以及在學術界的應用,開放協作和去中心化社群成為常態
2.6. 目標代碼是受版權保護的,就像文學書籍一樣
2.7. 20世紀70年代末到80年代初,布告欄系統(Bulletin Board System,BBS)開始興起
2.8. Richard Stallman
-
2.8.1. 他于1983年啟動了GNU項目,旨在編寫一個完整的、不受軟件公司源代碼許可限制的操作系統
-
2.8.1.1. GNU編譯器套件(GNU Compiler Collection,GCC)
-
2.8.1.2. GNU調試器
-
2.8.1.3. GNU Emacs
-
-
2.8.2. 傾向于更自由的軟件方法(意味著許可證應確保代碼和衍生作品仍然是自由軟件)?,而不是更寬松的許可證方法
-
2.8.3. Stallman的工作為如今的開源項目奠定了基礎
2.9. Linus Torvalds
-
2.9.1. 他在1991年發布了一個名為Linux的UNIX克隆版本
-
2.9.2. Linus的工作則將開源和自由軟件帶入了主流
-
2.9.3. Linux的獨特之處在于,除了商業應用和成功,業余愛好者和技術愛好者社群也同樣強大
-
2.9.4. Debian Linux和Slackware是早期的發行版,但至今仍擁有龐大的用戶群
-
2.9.5. 1994年和1995年,當Linux開始在商業領域取得一些初步進展時,一些公司試圖注冊Linux這個術語的商標
-
2.9.5.1. Linus盡其所能與他們抗爭,并最終獲得了Linux的商標
-
2.9.5.2. 隨后,Linus與Linux International達成合作,使該組織成為持有Linux商標的機構
-
2.10. 1997年,自由軟件的主要影響者之一Eric Raymond寫了一篇文章《大教堂和集市》(“The Cathedral and the Bazaar”),講述了他作為早期自由軟件項目維護者的經歷以及他對Linux社群的觀察
-
2.10.1. “大教堂”?,軟件在閉門開發后公開發布(如各種GNU項目)
-
2.10.2. “集市”?,軟件是在公眾視野中通過互聯網公開開發的(如Linux社群的模式)?
2.11. 從歷史的角度來看,開源被認為是促進網景通信公司在1998年1月發布Netsuite Communicator源代碼并啟動Mozilla項目的推動力
2.12. Apache軟件基金會(Apache Software Foundation,ASF)是早期的開源基金會之一,它成立于1999年,是一個慈善組織
2.13. 云原生計算基金會(Cloud Native Computing Foundation,CNCF)
3. 開源
3.1. 開源不僅是主要的軟件開發方法論,還是助力快速創新、分散協作、生態系統建設和職業發展的卓越戰略
3.2. 如今,無論在哪里,都離不開與開源的互動
- 3.2.1. 隨著開源的不斷涌現,隨之而來的是巨大的多樣性
3.3. 開源項目的運營方式也同樣重要
-
3.3.1. 開源項目的技術棧像是一門科學,而項目運營則更像是一門藝術
-
3.3.2. 沒有兩個項目是完全相同的,對一個項目有效的方法可能不適用于另一個項目
3.4. 開源是一門藝術,而不是一門科學
3.5. 開源是一種可以讓多個人和組織公開協作構建軟件的方式
- 3.5.1. 涉及許可證,許可證規定了重用的條款
3.6. 開源是指源代碼可以自由提供給他人進行修改和再分發
-
3.6.1. 開源產品通常允許你使用源代碼、設計文檔或產品內容
-
3.6.2. 開源模式是一種去中心化的軟件開發模式,鼓勵開放協作
3.7. 自由提供源代碼的概念,允許任何人查看、修改并與他人分享源代碼
- 3.7.1. 不僅免費提供軟件(也稱為免費軟件)?,還允許用戶查看源代碼,根據自己的需求對其進行修改,并與他人分享
3.8. 側重于開放協作,這意味著任何人都可以參與代碼的構建
3.9. 一個去中心化社群的主題
-
3.9.1. 這意味著開源項目真的是全球性的
-
3.9.2. 許可證模式(任何人都可以自由查看、修改和分享代碼)和分發模式都意味著世界上任何找到并使用此代碼的人都是社群的一部分
-
3.9.3. 一條跨地區、文化、性別、背景、年齡和能力的連接紐帶
3.10. 開放源碼促進會一直維護著開源的定義,該定義被視為衡量一段代碼或項目是否真正開源的標準定義
3.11. 許可證被認為是開源的基本條件
-
3.11.1. 真正使開源具有變革性的是開放協作和去中心化社群,它能將各種各樣的人聚集在一起,共同構建個體無法完成的優秀作品
-
3.11.2. 許可證的選擇使得建立社群和協作成為可能,這反過來又能夠使開源項目獲得成功
3.12. 開源是由許多不同動機和不同背景的熱情愛好者推動的,他們有一個共同點,那就是倡導自由地與他人分享代碼和知識,通過去中心化社群進行開放協作
4. 開源的原因
4.1. 要了解為什么要開源,最佳方式是查看一些項目并了解這些社群的動機
4.2. PHP
- 4.2.1. 讓交互式網頁更易于構建,使任何具備基本編程技能的人都能夠構建網頁應用程序
4.3. Blender
-
4.3.1. 計算機圖形學和其他交互式顯示技術是開源的強勢領域之一
-
4.3.2. Blender專門面向所謂的創意人群
4.4. Zowe
-
4.4.1. 大型機應用程序通常是基于幾十年前的COBOL或FORTRAN代碼構建的
-
4.4.2. Zowe是由CA Technologies(2019年被Broadcom收購)?、IBM和Rocket Software共同創立的項目,最初的代碼貢獻來自這些公司
-
4.4.3. Zowe提供了一個框架,用于將大型機應用程序和數據與其他應用程序和工具集成,該框架采用了更常見于非大型機開發者的開發工具和方法
-
4.4.4. 動機
-
4.4.4.1. 他們需要不同的團隊和方法來處理大型機應用程序和數據,這與他們處理其他計算機系統時完全不同
-
4.4.4.2. 存在著不斷增長的技能差距,即在大型機行業取得成功所需的技能與為其他系統開發軟件所需的技能有很大的差別
-
4.5. 以開源的方式進行的,開源有助于將這個龐大的社群聚集在一起,以改進并提供反饋,創造出每個人都可以受益的公共資源
5. 運用開源
5.1. 開源有著漫長而曲折的歷史,它的發展主要是由對技術充滿熱情的愛好者推動的,隨著時間的推移,商業投資也逐漸融入開源,而這些開源社群則始終保持了其原有的理念
5.2. 愛好者之間的信息分享
-
5.2.1. 最早的(也可以說是最普遍的)開源應用只是能夠與他人分享信息和知識,以解決共同的問題
-
5.2.2. 專注于信息分享的開源項目
-
5.2.2.1. Ubertooth:該項目構建了一個用于藍牙實驗的開源無線開發平臺
-
5.2.2.2. PiFire:該項目為煙熏爐或燒烤爐提供了一個支持無線網絡的智能控制器,包括基于Raspberry PI平臺的軟件設計和硬件設計
-
5.2.2.3. SecurityExplained:該項目專注于為軟件安全社群提供各種信息
-
5.2.2.4. Darwin Core:該項目是一個由Darwin Core維護興趣小組維護的標準,標準中包括一個術語表,旨在促進生物多樣性信息的分享
-
5.3. 基礎技術
-
5.3.1. UNIX方式或UNIX哲學,它描述了一種最小化和模塊化的軟件編寫方法,這種方法是由Douglas Mcllroy和Peter H.Salus等人最先闡述的,并在Ken Thompson和Dennis Ritchie的著作中被進一步推廣
-
5.3.2. 專心做好一件事
-
5.3.2.1. grep:一個命令行工具,用于在純文本數據集中搜索匹配正則表達式的行
-
5.3.2.2. sed:代表流編輯器,用于解析和轉換文本
-
5.3.2.3. cat:該工具用于從一個程序中獲取輸出并寫入標準輸出,以便作為另一個程序的輸入
-
-
5.3.3. 開源大大降低了構建軟件的成本,更重要的是,開源也使高質量的工具、編程語言和框架變得更容易獲取
5.4. 構建技術生態系統
-
5.4.1. 開源項目的形成和動機在本質上與構建生態系統更相關
-
5.4.2. 構建這些項目的目的是,使得無論是開源解決方案,還是商業解決方案,都能夠具有一定的兼容性和技能適配性
-
5.4.3. Kubernetes:這是一個開源系統,用于自動化部署、擴展和管理容器化應用程序
-
5.4.4. Anuket Assured:這是一個開源的、社群主導的合規性和驗證項目,用于展示商業云原生、虛擬化產品和服務的準備情況和可用性,包括NFVI、云原生基礎設施、VNF和CNF,它們使用了Anuket和ONAP組件
-
5.4.5. The Zowe Conformance Program:該項目建立了與Zowe開源項目構建或集成解決方案之間的互操作性需求
5.5. 提供高質量的免費軟件
-
5.5.1. Linux發行版,如Debian、Fedora、Ubuntu、ArchLinux等,為免費桌面環境鋪平了道路,讓用戶在使用計算機時更加靈活
- 5.5.1.1. 在許多情況下,這也讓使用現代軟件重用過時的硬件成為可能,這在那些難以獲得現代硬件的地區很有價值
-
5.5.2. LibreOffice:該應用程序提供了一個與Microsoft Office相當的完整辦公套件
-
5.5.3. GNU圖像操作程序(GNU Image Manipulation Program,GIMP):該應用程序的圖像編輯和操作類似于Adobe Photoshop
-
5.5.4. Inkscape:這是一個開源矢量圖形編輯器,很像Adobe Illustrator
-
5.5.5. Mozilla Firefox:它源于1998年Netsuite Communicator的開源版本,提供了一個先進且安全的網絡瀏覽器
浙公網安備 33010602011771號