開源軟體

開源軟體又稱開放原始碼軟體，是原始碼可以任意-{zh-hans:獲取; zh-tw:取用}-的計算機軟體，這種軟體的版權持有人在軟體協議的規定下保留一部分權利並允許使用者學習、修改以及以任何目的向任何人分發該軟體。開源協議通常符合開放原始碼的定義的要求。一些開源軟體釋出到公有領域。開源軟體常公開和合作開發。開源軟體是開放原始碼開發的最常見例子，也經常與使用者-{zh-hans:生成; zh-tw:創作}-內容比較。開源軟體的英文“--”一詞出自自由軟體的營銷活動。開源軟體同時也是一種軟體散佈模式。一般軟體僅可取得已編譯的二進位可執行檔，通常只有軟體作者或著作權所有者等擁有程式原始碼。有些軟體的作者只將原始碼公開，卻不符合「開放原始碼」的定義及條件，因為作者可能設定公開原始碼的條件限制，諸如限制可閱讀原始碼的對-{}-象、限制衍生產品等，此稱之為公開原始碼的免費軟體，因此公開原始碼的軟體並不一定可稱為開放原始碼軟體。歷史.1997年，埃裡克·雷蒙出版其著作《大教堂和市集》，探討駭客社群與自由軟體原則。1998年初，該論文受到極大的關注，為促成網景通訊公司將其受歡迎的網際網路套裝軟體《網景通訊家》釋放成為自由軟體的因素之一。這些程式碼即為今日大家熟悉的Mozilla Firefox與Thunderbird。網景的行動激起雷蒙及其夥伴深入研究如何將自由軟體基金會的自由軟體概念及優點帶入商業軟體產業。他們查覺基金會的社會活動不如網景等公司的行動來得吸引人，因而試圖重新包裝自由軟體運動，以強調分享與協作軟體原始碼的潛在商機。他們選用的新名稱為「開放原始碼」，很快地布魯斯·佩倫斯、出版家提姆·奧萊理、林納斯·託瓦茲及其他人-{zh-hans:支援; zh-tw:支援}-新名稱。開放原始碼促進會於1998年2月建立，以推動使用新名稱，並宣揚開放原始碼的原則。開放原始碼的定義.開放原始碼的定義由Bruce Perens定義如下：儘管一開始接受，自由軟體基金會的理查·斯托曼現在斷然反對將「開源軟體」與「自由軟體」混為一談。雖然在法律上並未明確區分自由軟體與開源軟體，但斯托曼認為不宜濫用。開源軟體開發.開發模型.在他1997年的文章大教堂與集市中， 開源倡導者 Eric S. Raymond 提出了一種被稱為"集市"模型的開發 OSS 的模型。Raymond 將傳統方法開發軟體與建造大教堂相類比，"由個別巫師或小團隊的法師精心製作"。 他建議所有軟體都應該使用集市風格開發，他將其描述為"各種不同議程和方法的大雜燴集市"。然而，在傳統的開發模型中，他稱之為"大教堂"模型，開發是以中心化的方式進行的。角色是明確定義的。角色包括負責設計的人、負責專案管理的人以及負責實施的人。傳統的軟體工程遵循大教堂模型。然而，集市模型是不同的。在這個模型中，角色並沒有明確定義。Gregorio Robles 提出，使用集市模型開發的軟體應該表現出以下模式：使用者被視為共同開發者，因此他們應該可以訪問軟體的原始碼。此外，鼓勵使用者提交對軟體的新增、程式碼修復、漏洞報告、文件等。擁有更多的共同開發者增加了軟體演化的速度。林納斯之法則說："只要眼睛足夠多，所有的錯誤都是淺顯的。"這意味著如果有很多使用者檢視原始碼，他們最終會找到所有的錯誤並提出如何修復它們的建議。請注意，一些使用者具有高階的程式設計技能，此外，每個使用者的計算機提供了額外的測試環境。這個新的測試環境提供了查詢和修復新錯誤的能力。軟體的第一個版本應該儘早釋出，以增加儘早找到共同開發者的機會。程式碼更改應儘可能經常地整合，以避免在專案生命週期末期修復大量錯誤的開銷。一些開源專案有每晚構建，自動進行整合。應該有至少兩個版本的軟體。應該有一個具有更多功能但更不穩定的版本和一個具有更少功能但更穩定的版本。有問題的版本是為希望立即使用最新功能並願意接受尚未經過充分測試的程式碼風險的使用者準備的。使用者然後可以充當共同開發者，報告錯誤並提供錯誤修復。軟體的一般結構應該是模組化的，允許獨立元件的並行開發。需要一個決策結構，無論是正式的還是非正式的，根據不斷變化的使用者需求和其他因素進行戰略決策。與極限程式設計進行比較。然而，資料表明，OSS 並不像集市模型所暗示的那麼民主。對 31,999 位開發者編寫的五十億位元組的自由/開原始碼進行的分析顯示，74% 的程式碼是由最活躍的 10% 的作者編寫的。一個專案中參與的作者平均有 5.1 人，中位數為 2 人。優勢.開源軟體通常比專有軟體更容易獲取，這通常會增加其使用率。此外，標準的開源實現的可用性可以增加對該標準的採用。 它還有助於建立開發者的忠誠度，因為開發者感到有權力並對最終產品有一種所有權感。此外，OSS 需要更低的市場營銷和後勤服務成本。這是一種宣傳公司形象，包括其商業產品的好工具。 OSS 開發方法有助於快速、廉價地生產可靠的高質量軟體。開源開發提供了加速創新和創新和社會價值創造的潛力。例如，在法國，一項政策鼓勵政府支援自由開源軟體，導致每年近 60 萬次 OSS 貢獻，透過增加開源軟體的數量和質量來生成社會價值。這一政策還導致了科技初創公司的增加約 18%，以及IT部門就業人數的增加約 14%。據說它更可靠，因為通常有數千名獨立程式設計師測試和修復軟體的錯誤。開源不依賴於最初建立它的公司或作者。即使公司失敗，程式碼仍然存在並由其使用者開發。此外，它使用對每個人都可訪問的開放標準；因此，它不會出現在專有軟體中可能存在的不相容格式的問題。它是靈活的，因為模組化系統允許程式設計師構建自定義介面或新增新的功能，並且它是創新的，因為開源程式是許多不同程式設計師合作的產物。不同的觀點、公司目標和個人目標的混合加速了創新。此外，自由軟體可以根據純技術要求進行開發。它不需要考慮商業壓力，這往往會降低軟體的質量。商業壓力使傳統軟體開發人員更加關注客戶的需求，而不是安全需求，因為這些特性對客戶而言有些看不見。開發工具.在 OSS 開發中，工具用於支援產品和開發過程的開發。像Concurrent Versions System和Git這樣的版本控制系統是工具的示例，通常本身也是開源的，有助於管理軟體專案的原始碼檔案和對這些檔案的更改。 這些專案通常儲存在像Launchpad、GitHub、GitLab和SourceForge這樣的倉庫中，這些倉庫是託管併發布在原始碼託管設施上的。開源專案通常組織鬆散，"很少有形式化的流程建模或支援"，但通常使用問題跟蹤器等工具來組織開源軟體開發。 常用的bugtracker包括Bugzilla和Redmine。像mailing lists和IRC這樣的工具提供了協調開發人員之間的手段。 集中式程式碼託管站點還具有允許開發人員進行溝通的社交功能。組織.一些參與開源軟體開發的“知名組織”包括Apache Software Foundation，他們是Apache網路伺服器的建立者；Linux Foundation，這是一個非營利組織，截止到2012年，由Linux作業系統的創造者Linus Torvalds僱傭，該作業系統的核心是Linux kernel；Eclipse Foundation，這是Eclipse軟體開發平臺的所在地；Debian Project，他們是著名的Debian GNU/Linux發行版的建立者；Mozilla Foundation，這是Firefox網路瀏覽器的所在地；以及OW2，這是一個歐洲社群，致力於開源中介軟體的開發。新組織往往擁有更復雜的治理模型，其成員通常由法律實體成員組成。Open Source Software Institute是一個成員制的非營利組織，成立於2001年，旨在促進在美國聯邦、州和地方政府機構內開源軟體解決方案的開發和實施。OSSI的努力重點是在聯邦政府、國防部和國土安全部社群內推廣開源軟體程式和政策的採用。Open Source for America是一個旨在提高美國聯邦政府對開源軟體的好處的認識的團體。他們的目標是鼓勵政府使用開源軟體，參與開源軟體專案，並採用開源社群動態，以增加政府的透明度。Mil-OSS是一個致力於在軍事領域推動開源軟體的使用和建立的團體。資金.以開源軟體開發為中心的公司採用各種商業模式來解決提供根據定義免費授權的軟體如何賺錢的挑戰。這些商業策略的基礎都是，開源技術的使用者願意購買在專有許可下的附加軟體功能，或者購買其他服務或價值元素，以補充核心業務中的開源軟體。這種附加價值可以包括但不限於，符合企業級要求的功能和正常執行時間保證，或者與專有軟體應用程式典型的專業支援/培訓/諮詢等專業支援。開放原始碼與自由軟體.許多人將開放原始碼與自由軟體視為相同，但若以定義條件而言，自由軟體僅是開放原始碼的一種，也就是自由軟體的定義較開放原始碼更為嚴格，並非開放原始碼的軟體就可稱為自由軟體，要視該軟體的授權條件是否合乎自由軟體基金會對自由軟體所下的定義：自由軟體是在電腦為個人或為公共利益，而非私人公司或政府等企圖限制或監視我們工作時，我們在家、學校、公司使用時，我們具有其控制權。開放原始碼有時不單指開放原始碼軟體，它同時也是一種軟體開放模式的名稱。使用開放原始碼開放模式的軟體代表就有Linux作業系統。嚴格地說來，開放原始碼軟體與自由軟體是兩個不同的概念，只要符合開源軟體定義的軟體就能稱為開放原始碼軟體。自由軟體是一個比開源軟體更嚴格的概念，因此所有自由軟體都是開放原始碼的，但不是所有的開源軟體都能稱為“自由”。但在現實上，絕大多數開源軟體也都符合自由軟體的定義。比如，遵守GPL和BSD許可的軟體都是開放的並且是自由的。「開放原始碼軟體運動」是一個主要由程式工程師及其它電腦使用者參與的聲勢浩大的運動。它是自由軟體運動的一個分支，但兩者的差別並不明顯。一般而言，自由軟體運動是基於政治及哲學思想的理想主義運動，而開放原始碼運動則主要注重程式本身的質量提升。漏洞.雖然開放原始碼的堡壘看似嚴謹，但其實大部份的程式開發員都弄不清各種許可證之間的差別，導致成為了小部份別有用心人士所利用的物件，較著名的例子有DivX，早期DivX雛形是LGPL自由軟體，由大部份優秀的軟體高手義務開發，但當軟體漸漸成形時，DivX的公司DXN利用LGPL漏洞將DivX閉源，大部分軟體愛好者都感到被出賣，所以著手開發了XviD。雖然XviD在軟體方面明顯比DivX優秀，但市場佔有率卻不如DivX。