夜天之書 #88 Elastic License 2.0 與開源協議的發展

譯序

我在此前的多篇文章中討論了商業開源的話題:

  • 《企業開源的軟件協議模型實踐》

  • 《企業實踐開源的動機》

  • 《商業源碼協議為何得到 HashiCorp 等企業的垂青?》

  • 《企業如何實踐開源協同》

  • 《中國不缺好的開源開發者》“商業探索與可持續”一節

  • 《開源不是商業模式》

  • 《誘導轉向的偽開源戰略》

  • 《免費增值的商業模式》

這些討論當中觀點的源頭,除了我在商業開源公司的工作經歷以外,也有對國外企業主和律師的內容的理解。其中,撰寫了《Open Source for Business》[1](中文版為開放原子開源基金會律師劉偉翻譯的《商業開源》)的大律師 Heather Meeker 的觀點尤為重要。早在夜天之書 #6 一文里,我就引用過 Heather Meeker 的觀點。

今年五月份前后,我讀到了 Elastic License 2.0 and the Evolution of Open Source Licensing[2] 一文。它是 Heather Meeker 律師帶頭撰寫 Elastic License 2.0 協議背后的故事和自述。我深感它對于近五年商業開源軟件形勢發展的影響,于是向 Heather Meeker 申請了翻譯本文的授權。今天終于有時間完成翻譯,希望能幫助國內關注商業開源的企業家、開發者以及律師,了解發生在北美軟件行業的一系列變化。

以下原文翻譯。

2021 年 2 月,Elastic 發布了其軟件產品的新協議,即 Elastic License 2.0[3] 協議。通過這一舉措,包括 ElasticSearch 和 Kibana 在內的一系列重要軟件采用了一種新的、公開的以及簡化的協議模型。這一變化是如何發生的?其背后的原因是什么?這些變化又意味著什么呢?

Elastic 的新協議是針對采用開放發展模式的公司在軟件協議最佳實踐方面的一個重要趨勢的結晶。它并不是一個開源協議,但它旨在設定最低限度的限制,以在自由使用、共享和修改軟件之間取得平衡,并防止對社群造成損害的行為的發生。

UNIX / Linux / 自由軟件 / 開源

要想理解 Elastic License 2.0 所代表的新協議趨勢,知道它是如何從開源協議運動中發展而來的至關重要。

開源運動或自由軟件運動,源于開發者對軟件私有化和軟件開發分叉的擔憂。UNIX 的一系列操作是這些擔憂的來源。

UNIX 是當時最流行的操作系統。多年來,UNIX 的許可條件非常慷慨,因為它的開發者 AT&T 貝爾實驗室受制于 1956 年的同意法令,不能從其研究項目中獲利,其中包括 UNIX 和 C 語言。學者、研究人員和開發者開始分享他們的改動和改進,因此 UNIX 很快成為操作系統的領導者。

原注 "Modification of Final Judgment," August 24, 1982, filed in case 82-0192, United States of America v. Western Electric Company, Incorporated, and American Telephone and Telegraph Company, U.S. District Court for the District of Columbia web.archive.org/web/20060827191354/members.cox.

然而,上述同意法令在 1983 年一經解除,AT&T 就立刻根據傳統的商業條款設計不允許分享更改的軟件協議。此后,UNIX 分裂成許多不兼容的版本,并且其專有軟件協議禁止用戶像以前那樣通過分享改動進行合作。

自由軟件運動以及隨后的開源運動是對 UNIX 私有化的回應。它們試圖防止基礎設施軟件再次走向封閉。這個運動以 UNIX 的自由軟件替代品 Linux 為中心,并很快發展成一個認為“所有軟件生而自由”的具有巨大影響力的運動。這個運動的核心理念包括用戶有權訪問源代碼、改進軟件和分享軟件的改進版本。這些原則體現在 GNU 通用公共協議[4](GPL)中,該協議要求二進制文件的分發者必須向接受者免費提供相應的源代碼。

隨著時間的推移,尤其是 2000 年初互聯網的興起,開源協議變得越來越受歡迎。盡管部分開源協議(例如 GPL 協議)新穎且復雜,引發了一些法律上的擔憂,但它們為企業間的合作鋪平了道路。很快,開源以及它所促進的合作被整個技術行業全心接受。如今,開源是電子商務的支柱,企業經常合作開發基礎軟件。

云的興起和 AGPL 協議

GPL 協議要求分享修改后的源代碼,但是這個要求只在二進制分發時生效,即取得二進制的人有權索要源代碼。但是,這意味著 GPL 允許制作和使用“私有版本”:如果不對外分發二進制,也就無需分享更改。在大多數軟件仍然依靠本地分發的年代,這種方式有效地促使了分享。從 2000 年開始,軟件交付開始向公共云遷移,軟件服務提供商不再需要直接向客戶分發任何二進制文件。相反,客戶可以在不獲取本地副本的情況下使用軟件。

隨著云服務的業務規模增長,這種范式轉變激化了部分開源社群和 AWS 等企業之間的緊張關系。云廠商沒有任何法律義務分享他們的改進。有點諷刺的是,這種情況有時被稱為“Google 漏洞”。“Google 漏洞”這一稱謂之所以說諷刺,是因為盡管谷歌依賴 Linux 來支持其搜索服務,但是谷歌和許多其他頂級云廠商(如 IBM 等)為包括 Linux 在內的開源社群做出過重大貢獻。

自由軟件社群對此的回應,是創造了一種名為 Affero GPL (AGPL) 的 GPL 替代形式。AGPL 3.0 與 GPL 3.0 幾乎完全相同,但增加了一個遠程網絡交互條款,該條款規定:“如果你修改了程序,你的修改版本必須明顯地向通過計算機網絡與之遠程交互的所有用戶,提供通過某種標準或習慣的軟件復制方式,無償地從網絡服務器獲得您版本的相應源代碼的支持。”這個新的協議旨在強制云廠商分享它們的源代碼改進,從而再現 GPL 約束 Linux 發行版開放其源代碼的成功。

If you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network … an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software….

AGPL 和雙重許可

AGPL 自首次發布以來就備受爭議。

在 GPL 3.0 起草并最終于 2007 年發布的過程中,有一派人想將 GPL 改為與如今的 AGPL 一樣的網絡共享模型。然而,自由軟件社群最終決定保留 GPL 3.0 中的“漏洞”。

幾個月后,自由軟件基金會發布了 AGPL 作為解決該漏洞的替代方案。但是 AGPL 并沒有得到廣泛采用。不過,就像 GPL 有 Linux 這一殺手級應用,AGPL 也有自己的殺手級應用,這就是 MongoDB[5] 數據庫。

MongoDB 是一款非常受歡迎的分布式數據庫產品。雖然一開始,很多企業難以理解和接受 AGPL 協議,但是大多數用戶從未更改過軟件,也沒有將其作為服務提供,因此他們能夠理性地決定在 AGPL 下使用該軟件。

MongoDB 基于 AGPL 協議設計了它的雙重許可[6]商業模型,即軟件可以根據被許可人選擇的兩種協議之一提供:(1)AGPL 協議(2)經過協商取得的商業軟件協議。那些不希望遵守 AGPL 要求,或不愿進行法律分析以確定是否能夠遵守的人,選擇購買商業軟件協議。

這種商業模型最初由 MySQL 開創,MySQL 當時使用了 GPL 的一個變種。隨著時間的推移,AGPL 成為雙重許可模式的首選軟件協議。MongoDB 在這種協議模型下取得了相當的成功。AGPL 是常用軟件協議里最強的強制共享(Copyleft)軟件協議,因此在推動商業談判方面最有用,也就被用在雙重許可模型上。但是,AGPL 的起草者批評了這種使用 AGPL 的方式,稱該商業模型是一種有害的勒索行為[7]。盡管如此,APL 的源碼分享條件并不足以阻止企業在不給開發者或用戶社群帶來任何回報的前提下大規模商用。

Strip-mining

譯注:國外開源語境下的 strip-mining 含義和國內所謂的“白嫖開源”意義類似。

