瞭解這些,才算真正知道開源!

瞭解這些,才算真正知道開源!

作者 | 老曹

封圖付費下載自視覺中國

沒有開源軟件,現在的互聯網根本無法存在,開源的歷史可以追溯到 ARPANET 建立。開源在今天已經不再是一個時髦的詞了,對於互聯網的開發者來說,它現在就像空氣和水一樣,就在我們的生活中。

瞭解這些,才算真正知道開源!

來自 https://octoverse.github.com

如今的主流開源參與者,不再只是個人愛好者,更多的是著名 IT 企業的員工,商業公司也紛紛支持。IT 企業投入了大量人力在各個開源社區和項目上,包括開發測試、項目協調、運營推廣等。

什麼是開源?

從軟件的版權屬性和發佈方式上看,軟件的分類如下:

瞭解這些,才算真正知道開源!

開源軟件被定義為描述其源碼可以被公眾使用的軟件,並且此軟件的使用,修改和分發也不受許可證的限制。開放源碼軟件通常是有 copyright 的,它的許可證可能包含這樣一些限制:蓄意的保護它的開放源碼狀態,著者身份的公告,或者開發的控制。

簡單的說,開源就是源代碼開放和開源許可協議的選擇。開源意味著用戶可以免費運行、自由學習、免費二次分發以及自由修改改進。

開源許可協議及選擇

開源許可協議大概有上百種,例如:

  • Apache License 2.0 (Apache-2.0)
  • 3-clause BSD license (BSD-3-Clause)
  • GNU General Public License (GPL)
  • GNU Lesser General Public License (LGPL)
  • MIT license (MIT)
  • Mozilla Public License 2.0 (MPL-2.0)
  • Eclipse Public License (EPL-1.0)
  • ……

但是,常見的開源許可大約 10 種,主要有類似 GPL,類似 BSDL 和類似 MPL 等。

  • GPL

GPL 給軟件以版權保護,使用 GPL,可以獲得複製、發佈和修改這些軟件的法律許可。

GPL 的特殊性是 copyleft 與自由的病毒式傳播。在所有開源許可證中,GPL 的最大特色在於它的“copyleft”規則。 它嚴格地控制基於自由軟件的集合作品或者衍生作品,GPL 第 1 條將其稱為“基於程序的作品”,發佈規則很簡單,只要使用了 GPL 下的自由軟件,那麼衍生作品以及集合作品的發佈都要基於 GPL 之下。

類似的開源許可證 AGPL、LGPL 等等,是一種相對理想的是實用主義。

  • BSDL

BSDL 主要適用於 Apache 服務器和基於 BSD 的操作系統項目(FreeBSD、 OpenBSD、 NetBSD),不排斥對開源軟件的商業利用,有實用主義的觀點。

BSDL 的特殊性是被許可人的絕對自由,對被許可人做了最少的限制,只要尊重原作者, 合理恰當地標明瞭源代碼的出處,被許可人將不受限制於將這些源代碼用在自己的程序中而按自己的要求進行程序的發佈和軟件的許可、產生衍生作品後僅以目標碼的形式發佈,等等。這意味著可以從 BSDL 的開源軟件中衍生出私有軟件。

類似的開源許可證有 Apache、MIT 等等。

  • MPL

MPL 是 1998 年初 Netscape 的 Mozilla 項目組為其開放源代碼軟件項目設計的開源許可證。

MPL 的特殊性是在開源軟件許可證譜系中接近於 BSDL,但它帶有強烈的商業化特徵,為公司保留了相當的權利,相當於集開源之力,都為我所用。

類似的開源許可證 Apple 公共代碼許可證(1.2)、Sun 公司的 SISSL 和 Sun 公共許可證 (1.0)、Nokia 開放源代碼許可證(1.0a)、 IBM 公共許可證(1.0)等等。

如果選擇一個開源協議呢?烏克蘭程序員 Paul Bagwell 給出了一張分析圖,如下:

瞭解這些,才算真正知道開源!

國內的阮一峰在博客上給出了簡化的版本:

瞭解這些,才算真正知道開源!

