跳转到内容
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.
The three layers of the NextPDF licensing model: the Apache-2.0 open-source core, the proprietary Pro and Enterprise add-ons, and the trademark on the NextPDF name and logo. Code rights flow from the first; capability access from the second; brand rights stay with the trademark holder.

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. The full rendering engine, object model, and PDF 2.0 output — free to use, modify, redistribute, and commercialise. This is the foundation, and it is the same engine under every edition.

Pro

Pro builds on the identical Apache-2.0 core and adds proprietary capabilities. It does not replace the core or change your rights to it.

Enterprise

Enterprise builds on the identical Apache-2.0 core and adds proprietary capabilities. It does not replace the core or change your rights to it.

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——关于核心在哪里终止、附加组件从哪里开始的诚实说明。
  • 开放核心——一种模型:一个以宽松许可发布的开源核心,被专有、付费的附加组件所环绕。核心可自由使用并长期保留;附加组件是可选的。
  • Apache License 2.0——一个宽松的、经 OSI 批准的开源许可证。它授予广泛的使用、修改与再分发权利,包含一项明确专利授权,要求在再分发时署名,且不授予任何商标权利。
  • 专利授权——一项明确的、免版税的、覆盖贡献者就其贡献所持专利的许可,附带防御性终止条款,即当你就该软件发起某些专利诉讼时(Apache-2.0 §3)。
  • NOTICE 文件——一个署名文件,当它存在于作品中时,必须在你 Apache-2.0 §4 项下的再分发中向后携带。
  • 锁定——使离开一家供应商变得昂贵的切换成本。开放核心通过以宽松许可发布核心,为这个基座消除了它。