跳到內容
getnextpdf.com

開放核心,無鎖定

Spec: Apache License 2.0

NextPDF 採用開放核心。你據以建構的引擎——nextpdf/core——以 Apache License 2.0 發行,因此你可以使用、修改並再散布它,包括用於商業用途。Pro 與 Enterprise 是專有的附加元件,只在你想要它們所增添的東西時才付費。基礎是你可以保有的;進階能力則是選用的。

任何文件引擎真正昂貴的問題,都不是「它今天要花多少錢」。而是「當我想離開的那一天會發生什麼事」。面對一套封閉引擎,那一天就是一項遷移專案:重新換平台、重新測試、重新認證那些你的稽核員早已簽核過的輸出。切換成本就是鎖定,而且它會在最糟糕的時機被一次付清。

開放核心從構造上就消除了這個問題。你最仰賴的那一部分——算繪引擎、物件模型、標準符合性——是以寬鬆方式授權的,而且對你採用的那個版本而言會一直如此。你絕不會因為一次續約之差,就失去對你產品所建立其上之程式碼的存取權。

  • 核心引擎採用 Apache-2.0:使用、複製、修改、再散布,並可用於商業用途,沒有任何非商業限制。
  • 該授權包含一項來自貢獻者的明示專利授予,並附帶一項防禦性終止條款(Spec: Apache License 2.0, §3)。
  • Pro 與 Enterprise 是專有的附加元件。 你為進階能力付費,絕不為繼續使用開放核心的權利付費。
  • 再散布帶有標示義務——保留各項聲明、附上授權、陳明你的變更、延續 NOTICESpec: Apache License 2.0, §4)。
  • 你可以分叉並交付這份程式碼;但你不可以用 NextPDF 名稱或標誌來交付它(Spec: Apache License 2.0, §6)。

這個模式刻意保持簡單,而簡單正是重點。它有三樣東西,各自回答三個不同的問題。

  1. Open-source corenextpdf/core under the Apache License 2.0 — use, modify, redistribute, commercialise. This is the foundation you build on, and it is yours to keep.
  2. Proprietary add-onsNextPDF Pro and Enterprise add advanced capabilities under a commercial license. You pay for what they add, not for continued use of the core.
  3. TrademarkThe NextPDF name and logo are reserved. The code license does not grant brand rights — that boundary is what keeps 'NextPDF' meaning the official software.
NextPDF 授權模式的三層:Apache-2.0 開放原始碼核心、專有的 Pro 與 Enterprise 附加元件,以及 NextPDF 名稱與標誌上的商標。程式碼權利源自第一層;能力存取源自第二層;品牌權利則仍歸商標持有人所有。

Apache License 2.0 是一套經 Open Source Initiative 認可的寬鬆開放原始碼授權。對核心而言,它授予廣泛的使用權利——無論是原始碼或編譯後、獨立使用或作為一個更大作品的一部分——且沒有任何非商業條款。你可以把核心放進一個封閉原始碼、付費或內部的產品裡。

有兩個條款值得點名,因為它們正是「寬鬆」轉化為「耐久」之處。該授權帶有一項明示專利授予:貢獻者就其貢獻授予你一項免權利金的專利授權,而該授予僅在防禦性情況下終止——也就是當你就該軟體發起某些專利訴訟時(Spec: Apache License 2.0, §3)。這是一項光憑「隨你怎麼用」的裸授權未必能給你的保護。而再散布雖被允許,卻非毫無義務:你要保留既有的著作權、專利、商標與標示聲明、附上授權、陳明你對已修改檔案所做的變更,並延續任何 NOTICE 檔案(Spec: Apache License 2.0, §4)。履行這些義務是這份自由的代價,而那是一個很低的代價。

你付費購買的,以及你何時付費,買的是能力——而非延續性。這道切分很乾淨:同一套有界記憶體寫入器、同一套物件模型、同一套標準符合性,無論你是否曾購買任何東西,都存在於核心之中。

The open-source core engine (nextpdf/core) — edition availability
EditionAvailability
Core

Apache-2.0。完整的算繪引擎、物件模型與 PDF 2.0 輸出——可自由使用、修改、再散布並商業化。這是基礎,而且在每一個版本之下都是同一套引擎。

Pro

Pro 建立在相同的 Apache-2.0 核心之上,並增添專有能力。它不會取代核心,也不會改變你對核心的權利。

Enterprise

Enterprise 建立在相同的 Apache-2.0 核心之上,並增添專有能力。它不會取代核心,也不會改變你對核心的權利。

Pro 與 Enterprise 不是開放原始碼。它們的套件宣告 "license": "LicenseRef-NextPDF-Commercial",其條款存在於 NextPDF Commercial License Agreement (Version 3.0) 中——而非在 Apache License 2.0 裡,也不從開放核心推論而來。它們增添東西;它們不從核心給你的東西裡拿走任何一樣。

這道邊界在最尋常不過的地方就看得見:你的 composer.json。採用開放核心,只是一項公開登錄庫的相依。