除了 Linux 操作系統外,一個可能是最成功的複雜開源系統體系可能對理解開源許可協議有幫助。

Android 的開源許可體系

Android 有關 Linux 內核部分採用 GPLv2 協議開源,有關 userspace 採用 ASLv2(Apache 協議版本 2 )協議開源。

瞭解這些,才算真正知道開源!

GPL 和非 GPL 的分界線在於一個 Bionic Libc 的庫。頭文件由 Linux 內核的同名頭文件自動生成,用來獲取完成用戶空間系統調用的必要信息。它只包含原頭文件中的常數、結構和宏定義,因此,不包含版權信息。讓 GPL 止步於內核空間被 Linux 內核的作者 Linus Torvalds 以及其他的內核開發人員多次澄清,普通系統調用為非 GPL 的作用範圍。

Android 在用戶空間與內核空間之間存在著硬件抽象層 HAL,HAL 類庫本質上一種用戶空間的驅動,其中的主要用途之一就是規避 GPL。硬件廠家把需要保護的商業機密以及知識產權相關的邏輯放在 HAL 層,以二進制包的方式發佈,不需要公開源代碼。

PAX 專利聯盟是 Google 加強它對 Android 控制力 的另一種手段。手機廠商想要採用這些免費的專利,就不得不預裝 Play 商店及一系列 Google 應用。

開源與專利

將開源代碼修改後,自己申請軟件專利是可能的,這取決於具體的開源許可證。MPL 禁止將開放源代碼以許可證形式許可後再去申請與這些源代碼有關的專利的行為。BSD、Apache 等對於專利申請沒有限制。

就 Ricoh、SISSL、NOKOS、AFL、Artistic、APSL 等開源許可而言,貢獻者將自己享有實質專利權的技術加入開源軟件的,視為源代碼的專利權人將該專有權利向公眾許可。

使用代碼掃描工具如 Black DUCK 或 Openlogic 等,能夠對代碼進行合規性檢查,通過掃描源代碼,發現並確認其中存在的開源代碼,及其版本、許可證(License)信 息等,形成“材料清單”,讓用戶瞭解其代碼。

開源中的法律問題

開源軟件,雖然理念上違反傳統的知識產權法,但是行動上卻尋求包括著作權法、商標法、專利法在內的綜合保護,進而形成了一個類似於商業軟件知識產權綜合保護的體系。開源後,侵權證據極易獲得。

瞭解這些,才算真正知道開源!

關於開源軟件的著作權,主要有兩個維度的風險:

  • 複製、分發或修改他人軟件時,要求按照協議規定附上版權說明,若不履行該義務,將可能面臨著作權侵權(例如 Apache-2.0\BSD-3-Clause\GPL-3.0\MIT 等);
  • 對修改而言,有的協議明確要求對修改的部分進行明示,標明修改人信息(例如 Apache-2.0\GPL-3.0\LGPL 等)。

開源軟件的專利權也存在風險,協議中授權被許可人專利申請的權利,以及專利再許可的授權。若在協議中未明確專利的再授權,將會存在一定的專利侵權風險,如 BSD-3-Clause\MIT,未有明確的專利授權,專利侵權風險較大;GPL-3.0\LGPL-3.0,要求專利以免費的、非獨佔的許可方式分發給使用者,這就將一些授權風險排除,從協議來看風險反而會小一些。

開源軟件的商標權風險,未依據協議要求正確使用商標 在部分協議中,針對商標權的使用,予以明確授權 GPL-3.0\LGPL-3.0,未明確規定不能使用商標; Apache-2.0\BSD-3-Clause 明確不允許使用其商標,若使用將會存在商標侵權風險。在商業行為中,在開源程序中刪除原有商標,更換為自己的商標後發佈,構成商標法意義上的反向假冒,侵犯商標權。

那些開源的大公司

