開源軟體的真正定義
如果你認為開源軟體是共享軟體、免費軟體和公有領域軟體的代名詞,那麼你並不是唯一有這種看法的人。
當你聽到“開源軟體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。沒有許可條款的軟體也是很常見的。
許多人錯誤地認為這種未經許可的軟體是開源軟體,屬於公有領域,或者不受限制地免費使用。在大多數國家(包括美國),軟體的版權在其建立時就已存在。這意味著不以許可證的形式許可就不能使用它,除非它以某種方式放棄版權,並將其放置在公有領域。此通用規則存在一些例外情況,例如法律層面的默示許可或合理使用。但是在如何將它們應用於特定狀況方面,情況非常複雜。在意圖讓其遵守開源許可條款的情況下,我不建議提供沒有許可條款的軟體,因為這會導致混亂和潛在的濫用。
就像我之前說的那樣,開源是高效的軟體開發模式,並具有推動創新的巨大能力。但這到底意味著什麼?
開源許可模式的好處之一是大大減少了創新方面的摩擦,尤其是原始作者以外的其他使用者所進行的創新。這種摩擦是有限的,因為使用開源軟體通常不需要協商許可條款,從而大大簡化並降低了使用成本。反過來,這建立了一種開源生態系統,它鼓勵快速修改和組合現有技術以形成新的事物。這些修改通常能回饋到開源生態系統中,從而構造了一個創新迴圈。
驅動大量事物(從你的烤麵包機到火星飛行器)運轉的無數種軟體,正是這種輕鬆地將各種程式組合在一起的能力的直接結果——開源開發模式讓所有這些軟體得以成為現實。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2684749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 共享、免費還是公有?開源軟體的真正定義
- 開源軟體映象站的使用:騰訊軟體源、阿里軟體源、浙大軟體源阿里
- 開源的天文軟體Stellarium MacMac
- 敏捷軟體開發的最佳資源敏捷
- 開源軟體名稱中的故事
- 在Linux中,開源軟體和自由軟體的區別?Linux
- 何為開源,聊聊軟體開發中的那些開源協議協議
- AspNetCore開源中介軟體-VueRouterHistoryNetCoreVue
- 中國軟體“成也開源,敗也開源”?
- 開源的NAS軟體專案儲存
- 值得關注的開源軟體推薦
- 阿里開源軟體替換指南阿里
- 開源專案管理軟體有哪些?分享7個實用開源專案管理軟體專案管理
- Github上的7款免費開源軟體Github
- 釋出你的開源軟體到 Ubuntu PPAUbuntu
- 免費開源的速度測試軟體:openspeedtest
- 開源筆記軟體 Joplin 背後的故事筆記
- 類似trello的區域網開源的軟體
- 說說ERP軟體的系統設計--開源軟體誕生8
- [深圳] 華為開源軟體部招聘開源社群專家
- ubuntu上的軟體源Ubuntu
- 開源軟體許可出毛病了?
- MySQL等開源軟體企業版MySql
- VMware 加入 OSSI 開源軟體學院
- 如何為開源軟體做出貢獻
- 開源基於Canal的開源增量資料訂閱&消費中介軟體
- 郵件安全相關開源軟體的介紹
- Linux 上的開源視訊剪輯軟體OliveLinux
- 嵌入式開源軟體的十大弊端
- InfluxDB、Grafana等開源軟體的監控後門UXGrafana
- 直播軟體開發,工具類的自定義彈窗效果
- 開源是什麼意思?開源軟體優缺點有哪些?
- Ubuntu 軟體源Ubuntu
- 軟體質量屬性真題
- 開源免費繪畫軟體 - Krita for MacMac
- 50款教育類開源應用軟體
- 開源軟體許可協議介紹協議
- 2022年,你還要做開源軟體麼?