就像云計算的發展打破了基于 GPL 的雙重許可模型一樣,2010 年代云計算的進步,云交付模式開始對基于 AGPL 的雙重許可模型施加壓力。

這次問題有所不同,“漏洞”出現在 GPL 或 AGPL 的范圍僅限于一個單獨的程序可執行文件。這個“漏洞”是有意設計到 GPL 中的,理論上,版權協議只能為一個可受版權保護的作品規定條款。因此,GPL 對衍生作品(derivative works)有源代碼共享的要求,但對集體作品(collective works)沒有。在法律上,這兩者之間的界線非常模糊,完全取決于觀察者的主觀看法。但在過去,隨著 GPL 的普及,強大的行業實踐已經形成:一個程序被定義為一個可執行進程。自由軟件基金會在其 GPL FAQ[8] 中長期闡述了這些原則。

然而,隨著云服務的發展,發生了兩件事:

  1. 軟件工程越來越專注于云部署。云廠商曾經需要修改開源軟件以使其能在云環境中正確運行,但軟件工程的進步使現有的開源軟件更加適應云廠商的“即插即用”需求。也就是說,不用修改一行代碼,開源軟件也可以與云基礎設施良好的集成。

  2. 云廠商開始在核心開源軟件之外進行創新。他們開發了額外的軟件來管理、監控和部署軟件。這些創新推動了云服務的業務增長。同時,它們是跟核心開源軟件獨立的軟件,即使核心軟件以 AGPL 發布,也無法強制云廠商分享這些輔助軟件的源代碼。

這兩者相結合形成了這樣一種形勢:商業開源公司實際上成為大型云廠商“資產負債表以外的研發機構”。這個問題在開源的平臺軟件或中間件方面尤為突出,因為這些軟件位于頂層應用程序和操作系統之間,在應用程序棧中起著重要作用,且對于云部署非常有用。

這種變化在商業界引起了對云廠商使用開源軟件的強烈抗議。在 2018 年的一份具有里程碑意義的宣言[9]中,貝恩資本的 Salil Deshpande 寫道:“明確地說,這并不違法。但我們認為這是錯誤的,不利于開源社群的可持續發展。”另一位評論家寫道[10]:“AWS 正在攻擊開源的阿喀琉斯之踵:竊取他人的工作,并銷售租賃這些工作成果的服務。”問題在于,所有主要的開源協議都允許以這種方式使用軟件。

商業開源公司及其投資者對開源模型的局限感到不滿,他們手頭沒有任何軟件協議可以利用版權法強制云廠商進行共享。即使是 GPL 和 AGPL 也對此無能為力。

同時,擁有龐大客戶群的云廠商可以為開源軟件提供更好的云平臺集成。在 AWS、Azure 或 Google Cloud 平臺上,客戶可以輕松地一鍵添加軟件。一些開源軟件的開發者提供了自己的云服務,但是發現與免費使用他們開發的開源軟件的大型云廠商競爭太困難了。即使開發者的服務更好,與云廠商建立合作關系也存在交易成本,而不僅僅是云廠商原生集成服務的一鍵集成體驗。

SSPL 和源碼可得協議

在 2018 年,整個行業的發展來到了一個臨界點:隨著 AWS 等云廠商持續不斷地通過托管開源軟件掙錢,開發者們開始采取應對措施,首先就是一系列快速的軟件協議變更。

商業開源公司對 strip-mining 問題[11]做出了兩種不同的反應:一種是超強網絡共享軟件協議,另一種是帶有限制條件的源碼可得協議。在此之前,還沒有人對這兩類協議進行明確定義。這兩類協議都旨在支持雙重許可模型,即引導潛在客戶經過協商購買商業軟件協議,就像幫助構建 MySQL 和 MongoDB 的模式一樣。

超強網絡共享軟件協議的方法由 MongoDB 推進發展,他們在 2018 年發布了 Server Side Public License (SSPL)[12] 協議。SSPL 與 AGPL 幾乎完全相同,但擴展了 AGPL 的遠程網絡條款,如下所述:

  1. Offering the Program as a Service.

If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License. Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.