在 2016 年,微軟是 Linux 基金會的白金會員和董事,微軟雲 Azure 支持 Redhat,Ubuntu, Suse 等 Linux 版本。SQL Server 也推出了 Linux 版本,開源了.Net, Visual Studio 等核心產品,在 github 上貢獻排名一度超過了 facebook 和 google,內部人士宣稱除了 Window 和 Office,其他產品都已經開源或者在開源的路上。Azure 是微軟最重要的未來,事實上有 1/3 虛擬機是 Linux 系統,不支持 Linux,微軟雲沒法跟 AWS 和 Google 競爭。

Google 的核心業務場景是抓取網頁數據,建索引,最後響應用戶需求。Google 做了全產業鏈的佈局,而且全部以開源開放的方式,例如:

  • 瀏覽器 – Chrome & Blink
  • Webapp - PWA
  • 網頁加速- AMP
  • 前端框架 - AngularJS
  • ......

還有前面提到的 Android。以 Google 開源的圖片格式 Webp 為例,相對於 PNG 和 JPG,在文件長度上有 28%到 45%的減少,可以減少大量的存儲空間,帶寬以及頁面的平均加載時間。

在國內,華為的開源影響力很高,是 Linux 基金會,OpenStack 基金會,CNTF(k8s)的白金會員,且到目前為止都是國內唯一,貢獻排名均居前列。作為 Apache 基金會的金牌會員,捐獻的 CarbonData 成為了 Apache 的頂級項目。 華為的主張是“源於開源,強於開源,回饋開源”,通過參與開源,積極投入到雲計算的相關開源技術領域,引領並主導技術標準的演進,促進華為在雲計算基礎設施上的技術能夠領先。

百度有自己的對外開源規範,echarts 早在 2013 年就在 github 上開源了。2016 年 9 月,PaddlePaddle 在百度世界大會上宣佈開源,這是是一個易用、高效、靈活、可擴展的深度學習框架,兼容多種異構硬件,具有優異的訓練&預測性能,官方支持多種領先模型,提供全流程的深度學習模塊和組件,適合不同層次開發需求。百度在 github 上有數十個開源項目,2017 年 4 月,百度宣佈阿波羅計劃,無人車系統開源。

阿里知名項目 Weex、fastjson、Dubbo、RocketMQ、druid、jstorm 等等等。阿里通過用戶的意見反饋,bug 報告,patch 提交,促進了開源軟件本身的質量提高,技術能力和開放精神獲得了業內的認可,阿里技術工程師又了強烈的認同感,同時吸引了更多有能力的工程師加入。通過開源軟件和自主開發相結合,實現了更好可控性和更高可擴展性,阿里的技術品牌通過得到了加強。

開源的商業模式

開源的商業模式有很多,有點跟產品強關聯,例如微軟和 Azure;有的利用開源構建生態,從生態裡面掙錢,例如 Google Android。在維基百科上列出林林總總 18 種方式,主要包括:

  • 通過服務來收費,例如 RedHat,IBM 等;
  • 通過雙 License 來收費,例如 MongoDB、Neo4J 等;
  • 通過商業版本提供高級功能,例如 Cloudera(Hortonworks 已經併入 Cloudera 抱團取暖)等;
  • 通過雲來收費,例如 AWS、Azure 等等;
  • 通過生態來收益,例如 Google 等等。

一個好的開源項目需要有價值,這是前提。同時需要降低用戶貢獻的門檻,還需要提供合理的用戶激勵。

  • https://en.wikipedia.org/wiki/Business_models_for_open-source_software
  • http://opensource.org/osd
  • https://linuxfoundation.cn/resources/open-source-guides/starting-open-source-project/
  • https://about.gitlab.com/20-years-open-source
  • http://github.com/baidu/paddle
  • https://www.oschina.net/news/74999/how-to-choose-a-license
  • http://www.gnu.org/licenses/license-list.html

作者簡介:老曹,CSDN 博客專家,一個半吊子全棧工匠,二十多年的老碼農,三次世界 500 強企業的從業經歷,四家創業公司的投入,五篇鉛字短文,六次會議分享,七年時間見證一個生態系統的興衰,八種編程語言入門,九項國內外專利的署名,(《深入分佈式緩存》一書)十位作者之一。

博客地址:https://blog.csdn.net/wireless_com


分享到:


相關文章: