RSS to nadal dobre rozwiązanie

7 september 2023
Jakub Rojek Jakub Rojek
Zdjęcie autorstwa Ketut Subiyanto z Pexels (https://www.pexels.com/pl-pl/zdjecie/zwiazek-polaczenie-wnetrze-zegarek-4474003/)
Categories: For clients, Web, Social media

Żyjemy w dynamicznym świecie, w którym jesteśmy wręcz uzależnieni od nowych informacji. Dzieje się dużo, materiałów w sieci powstaje jeszcze więcej, a ludzi coraz częściej zaczyna dotykać niechciane FOMO (ang. Fear of Missing Out). Społeczność internetowa w jakiś sposób musiała poradzić sobie z tym natłokiem komunikatów, więc zaprojektowano różne aplikacje, rozwiązania i wypracowano metody. Niektórzy zwyczajnie zaglądają co jakiś czas na ulubione serwisy, inni szukają serwisów agregujących wiadomości, a jeszcze inni tylko czytają nagłówki i odkładają linki do przeczytania na później za pomocą skrótów w przeglądarce czy specjalnych aplikacji. A niektórzy na to wszystko machnęli ręką i wyjechali w Bieszczady.

Jak w wielu sytuacjach, Internet (a raczej ludzie tworzący wspólnie globalną wioskę) stworzył pewne narzędzia, wśród których są kanały RSS, którym poświęcony jest ten artykuł. Szczerze mówiąc, w latach 2004-2008... nie byłoby potrzeby pisania takiego tekstu, jaki teraz widzicie na ekranach. RSS był bowiem bardzo powszechny, przez niektóre przeglądarki wręcz proponowany domyślnie (zresztą tak właśnie się o nim dowiedziałem) i korzystało z niego bardzo dużo osób. Teraz powoli odradza się zainteresowanie wokół niego, ale przez wiele lat technologia niemalże leżała schowana w szufladzie. Dlaczego? Odpowiedzią są media społecznościowe oraz mechanizmy subskrypcji. Użytkownicy, porażeni magią tego typu serwisów, zaczęli w nich obserwować wszystkich, nie tylko zdobywając informacje o nowych materiałach, ale też czytając komentarze oraz utrzymując kontakt ze znajomymi. Jednak także ten urok miał swój koniec oraz ujawnił pewne problemy (w tym między innymi wspomniany już przesyt informacji), stąd kanały RSS wcale nie zniknęły, a obecnie powoli wracają do łask lub raczej "normalności".

Opowiedzmy sobie zatem o nich z technicznego punktu widzenia i tego, jak mogą zostać wykorzystane.

Czym jest RSS?

Ten skrót ma dwa rozwinięcia:

  • RDF Site Summary (RDF = Resource Description Framework)
  • Really Simple Syndication

Jest to zbiór języków opartych o znaczniki, które służą do tworzenia kanałów z wiadomościami możliwych do obserwowania. Można powiedzieć, że każdy kanał (ang. channel lub częściej feed) to taki "profil" z najnowszymi materiałami z danej strony, który może być dodany do aplikacji będącymi czytnikami RSS (nie chodzi o fizyczne czytniki, jak np. te do e-booków). Dzięki takim aplikacjom użytkownik może w jednym miejscu śledzić nowości z różnych miejsc, a więc portali, które go interesują. Inaczej mówiąc - RSS służy do tworzenia swojego osobistego serwisu informacyjnego, który agreguje materiały z różnych stron internetowych. Można go też traktować jako telewizor, który po włączeniu pokazuje wiele stacji i najnowsze wiadomości z każdej z nich.

Specjalnie pisałem o tym, że to zbiór języków. Nie ma bowiem jednego standardu "zakodowania" takiego kanału, choć takim rozwiązaniem miał być Atom. Tym niemniej, technologia jest tak rozwinięta, że współczesne czytniki RSS nie powinny mieć problemu z różnymi odmianami sposobu zapisu feeda. Ważne jest tylko to, aby taki portal udostępniał kanał (lub kanały) RSS, do czego za chwilę dojdziemy.

Jak technicznie przebiega odczyt kanału?

Wbrew pozorom, cały proces nie jest specjalnie skomplikowany. Kanał RSS na stronie internetowej (lub jakimkolwiek innym zasobie) to nic innego, jak plik XML, który jest dostępny pod danym adresem URL i cyklicznie odczytywany przez czytniki u użytkowników. Mówiąc bardziej konkretnie:

  1. Strona internetowa tworzy odpowiednio zbudowany plik XML i co pewien czas go aktualizuje (o nowe artykuły, wiadomości itd.).
  2. Ten plik XML musi być publicznie dostępny w sieci.
  3. W sekcji HEAD strony internetowej za pomocą specjalnego znacznika umieszczany jest link i opis kanału.
  4. Użytkownik w swoim czytniku RSS (np. w przeglądarce) dodaje dany adres do subskrybowanych treści. Zwykle, jeśli to wtyczka do przeglądarki, to po wejściu na stronę z kanałem czytnik pozwala na łatwe dołączenie subskrypcji.
  5. Czytnik RSS w odpowiednich odstępach czasu odczytuje w tle ten adres z plikiem XML i sprawdza, czy pojawiła się aktualizacja.
  6. Jeśli pojawiła się nowa wiadomość, to czytnik informuje o tym użytkownika.

Czyli tak naprawdę mamy dwa zadania działające cyklicznie, co pewien okres. Z jednej strony witryna internetowa aktualizuje swój plik z feedem o np. nowe newsy, które pojawiły się na stronie. Z drugiej strony - czytnik RSS spogląda na ten plik i patrzy, czy coś się zmieniło. Z punktu widzenia twórcy strony internetowej nie wymaga to np. udostępnienia specjalnego portu na serwerze czy instalacji dodatkowego oprogramowania - musi "jedynie" tworzyć i uzupełniać plik tekstowy oraz zapewnić możliwość dojścia do niego po danym adresie. Bardzo często są to odnośniki w rodzaju adresstrony.com/rss.xml.

Tworzenie własnego kanału

Wiemy, że dostarczanie kanału z wiadomościami polega na tworzeniu pliku XML, a więc czegoś, co jest obsługiwane przez wiele języków i frameworków. Przykładowo, język PHP w swojej bibliotece standardowej udostępnia moduł SimpleXML ułatwiający zarządzanie tym formatem. Ale to nie zmienia faktu, że trzeba wiedzieć, jak taki plik XML dla RSS-a jest zbudowany.

Tak, jak pisałem - RSS nie do końca jest standardem, a raczej rodziną różnych metod zapewniających wytyczne. Ponieważ jednak te strumienie są dojrzałe i dostępne od wielu lat, czytniki radzą sobie z różnymi notacjami. Tym niemniej, pewne elementy są wspólne.

Jako przykład możemy podać nasz blog. Plik XML, który budujemy co godzinę, dostępny jest u nas pod adresem https://wildasoftware.pl/rss.xml. Śmiało możecie kliknąć w link i otworzyć go w przeglądarce.

Plik zbudowany jest w następujący sposób:

<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
	<channel>
		<title>Blog Wilda Software</title>
		<link>https://wildasoftware.pl</link>
		<description>Blog prowadzony przez Wilda Software o tworzeniu oprogramowania i przybliżający branżę IT spoza niej.</description>
		<lastBuildDate>Thu, 3 Sep 2023 01:02:00 +0000</lastBuildDate>
		<language>pl-PL</language>
		<atom:link href="https://wildasoftware.pl/rss.xml" rel="self" type="application/rss+xml"/>
		<item>
			<title>Kiedy 99,9% nie ma znaczenia</title>
			<link>https://wildasoftware.pl/post/kiedy-999-nie-ma-znaczenia?ref=rss</link>
			<guid>https://wildasoftware.pl/post/kiedy-999-nie-ma-znaczenia?ref=rss</guid>
			<pubDate>Sat, 01 Feb 2020 00:00:07 +0000</pubDate>
			<content:encoded>
				<![CDATA[ <p>Osoby pracujące w IT...</p> ]]>
			</content:encoded>
		</item>
		<item>
			...
		</item>
		...
	</channel>
</rss>

Widzimy tutaj budowę typowego pliku XML - zaczynamy od głównego węzła rss informującego przeglądarkę, że w ogóle mamy do czynienia z plikiem RSS, a następnie widzimy tag channel, który w standardzie Atom może też nazywać się feed. W tym miejscu znajdują się podstawowe informacje o samej stronie, czyli swoiste "przedstawienie się", aby użytkownicy mogli lepiej nas zlokalizować, gdy już dodadzą kanał do swoich subskrypcji. Można podać tytuł, link, opis oraz to, co może być istotne dla technicznej warstwy czytników - język oraz datę ostatniego zbudowania pliku. Dzięki temu wtyczka po stronie odbiorcy będzie mogła zoptymalizować odczyt kanału i sprawdzać zmiany tylko w tych, które deklarują, że zmienił się u nich moment ostatniej generacji. Na naszym blogu artykuły pojawiają się w odstępach tygodniowych lub dwutygodniowych, więc nie ma potrzeby aktualizowania pliku wiele razy dziennie, jak to ma miejsce np. w portalach newsowych. Moglibyśmy robić to co tydzień czy raz w nocy, ale musimy wziąć też pod uwagę, że subskrybent chciałby dowiedzieć się o nowym artykule jak najszybciej. Dlatego nowy plik generujemy co godzinę.

Następnie mamy szereg węzłów item i to są właśnie pozycje, które są pobierane i pokazywane w czytniku RSS. W naszym przypadku będą to artykuły, które mają swój tytuł, link oraz identyfikator wpisu (warto tutaj znać różnicę), datę opublikowania, a także treść, przynajmniej skróconą. W tym ostatnim węźle może pojawić się kod HTML, przez co w normalnym przypadku plik XML mógłby być źle interpretowany - w końcu te dwa formaty są do siebie dość podobne pod kątem budowy. Dlatego tego typu opisy warto opatrzyć specjalnym znacznikiem , który zapobiega interpretowaniu ewentualnych tagów w środku.

Jak widać, węzłów item może być wiele i cały czas dochodzą nowe - na tym polega dodawanie wiadomości. Oczywiście, nie zawsze warto zachowywać stare węzły, np. sprzed roku - w czytniku RSS nikt ich nie przeczyta, a jedynie zajmują miejsce, przez co coraz większy plik RSS wolniej się ładuje, gorzej wygląda jego odczytywanie i tym samym ludzie będą mniej chętni, aby go subskrybować.

Mamy zatem plik XML - jak poinformować świat, że go udostępniamy? Służy do tego odpowiedni tag w sekcji HEAD strony internetowej. W naszym przypadku jest to:

I już - czytniki będą mogły zobaczyć (oczywiście, o ile plik ma poprawną strukturę), że można dodać ten kanał RSS do subkrypcji.

Wróćmy na chwilę do zmianki o języku i jednej związanej z tym rzeczy - jeśli na stronie udostępniamy materiały dostosowane do danego odbiorcy, mamy sztywny podział na kategorie lub osobno chcemy powiadamiać o komentarzach, to istnieje możliwość generowania wielu kanałów. Nie jesteśmy ograniczeni do jednego pliku XML i jednego tagu - można mieć ich wiele i upubliczniać osobno. Widać to zresztą w niektórych czytnikach, które pozwalają wybrać konkretny feed dla danej strony.

Warto też wspomnieć o tym, że nie trzeba tworzyć takiego pliku ręcznie - dla wielu znanych technologii istnieją odpowiednie biblioteki, a w przypadku stron zbudowanych za pomocą np. Wordpressa można posiłkować się wtyczkami, które wykonają proces za programistę, opierając się na początkowej konfiguracji.

Czy warto mieć swój kanał RSS?

W przypadku, kiedy strona internetowa ma charakter wizytówkowy, jest wyłącznie sklepem lub to system do pracy, o konkretnych funkcjach, to faktycznie kanał RSS może nie mieć sensu. Jednak większość miejsc w sieci udostępnia nowe zasoby, o których chce powiadamiać odbiorców i wówczas kanał RSS jest dobrym wyborem. Są to:

  • portale newsowe,
  • blogi,
  • miejsca dyskusyjne (fora),
  • serwisy z ogłoszeniami

i tak naprawdę wiele innych witryn. Dodatkowo, nawet np. wcześniej wymienione sklepy również mogą prowadzić blog, który wspiera ich główną działalność. Sami jesteśmy przykładem strony, która przedstawia profil naszej firmy oraz usługi, które oferujemy, ale kanał RSS prowadzi do blogu, bo to on dostarcza nowe materiały.

Ta droga powiadomień jest niezależna i trafia bezpośrednio do odbiorców. Nie stoi też w sprzeczności z innymi sposobami dotarcia do potencjalnych czytelników, w tym nie broni reklamowania się w inny sposób. To przykład mediów własnych, które są jak najbardziej w cenie, a co ważniejsze, po ich początkowym przygotowaniu i odpowiednim ustawieniu automatycznych mechanizmów, nie ma potrzeby ich edytowania, a tym bardziej samodzielnego, ręcznego aktualizowania pliku. Krótko mówiąc - nie do końca istnieją argumenty, które odradzałyby stosowanie RSS w portalu z treściami. Natomiast, oczywiście, nie powinna być to jedyna droga, którą informujemy o nowych postach czy newsach.

Kanał RSS a serwisy społecznościowe

Wspominałem o tym, że od pewnego momentu rolę powiadomień przejęły media społecznościowe, które w jednym miejscu pozwalają wyświetlać informacje o nowościach, komentarze innych użytkowników, a także wszelkiego rodzaju inne materiały - opinie, dyskusje, ciekawostki czy memy. To oznacza, że wielu internautów stwierdziło, że po co mają konfigurować sobie RSS, skoro wszystko mają w portalu, który i tak regularnie przeglądają. Albo w kilku portalach. No właśnie - tutaj rodzi się problem.

Media społecznościowe to bardzo dobre narzędzie i trudno wyobrazić sobie bez nich życie, także firmom, nawet tym mniejszym. Natomiast ich rozrost sprawił, że ludzie zaczęli "pływać" w nowych treściach i powoli zaczęło to przeszkadzać. Portale takie jak Instagram, Twitter/X czy LinkedIn mogą nie tylko dostarczać radość, ale wręcz przytłaczać nowymi wiadomościami i zaburzać tzw. higienę korzystania z Internetu. Co za tym idzie, odnalezienie się w gąszczu informacji i wyłuskanie wiadomości o nowym artykule ulubionego blogera czasami graniczy z cudem, zwłaszcza, jeśli ten bloger dodatkowo umieszcza posty na zupełnie inne tematy (a umówmy się - większość to robi, bo inaczej "nie istnieją" lub nie zarabiają). Z drugiej strony, przeglądanie kilku miejsc ręcznie w celu znalezienia nowego artykułu również mija się z celem i niepotrzebnie zabiera czas.

Dlatego kanały RSS są nadal ciekawym rozwiązaniem, które trafi do osób chcących odciąć się od tego internetowego zgiełku, ale nadal pragnących śledzić nowe artykuły ulubionych twórców. Co więcej, te kanały są ze sobą "kompatybilne" - powiadamiać o nowych wiadomościach można zarówno przez feed, jak i przez media społecznościowe, przy tym tak, jak pisałem - w tym pierwszym przypadku robimy to automatycznie, bez naszego czynnego udziału. A żeby tego było mało, same systemy socialmediowe czasem udostępniają kanały RSS. Przykładem jest Mastodon - jeśli adres samego profilu to np. https://social.wildasoftware.pl/@wilda, to po dodaniu ".rss" na końcu uzyskujemy rzeczony kanał.

Jedyna większa wada kanałów RSS w stosunku do mediów społecznościowych to fakt, że nie ma jasnej informacji o tym, ile osób subskrybuje dany kanał. Aczkolwiek, dzięki różnym czytnikom i serwisom pobierającym dane, można to oszacować.

Podsumowanie

Kanały RSS to trochę zapomniana technologia w obliczu "ekscytujących" portali społecznościowych, ale nadal ważna i cenna. W dodatku po prostu działa i to w bardzo zrozumiały sposób, przez co nie wymagają dużo czasu poświęconego na obsługę. Wielu użytkowników posiada czytniki wbudowane w przeglądarkę lub można je bez problemu doinstalować. Wystarczy zatem to wszystko połączyć i używać RSS-a, aby mieć wszystkie nowości w jednym miejscu.

Pozdrawiam i dziękuję - Jakub Rojek.

We write not only blog articles, but also applications and documentation for our clients. See who we have worked with so far.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and occasionally teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek