#作者:任少近
文章目錄
- 1.背景與問題
- 1.1.背景
- 1.2.問題
- 3.SSPL條款解讀分析
- 3.1.條款0:定義條款
- 3.2.條款一:源代碼條款
- 3.3.條款二:基本授權條款
- 3.4.條款三:反規避保護條款
- 3.5.條款四:逐字傳播條款
- 3.6.條款五:修改版本傳播條款
1.背景與問題
1.1.背景
MongoDB 是一款高性能、高可用的分布式 文檔數據庫,廣泛應用于現代應用開發中的大數據存儲、實時分析和靈活的數據管理場景。在 磐基PaaS平臺 上,我們為客戶提供經過優化配置的 MongoDB 解決方案,支持通過 容器鏡像 或 二進制文件 等多種形式部署。
注意:自 MongoDB 4.0 版本(2018年10月)起,官方采用 Server Side Public License (SSPL) v1.0 作為核心數據庫的許可證,用戶在商業部署時應仔細評估其合規要求。
1.2.問題
作為云PaaS平臺提供商,在向客戶提供MongoDB時,是否存在(SSPL) v1.0 許可證下的合規風險。
2.SSPL 條款邏輯結構
SSPL 是 MongoDB Inc. 在 2018 年推出的新型開源協議,基于GPLv3修改,主要針對云服務提供商(如 AWS、阿里云) 使用 MongoDB 的方式增加了額外限制。其核心目標是防止云廠商將 MongoDB 作為托管服務商業化而不回饋社區。
SSPL 的 17 個條款 可劃分為 4 個邏輯模塊:
- 基礎自由與 Copyleft 條款(條款 0-10)
- SSPL 特有 SaaS/托管服務限制(核心新增部分)(條款 11-13)
- 專利與商標條款(條款 14-15)
- 免責與終止條款(條款 16-17)
3.SSPL條款解讀分析
SSPL主要為以下17個條款,以下逐一條款進行說明
3.1.條款0:定義條款
條款0是SSPL的基礎定義條款,明確協議中關鍵術語的法律含義,其解釋直接影響后續所有條款的適用范圍。與GPLv3§0結構相似,但包含SSPL特有的云服務相關定義。
官方原文如下:
原文關鍵部分1
“The ‘Program’ refers to any copyrightable work licensed under this License.”
法律意義:
涵蓋所有受版權保護的SSPL授權作品(如MongoDB社區版代碼、文檔、配置文件)。
如:明確排除聚合作品(Aggregate)中獨立的部分(見條款5末段)。
- “Covered Work”(涵蓋作品)
原文關鍵部分2
“A ‘covered work’ means either the unmodified Program or a work based on the Program.”
法律意義:
包括:
原始SSPL軟件;
任何修改版或衍生作品(需滿足條款5的聲明要求)。
邊界爭議:
動態鏈接庫是否屬于衍生作品
-
“Convey”(傳遞)
原文關鍵部分3
“‘Convey’ means any kind of propagation that enables other parties to make or receive copies, or to interact with the work remotely through a computer network.”
法律意義:
包括:
傳統分發(如提供下載、物理介質);
云服務/SaaS(用戶遠程交互即視為“傳遞”)。
關鍵影響:觸發條款12(服務棧開源)的核心條件。 -
“Corresponding Source”(對應源代碼)
原文關鍵部分4
“The ‘Corresponding Source’ includes all source code needed to generate, install, and run the object code, and to modify the work.”
法律意義:
必須提供的源代碼范圍:
編譯工具鏈(如構建腳本);
依賴庫(除非是標準系統庫);
配置文件。
SSPL特殊性:
若涉及云服務(條款12),還需包含服務棧代碼(如管理平臺、監控工具)。
- “Aggregate”(聚合作品)
原文關鍵部分5
“An ‘aggregate’ is a compilation of a covered work with other separate works, which are not by their nature extensions of the covered work.”
法律意義:
允許行為:
將SSPL軟件與獨立作品(如Nginx、Linux內核)打包分發,不觸發傳染性。
禁止行為:
若組合后形成功能耦合(如專有工具直接調用MongoDB內核),則視為衍生作品(需整體SSPL授權)
- 企業合規關鍵點
安全使用場景
聚合分發:如將MongoDB與Apache Kafka打包為容器鏡像,兩者無代碼級依賴。
內部修改:如不對外“傳遞”(Convey)則無需開源。
3.2.條款一:源代碼條款
官方原文如下:
原文關鍵部分
.“The ‘source code’ for a work means the preferred form of the work for making modifications to it. ‘Object code’ means any non-source form of a work.”
- 解讀:“作品的‘源代碼’是指對該作品進行修改的首選形式。‘目標代碼’是指作品的任何非源代碼形式。”
-
源代碼定義
“Preferred form for modifications”(修改的首選形式):
不僅包括原始人類可讀代碼(如.js/.py文件),還涵蓋:
構建腳本(如Makefile);
配置文件(如.yaml);
文檔注釋(若影響編譯)。
排除項:自動生成的代碼通常不視為源代碼。 -
目標代碼定義
“Any non-source form”(任何非源代碼形式):
包括:
編譯后的二進制(如.exe/.so);
字節碼(如Java .class文件);
混淆后的代碼(如經過UglifyJS處理的JS)。 -
企業合規要點
源代碼提供義務(條款4關聯)
必須提供:
修改后的完整源代碼;
構建環境說明(如Dockerfile);
第三方依賴的獲取方式(除非是標準庫)。
提供方式:
隨二進制包附帶;
提供書面下載承諾(有效期3年)。
3.3.條款二:基本授權條款
官方原文如下:
原文關鍵部分. “You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.”
- 解讀:“只要您的許可證仍然有效,您可以制作、運行和傳播您未傳遞(not convey)的涵蓋作品,且不受任何附加條件的限制。”
-
允許的行為(無需合規義務)
制作(Make):
編譯、安裝、部署SSPL軟件(如MongoDB)。
運行(Run):
在本地或服務器上自由使用。
傳播(Propagate):
在內部網絡中共享副本(如企業內部分發)。
關鍵限制:
僅適用于“未傳遞”(not convey)的場景:
若行為構成“傳遞”(Convey,見條款0定義),則需遵守條款4~12(如開源要求)。 -
企業合規建議
安全行為:
內部研發、測試、非商業化部署。
高風險行為:
任何形式的對外分發或SaaS化(需嚴格評估條款12)
法律審查:
確認“傳遞”行為的邊界(如子公司間共享是否構成“傳遞”)
3.4.條款三:反規避保護條款
官方原文如下:
原文關鍵部分: “You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.”
- 解讀:只要您的許可證仍然有效,您可以制作、運行和傳播您未傳遞的涵蓋作品,而無任何附加條件
- 合規行為:
- 內部使用: 企業修改MongoDB代碼后僅用于內部業務系統,不對外分發或提供云服務
- 私有修改與測試: 開發者fork MongoDB社區版進行實驗性優化,未公開代碼或服務
- 非傳遞性運行: 在本地開發環境中運行修改后的MongoDB,未部署到公有云或提供給客戶
- 風險行為:
- 任何構成“傳遞(convey)”或違反SSPL擴展義務的操作,均超出條款3的保護范圍。
如:子公司向關聯公司收費提供,就有可能觸發條款12
3.5.條款四:逐字傳播條款
官方原文如下:
原文關鍵部分:
“You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you:
a) conspicuously and appropriately publish on each copy an appropriate copyright notice;
b) keep intact all notices stating that this License applies to the code;
c) keep intact all notices of the absence of any warranty;
d) give all recipients a copy of this License.”
- 解讀:“您可以以任何媒介傳遞您收到的程序的源代碼的逐字副本,但您必須:
a) 在每個副本上顯著且適當地發布適當的版權聲明;
b) 保留所有聲明本許可證適用于代碼的通知;
c) 保留所有關于無擔保聲明的通知;
d) 向所有接收者提供本許可證的副本。” - 核心義務:規范二進制分發(Object Code)時的源代碼提供要求,是SSPL Copyleft傳染性的關鍵條款
- 合規行為:
- 提供對應源代碼: 必須隨二進制分發提供完整的、機器可讀的源代碼(或明確的獲取方式)
- 源代碼完整性: 源代碼需與二進制版本完全匹配,包括依賴項(除非是標準系統庫)
?許可證聲明保留: 保留所有原始版權聲明和SSPL許可證文件(如LICENSE) - 違規行為:
- 二進制分發不提供源代碼獲取方式(違反條款4與條款1關聯義務)
- 在下載頁面隱藏許可證文本(需"conspicuously"顯著展示)
- 重新打包時刪除NOTICE文件
- 顯著標注的標準
- 網頁下載按鈕旁直接顯示許可證
- 二進制安裝包啟動時顯示聲明
3.6.條款五:修改版本傳播條款
官方原文如下:
原文關鍵部分:You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
- 解讀:條款5規定了修改版本的分發條件,在遵守條款4(基礎分發要求)的前提下,必須滿足以下額外要求:
- 修改聲明(5a)在修改版代碼中必須包含醒目的修改聲明。包括:
明確標注“此版本已修改”
注明修改日期 - 許可證聲明(5b)必須明確聲明修改版仍遵循SSPL,并保留所有原始許可證聲明(條款4要求),同時需包含條款7可能的附加條件
在項目根目錄保留 LICENSE 文件(SSPL原文)
在代碼文件頭注明 Licensed under SSPLv1 - 全作品許可(5c)要求:修改版必須整體以SSPL授權,不得部分閉源或混合其他許可證。“無論以何種方式打包”:即使分模塊分發,所有部分均需遵守SSPL
- 交互界面法律聲明(5d)要求:若修改版有交互界面(如Web UI),需展示法律聲明(如“基于SSPL授權”)
- 合規行為:
- 僅為本公司修改代碼
- 企業A修改MongoDB并分發,所有代碼(含新增文件)必須采用SSPL
- 違規行為:
- 標注修改來源或日期可能導致協議違反
將修改版MongoDB與專有代碼打包,僅開源MongoDB部分。
- 標注修改來源或日期可能導致協議違反