開源軟件的真正定義

如果你認爲開源軟件是共享軟件、免費軟件和公有領域軟件的代名詞,那麼你並不是唯一有這種看法的人。

當你聽到“開源軟件open source”一詞時,你是否認爲它與諸如共享軟件shareware、免費軟件freeware或公有領域軟件public domain之類的術語同義? 如果是這樣的話,你並不是唯一有這種看法的人。在軟件行業內外的許多人都認爲這些術語是一樣的。本文說明了這些術語的不同之處,認爲開源是一種變革性的許可和開發模式。分享我與以上幾種軟件打交道的經驗,可能是探究差異的最佳方法。

共享軟件和免費軟件

早在 1982 年,當我在 Apple II Plus 上用 BASIC 編寫代碼時,我就開始從事計算機程序員的工作。我回想起去家鄉當地的計算機商店,並在塑料袋中找到看起來價格高昂的裝有遊戲和實用程序軟件的軟盤。請記住,這是從一箇中學生的角度來看的。

但是,有一些軟件可以免費或以最低價格獲得。依據具體許可模式,它被稱爲共享軟件或免費軟件。在共享軟件模式下,你只能在一定時間內使用該軟件,如果你發現它有用,則要求你將支票寄給該軟件的作者。

但是,某些共享軟件實際上也鼓勵你複製並提供給你的朋友。這種模式通常稱爲免費軟件。也就是說,共享軟件和免費軟件確切定義之間的差異十分微小,因此很容易將兩者簡單地統稱爲“共享軟件”。我雖不能肯定,但是我不記得我是否向任何軟件作者提供過使用共享軟件的費用,主要是因爲我在十幾歲的時候就沒有錢,但是我肯定喜歡使用這些軟件程序,並且從中學到了很多有關計算機的知識。

回顧過去,我現在意識到,如果該軟件是根據開源許可條款而非共享軟件條款提供的,那麼作爲一名新興的程序員,我本可以在成長中學到很多東西,並且可以取得更多成就。這是因爲幾乎沒有共享軟件會提供源代碼(即,人類可讀的軟件形式)。共享軟件還包含許可限制,禁止接收者試圖泄露其源代碼。如果無法訪問源代碼,則很難了解該軟件的實際工作方式,從而很難擴展或更改其功能。這使得最終用戶完全依賴共享軟件原始作者進行任何更改或改進。

使用共享軟件模式,任何開發人員社區幾乎都不可能對代碼施加影響,並進一步圍繞代碼進行創新。再分發和商業使用也可能受到進一步的限制。儘管共享軟件可能在價格方面是免費的(至少在最初是免費的),但它在自由權利方面並不是免費的,並且不允許你通過探索代碼的內部原理來學習和創新。

這就引出了一個大問題:它與開源軟件有何不同?

開源許可的基礎

首先,我們需要了解“開源”是指許可模式和軟件開發模式,兩者與共享軟件都有很大不同。在一種稱爲非“左版”copyleft開源許可的開源形式下,向用戶提供了關鍵的自由權利,例如對訪問源代碼沒有限制;可以出於任何目的出售、使用或贈送該軟件;可以修改軟件。

這種形式的許可也不需要支付任何使用費或許可費。因爲許可是高度寬鬆的,不需要談判就可以使用,這種許可模式的一個驚人結果是它具有獨特的能力,可以使無數軟件開發人員協作起來對代碼進行新的、有用的更改和創新。儘管從技術上講,在這種許可模式下不需要提供源代碼,但是幾乎所有人都可以使用它來查看、學習、修改和分發給他人。

非“左版”開源許可的另一個方面是,此類軟件的任何接收者都可以添加其他許可限制。這意味着以這種許可形式對代碼進行許可的初始作者,無法阻止接收者可能依據限制性更強的條款不再進一步許可給其他人。例如:

假設作者 Noah 編寫了一些軟件,並根據非“左版”開源許可將其分發給了接收者 Aviva。然後,Aviva 修改並改進了 Noah 的軟件,她有權根據非“左版”開源許可條款使用該軟件。然後,Aviva 可以決定對可能限制該軟件使用的任何接收者施加進一步的限制,例如在何處或如何使用它(例如,Aviva 可以增加一項限制,規定該軟件只能在以下地區使用:加利福尼亞,並且不允許在任何核電廠中使用)。 即使 Aviva 可以訪問源代碼,也可以選擇永遠不將修改後的源代碼發佈給他人。