"Service Source Code" means the Corresponding Source for the Program or the modified version, and the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available. [emphasis added].

譯注:法律文本翻譯極其拗口,這里放原文。主要 SSPL 跟 AGPL 的區別就在于 AGPL 僅對衍生作品提出分享源碼的要求,即前文所述的運行在同一進程的代碼,而 SSPL 定義了 Service Source Code 的概念,即要求整個服務棧相關的代碼都需要以 SSPL 的條款提供。

SSPL 的編寫旨在為 strip-mining 問題提供一個開源解決方案。它的源碼共享要求比 AGPL 更廣泛。這種更廣泛的源碼共享描述被有意設計成類似于 GPL 對分發軟件的要求的形式。MongoDB 繼續采用雙重許可模型,其軟件可根據 SSPL 協議或經過協商的商業軟件協議[13]提供。

MongoDB 將 SSPL 提交給開源促進會[14](OSI)審議。經過數月的激烈爭議后,SSPL 的 OSI 認證申請被駁回,但 MongoDB 繼續在其雙重許可模型的“開源”選項中使用 SSPL 協議。關于為什么 SSPL 符合或不符合開源定義[15],討論很復雜。不過,符合開源定義并不是唯一的爭論點,總體而言,這個要求共享范圍如此廣泛的軟件協議是否能夠“保證軟件自由[16]”,尚且沒有一個明確的結論。

其他人選擇了不同的道路。一些公司采用了由 Salil Deshpande 主持編寫的 Commons Clause[17] 條款,而其他公司則自行制定了軟件協議,例如 Redis[18]、Confluent[19] 和 CockroachDB[20] 等,以及 Elastic 公司的 Elastic License 1.0[21] 協議。不同于 SSPL 協議,這些軟件協議從未期望符合開源定義。相反,它們具有專門針對 strip-mining 的限制條款。

為什么選擇了這些不同的道路?這與一個被稱為 Freedom 0[22] 的概念有關。Freedom 0 的內容是:用戶按照自己的意愿運行程序,用于任何目的的自由。

原注:自由軟件定義和開源定義類似,但是更加簡短和清晰。

開源或自由軟件協議的主要特點之一,就是它不包含任何許可限制或限制條件。

原注:開源協議可以包含條件,例如發布時包含 NOTICE 文件或要求共享源代碼,但是這些并不是限制用戶使用軟件的規定。它們只要求如果用戶選擇執行某些操作,那么用戶也必須執行其他操作。(譯注:例如,GPL 允許用戶自由使用,但是如果一個人要分發修改版本的二進制,那么分發者需要保證接收者能夠以和 GPL 相同的條款使用修改版本,其中包括取得修改版本的源代碼。)

相比于典型的商業軟件協議,終端用戶協議只允許用戶使用軟件,但不允許分發或修改;企業軟件協議通常限制軟件使用的用戶數、服務器數或物理位置,并要求公司對其使用進行審計。但是,開源協議不包含任何此類限制。因此,可能有些反直覺,雖然開源軟件源代碼總是免費提供,但是如果一個自稱開源協議限制軟件的非商業使用,那么它也違反了開源定義。

這意味著任何許可限制都使軟件協議不再屬于開源協議。

在 2018 年及以后的重新許可浪潮中發布的所有協議都具有大致相似的限制。雖然每個協議都有自己的條款,但它們都側重于允許用戶免費使用軟件,同時禁止使用軟件提供競爭性的托管服務。

Elastic License 2.0

在2021年初,Elastic 開辟了新的道路,同時選擇了上述兩種路徑。它使用 SSPL 和 Elastic License 2.0[23] (ELv2) 對 ElasticSearch 進行雙重許可。

ELv2 非常簡短。它用通俗的語言編寫,內容總共只有一頁多。ELv2 授予用戶一個典型開源協議授予的幾乎所有自由。軟件的接收者可以自由使用、更改和重新分發軟件。即使您以前從未閱讀過軟件協議,也值得一讀。

ELv2 在上述自由之外有兩個關鍵限制:

You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software.

You may not move, change, disable, or circumvent the license key functionality in the software, and you may not remove or obscure any functionality in the software that is protected by the license key.

