什麼是開放原始碼?
開放原始碼是一種分散式生產模式,允許任何人修改和共用技術,因為它設計為可公開存取。該術語源自軟體開發領域,表示某個軟體符合某些免費分發標準。如今,開放原始碼這個術語所代表的價值更加的廣泛,其基本原則是自由資訊交換、快速原型設計和協作開發。任何人都可以貢獻新的想法以及進一步改進技術,持續不斷地推動技術的發展。
開放原始碼為何重要?
開放原始碼的概念起源自技術社群。技術創新需要全面協作方能演進。舉例而言,假設美國有個程式設計團隊針對財務應用程式開發了新的開放原始碼技術。澳洲另一個程式設計團隊將該項技術加以修改,成為具有較為適合醫療保健業的新功能。在亞洲的第三個團隊又以原始技術作為核心元件,開發出新的開放原始碼產品。
這樣的知識共享與集體創新,對全社群皆有益。將技術鎖在專利、著作權和昂貴的授權背後會阻礙進步。近數十年來,全球已有許多廣為人知的開放原始碼專案帶動技術迅速進展。
開放原始碼有哪些原則?
一切開放原始碼專案背後的核心原則如下:
社群
開放原始碼社群是為了達成共同宗旨而聚集的一群人。這群人依照共同價值觀與目標做出決定,帶動開放原始碼專案繼續發展。
透明度
開放原始碼專案能確保社群的每一份子都能存取善盡發揮工作表現所需的資訊和素材。因為對大格局有所了解,團隊成員更能做出高效的決定,集合彼此的理念和發現而樹立成果。
開放協作
社群專案能鼓舞團隊合作,因此群體能夠解決個人單獨無法解決的問題。例如,可因開放原始碼計劃成員的貢獻而做出改變,將他人的作品加以改良。您也能建立規則,讓他人日後能視需要修改解決方案。
迅速建立原型
開放原始碼專案採取反覆的方式,團隊成員經常建立與分享原型。迅速建立原型能鼓勵形成喜好實驗的風氣。您可將有用的改變加以改進和沿用,捨棄無用的部分。
包容的唯才是用
開放原始碼運動鼓勵多元性的觀點和對話。社群依照共識做出決定,但也視成功為優先。對於最佳創意,開放原始碼社群會投入較多支援和心力。
什麼是開放原始碼軟體?
開放原始碼軟體是其中的原始程式碼人人能檢查、修改與增強的軟體。原始程式碼是指在軟體中,電腦程式設計師加以操縱,以變更應用程式的運作方式或新增功能的部分。任何人只要能存取軟體的原始程式碼,就能藉由新增功能或排解現有的錯誤,以改良或自訂應用程式。現今大家使用的 Web 應用程式和裝置,大多都有開放原始碼軟體。開放原始碼軟體的範例包括 Linux 這種開放原始碼作業系統,以及 Mozilla Firefox,這是一種開放原始碼的網際網路瀏覽器。
開放原始碼軟體有哪些功能?
開放原始碼軟體的功能與開放原始碼運動的價值觀密切吻合。
開放原始碼
開放原始碼軟體必須在符合某些分發標準的開放原始碼授權之下發行,這些標準舉例如下:
- 不限制將軟體作為彙總軟體分發的元件加以出售或贈送
- 必須包含原始程式碼,並且允許分發
- 必須允許修改和衍生作品
- 附加於程式的權利必須無分別地適用
開放式設計
採開放式設計能保證在軟體的設計與規劃上執行透明又開放的流程。重點在於能讓社群主導軟體的設計與功能發展藍圖。這一點可能會有難度,因為取得社群共識可能相當耗時。然而,設計若經過社群議定,能產生更加有效符合使用者需求的更佳產品。
開放式開發
開放式開發採行具包容性且透明的開發流程,讓每一位皆平等參與。可公開存取的服務,能為開發活動帶來可見性。例如,開放原始碼專案通常會採行一組標準,清楚指明評估貢獻所憑藉的指標。如此可讓所有的軟體更新,無論出自初次貢獻者或是資深開發人員,都能接受平等的考量。
開放社群
開放社群可確保軟體開發社群是包容的環境,所有心聲都被聽見,任何人都能升到領導地位。藉由制訂共同目標、建立堅強的連結,能使開發人員與使用者兩者的需求得到平衡。
開放原始碼軟體與其他類型軟體之間的差異何在?
有時候,創造軟體的組織或個人為了商業理由,偏好加以掌控。這些人會保有原始程式碼的專屬擁有權,換言之,只有他們能修改程式碼,以修正錯誤或新增功能。這樣的軟體稱為專有軟體,或封閉原始碼軟體。Adobe Photoshop 和 Norton AntiVirus 等產品即為專有軟體的例子。
開放原始碼軟體與封閉原始碼軟體
開放原始碼軟體與封閉原始碼 (或專有軟體) 之間主要有如下三大差異:
可靠性
安全性
任何原始程式碼都可能有安全漏洞,易受網路攻擊。不過,開放原始碼軟體有修正速度更快的優勢。一旦您或社群其他成員報告有安全漏洞,開放原始碼專案能在一兩天內發行程式碼更新。如果商業公司開發開放原始碼軟體,因有高可見性,導致修正問題有其迫切性,甚至引發改良原始軟體。
反之,專有軟體由於下列原因,使得更新週期較長:
- 廠商派給特定專案的人員較少。
- 廠商在財務上的考量較安全漏洞優先。
- 廠商因為偏好將數項變更合併一次發行,而延後發行安全更新。
授權
- 為個人專案修改原始程式碼。
- 如果使用者也允許他人檢視其作出的變更,得轉分發修改後的程式碼。
開放原始碼的軟體授權有哪些類型?
雖然開放原始碼授權比專有授權的限制較少,不過依照類型,許可的程度和範圍各有出入。以下是開放原始碼授權的幾種常見類型。
公共領域授權
公共領域授權表示,任何人都能無限制地將軟體修改、使用或商業化。大多數情形下,公共領域開放原始碼軟體的建立者會刻意或自願性地決定不為軟體申請著作權。
寬鬆授權
寬鬆開放原始碼授權對於您能以何種方式修改或分發軟體僅設有甚低要求。此授權類型的例子包括 Apache 授權和 Berkeley 原始碼分發 (Berkeley Source Distribution, BSD) 授權。雖然原始軟體有著作權和開放原始碼,但使用者可將修改後的版本商業化和轉分發。
較寬鬆公共授權
較寬鬆公共授權 (LGPL) 許可您無限制使用開放原始碼的元件。這類元件往往能以稱為程式庫的程式碼模組為單位存取,可插入您的任何程式碼使用。如您在應用程式中使用 LGPL 原始程式碼,可將該應用程式商業化。然而,若您修改現有 LGPL 程式碼,則必須再次依相同的授權轉分發。
著作傳授權
- 如果修改著作傳開放原始碼元件,必須連同您的應用程式發行所有新的原始程式碼。不過,若該應用程式僅在內部使用,永不公開發行,則非必需如此。
- 可將所修改的 GPL 出售,但買家可選擇繼續轉分發。
- 必須在新程式碼的著作權聲明中註明所有以往的程式碼作者。
開放原始碼軟體的監管單位是?
開放原始碼促進會 (OSI) 是為一切類型開放原始碼軟體進行宣導的全球性非營利組織。其為標準組織,維護開放原始碼定義這份文件,依法界定使得任何軟體作為開放原始碼的條件。
藉由遵循該組織的「開放原始碼定義」,您可取得 OSI 核准的授權商標。商摽能產生信賴感,鼓勵他人做出貢獻,並且與您協作。OSI 維護一份核准授權清單,並於開放原始碼社群核准新授權。該組織亦監管軟體的開放標準要求。
什麼是開放標準?
開放標準是支援技術統一性和相互操作性的軟體開發規則。可自由提供用於實作、採行和更新。於是,我們日常生活的許多面向變得更加舒適便利。
例如,有了標準,各種機器都能連線至一切類型的無線路由器。您可從家中或常去的咖啡館用筆記型電腦連接網際網路,不論使用的路由器為何。若無標準存在,就必須找路由器與您的筆記型電腦相容的咖啡館!
開放原始碼與開放標準
標準是指編寫某些類型的原始程式碼,規則、指導方針和規格,而非程式碼本身。軟體標準必須依循某些規則,方能歸類為開放原始碼。例如,若要求具備專有技術方能實作某些標準,則這些標準並非開放原始碼。
為什麼會有開放原始碼軟體的商業版?
許多開放原始碼專案的建立者和其他公司藉由出售能夠吸引較大企業的附加功能 (例如分析或安全) 以營利。私有公司可將開放原始碼的程式併入其應用程式碼,把公共領域的所有軟體商業化。也能將相同的軟體依各種授權發行不同版本。
例如,假設某公司以通用公眾授權 (GPL) 與專有授權兩者發行一套資料庫管理系統。任何人只要將新程式碼作為開放原始碼,就能將 GPL 版本用於軟體開發。相形之下,專有版本提供更多軟體服務,例如:
- 全受管資料庫服務
- 企業級資料備份服務
- 其他安全加密
開放原始碼軟體是否與自由軟體相同?
自由軟體一詞是指一種社會運動,也稱為自由軟體運動,旨在為軟體使用者爭取並且確保得到某種自由。此運動努力確保使用者有做出下列行動的自由:
- 執行軟體。
- 研究軟體。
- 修改軟體。
- 分享軟體副本。
開放原始碼軟體與自由軟體
現今,自由軟體是指公共領域的開放原始碼授權。開放原始碼軟體目前已包含更多種授權,與自由軟體運動不同,能對使用者加諸一些限制。因為免費軟體與自由軟體能互換使用,所以最好是將自由軟體稱為公共領域軟體。
開放原始碼軟體與免費軟體
免費軟體一詞即指有限時間內免費使用的商業產品。免費軟體也可以是原本需要訂閱費用的產品,其免費試用版或功能有限版。即使您能存取免費軟體,亦完全無權得轉售、分享或修改。
AWS 如何對開放原始碼軟體作出貢獻?
在 AWS,我們相信開放原始碼對大家普遍有益。我們致力於讓客戶享有開放原始碼的價值,也將 AWS 的營運卓越引入開放原始碼社群。AWS 的工程師經常開發開放原始碼軟體,為例如 GitHub、Apache、Linux Foundation 等的數千個開放原始碼社群作出貢獻。我們還以其他方式支持開放原始碼,舉例如下:
- 我們努力確保客戶能在雲端部署及操作喜愛的開放原始碼軟體。與其他雲端供應商相較,AWS 支援的開放原始碼技術更加廣泛。
- 我們在開放原始碼社群有許多長期專案。我們持續為這些專案貢獻錯誤修正、安全、可擴展性、效能和功能增強。
- 我們與領先開放原始碼公司密切合作,從 HashiCorp、MongoDB,Confluent 到 Red Hat,協助超越客戶的期望。