<?php
declare(strict_types=1);
// composer require nextpdf/core
//
// nextpdf/core declares "license": "Apache-2.0" and ships the full
// Apache License 2.0 text in its LICENSE file. This single dependency
// is the open foundation — yours to use, modify, and redistribute.
use NextPDF\Core\Document;
use NextPDF\Contracts\OutputDestination;
$document = Document::createStandalone();
$document->setTitle('Open core, no lock-in');
$document->addPage();
$document->setFont('helvetica', 'B', 16);
$document->cell(0, 12, 'Built on an Apache-2.0 foundation', newLine: true);
// Output uses only the open core. Nothing here is gated, time-limited,
// or contingent on a paid edition. A Pro or Enterprise add-on, if you
// ever choose one, layers on top of this — it does not stand between
// you and the engine.
$bytes = $document->output(dest: OutputDestination::String);

那支程式裡,沒有任何東西是借來的。你與引擎之間沒有授權檢查,也沒有哪個版本非得在場核心才能執行。如果你日後想要 Pro 或 Enterprise 所提供的某項能力,你就把它加上去。如果你從不需要,核心會一直如同今日這般運作。

最常見的誤讀是「開放核心意味著我連品牌也一起拿到」。並非如此。Apache License 2.0 並未授予授權人的商號、商標或標誌上的任何權利,超出對作品來源做出合理、慣常引用的範圍之外(Spec: Apache License 2.0, §6)。所以你可以分叉 nextpdf/core、修改它並再散布它——那是程式碼權利——但你不可以把那個分叉當作「NextPDF」、或冠以 NextPDF 標誌來交付。請取你自己的名字。

那道切分並不是藏在這份慷慨之中的陷阱。它正是讓這份慷慨得以安全的原因。一套寬鬆授權之所以能把程式碼交出去,正是因為商標法讓「NextPDF」即便在程式碼被分叉之後,仍然指向那套官方、未經修改的軟體。少了這道邊界,任何經過改動的建置版本都可以自稱 NextPDF,而沒有人能把官方引擎和某人的修補版分辨開來。這條界線保護的是使用者,而不只是那個商標。完整的程式碼對品牌之處置,存在於商標頁面

第二個誤解是「開放核心」不知怎地讓付費版本也跟著開放。並非如此。核心採用 Apache-2.0,對 Pro 或 Enterprise 不置一詞——那些是專有的,無論核心採用什麼授權。

開放核心是一項真實的優勢,且明白陳述——而非一項聲稱一切都免費的主張。Pro 與 Enterprise 中的進階能力是真正專有、且真正付費的;本頁不假裝並非如此,也不對那些版本的條款做出任何承諾,那些條款存在於你的商業合約之中。

「無鎖定」是精確的。它意味著你據以建構的基礎是以寬鬆方式授權的,並依你的條件持續可用。它不意味著每一項功能都在核心裡,也不意味著從你所採用的某項 Pro 或 Enterprise 能力遷移離開是零成本的——一項專有能力,就其本質而言,是一項你明知而承擔的相依。自由在於核心。

Apache-2.0 §4 下的標示義務是義務,不是選項。一次再散布若捨棄了各項聲明、省略了授權,或隱藏了對已修改檔案所做的變更,即便該授權是寬鬆的,仍是一次授權違反。此處的自由,伴隨著一份簡短而誠實的義務清單。

本頁是這套授權模式的白話摘要,而非授權本身,也不是法律意見。當這份摘要與權威文件——套件中的 LICENSE 檔案,以及你針對付費版本的商業合約——有所出入時,以那些文件為準。完整、具拘束力的處置在授權頁面

  • 產品授權——關於哪一個授權適用於哪一個版本、以及各自授予什麼,權威的白話說明。
  • 商標與品牌使用——完整的程式碼對品牌邊界,附可接受與不可接受的用法。
  • NextPDF 背後的公司——是誰持有這個商標,以及一個商業產品為何成為開放原始碼。
  • 何時不該使用 NextPDF——關於核心在哪裡終止、附加元件在哪裡開始的誠實說明。
  • 開放核心(Open core)——一種模式,由一個以寬鬆方式授權的開放原始碼核心,被專有、付費的附加元件所環繞。核心可自由使用並保有;附加元件是選用的。
  • Apache License 2.0——一套寬鬆、經 OSI 認可的開放原始碼授權。它授予廣泛的使用、修改與再散布權利,包含一項明示專利授予,要求再散布時須標示,且不授予任何商標權利。
  • 專利授予(Patent grant)——一項明示、免權利金的授權,涵蓋貢獻者就其貢獻所持有的專利,並在你就該軟體進行某些專利訴訟時防禦性地終止(Apache-2.0 §3)。
  • NOTICE 檔案——一個標示檔案,當它存在於作品中時,必須在你依 Apache-2.0 §4 進行的再散布中延續下去。
  • 鎖定(Lock-in)——使離開某廠商變得昂貴的切換成本。開放核心藉由以寬鬆方式授權核心,為這個基礎消除了它。