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