第一條限制是為了解決 strip-mining 問題。通過這條限制,ELv2 不授權接受者基于該軟件提供托管服務。

第二條限制禁止破解軟件許可密鑰。這樣的限制在軟件許可中長期存在,但在源碼可得協議中的使用剛剛開始。這些條款允許開發人員運行與軟件交互的付費服務,或者保留一些軟件組件用于付費功能。

ELv2 的其他條款非常直接,對于任何閱讀過開源協議的人來說應該是熟悉的。

為什么選擇雙重許可?

在提供 SSPL 和 ELv2 兩種選擇給用戶時,Elastic 選擇了一條不尋常的道路。如今,許多公司采用“開放核心”模型,事實上,Elastic 之前也使用過這種模型。兩者之間的區別可能很微妙。開放核心模型在開源協議下提供核心軟件:通常使用 Apache License 2.0 這樣的寬松開源協議。然后,這些公司開發額外的適用于大規模企業部署的功能,并只在限制型協議下提供,或者僅作為商業服務提供。但是,通過新的軟件協議,Elastic 堅持采用雙重許可模型,即相同的軟件可在兩種不同的軟件協議下使用。這種模型由 MySQL 首創,通常使用類似 GPL、AGPL 或 SSPL 的強制共享協議作為免費軟件協議選擇。由于開源協議和云服務之間的緊張關系,這種模型在最近幾年變得不太流行。

Elastic 的選擇更加不尋常,因為它提供了兩種免費的軟件協議選擇,SSPL 和 ELv2 都有免費使用的條款,而雙重許可通常只提供一種免費選項。通過做出這個獨特的選擇,Elastic 強調了其靈活性,可以免費向幾乎所有用戶提供軟件。

Elastic License 2.0 和軟件協議的最新發展

Elastic 采用了新的軟件協議模型,以盡可能保持開放性,同時保持對用戶和開發人員公平可持續的商業模式。在這樣做的過程中,它呼應了源代碼可用運動中其他參與者的目標,并在創建軟件協議時尋求同行的意見。

正如 ELv2 FAQ[24] 提到的,Elastic 的軟件協議變更預計不會對其客戶群體產生影響,對社群用戶的影響也很小。因為大多數用戶在 Elastic 的軟件上構建應用程序,并不從事“將軟件作為托管或管理服務提供給第三方”的業務。

設計一個更好的軟件協議

此外,通過投入資源起草 ELv2 協議,Elastic 努力推動軟件協議起草的技術水平。從某種意義上說,源碼可得協議的存在時間與軟件一樣長。事實上,僅二進制的軟件協議是上世紀 80 年代 PC 平臺標準化的產物;在那之前,幾乎所有的軟件都以源代碼格式進行許可。但是隨著時間的推移,軟件協議的形式和部署方式發生了很大變化。

ELv2 是這一趨勢的最終體現。在形式上,它采用了一些最受歡迎的開源協議特性:簡單直觀的起草和模板協議。它的密鑰保留條款使得供應商發布同時包含免費功能和付費功能的軟件事也能輕松地使用 ELv2 協議。

與幾十年前專有 UNIX 的不兼容版本一樣,專有軟件協議是一個由自定義條款和條件組成的混亂合成體。即使是普通消費者軟件產品的簡單終端用戶協議通常也很長,晦澀難懂,大多數用戶無法理解。關于沒人閱讀用戶協議的笑話[25]屢見不鮮。但是,大部分復雜性是不必要的。這是開源協議的一個教訓,特別是寬松開源協議:一套簡單的規則就足夠了,而且規則越易理解,用戶越有可能遵守。

ELv2 不僅簡短、簡單和易理解,而且其他人也可以將其用作模板[26]。自反對 strip-mining 的辯論開始以來,用戶愈發希望出現一個能夠支持流暢部署軟件、可以具有合理限制,但是必須簡單易懂的軟件協議。但是,大多數小型軟件公司沒有資源來起草自己的協議。因此,毫不奇怪,許多軟件初創公司都希望采用 ELv2 或 Confluent Community License 等現成軟件協議來構成其軟件協議模型。

