許多人將開放源代碼與自由軟件(freeSoftware)視為相同,但若以定義條件而言,自由軟件僅是開放源代碼的一種,也就是自由軟件的定義較開放源代碼更為嚴格,並非開放源代碼的軟件就可稱為自由軟件,要視該軟件的授權條件是否合乎自由軟件基金會對自由軟件所下的定義。
開源軟件定義Version 1.9
開源不僅僅表示開放程序源代碼。從發行角度定義的開源軟件必須符合如下條件:
1、自由再發行
許可證不能限製任何團體銷售或贈送軟件,軟件可以是幾個不同來源的程序集成後的軟件發行版中的其中一個原件。許可證不能要求對這樣的銷售收取許可證費或其他費用。
2、程序源代碼
程序必須包含源代碼。必須允許發行版在包含編譯形式的同時也包含程序源代碼。當産品以某種形式發行時沒有包含源代碼,必須非常醒目的告知用戶,如何通過 Internet免費的下載源代碼。源代碼必須是以當程序員修改程序時優先選用的形式提供。故意地擾亂源代碼是不允許的。以預處理程序或翻譯器這樣的中間 形式作為源代碼也是不允許的。
3、派生程序
許可證必須允許更改或派生程序。必須允許這些程序按與初始軟件相同的許可證發行。
4、作者源代碼的完整性
衹有當許可證允許在程序開發階段,為了調整程序的目的將“修補文件”的發行版與源代碼一起發行時,許可證才能限製源代碼以更改後的形式發行。許可證必須明確地允許按更改後的源代碼所建立的程序發行。許可證可以要求派生的程序使用與初始軟件不同的名稱或版本號。
5、無個人或團體歧視
許可證不能都有針對任何個人或團體製在專門奮鬥領域內的任何人使用該程序。例如不能限製程序應用於商業領域,或者應用於遺傳研究。
7、許可證發行
伴隨程序所具有權力必須適用於所有的程序分銷商,而不需要這些團體之間再附加許可證簽字蓋章。
8、許可證不能特製某個産品
如果程序是某個特殊的軟件發行版中的一部分,伴隨該程序所具有的權力不能衹以來於這一發行版。如果程序是從那一發行版中摘錄出來的,使用或發行時用的都是那個程序的許可證,分銷程序的所有團體都應擁有與初始軟件版所允許的所有權力。
9、許可證不能排斥其他軟件
許可證不能限製隨該許可證軟件一起發行的其他軟件。例如,許可證不能要求所有與之一起發行的其他軟件都是開源軟件。
10、許可證實例
GNU GPL、BSD、X Consortiun和Artistic許可證都是我們認為符合開源軟件定義的許可證。MPL也是一樣。
1.9版的英文原文:
The Open Source DefinitionVersion 1.9
The indented, italicized sections below appear as annotations to the Open Source Definition (OSD) and are not a part of the OSD.
Introduction
Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria:
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
1. Free Redistribution
Rationale: By constraining the license to require free redistribution, we eliminate the temptation to throw away many long-term gains in order to make a few short-term sales dollars. If we didn't do this, there would be lots of pressure for cooperators to defect.
2. Source Code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost–preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
Rationale: We require access to un-obfuscated source code because you can't evolve programs without modifying them. Since our purpose is to make evolution easy, we require that modification be made easy.
3. Derived Works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
Rationale: The mere ability to read source isn't enough to support independent peer review and rapid evolutionary selection. For rapid evolution to happen, people need to be able to experiment with and redistribute modifications.
4. Integrity of The Author's Source Code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
Rationale: Encouraging lots of improvement is a good thing, but users have a right to know who is responsible for the software they are using. Authors and maintainers have reciprocal right to know what they're being asked to support and protect their reputations.
Accordingly, an open-source license must guarantee that source be readily available, but may require that it be distributed as pristine base sources plus patches. In this way, "unofficial" changes can be made available but readily distinguished from the base source.
5. No Discrimination Against Persons or GroupsThe license must not discriminate against any person or group of persons.
Rationale: In order to get the maximum benefit from the process, the maximum diversity of persons and groups should be equally eligible to contribute to open sources. Therefore we forbid any open-source license from locking anybody out of the process.
Some countries, including the United States, have export restrictions for certain types of software. An OSD-conformant license may warn licensees of applicable restrictions and remind them that they are obliged to obey the law; however, it may not incorporate such restrictions itself.
6. No Discrimination Against Fields of EndeavorThe license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
Rationale: The major intention of this clause is to prohibit license traps that prevent open source from being used commercially. We want commercial users to join our community, not feel excluded from it.
7. Distribution of License
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
Rationale: This clause is intended to forbid closing up software by indirect means such as requiring a non-disclosure agreement.
8. License Must Not Be Specific to a ProductThe rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
Rationale: This clause forecloses yet another class of license traps.
9. License Must Not Restrict Other SoftwareThe license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
Rationale: Distributors of open-source software have the right to make their own choices about their own software.
Yes, the GPL is conformant with this requirement. Software linked with GPLed libraries only inherits the GPL if it forms a single work, not any software with which they are merely distributed.
10. License Must Be Technology-NeutralNo provision of the license may be predicated on any individual technology or style of interface.
Rationale: This provision is aimed specifically aimed at licenses which require an explicit gesture of assent in order to establish a contract between licensor and licensee. Provisions mandating so-called "click-wrap" may conflict with important methods of software distribution such as FTP download, CD-ROM anthologies, and web mirroring; such provisions may also hinder code re-use. Conformant licenses must allow for the possibility that (a) redistribution of the software will take place over non-Web channels that do not support click-wrapping of the download, and that (b) the covered code (or re-used portions of covered code) may run in a non-GUI environment that cannot support popup dialogues.
關於開放源代碼的定義(1.7版)
開放源代碼並不僅僅意味着對源代碼的訪問權。開放源代碼軟件的發佈條款必須滿足以下條件:
1. 自由地再發佈
如果被發佈的軟件是由不同來源的程序組成的,許可證不得限製任何當事人或組織(party)銷售或贈送作為被發佈軟件成分之一的開放源碼軟件。
許可證不得從此項銷售中索取使用費或其它任何費用。(理由)
2. 源代碼
程序必須包括源代碼,必須允許以源代碼方式發佈、還必須允許以編譯後的形式發佈。如果産品的某個部分沒有與源代碼一同發佈,那麽必須提供通行的、不需要支付合理範圍之外的任何費用的手段以獲得源代碼---從網絡上免費下載是一種可取的方式。源代碼必須是程序員對其進行修改的最佳形式。故意地使源代碼變得含混晦澀是不允許的。也不允許給出預處理器或翻譯器處理的中間結果。(理由)
3. 派生作品
許可證必須允許修改軟件和派生軟件,並且必須允許它們按照原軟件的許可證的條款進行發佈。(理由)
4. 作者的源代碼的完整性
衹有在許可證允許與源代碼一同發佈"補丁文件"(該"補丁文件"以在創建時對程序進行修改為目的)時,許可證才能限製對修改形式的源代碼的發佈。許可證必須明確地允許發佈由修改後的源代碼生成的程序。許可證可以要求派生的作品采用不同的名稱或不同的版本號以區別於原來的軟件。(理由)
5. 不得歧視任何個人或團體
許可證不得歧視任何個人或者由多人組成的團體。(理由)
6. 不得歧視任何應用領域(fields of endeavor)
許可證不得限製任何人把程序應用於任何領域。例如,不得規定程序不能應用於商業領域或基因研究領域。(理由)
7. 許可證的發佈
與程序有關的權利必須適用於該程序的任何使用者,並且程序的使用者也不需要為了使用該程序而獲得其它許可證的許可。(理由)
8. 許可證不能針對於一個産品
與程序有關的權利不能由該程序是否作為某個軟件産品的一部分來决定。如果程序從那個發佈中被抽出來,並且按照程序的許可證的條款進行使用和發佈,那麽得到該程序的當事人或組織將獲得與得到原程序的使用者相同的權利。(理由)
9. 許可證不能影響其它軟件
許可證不得嚮與采用它的軟件一同發佈的其它軟件提出任何限製。例如,許可證不能堅持要求在同一媒體上發佈的其它程序都是開放源代碼軟件。(理由)
Conformance
(本節不是開放源代碼定義的一個部分)
我們認為本開放源代碼定義涵蓋了由絶大多數軟件團體使用的術語"開放源代碼"的最初含義和當前含義。然而,該術語被廣泛地應用,並且它的含義變得不精確了。OSI Certified標志是某個軟件發佈許可證是否服從開放源代碼定義的OST認證方式。一般的術語"開放源代碼"並不提供這種擔保,但我們仍然鼓勵使用" 開放源代碼"這一術語以表明它符合"開放源代碼定義"。關於OSI Certified標志的信息,以及已經通過了OSI Certified、符合"開放源代碼定義"的許可證,請參見OSI Certified標志與綱要。
開放源代碼定義之原理
給出開放源代碼的定義的目的是:把我們所確信的、由軟件開發團體所公認的"開放源代碼"的含義作為一組具體的準則寫下來---該準則確保按照開放源代碼許可證發佈的軟件可以得到與其它軟件同樣認真的評審、使軟件可以不斷地得到改良和遴選,從而提供非開放軟件所難以提供的可靠性與能力。
為了使此項工作持續發展,我們必須抵製人們為了短期利益而中止為軟件開發做出貢獻。這意味着,許可證的條款必須防止人們藏匿(lock up)源代碼從而導致衹有很少的人才能夠閱讀和修改它。
當軟件的開發者按照由OSI認證的許可證發佈他們的軟件時,他們可以在軟件中使用"OSI Certified"標志。這種認證標志告知用戶,該軟件所采用的許可證符合開放源代碼定義。關於我們的認證標志的更多信息及其綱要,請參見OSI Certified標志與綱要。
1. 自由地再發佈
通過強製要求許可證允許自由地再發佈,我們抵製了任何為了獲得少量短期銷售金額而放棄長期效益的誘惑。如果我們不這樣做,就會有很多壓力迫使合作者放棄承諾。
2. 源代碼
由於軟件衹有通過修改才能夠得到改進,因此我們要求獲得易於理解的源代碼。因為我們的目的是使軟件易於改進,我們也就希望軟件易於修改。
3. 派生作品
僅僅提供可以閱讀的源代碼,對於實施認真的評審、對於軟件的快速改良與遴選來說都是不夠的。為了加快改進軟件的速度,人們需要能夠進行試驗和對修改進行重新發佈。
4. 作者的源代碼的完整性
鼓勵對軟件進行各種改進是一件好事,但使用者有權知道誰應該對他們所使用的軟件負責。軟件的作者和維護者都有權知道需要他們提供支持的軟件是什麽,以維護他們的名譽。
因此,開放軟件許可證必須保證可以容易地得到源代碼,但可以要求源代碼以原始源代碼和一組補丁文件的形式發佈。按照這種方式,就可以獲得"非正式的"的修改而同時又可以輕易地把它們從原始源代碼中區分出來。
5. 不得歧視任何個人或團體
為了從該進程中獲得最大的收益,應該給盡可能多的個人和團體以同等資格對開放源代碼軟件做出貢獻。為此我們禁止開放源代碼許可證把任何人排除在這個進程之外。
6. 不得歧視任何應用領域(fields of endeavor)
該條款的主要目的是禁止許可證中含有使開放源代碼軟件無法在商業上使用的規定。我們需要商業用戶參與我們的工作,而不讓他們感到被排除在外。
7. 許可證的發佈
本條款的目的是禁止通過非直接的手段,例如需要簽署非公開的協定,使軟件無法公開。
8. 許可證不能針對於一個産品
本條款用於預防其它許可證陷阱。
9. 許可證不能影響其它軟件
開放源代碼軟件的發佈者有權為他們自己的軟件做出選擇。
是的,GPL滿足這條要求。按GPL發佈的庫衹影響(contaminate)在運行時與之連接的軟件,於僅僅和它一同發佈的軟件無關。
OSI Certified標志與綱要
開放源代碼定義給出了開放源代碼軟件的基本性質。不幸的是,術語"開放源代碼"遭到了濫用,並且由於它的描述性,它不能作為一個商標(這是我們的首選)被保護。由於社團需要一種可靠的方式以確定一份軟件是否真正是開放源代碼軟件。OSI為此目的而註册了一個認證標志,OSI Certified。如果你在一份軟件上看到了該標志,那麽該軟件就是必定是按照遵從開放源代碼定義的許可證發佈的,否則,該發行人就是在濫用該標志而且違反了法律。
OSI Certified標志被用於軟件而不是許可證:人們需要知道的是組成軟件的包和它們的許可證是開放的源代碼。此外,單獨的許可證可能不是"貨物",它由美國專利和商標局註册認證標志。但是軟件的作者顯然必須能夠在不詢問我們的情況下(自我認證)、在適當的時刻確認他們的軟件是按照OSI Certified的開放源代碼方式發佈的。所以認證按照兩步進行:
* OSI提供一個滿足開放軟件源代碼定義的開放源代碼許可證表。這些許可證經過公衆的詳細審查並且被我們所批準。如果你有一個希望加入該列表的許可證,請與license-approval@opensource.org聯繫,它啓動了獲得許可證批準的程序。
* 如果你希望在你的軟件上設置OSI Certified標志,你可以從列表中選擇一個獲得批準的許可證並根據它發佈軟件,並且適當地為軟件做標志。
上面僅僅是一個概括。下面給出申請批准許可證和把OSI Certified標志應用在你的軟件上的詳細說明。
獲得許可證的批準
1.通過電子郵件把許可證發送給license-approval@opensource.org。在電子郵件中說明你是否願意以你的簽名或者匿名地把許可證發送到許可證討論列表中。(我們願意考慮那些根本不希望被發送的許可證,但由於社團的評審是批準的一個重要組成部分,我們將不得不把該許可證私下地發送給評審者:因此,對沒有被發送到許可證討論列表中的許可證的批準,要花費更長的時間,並且通常要更多地與你交流。)
2. 如果我們發現你的許可證不符合開放源代碼的定義,我們將與你一同解决這個問題。
3. 同時,我們將關註許可證論壇列表,並且與你一同工作以解决大傢提出的任何未包含的問題。
4. 作為該過程的一部分,我們還將就許可證問題嚮外界尋求法律上的建議。
5. 一旦許可證符合了開放源代碼定義,並且在許可證論壇上經過了充分的討論或者其它的評審者沒有提出我們認為重要的問題,我們將通知你,許可證已經被批準了,同時它被復製到我們的網站上,並且被加入以下的許可證列表。
使用該標志
你可以在這兩種軟件的發行上使用OSI Certified標志。該軟件的發佈包括並且達到了被批準的許可證列表中某個許可證的要求,或者該軟件的源代碼已經被明確地放到公衆可以得到的位置。
為了表明你的軟件是按照OSI Certified發佈的,你必須不加任何修改地把下面兩者之一,按照下述方式加入你的軟件。完整的聲明是:
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.
較簡短的聲明是:
OSI Certified Open Source Software
你的軟件的每種發佈形式都有自身的要求:
* 如果軟件以電子的形式發佈(而不是實物(tangible)的形式),你必須把完整的聲明放在README文件或者類似的、人類用戶將首先閱讀的文件中。
* 如果軟件以實物形式發佈,你必須完成以下所有可行的任務:
* 如果軟件的發佈包括印刷品,你必須把完整的聲明加入該印刷品。
* 如果軟件發佈在可擦寫的媒體(例如軟磁盤)、CD-ROM、磁帶等媒體上,它們在物理上可以添加能夠被人的裸眼所閱讀的簡短聲明,而不影響它們的功能,你必須把完整的聲明或簡短的聲明標註在該媒體上。
* 如果軟件的發佈是一個的包,從而使其中的聲明不能被閱讀。你必須在包的外面放置完整的聲明。
如果不能把以上任何條款用於發佈,請與我們聯繫,我們將把你選擇的位置加入本列表。
獲得批準的許可證
以下許可證滿足開放源代碼的定義,並且已經被批準用於OSI Certified的開放源代碼軟件。沒有給出批準日期的許可證是在1999年1月1日以前批準的。
* The GNU General Public License(GPL);
* The GNU Library(Lesser) General Public License(LGPL);
* The BSD License;
* The X Consortium License;
* The Artistic License;
* The Mozilla Public License(MPL);
* The QPL;
其它符合定義的許可證包括:libpng許可證、zlib許可證、IJG JPEG許可證和OPL(Open LDAP Public License)許可證。 |