不幸的是,有無數的專有軟件公司以上述方式使用非“左版”開源許可軟件。實際上,共享軟件程序可以通過添加共享軟件類型限制(例如,無法訪問源代碼或排除商業用途)來使用非“左版”開源許可軟件,從而將非“左版”開源許可代碼轉換爲共享軟件許可模式。

幸運的是,許多使用非“左版”開源許可軟件的專有軟件公司都看到了發佈源代碼的好處。這些組織一般通過諸如 GitHub 之類的軟件存儲平臺向其接收者或更廣泛的開源社區提供修改後的源代碼,從而繼續保持開源模式的持久性,實現創新的良性循環。這並不是完全出於慈善目的(或者至少通常不是這樣):這些公司希望鼓勵社區創新和進一步改進,從而使他們也一併受益。

同時,許多專有軟件公司不選擇這樣做,這也完全符合非“左版”開源許可證條款的規定。

“左版”許可的開源軟件

1989 年,一種新的被稱爲 GNU 通用公共許可證(也稱爲 GPL 許可證)的開源許可證被開發出來,其目的是確保軟件“生來自由”(如同言論自由),並且能始終保持這種自由,這與非“左版”開源許可軟件有時會發生的情況不同。作爲版權法的獨特適用,只要遵守這些規則(稍後會再介紹),GPL 許可證能夠確保持續的軟件自由。版權的這種獨特適用稱爲“左版”copyleft。

與非“左版”開源軟件一樣,“左版”許可證允許接收者不受限制地使用該軟件、檢查源代碼、修改軟件,以及將原始或經修改的軟件進一步分發給其他接收者。與非“左版”開源許可證不同,“左版”開源許可證要求所有接收者必須也具有這些相同的自由權利。除非不遵守規則,否則這些自由權利決不能被收回。

使“左版”開源許可證能夠強制執行,並促使人們遵守法規的原因是版權法的適用。如果“左版”代碼的接收者不遵守許可條款(例如,對軟件使用添加任何其他限制或不提供源代碼),則其許可將被終止,並且由於他不再享有使用該軟件的法律許可,他將成爲版權侵犯者。因此,該“左版”許可軟件任何下游接收者的自由權利得以保障。

超越基礎:其他軟件許可模式

我在前面提到了公有領域軟件,儘管它通常與開源軟件混爲一談,但是這種模式有所不同。公有領域軟件是指已採取步驟查看後獲知沒有與該軟件相對應的版權存在,最常見的情況是軟件版權到期或被作者放棄。(在許多國家/地區,版權保護機制尚不明確,這就是爲什麼某些公有領域軟件可能選擇開源許可模式作爲備選方案的原因。)使用公有領域軟件無需許可證。儘管如果源代碼可獲取的話,許多人會認爲公有領域軟件是開源軟件的一種形式,但無需許可證是否讓公有領域軟件成爲“開源軟件”,是存在很多爭論的主題。

有趣的是,有許多開源項目利用公有領域軟件的小模塊來實現某些功能。甚至還有聲稱整個程序屬於公有領域的軟件,例如實現了 SQL 數據庫引擎並在許多應用程序和設備中使用的 SQLite。沒有許可條款的軟件也是很常見的。

許多人錯誤地認爲這種未經許可的軟件是開源軟件,屬於公有領域,或者不受限制地免費使用。在大多數國家(包括美國),軟件的版權在其創建時就已存在。這意味着不以許可證的形式許可就不能使用它,除非它以某種方式放棄版權,並將其放置在公有領域。此通用規則存在一些例外情況,例如法律層面的默示許可或合理使用。但是在如何將它們應用於特定狀況方面,情況非常複雜。在意圖讓其遵守開源許可條款的情況下,我不建議提供沒有許可條款的軟件,因爲這會導致混亂和潛在的濫用。

開源軟件的好處

就像我之前說的那樣,開源是高效的軟件開發模式,並具有推動創新的巨大能力。但這到底意味着什麼?

開源許可模式的好處之一是大大減少了創新方面的摩擦,尤其是原始作者以外的其他用戶所進行的創新。這種摩擦是有限的,因爲使用開源軟件通常不需要協商許可條款,從而大大簡化並降低了使用成本。反過來,這創建了一種開源生態系統,它鼓勵快速修改和組合現有技術以形成新的事物。這些修改通常能回饋到開源生態系統中,從而構造了一個創新循環。

驅動大量事物(從你的烤麪包機到火星飛行器)運轉的無數種軟件,正是這種輕鬆地將各種程序組合在一起的能力的直接結果——開源開發模式讓所有這些軟件得以成爲現實。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章