這個趨勢愈演愈烈,最終形成了一個名為 Fair Code[27] 的倡議和標準,其中寫到:

Fair-code is not a software license. It describes a software model where software:

  • is generally free to use and can be distributed by anybody

  • has its source code openly available

  • can be extended by anybody in public and private communities

  • is commercially restricted by its authors

雖然這項倡議還處于非常早期階段,但顯然行業開始意識到需要一個公平對待用戶和開發者的范式。同時,這一范式還應當允許商業開發者,以一種比如今的開源協議更加靈活的方式,在兩者之間取得平衡。一位評論員甚至將最近的軟件協議發展稱為后開源時代[28]。不過事實上,在商業和軟件協議模型不斷發展的過程中,源碼可得協議與開源協議通常是并行發展的。因此,這兩種模型互補,而不是互為替代品。

同一時間,其他標準化的軟件協議工作也在進行。2020 年,一群律師發起了 PolyForm[29] 項目,起草了一系列源碼可得協議模板。這些軟件協議由在開源和專有協議方面經驗豐富的律師進行同行評審。就像 Creative Commons[30] 用于開放內容協議一樣,它提供了一系列選項,如非商業、僅用于評估和反競爭協議。所有這些軟件協議,就像 ELv2 一樣,都允許免費使用、提供源代碼,并授予必要的專利許可。PolyForm Perimeter 和 PolyForm Shield 與其前身 Confluent Community License 類似,而 ELv2 也遵循了這一趨勢,推進了軟件協議可選項的發展。

如果您有疑問或想要信息,這里有一些資源:

  • The rise of open source IPOs[31] 這篇文章追蹤了一些商業開源公司的成功案例。

  • The After Open Source Era Has Started[32] 這篇文章討論了公司轉向源碼可得協議所代表的重大變革。

  • 美國眾議院司法委員會關于數字市場競爭調查的報告[33](由反壟斷、商業和行政法小組牽頭)請注意第 326 頁提到了 Elastic 的例子。

注:本文的起草代表了我(Heather Meeker)的個人觀點。然而,我想指出,撰寫這篇白皮書的工作部分受到了 Elastic 的資助。

參考資料

[1]

《Open Source for Business》: https://book.douban.com/subject/35309516/

[2]

Elastic License 2.0 and the Evolution of Open Source Licensing: https://www.coss.community/cossc/elastic-license-2-0-and-the-evolution-of-open-source-licensing-3jb3

[3]

Elastic License 2.0: https://www.elastic.co/licensing/elastic-license

[4]

GNU 通用公共協議: https://en.wikipedia.org/wiki/GNU_General_Public_License

[5]

MongoDB: https://en.wikipedia.org/wiki/MongoDB

[6]

雙重許可: https://monty-says.blogspot.com/2009/08/thoughts-about-dual-licensing-open.html

[7]

勒索行為: https://ebb.org/bkuhn/blog/2020/01/06/copyleft-equality.html

[8]

GPL FAQ: https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation

[9]

宣言: https://techcrunch.com/2018/09/07/commons-clause-stops-open-source-abuse/

[10]

寫道: https://onezero.medium.com/open-source-betrayed-industry-leaders-accuse-amazon-of-playing-a-rigged-game-with-aws-67177bc748b7

[11]

strip-mining 問題: https://techcrunch.com/2018/11/29/the-crusade-against-open-source-abuse/

[12]

Server Side Public License (SSPL): https://www.mongodb.com/licensing/server-side-public-license

[13]

經過協商的商業軟件協議: https://www.mongodb.com/community/licensing

[14]

開源促進會: https://opensource.org/approval

[15]

開源定義: https://opensource.org/osd/

[16]

保證軟件自由: https://opensource.org/licenses/review-process/

[17]

Commons Clause: https://commonsclause.com/

[18]

Redis: https://redis.com/legal/licenses/

[19]

Confluent: https://www.confluent.io/confluent-community-license/

[20]

CockroachDB: https://www.cockroachlabs.com/cockroachdb-community-license/

[21]

Elastic License 1.0: https://github.com/elastic/elasticsearch/blob/7.10/licenses/ELASTIC-LICENSE.txt

[22]

Freedom 0: https://www.gnu.org/philosophy/free-sw.en.html

[23]

Elastic License 2.0: https://www.elastic.co/licensing/elastic-license

[24]

ELv2 FAQ: https://www.elastic.co/licensing/elastic-license/faq

[25]

沒人閱讀用戶協議的笑話: https://en.wikipedia.org/wiki/HumancentiPad

[26]

用作模板: https://www.elastic.co/blog/elastic-license-v2

[27]

Fair Code: https://faircode.io/

[28]

后開源時代: https://monetize.substack.com/p/open-source-eras

[29]

PolyForm: http://www.polyformproject.org/

[30]

Creative Commons: https://creativecommons.org/

[31]

The rise of open source IPOs: https://coss.media/rise-of-the-open-source-ipo/

[32]

The After Open Source Era Has Started: https://monetize.substack.com/p/open-source-eras

[33]

美國眾議院司法委員會關于數字市場競爭調查的報告: https://www.documentcloud.org/documents/7222836-Investigation-of-Competition-in-Digital-Markets.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163247.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163247.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163247.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JetLinks設備接入的認識與理解【woodwhales.cn】

為了更好的閱讀體驗,建議移步至筆者的博客閱讀:JetLinks設備接入的認識與理解 1、認識 JetLinks 1.1、官網文檔 官網:https://www.jetlinks.cn/ JetLinks 有兩個產品:JetLinks-lot和JetLinks-view 官方文檔: JetLi…

【自然語言處理】正向最大匹配算法(FMM),反向最大匹配算法(BMM)和雙向最大匹配算法(BM)原理及實現

目錄 一,正向最大匹配算法(FMM) 二,反向最大匹配算法(RMM) 一,正向最大匹配算法(FMM) 正向最大匹配分詞(Forward maximum matching segmentation)通常簡稱為…

沒有PDF密碼,如何解密?

PDF文件有兩種密碼,一個打開密碼、一個限制編輯密碼,因為PDF文件設置了密碼,那么打開、編輯PDF文件就會受到限制。忘記了PDF密碼該如何解密? PDF和office一樣,可以對文件進行加密,但是沒有提供恢復密碼的功…

powshell 不能運行腳本

1、先執行: Set-ExecutionPolicy -Scope CurrentUser 2、再輸入: remotesigned

win10下安裝gcc

win10下安裝gcc 一、gcc是什么? 1.1、安裝gcc 第一次安裝,記錄一下 一、gcc是什么? GNU編譯器套件(GNU Compiler Collection)包括C、C、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc、libgcj等等…

mac電腦文件比較工具 UltraCompare 中文for mac

UltraCompare是一款功能強大的文件和文件夾比較工具,用于比較和合并文本、二進制和文件夾。它提供了豐富的功能和直觀的界面,使用戶能夠輕松地比較和同步文件內容,查找差異并進行合并操作。 以下是UltraCompare軟件的一些主要特點和功能&…

為什么程序員不直接用線上環境寫代碼呢?

為什么程序員不直接用線上環境寫代碼呢? 有的,我就是直接用Linux作為主力電腦使用,大概從201 6年起,我就開始這樣干了。無論是編 程、畫電路板、畫UI、剪視頻.... 都在Linux上面完成。 編程工具大部分都有Linux版本,…

【【Linux 常用命令學習 之 一 】】

Linux 常用命令學習 之 一 打開終端之后的 我們會了解 所使用的 字符串含義 其中前面的 zhuxushuai 是 當前的用戶名字 接下來的 zhuxushuai-virtual-machine 是 機器名字 最后的符號 $表示 當前是普通用戶 輸入指令 ls 是打印出當前所在目錄中所有文件和文件夾 shell 操…

使用css代碼防止圖片被拖拽的教程

