Przejdź do głównej zawartości
getnextpdf.com

Otwarty rdzeń, brak uzależnienia od dostawcy

Spec: Apache License 2.0

NextPDF ma otwarty rdzeń. Silnik, na którym budujesz — nextpdf/core — jest wydany na licencji Apache License 2.0, więc możesz go używać, modyfikować i redystrybuować, w tym komercyjnie. Pro i Enterprise to zastrzeżone dodatki, za które płacisz tylko wtedy, gdy chcesz tego, co dodają. Fundament należy do Ciebie na stałe; zaawansowane możliwości są opcjonalne.

Kosztowne pytanie przy każdym silniku dokumentów to nie „ile to kosztuje dziś”. To „co się stanie w dniu, w którym zechcę odejść”. W przypadku zamkniętego silnika ten dzień to projekt migracyjny: zmiana platformy, ponowne testowanie, ponowna certyfikacja wyjścia, które Twoi audytorzy już zatwierdzili. Koszt zmiany jest uzależnieniem i jest płacony w całości w najgorszym możliwym momencie.

Otwarty rdzeń usuwa to pytanie z założenia. Część, od której zależysz najbardziej — silnik renderujący, model obiektowy, zgodność ze standardami — jest permisywnie licencjonowana i taka pozostanie dla wersji, którą wdrożyłeś. Nigdy nie dzieli Cię jedno odnowienie od utraty dostępu do kodu, na którym zbudowany jest Twój produkt.

  • Rdzeń silnika jest na licencji Apache-2.0: używanie, kopiowanie, modyfikowanie, redystrybucja i użycie komercyjne, bez ograniczenia do zastosowań niekomercyjnych.
  • Licencja zawiera wyraźne udzielenie licencji patentowej od kontrybutorów, z klauzulą wygaśnięcia o charakterze obronnym (Spec: Apache License 2.0, §3).
  • Pro i Enterprise to zastrzeżone dodatki. Płacisz za zaawansowane możliwości, nigdy za prawo do dalszego korzystania z otwartego rdzenia.
  • Redystrybucja niesie obowiązki atrybucji — zachowaj informacje, dołącz licencję, podaj swoje zmiany, przenieś dalej NOTICE (Spec: Apache License 2.0, §4).
  • Możesz sforkować i dostarczać kod; nie możesz dostarczać go pod nazwą lub logo NextPDF (Spec: Apache License 2.0, §6).

Model jest celowo prosty, a w tej prostocie tkwi sedno. Są trzy rzeczy i odpowiadają one na trzy różne pytania.

  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 to permisywna licencja open source zatwierdzona przez Open Source Initiative. Dla rdzenia udziela szerokich praw użytkowania — w postaci źródłowej lub skompilowanej, samodzielnie lub jako część większego dzieła — bez klauzuli niekomercyjnej. Możesz umieścić rdzeń wewnątrz zamkniętego, płatnego lub wewnętrznego produktu.

Dwie klauzule warto nazwać, bo to tam „permisywna” staje się „trwała”. Licencja niesie wyraźne udzielenie licencji patentowej: kontrybutorzy udzielają Ci bezpłatnej licencji patentowej na swoje wkłady, a to udzielenie wygasa wyłącznie w trybie obronnym, jeśli zainicjujesz określone postępowanie patentowe dotyczące oprogramowania (Spec: Apache License 2.0, §3). To ochrona, której naga licencja „rób, co chcesz” nie zawsze daje. Redystrybucja jest dozwolona, ale nie wolna od obowiązków: zachowujesz istniejące informacje o prawach autorskich, patentach, znakach towarowych i atrybucji, dołączasz licencję, podajesz zmiany wprowadzone w zmodyfikowanych plikach i przenosisz dalej każdy plik NOTICE (Spec: Apache License 2.0, §4). Honorowanie tych obowiązków to cena wolności, a jest ona niska.

To, za co płacisz, gdy płacisz, to możliwość — nie ciągłość. Podział jest czysty: ten sam zapisujący o ograniczonej pamięci, ten sam model obiektowy, ta sama zgodność ze standardami żyje w rdzeniu niezależnie od tego, czy kiedykolwiek cokolwiek kupisz.

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

Apache-2.0. Pełny silnik renderujący, model obiektowy i wyjście PDF 2.0 — do swobodnego używania, modyfikowania, redystrybucji i komercjalizacji. To fundament i ten sam silnik w każdej edycji.

Pro

Pro buduje na identycznym rdzeniu Apache-2.0 i dodaje zastrzeżone możliwości. Nie zastępuje rdzenia ani nie zmienia Twoich praw do niego.

Enterprise

Enterprise buduje na identycznym rdzeniu Apache-2.0 i dodaje zastrzeżone możliwości. Nie zastępuje rdzenia ani nie zmienia Twoich praw do niego.

Pro i Enterprise nie są open source. Ich pakiety deklarują "license": "LicenseRef-NextPDF-Commercial", a ich warunki żyją w NextPDF Commercial License Agreement (Version 3.0) — nie w Apache License 2.0 i nie wywodzą się z otwartego rdzenia. Dodają rzeczy; niczego nie odbierają z tego, co daje Ci rdzeń.

Granica jest widoczna w najzwyklejszym miejscu, jakie istnieje: w Twoim composer.json. Wdrożenie otwartego rdzenia to jedna zależność z publicznego rejestru.

<?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);

Nic w tym programie nie jest wypożyczone. Nie ma sprawdzenia licencji między Tobą a silnikiem, nie ma edycji, która musi być obecna, by rdzeń działał. Jeśli później zechcesz możliwości, którą zapewnia Pro lub Enterprise, dodajesz ją. Jeśli nigdy tego nie zrobisz, rdzeń działa dokładnie tak, jak działa dziś.

Częstym błędnym odczytem jest „otwarty rdzeń oznacza, że dostaję też markę”. Nie oznacza. Apache License 2.0 nie udziela żadnych praw do nazw handlowych, znaków towarowych ani logo licencjodawcy poza rozsądnym, zwyczajowym odniesieniem do pochodzenia dzieła (Spec: Apache License 2.0, §6). Możesz więc sforkować nextpdf/core, zmodyfikować go i redystrybuować — to jest prawo do kodu — ale nie możesz dostarczać tego forka jako „NextPDF” ani pod logo NextPDF. Wybierz własną nazwę.

Ten podział nie jest haczykiem ukrytym w hojności. To on czyni tę hojność bezpieczną. Licencja permisywna może rozdawać kod właśnie dlatego, że prawo znaków towarowych utrzymuje znaczenie „NextPDF” jako oficjalnego, niezmodyfikowanego oprogramowania nawet po sforkowaniu kodu. Bez tej granicy każda zmieniona kompilacja mogłaby nazywać się NextPDF i nikt nie odróżniłby oficjalnego silnika od czyjejś łatki. Ta linia chroni użytkowników, nie tylko znak. Pełne ujęcie kwestii kod-kontra-marka żyje na stronie znaku towarowego.

Drugie nieporozumienie to przekonanie, że „otwarty rdzeń” jakoś czyni płatne edycje również otwartymi. Nie czyni. To, że rdzeń jest na licencji Apache-2.0, nie mówi nic o Pro ani Enterprise — są one zastrzeżone niezależnie od licencji rdzenia.

Otwarty rdzeń to realna przewaga, wyłożona wprost — a nie twierdzenie, że wszystko jest darmowe. Zaawansowane możliwości w Pro i Enterprise są naprawdę zastrzeżone i naprawdę płatne; ta strona nie udaje, że jest inaczej, i nie składa żadnej obietnicy co do warunków tych edycji, które żyją w Twojej umowie komercyjnej.

„Brak uzależnienia od dostawcy” jest precyzyjny. Oznacza, że fundament, na którym budujesz, jest permisywnie licencjonowany i pozostaje używalny na Twoich warunkach. Nie oznacza, że każda funkcja jest w rdzeniu, i nie oznacza, że migracja z możliwości Pro lub Enterprise, którą wdrożyłeś, jest bezkosztowa — możliwość zastrzeżona to z natury zależność, którą wziąłeś na siebie świadomie. Wolność jest w rdzeniu.

Obowiązki atrybucji wynikające z Apache-2.0 §4 to obowiązki, a nie opcje. Redystrybucja, która pomija informacje, opuszcza licencję lub ukrywa zmiany wprowadzone w zmodyfikowanych plikach, jest naruszeniem licencji, choć licencja jest permisywna. Wolność niesie tu krótką, uczciwą listę obowiązków.

Ta strona jest podsumowaniem modelu licencjonowania w prostym języku, a nie samą licencją i nie poradą prawną. Tam, gdzie to podsumowanie i dokumenty miarodajne się różnią — plik LICENSE w pakiecie oraz Twoja umowa komercyjna dla płatnych edycji — rządzą te dokumenty. Pełne, wiążące ujęcie znajduje się na stronie licencjonowania.

  • Otwarty rdzeń — model, w którym permisywnie licencjonowany otwartoźródłowy rdzeń jest otoczony zastrzeżonymi, płatnymi dodatkami. Rdzeń jest darmowy w użyciu i pozostaje Twój; dodatki są opcjonalne.
  • Apache License 2.0 — permisywna, zatwierdzona przez OSI licencja open source. Udziela szerokich praw użycia, modyfikacji i redystrybucji, zawiera wyraźne udzielenie licencji patentowej, wymaga atrybucji przy redystrybucji i nie udziela żadnych praw do znaków towarowych.
  • Udzielenie licencji patentowej — wyraźna, bezpłatna licencja na patenty kontrybutorów obejmujące ich wkłady, z wygaśnięciem o charakterze obronnym, jeśli wytaczasz określone postępowanie patentowe dotyczące oprogramowania (Apache-2.0 §3).
  • Plik NOTICE — plik atrybucji, który, gdy jest obecny w dziele, musi zostać przeniesiony dalej w Twojej redystrybucji zgodnie z Apache-2.0 §4.
  • Uzależnienie od dostawcy — koszt zmiany, który czyni odejście od dostawcy kosztownym. Otwarty rdzeń usuwa je dla fundamentu, licencjonując rdzeń permisywnie.