Перейти к содержимому
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 — проприетарные дополнения. Вы платите за продвинутые возможности, а не за право продолжать использовать открытое ядро.
  • Распространение несёт обязанности по атрибуции — сохраняйте уведомления, включайте лицензию, указывайте свои изменения, переносите дальше NOTICE (Spec: 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 в пакете и ваше коммерческое соглашение для платных редакций, — определяющими являются эти документы. Полное, обязывающее рассмотрение находится на странице о лицензировании.

  • Открытое ядро (open core) — модель, в которой пермиссивно лицензированное ядро с открытым исходным кодом окружено проприетарными, платными дополнениями. Ядро бесплатно для использования и для того, чтобы оставить себе; дополнения опциональны.
  • Apache License 2.0 — пермиссивная, одобренная OSI лицензия с открытым исходным кодом. Она предоставляет широкие права использования, модификации и распространения, включает явный патентный грант, требует атрибуции при распространении и не предоставляет прав на товарные знаки.
  • Патентный грант — явная безвозмездная лицензия на патенты контрибьюторов, покрывающие их вклады, с защитным прекращением, если вы судитесь по определённым патентам в связи с программным обеспечением (Apache-2.0 §3).
  • Файл NOTICE — файл атрибуции, который, когда он присутствует в работе, должен переноситься дальше в вашем распространении согласно Apache-2.0 §4.
  • Привязка (lock-in) — стоимость переключения, которая делает уход от вендора дорогостоящим. Открытое ядро снимает её для фундамента за счёт пермиссивного лицензирования ядра.