Apache

**Apache 軟體基金會**（Apache Software Foundation，簡稱為 ASF），是一家美國的非營利組織，旨在支援各類開源軟體專案。ASF 最初由 Apache HTTP Server 的一群開發者組成，並在 1999 年 3 月 25 日正式成立。 截至 2021 年，其總成員數大約在 1000 名。

Apache 軟體基金會是一個分散管理的開源社群。ASF 開發的軟體遵循 Apache 授權條款條款，並且是一種非 copyleft 形式的自由及開放原始碼軟體 (FOSS)。Apache 專案的特點包括了協同運作性、基於共識的開發流程和開放實用的軟體授權，也就是說，它允許免費接收軟體的開發人員在非自由條款下進行重新分發。每個專案都從專案的積極貢獻者中自主選舉一組技術專家團隊進行管理。ASF 遵循精英政治，這意味著基金會只授予成員資格給已經為 Apache 專案做出積極貢獻的志願者。ASF 被認為是第二代開源組織，因為他們提供的商業支援沒有供應商鎖定的風險。

ASF 的目標包括：為從事 Apache 專案的志願者提供法律保護以防止 Apache 品牌名稱被其他組織未經授權使用。

ASF 每年還會舉辦多次 ApacheCon 會議並介紹 Apache 專案與相關技術。

## 發展歷史

Apache 軟體基金會正式建立於 1999 年，創始團隊自稱「Apache 組織」。「Apache 組織」在 1999 年以前就存在，由一群開發愛好者們構成。他們在美國國家超級電腦應用中心開發的 NCSA HTTPd 的基礎上，開發與維護了一個叫 Apache 的 HTTP 伺服器。

最初 NCSA HTTPd 伺服器由 Rob McCool 開發，但是開發者逐漸對這個軟體失去了興趣，不再提供技術支援服務。因為此軟體的功能強大，而代碼可以自由下載修改與釋出，一些愛好者與使用者開始自發參與。他們探討並分發自己修改後的軟體版本，不斷地改善其功能。為了更好進行溝通，Brian Behlendorf 建立了一個郵寄清單，用於這個社群的技術交流，把代碼重寫與維護的工作有效組織起來。這些開發者們逐漸地把他們這個群體稱為「Apache 組織」，把這個經過不斷修正並改善的伺服器軟體命名為 Apache 伺服器（Apache Server）。

這個命名是根據北美當地的一支印第安部落而來，這支部落以高超的軍事素養和超人的忍耐力著稱，19 世紀後半期對侵占他們領土的入侵者進行了反抗。為了對這支印第安部落表示敬仰之意，取該部落名稱（Apache）作為伺服器名。但一提到這個命名，這裡還有流傳著一段有意思的故事。因為這個伺服器是在 NCSA HTTPd 伺服器的基礎之上，通過眾人努力，不斷地修正、打修補程式（Patchy）的產物，被戲稱為「_A Patchy Server_」（一個修補程式伺服器）。在這裡，因為「A Patchy」與「Apache」是諧音，故最後正式命名為「Apache Server」。

後來由於商業需求的不斷擴大，以 Apache HTTP 伺服器為中心，啟動了更多的與 Apache 專案並列的專案，比如 mod perl、PHP、Java Apache 等等。隨著時間的推移、形勢的變化，Apache 軟體基金會的專案列表也不斷更新變化中 —— 不斷的有新專案啟動，專案的中止以及專案的拆分與合併。比如一開始，Jakarta 就是為了發展 JAVA 容器而啟動的 Java Apache 專案，後來由於昇陽電腦的建議，專案名稱變為 Jakarta。但當時該專案的管理者也沒有想到 Jakarta 專案因為 JAVA 的火爆而發展到如今一個囊括了眾多基於 JAVA 語言開源軟體子專案的專案。以至後來，不得不把個別專案從 Jakarta 中獨立出來，成為 Apache 軟體基金會的頂級專案，Struts 專案就是其中之一。

為了避免類似 SCO-Linux 爭議的事件影響 Apache 軟體基金會，Apache 軟體基金會在專案中採取結構化管理，以保護自己的合法利益，避免潛在的法律風險。

## 組織構成

Apache 軟體基金會 (ASF) 的董事會負責根據章程管理和監督組織的業務和事務。這包括了公司資產的管理（資金、智慧財產權、商標和支援裝置），任命總裁和管理 ASF 核心業務的公司官員，以及為 Apache 各專案的利益分配公司資源。每個 Apache 專案的技術決策權都分配給其獨立的專案管理委員會；每個專案是由各自的貢獻者制定發展方向，而不是董事會。董事會每年由全體 ASF 成員選舉產生。

截至 2021 年 3 月 17 日，董事會成員包括：

* Bertrand Delacretaz
* Roy T. Fielding
* Sharan Foga
* Justin Mclean
* Sam Ruby
* Craig L Russell
* Roman Shaposhnik
* Sander Striker
* Sheng Wu

