2010年10月21日 星期四

作業四

開放原始碼軟體與自由軟體

形式上的差異
開放原始碼軟體與自由軟體是兩個不同的概念,只要符合開放原始碼軟體定義的軟體就能被稱為開放原始碼軟體。自由軟體是一個比開放原始碼軟體更嚴格的概念,因此所有自由軟體都是開放原始碼的,但不是所有的開放原始碼軟體都能被稱為「自由」。但在現實上,絕大多數開源軟體也都符合自由軟體的定義。比如遵守GPL和BSD許可的軟體都是開放的並且是自由的。開放原始碼的規定較寬鬆,而自由軟體的規定較嚴苛。很多的開放原始碼所認可的授權根本不算是自由軟體,所以自由軟體不得不和開放原始碼劃清界線了。

內涵的差異
開放原始碼作用是盡可能的使軟體最優化;自由軟體則將自由作為道德標準。
開放原始碼很容易讓人以為只要把原始碼「公開」出來就算是開放原始碼了,但是如果使用者無法自由運用這些原始碼,那麼即使公開原始碼也沒有意義。有的軟體公司只是為了想找使用者幫它debug、吸收社區貢獻的功能,這樣子會破壞了自由軟體的原意。
自由軟體的原意就是要給予使用者運用軟體的自由,這個『自由』就是自由軟體的精神所在。但是為了商業化開放原始碼卻故意忽略了這個最重要的精神,反而無法讓使用者體認到『自由』的真意,那麼開放原始碼這一個替代自由軟體的辭句反而把自由的原意除去了。

定義的差異
根據斯托曼和自由軟體基金會(FSF)的定義,自由軟體賦予使用者四種自由:
自由之零:不論目的為何,有使用該軟體的自由。
自由之一:有研究該軟體如何運作的自由,並且得以覆寫該軟體來符合使用者自身的需求。取得該軟體之源碼為達成此目的之前提。
自由之二:有重新散布該軟體的自由,所以每個人都可以藉由散布自由軟體來敦親睦鄰。
自由之三:有改善再利用該軟體的自由,並且可以發表覆寫版供公眾使用,如此一來,整個社群都可以受惠。如前項,取得該軟體之源碼為達成此目的之前提。
如果一軟體的使用者具有上述四種權利,則該軟體得以被稱之為「自由軟體」。也就是說,使用者必須能夠自由地、以不收費或是收取合理的散布費用的方式、在任何時間再散布該軟體的原版或是覆寫版,在任何地方給任何人使用。如果使用者不必問任何人或是支付任何的許可費用從事這些行為,就表示他擁有自由軟體所賦予的自由權利。
開放原始碼的定義由Bruce Perens定義如下:
自由再散布(Free Distribution):允許獲得原始碼的人可自由再將此原始碼散佈。
原始碼(Source Code):程式的可執行檔在散佈時,必需以隨附完整原始碼或是可讓人方便的事後取得原始碼。
衍生著作(Derived Works):讓人可依此原始碼修改後,在依照同一授權條款的情形下再散佈。
原創作者程式原始碼的完整性(Integrity of The Author』s Source Code):意即修改後的版本,需以不同的版本號碼以與原始的程式碼做分別,保障原始的程式碼完整性。
不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups):開放原始碼軟體不得因性別、團體、國家、族群等設定限制,但若是因為法律規定的情形則為例外(如:美國政府限制高加密軟體的出口)。
對程式在任何領域內的利用不得有差別待遇(No Discrimination Against Fields of Endeavor):意即不得限制商業使用。
散布授權條款(Distribution of License):若軟體再散佈,必需以同一條款散佈之。
授權條款不得專屬於特定產品(License Must Not Be Specific to a Product):若多個程式組合成一套軟體,則當某一開放原始碼的程式單獨散佈時,也必需要符合開放原始碼的條件。
授權條款不得限制其他軟體(License Must Not Restrict Other Software):當某一開放原始碼軟體與其他非開放原始碼軟體一起散佈時(例如放在同一光碟片),不得限制其他軟體的授權條件也要遵照開放原始碼的授權。
授權條款必須技術中立(License Must Be Technology-Neutral):意即授權條款不得限制為電子格式才有效,若是紙本的授權條款也應視為有效。
比較其異同,開放原始碼軟體較自由軟體多了更多的授權限制:
衍生著作需依照同一授權條款的情形下再散佈。
保障原始的程式碼完整性。
若軟體再散佈,必需以同一條款散佈之。
這些授權限制,讓自由軟體和開放原始碼軟體產生了本質上的不同。自由軟體的提倡,可說是一道德運動,而開放原始碼的提倡,則在促進軟體之進步。部分開放原始碼軟體可說是等同於自由軟體,而少部分開放原始碼之軟體,由於增加了這些授權限制,即使開放了原始碼,我們仍無法將其視作自由軟體。

沒有留言: