Premium редакция
Два канала поставки: ionCube и подписанный исходный код
NextPDF Pro и Enterprise поставляются в двух формах, которые можно рассматривать как два канала одного и того же продукта:
- Закодированный через ionCube — устанавливаемый PHP, исходный код которого закодирован и выполняется через ionCube Loader во время выполнения.
- Подписанный открытый исходный код — читаемый исходный код на PHP, криптографически подписанный, чтобы вы могли убедиться, что он подлинный и не изменён.
На оба канала распространяются одна и та же лицензия и одни и те же права (оба регулирует NextPDF Commercial License Agreement, а доступ к читаемому исходному коду никогда не означает разрешения копировать или распространять его). Они существуют потому, что у двух типов клиентов есть две разные задачи, и мы оцениваем каждый канал соразмерно тому компромиссу, который он в себе несёт, — а не потому, что в одном из них больше функций, чем в другом. Эта страница объясняет ход рассуждений, чтобы вы могли сделать выбор осознанно. О практической настройке закодированной сборки см. Настройка ionCube Loader.
Почему защита исходного кода — реальная проблема в PHP
Заголовок раздела «Почему защита исходного кода — реальная проблема в PHP»PHP поставляется и выполняется как исходный код. В отличие от языков, которые компилируются в непрозрачный двоичный файл или в байт-код перед распространением, рабочий исходный код PHP-пакета и есть то, что вы устанавливаете — среда выполнения читает его напрямую. Это одна из больших сильных сторон PHP: он прозрачен, его легко изучать, легко исправлять, и во многом именно поэтому его экосистема с открытым исходным кодом столь живая.
Именно поэтому у коммерческого PHP-проекта задача защиты сложнее, чем у его собратьев на других платформах. Инвестиции, вложенные в глубокий специализированный движок, — годы работы над стандартами, граничные случаи, наборы тестов — заключены в исходном коде, который по умолчанию передаётся в открытом виде. Эти инвестиции и есть коммерческая тайна: практическое ноу-хау, которое финансирует дальнейшую разработку, и актив, признаваемый и защищаемый законом. Защищать его — значит не прятаться от пользователей, а сохранять возможность финансировать работу.
Поэтому же защищать исходный код попросту проще в экосистемах, которые поставляют скомпилированные или байт-кодовые артефакты, — Java здесь распространённый пример: распространяемая форма уже на шаг удалена от рабочего исходного кода, и коммерческому поставщику приходится защищать меньше. Это упростило финансирование глубоких специализированных коммерческих инструментов там, тогда как значительная часть серьёзной работы в PHP опиралась вместо этого на добрую волю сообщества открытого исходного кода. Мы не считаем, что это закон природы. PHP тоже заслуживает профессиональных, активно поддерживаемых инструментов уровня стандартов, — а возможность защитить исходный код как раз и делает финансирование такой работы устойчивым.
Открытое ядро, платный премиум
Заголовок раздела «Открытое ядро, платный премиум»Ответ NextPDF — открытое ядро с платным премиумом. Движок, на котором вы
строите, — nextpdf/core — распространяется под Apache-2.0 и остаётся открытым;
вы можете его читать, форкать и поставлять коммерчески. NextPDF Pro и
Enterprise — это частные редакции, и именно доход от них оплачивает
активную поддержку, соответствие стандартам и новые функции. Это разделение
сделано намеренно: оно позволяет нам обслуживать команды, которым нужны
профессиональные возможности уровня B2B, и при этом оставаться дружелюбными к
отдельным разработчикам, ведь мы и сами начинали как разработчики-одиночки,
любящие свободное программное обеспечение. Обоснование открытой половины
раскрыто в
Открытое ядро, без привязки к поставщику;
эта страница — о том, как до вас доходит платная половина.
Канал ionCube — защита, удерживающая цену
Заголовок раздела «Канал ionCube — защита, удерживающая цену»Для большинства клиентов закодированный через ionCube канал — это вариант по умолчанию. Кодирование исходного кода — признанный способ повысить стоимость его несанкционированного изменения и присвоения — позволяет нам защищать премиум-код с гораздо меньшими накладными расходами: меньше нестандартной работы с исходным кодом, меньше администрирования распространения и доступа, более лёгкое юридическое и правоприменительное бремя, чем при защите открытого исходного кода в больших масштабах. Эта экономия реальна, и мы передаём её вам.
Плата за это — умеренная стоимость во время выполнения: Loader декодирует закодированные файлы по ходу выполнения PHP, что добавляет некоторые накладные расходы. Мы отражаем этот компромисс в цене, чтобы вы могли честно его оценить, а не столкнуться с ним позже. На практике накладные расходы обычно невелики и зачастую пренебрежимо малы в типичных развёртываниях — и фактически не имеют значения на хосте, где ionCube Loader уже работает для другого программного обеспечения. Чувствительные к производительности нагрузки стоит протестировать на их собственном профиле; для подавляющего большинства развёртываний закодированный канал — это просто менее затратный вариант, и это именно то соответствие спроса и предложения, которого мы добиваемся. Настройка Loader — разовый шаг, описанный в Настройка ionCube Loader.
Канал с подписанным исходным кодом — для регулирования, аудита и надёжности цепочки поставок
Заголовок раздела «Канал с подписанным исходным кодом — для регулирования, аудита и надёжности цепочки поставок»Некоторые клиенты не могут допустить закодированный код в свою среду выполнения. Организации под строгим регулированием или со строгими требованиями к безопасности цепочки поставок и аудиту должны читать, проверять и верифицировать то, что они запускают, — и у них, как правило, есть бюджет, который такие требования и предполагают. Для них мы предлагаем канал подписанного открытого исходного кода: те же редакции, поставляемые в виде читаемого исходного кода, криптографически подписанного, чтобы можно было проверить его происхождение и целостность.
Это напрямую соответствует тому, как современная безопасность цепочки поставок предписывает обращаться с программным обеспечением: исходный код поставляется в пакете с цифровой подписью, подписи проверяются перед использованием, а проверяемый исходный код предпочтительнее непрозрачного артефакта для обеспечения надёжности и аудита (NIST SP 800-204D). Здесь код защищён не кодированием — он защищён законом и договором: он остаётся конфиденциальной коммерческой тайной PATEON, компании, стоящей за NextPDF, а то, что вы можете и не можете с ним делать, определяется NextPDF Commercial License Agreement. Возможность читать исходный код никогда не означает разрешения копировать, распространять или повторно лицензировать его.
Этот канал стоит дороже, и причина здесь обратна той, что у ionCube: он снимает накладные расходы во время выполнения, но перекладывает бремя защиты обратно на договор, доверие и администрирование — и эту стоимость берём на себя мы, чтобы клиенты, связанные требованиями соответствия, могли выполнять свои обязательства.
Подключение и контроль лицензии
Заголовок раздела «Подключение и контроль лицензии»Каналы различаются также тем, как проверяется лицензия во время работы вашего приложения, и для развёртываний без сети или в изолированной среде это обычно решающий фактор.
Канал ionCube периодически проверяет свою лицензию по сети. Премиум-сборка, поставляемая через закодированный канал, обращается к лицензионной службе NextPDF с регулярной периодичностью — примерно проверка раз в 7 дней, продлевающая аренду примерно на 14 дней. Пока развёртывание может связаться со службой в пределах этого окна, всё работает как обычно. Если оно остаётся без сети дольше срока аренды, премиум-функции приостанавливаются, и движок откатывается к бесплатному Core — он не останавливается, не выдаёт ошибку и не падает, — а после восстановления связи они возобновляются автоматически. Именно эта сетевая аренда делает лицензированное число рабочих мест контролируемым и позволяет отзыву вступить в силу в пределах окна аренды (около 14 дней плюс небольшой льготный период). Проверка отправляет только идентификатор лицензии и солёный хеш отпечатка — никогда содержимое ваших документов и никогда сырой отпечаток или IP-адрес.
Канал с подписанным исходным кодом может работать полностью без сети. Поскольку его подписанная лицензия — это самодостаточный артефакт, который движок проверяет локально, каналу с подписанным исходным кодом не требуется периодическое подключение, и он подходит для изолированных (air-gapped) развёртываний, ограничиваясь лишь собственным сроком действия лицензии. Здесь число рабочих мест — это договорный предел, установленный вашим соглашением, а не то, что контролируется во время выполнения; отзыв применяется при следующей сетевой проверке или через обновление продукта, а полностью автономное развёртывание не отправляет ничего.
Двое разных часов — не путайте их. Срок аренды канала ionCube (~14 дней) касается подключения — того, как долго развёртывание допускает работу без сети. Он не зависит от льготного периода в ~30 дней, который любой канал даёт после даты окончания подписки и в течение которого премиум-функции продолжают работать, пока вы продлеваете подписку, прежде чем движок откатится к Core. Истечение аренды и истечение подписки — это разные события на разных таймерах.
Какой бы канал вы ни использовали, режим отказа одинаков и всегда безопасен: NextPDF деградирует до бесплатного Core с открытым исходным кодом. Он никогда не превращается в «кирпич», никогда не блокирует вам доступ к уже развёрнутому программному обеспечению и никогда не останавливается посреди работы.
Те же права, ваш выбор
Заголовок раздела «Те же права, ваш выбор»Эти два канала — не два продукта. Они дают идентичные лицензионные права и одно и то же программное обеспечение; разница лишь в том, как защищён исходный код, как лицензия проверяется во время выполнения и во что это обходится:
| Закодированный через ionCube | Подписанный открытый исходный код | |
|---|---|---|
| Что вы запускаете | Закодированный PHP, через ionCube Loader | Читаемый, подписанный исходный код на PHP |
| Как защищён исходный код | Кодирование (технологическая мера) плюс лицензия | Лицензия и закон о коммерческой тайне (без кодирования) |
| Лучше всего подходит для | Большинства развёртываний; самая низкая стоимость | Требований регулирования / аудита / безопасности цепочки поставок |
| Стоимость во время выполнения | Небольшие накладные расходы Loader (часто пренебрежимо малы; протестируйте при чувствительности к производительности) | Ничего не добавляется с нашей стороны |
| Сетевая проверка лицензии | Периодическая (~проверка раз в 7 дней, аренда ~14 дней) | Необязательна; проверяется локально и работает без сети |
| Без сети / изолированная среда | В пределах окна аренды, затем премиум-функции приостанавливаются до Core (автоматическое возобновление при восстановлении связи) | Полностью поддерживается; периодическое подключение не требуется |
| Число рабочих мест | Контролируется через сетевую аренду | Договорное (по вашему соглашению); не контролируется во время выполнения |
| Отзыв вступает в силу | В пределах окна аренды (~14 дней + небольшой льготный период) | При следующей сетевой проверке или через обновление продукта |
| Отправляемые данные лицензии | Только идентификатор лицензии + солёный хеш отпечатка (никогда содержимое, IP или сырой отпечаток) | Ничего при полностью автономной работе |
| Права | Идентичны — см. EULA | Идентичны — см. EULA |
Цена отражает этот компромисс между защитой и стоимостью во время выполнения, а не разницу в функциях. Актуальные цены и редакции см. в разделе Покупка и лицензирование и на странице цен, ссылка на которую там приведена; эта страница документации намеренно не повторяет ни цены, ни условия лицензии.
Почему мы делаем это так
Заголовок раздела «Почему мы делаем это так»Мы предпочли бы, чтобы в экосистеме PHP было больше серьёзных, хорошо финансируемых, профессионально поддерживаемых инструментов — и меньше проектов, которые тихо выгорают, потому что не нашлось устойчивого способа финансировать ту глубину, которая им была нужна. Защита исходного кода — это и есть то, что позволяет нам вкладываться в эту глубину, сохраняя ядро открытым, а закодированный канал — доступным. И поскольку доверие нужно заслужить, мы стараемся быть прозрачными именно в этом: что защищает каждый канал, во что он вам обходится и почему, — чтобы взвешивать этот компромисс могли вы, а не мы — скрывать его от вас.