## 專案

* HTTP Server：可以在 UNIX，MS-Windows，Macintosh 和 Netware 作業系統下執行的 HTTP 伺服器的專案。
* Ant：基於 Java 語言的構建工具，類似於 C 語言的 Make 工具。
* AXIS2：Web 服務（SOAP, WSDL）的處理器，基於 AXIS1.X 重新構建。
* APR：（也就是：Apache Portable Runtime）C 語言實現的可攜式執行庫的管理工具。
* Beehive：為了簡單構建 J2EE 應用的物件模型。
* Apache Camel：一個開源的企業應用整合框架。
* Cocoon：一個基於組件技術和 XML 和 Web 應用開發框架。
* Cassandra：一個分散式，非關連型，NoSQL 的大型資料庫。
* CloudStack：一個開源的雲計算 IaaS 管理平台。
* Cordova：一個基於 Javascrip html css 的混生 App 開發計劃。
* DB：關於資料庫管理系統的幾個開源專案集合。
* Apache::Deploy：是一個 (R)?ex 的模組，用來快速釋出網站到 Apache 和 WAR 檔案到 Tomcat. 簡化了多伺服器應用的釋出過程。支援基於 Git 的釋出和 rpm/deb 釋出，同時簡化了構建 rpm 和 deb 包。
* Derby：一個純 JAVA 的資料庫管理系統。
* Directory：基於 JAVA 語言的目錄伺服器，支援 LDAP 等目錄存取協定。
* Excalibur：Apache Avalon 專案的前身。
* Forrest：一個釋出系統框架的專案。
* Flink：流計算引擎
* Geronimo：J2EE 伺服器。
* Gump：整合管理器。
* Hadoop：並行運算編程工具和分佈式檔案系統。
* Harmony：一個相容 JAVA 標準的 JAVA 語言的開源實現。
* HiveMind：一個服務（Services）與組態（configuration）的微核心。
* iBATIS：一個基於 JAVA 語言的資料持久化框架。
* Incubator：為了幫助那些希望取得 **Apache 軟體基金會**支援的計劃進入 **Apache 軟體基金會**的稽核專案。
* Jackrabbit：內容倉庫 API 標準（Content Repository for Java Technology API，即 JSR-170）的一個開源實現專案。
* Jakarta：在 ASF 中，基於 Java 語言的一組開源子專案的集合，現在包含的子專案有：BCEL，BSF，Cactus，Commons，ECS，HttpComponents，JCS，JMeter，ORO，Regexp，Slide，Taglibs，Turbine，Velocity。
* James：JAVA 語言實現的郵件新聞伺服器。
* Kafka: 分散式訊息佇列
* Labs：為基金會成員提供最新變更的思維的計劃。
* Lenya：內容管理系統。
* Logging：一個開發可以在 C++、Java、Perl、PHP、.NET 電腦語言下執行的通用紀錄檔工具專案集合。
* Lucene：高效能的，基於 Java 語言的全文檢索專案。
* Maven：專案整合構建工具。
* MyFaces：一個 JavaServer Faces（JSF）的實現框架。
* mod\_perl：為 Apache 伺服器提供 Perl 語言整合的專案。
* POI：提供 API 以供 JAVA 程式對 Microsoft Office 格式檔案的讀／寫。
* OpenOffice：提供相容 MS.Office 的文件、表格和簡報的編輯和展示功能。
* Apache PDFBox：用於操作 PDF 文件，可以進行建立、列印、合併、更改、驗證和提取或修改 PDF 元資料等功能
* Portals：與門戶（Portal）技術相關的幾個專案集合。
* Santuario：發展 XML 安全性方面的專案。
* Shale：在 Struts 之後，發展起來基於 JAVA 語言 Web 應用框架。
* Shiro：權限管理
* SpamAssassin：垃圾郵件過濾器。
* Struts：一個基於 J2EE 平台的 MVC 設計模式的 Web 應用框架。
* Subversion：一個軟體版本管理系統。
* Tapestry：另一個 J2EE 平台的、能產生動態、高效能 Web 應用的框架。
* TCL：為 Apache 伺服器提供 Tcl 語言整合的專案。
* Tomcat：一個執行 Java Servlet 與 JavaServer Pages（JSP）的容器。
* Web Services：與 Web Services 技術相關的專案集合。
* Xalan：XML 轉換處理器。
* Xerces：一組可以在 Java，C++，Perl 電腦語言下使用的 XML 解析器專案。
* Apache XML：XML 解決方案。
* XMLBeans：基於 JAVA 語言 XML 物件繫結工具。
* XML Graphics：發展 XML 與圖形進行轉換的計劃專案。
* ShardingSphere：Apache ShardingSphere 是一套開源的分散式資料庫解決方案組成的生態圈。

## 參閱

* 自由軟體運動
* 自由軟體
* GNU

 

## 參考資料

## 外部連結

* Apache 官方站點（頁面存檔備份，存於網際網路檔案館）