在網頁中,我們經常使用圖片來美化頁面或輔助內容呈現,但有時用戶會無意中拖拽圖片,這會對頁面布局或其他元素產生意想不到的影響。為了防止這種情況,我們可以使用CSS來禁止圖片被拖拽。 img {-webkit-user-drag: none;-moz-user-d…

CF 1891A 學習筆記

原題 A. Sorting with Twos time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an array of integers 𝑎1,𝑎2,…,𝑎𝑛�1,&a…

多個視頻怎么生成一個二維碼?二維碼看視頻的制作方法

二維碼能放入多個視頻嗎?現在用二維碼看視頻是很流行的一種方式,不僅符合現在人的行為習慣,而且還不需要占用自身的容量空間,能夠即時的獲取視頻內容。那么當有多個視頻需要展示,但是想要放到一個二維碼中,…

集團投融資大數據平臺解決方案

一、項目背景 項目為集團型公司大數據平臺項目,整個項目周期約為6個月,整體呈現了對外的數據大屏駕駛倉和對內的看板報表,減少了客戶內部數據上報和報表制作的重復工作量,為集團數據決策奠定基礎。 二、項目目標 戰略層&#xff…

局部保持投影(Locality preserving projections,LPP)

局部保持投影(Locality preserving projections,LPP) 方法概述 核心思想 有映射 Y m ? n f ( X d ? n ) \underset{m*n}{Y}f(\underset {d*n}X) m?nY?f(d?nX?),能夠實現將d維的樣本變換到m維空間之中 假設:對…

ESP32 Arduino實戰傳感器篇-- DHT11 DHT22 使用 Web 服務器顯示值

該項目采用 ESP32 作為控制設備,連接到現有的 WiFi 網絡并創建 Web 服務器。當設備連接到該 Web 服務器時,ESP32 將從 DHT11/DHT22 傳感器讀取溫度和相對濕度,并將其發送到設備的 Web 瀏覽器,并具有良好的界面。興奮的?讓我們開始吧! ESP32 內置了溫度傳感器,為什么不使…

咖啡館管理系統點餐外賣小程序效果如何

咖啡一直是很多人喜歡的飲品,比如有些地區的人非常喜歡,熬夜加班醒腦等,咖啡領域市場規模逐年增加,相應的從業商家也在增加,近些年隨著線上生態崛起,傳統線下咖啡館經營痛點顯露出來。 通過【雨科】平臺搭建…

目標檢測算法 - YOLOv4

文章目錄 1. 簡介2. YOLOv4整體結構3. Backbone4. Neck 1. 簡介 YOLOv4是YOLOv3的改進版。YOLOv4并不是原YOLO項目的作者。發表于CVPR2020。 改進: 主干特征提取網絡:Darknet53 -> CSPDarknet53特征金字塔:SPP,PAN分類回歸層…

每天學習一點點之 Tomcat 是如何清除過期 Session 的

今天使用一種很臨時的方案解決 Session 泄漏的問題:縮短 Session 的過期時間。這種方法雖然簡單,但卻非常有效。然而,這引發了一個問題:我們應該將過期時間設置為多短呢?在 Spring Boot 中,最短的過期時間是…

實在智能攜“TARS大模型”入選“2023中國數據智能產業AI大模型先鋒企業”

近日,由數據猿與上海大數據聯盟聯合主辦的“2023企業數智化轉型升級發展論壇”在上海圓滿收官。 論壇頒獎典禮上,《2023中國數據智能產業AI大模型先鋒企業》等六大榜單正式揭曉,旨在表彰在AI領域為數智化升級取得卓越成就和突出貢獻的企業&am…

解決“使用 CNKI 保存時發生錯誤。改為嘗試用 DOI 保存。”【Bug Killed】

文章目錄 簡介解決辦法跟新本地Zotero中茉莉花插件的非官方維護中文翻譯器更新網頁插件Zetero Connector中的Transtors 結語參考資料 簡介 使用Chrome ? Zotero Connector保存中國知網(CNKI)的參考文獻到本地的Zotero時無法正常保存,出現使…

Altium Designer學習筆記8

創建原理圖元件: 畫出原理圖: 根據規則書畫出原理圖: 根據規則書畫出封裝圖: 參照: 確認下過孔的內徑和外徑的最小允許值。