Kolofon · 14 sierpnia 2026
23 · Kanał jako wyjście treści
znalezione w cudzym czytniku, nie we własnym serwisie

Tekst: Kolofon
Treść wychodzi z Kolofonu trzema drogami. Stroną — tam renderuje ją przeglądarka i wszystko, co względne, rozwiązuje się względem adresu, pod którym czytelnik właśnie stoi. Książką — tam składa ją Typst i wszystko musi być rozstrzygnięte przed kompilacją, bo papier nie ma dokąd sięgnąć. I kanałem — tam treść czyta program, którego nie znamy, na urządzeniu, którego nie widzimy, w kontekście, którego nie kontrolujemy.
Ta trzecia droga jest najłatwiejsza do zaniedbania, bo autor nią nie chodzi. Stronę widzi po każdym wdrożeniu. Książkę pobiera, gdy ją wydaje. Kanału nie otwiera nigdy — a nawet gdyby otworzył, zobaczyłby poprawny XML i nie dowiedziałby się niczego. Błąd w kanale objawia się wyłącznie u kogoś innego.
Pierwsza reguła: w kanale nie ma adresów względnych. Na stronie `/images/kadry/2026/skala.jpg` jest w porządku, bo przeglądarka wie, względem czego to liczyć. Wyjęte z kontekstu strony i wstawione do czytnika — nie prowadzi donikąd. Czytnik, który nie dostał obrazu w kanale, próbuje pobrać stronę i wyciągnąć go samodzielnie; wtedy trafia dokładnie na ten problem i pokazuje znak błędu. Wygląda to jak zepsute zdjęcie, a jest zepsuty kanał.
Druga: kanał nie może zakładać, że czytnik zrobi cokolwiek poza czytaniem kanału. Nie pobierze strony, nie wykona skryptu, nie rozwinie żadnej abstrakcji. Co ma być widoczne, musi być w pliku — obraz, tekst, autor, data. Kanał, który jest tylko spisem odnośników, deleguje pracę stronie i traci nad nią kontrolę.
Trzecia: ten sam fakt zapisujemy wielokrotnie, bo czytniki czytają różne pola. Obraz idzie naraz jako Media RSS, jako załącznik i wewnątrz treści. To nie jest nadmiarowość z niezdecydowania — to jedyny sposób, żeby nie wybierać za czytelnika czytnika. Koszt to kilkaset bajtów na wpis.
Czwarta jest mniej oczywista i wyszła dopiero z użycia: długość kanału to nie jest kwestia wydajności, tylko tego, ile historii dostaje nowy czytelnik. Kto subskrybuje dziś, dostaje dokładnie tyle przeszłości, ile kanał akurat niesie — i nigdy więcej, bo czytniki nie mają jak sięgnąć wstecz. Dwadzieścia wpisów to przy codziennym pisaniu dwa tygodnie. Całe archiwum zniknęło dla każdego, kto przyszedł później.
Rozwiązaniem jest parametr długości w adresie, a nie podniesienie liczby na stałe. Na tym samym adresie siedzą bowiem dwa różne odbiorniki o sprzecznych potrzebach: człowiek z czytnikiem chce archiwum raz, przy pierwszej synchronizacji, a automatyzacja dystrybucji chce wąskiego okna najnowszych wpisów i traktuje wszystko, co w nim widzi, jako materiał do wypchnięcia dalej. Kanał wydłużony pod człowieka wypchnąłby półroczne archiwum na Facebooka jako świeże posty. Jeden adres, dwa kontrakty — rozdziela je parametr.
Ostatnia rzecz dotyczy nie formatu, tylko drzwi do niego. Odnośnik prowadzący wprost do pliku kanału jest technicznie poprawny i praktycznie szkodliwy: klikający bez czytnika dostaje ścianę XML-a i zamyka kartę z przekonaniem, że coś się zepsuło. Odnośnik prowadzi więc do zdania wyjaśniającego i adresu do skopiowania, a do samego pliku jest osobne wyjście dla tych, którzy wiedzą, po co je otwierają.
Kolofon