Dlaczego porzuciłem Ghost na rzecz WordPress, ale Ty nie powinieneś?

Od nieco ponad tygodnia możesz podziwiać całkowicie nową wersję strony Type of Web. Do tej pory korzystałem z systemu Ghost, jednak zrezygnowałem z niego na rzecz WordPress. Prawdę mówiąc, nosiłem się z tym zamiarem już od dłuższego czasu… co było moją motywacją? Dlaczego Type of Web lepiej sprawdza się na WordPressie? I, co ważne, dlaczego nadal uważam Ghost za świetną platformę1 do blogowania? O tym wszystkim poniżej!

Nowy wygląd Type of Web
Nowy wygląd Type of Web
Stary wygląd Type of Web
Stary wygląd Type of Web

Czym jest Ghost?

Zacznijmy może od tego czym jest Ghost. Ghost to, w wolnym tłumaczeniu sloganu z ich strony, „Profesjonalna platforma do publikowania treści”. Jest to platforma blogowa, wydana jako Open Source (+ płatny Platform as a Service). Ghosta śmiało można określić mianem CMS (Content Management System, czyli system do zarządzania treścią). Ghost całkowicie skupia się na tworzeniu treści – sercem Ghosta więc jest edytor tekstu. Ogromną zaletą, przynajmniej z punktu widzenia programisty, jest fakt, że Ghost wspiera wymusza tworzenie artykułów w języku Markdown.

Ghost pozwala na korzystanie z różnych motywów – jest wiele darmowych, a także przynajmniej kilka płatnych. Ja jednak od początku używałem motywu domyślnego, który zmodyfikowałem do własnych potrzeb. Znajdziecie go w repozytorium github.com/mmiszy/casper. Zmieniłem kilka rzeczy, głównie jakieś drobnostki typu formatowanie czy styl stopki i nagłówka.

Patrząc czysto technicznie: Ghost jest napisany w node.js i korzysta z Ember.js oraz mustache.js. I pomimo, że o hosting node.js teraz już nie trudno, to jednak próg wejścia w darmowego Ghosta jest dość wysoki – konieczna jest konfiguracja serwera, instalacja, a następnie dbanie o to, aby Ghost był na bieżąco aktualizowany, gdyż Ghost nie posiada funkcji automatycznej aktualizacji.

Albo raczej: Nie posiadał. W momencie gdy się z niego przesiadałem na WordPress, wyszła wersja Ghost 1.0, która podobno tę funkcję dodaje. Próbowałem nawet zrobić update jednak napotkałem niemały problem: Razem ze zmianami w Ghost, mocnej modyfikacji uległ również jego domyślny motyw. Zmiany te niestety konfliktowały z moimi drobnymi poprawkami bodajże w ponad 20 miejscach… zabrakło mi motywacji, aby ręcznie to wszystko poprawić. Arghhh 😡…

Czym Ghost nie jest?

Napisałem, że edytor jest sercem Ghosta – to prawda, ale nie cała prawda 😉 Bo edytor jest nie tylko sercem, ale też płucami, nerkami, wątrobą… może dość tej metafory! Edytor to po prostu wszystko co Ghost ma do zaoferowania. Spójrz zresztą na poniższy zrzut ekranu przedstawiający panel administracyjny Ghosta.

ghost admin panel screenshot
Panel administracyjny Ghost. Zdjęcie z https://ghost.org/features/

Widzimy możliwość edytowania artykułów, zarządzania autorami oraz kilka innych opcji – z których większość nie ma realnego wpływu na pracę systemu. Skupiamy się na treści i tylko na niej. A jeśli chcesz dodać coś niestandardowego, np. kolorowanie składni, albo nietypowe metadane Facebooka? Cóż. O ile autorzy Ghosta tego nie przewidzieli, będziesz miał spory problem. Być może uda Ci się dodać swój kod do opcji Ghosta (jest możliwość wstrzykiwania HTML-a do stopki i nagłówka), ale w wielu przypadkach będziesz zmuszony edytować wykorzystywany motyw… niektóre rzeczy mogą być też w ogóle niemożliwe do zrealizowania.

Czego mi zabrakło w Ghost?

Ghost sprawdzał się świetnie jako platforma do publikowania artykułów. I to działało… na początku. Po roku prowadzenia bloga chciałem kilka rzeczy zmienić:

  • Zależało mi na poprawieniu SEO – bez szans w przypadku Ghosta.
  • Lepsza integracja z Social Media – nic ponad to co przewidzieli autorzy.
  • Menu i widgety – praktycznie nie istnieją
  • Nowy wygląd – z jednej strony bardzo ubogi zestaw darmowych motywów, a z drugiej ogromny problem w znalezieniu kogoś kto podjąłby się napisania takiego motywu specjalnie dla mnie za pieniądze

Samo hostowanie Ghosta również stało się dla mnie upierdliwe, a aktualizacja do kolejnej wersji wymagała więcej wysiłku niż postawienie wszystkiego na nowo na WordPressie. Zapadła decyzja. Żegnaj, Ghost! 👌

Witaj, WordPress!

WordPress to system i platforma blogowa, innymi słowy: CMS. Podobnie jak Ghost, silnik jest Open Source, a płatny jest PaaS. WordPress jest rozwijany od ponad 14 lat, a ja sam stawiałem na jego podstawie kilka mniejszych i większych serwisów – szczególnie na początku mojej kariery programisty. WordPress jest odpowiedzialny aż za 28% wszystkich stron internetowych. To całkiem niezła liczba!

Panel administracyjny WordPress
Panel administracyjny WordPress. Zdjęcie z https://wordpress.org/

Jak WordPress rozwiązał moje problemy?

Dwa określenia: Wtyczki i motywy potomne (child themes). Ale po kolei odniosę się do poprzednio wypunktowanych problemów:

Poprawa SEO

WordPress znany jest z tego, że już po domyślnej instalacji „lubi się” z wyszukiwarkami. Dodaje mnóstwo meta-tagów, poprawne elementy <link rel…> oraz wykonuje inne zabiegi, aby strona pojawiła się w wynikach wyszukiwania. Dodatkowo, istnieje całe gro wtyczek, które SEO jeszcze poprawiają i pozwalają na modyfikowanie słów kluczowych czy opisów dla każdego wpisu indywidualnie. I o ile Ghost próbował również takie funkcje wprowadzić, to jednak wychodziło mu to znacznie gorzej, a liczba opcji do konfigurowania była o wiele mniejsza.

Dodatkowo, motyw, którego używam, wypluwa bardzo dużo różnych metadanych (schema.org). Google widzi te wszystkie informacje i dzięki temu potrafi prawidłowo zinterpretować czym są określone fragmenty strony!

Integracja z Social Media

Wtyczki! Mnóstwo wtyczek! A jeśli nie wtyczki – to zmiany w motywie potomnym (o tym niżej). Dzięki temu widzisz tutaj ostatnie komentarze z Disqusa, moje najnowsze Tweety, a także w każdej chwili możesz polubić Type of Web na Facebooku albo zapisać się do newslettera (polecam!). Musiałbym się nieźle nagimnastykować, aby ten sam efekt osiągnąć w Ghost. Tutaj – praktycznie od razu dostaję wszystko na tacy i mogę się skupiać tylko na dopracowaniu szczegółów.

Menu i widgety

Tu znowu WordPress błyszczy. Mam praktycznie nieograniczoną możliwość konfigurowania menu i widgetów, które widzisz w sidebarze, nagłówku i stopce, a także pod każdym postem.

Motywy

WordPress pozwala na instalowanie motywów – a jest ich niezliczenie wiele, zarówno jeśli mówimy o tych płatnych, jak i o darmowych. Aktualnie Type of Web opiera się o całkowicie darmowy motyw Verbosa, który został dostosowany do moich potrzeb. Jednak muszę tutaj zwrócić uwagę na to, że modyfikacje motywów w WordPressie nie odbywają się w sposób podobny do tego z Ghosta – o nie! Nie modyfikowałem żadnych plików pochodzących od autora Verbosa i gdyby pojawiła się aktualizacja – moje zmiany na pewno nie zostaną utracone, a update mogę wykonać bez najmniejszych problemów.

Jak? Otóż WordPress ma koncept tzw. motywów potomnych, które zmieniają zachowanie motywu-rodzica bez konieczności modyfikowania jego plików! Dzięki temu zmieniłem niektóre zachowania i wygląd pewnych elementów, a także dodałem kilka potrzebnych mi funkcji – a wszystko to we własnym motywie potomnym.

To wszystko sprawia, że WordPressa często określa się też mianem nie tyle CMS co CMF – czyli Content Management Framework. To pojęcie szersze i oznaczające system, który daje programiście bazę do stworzenia własnej zaawansowanej aplikacji do zarządzania treścią. Dokładnie taki WordPress jest!

„Przeciwko” WordPress

Pod wpisem nafrontendzie.pl „Dość WordPressa! Migruję bloga do Jekylla!” wiele osób zarzucało WordPressowi głównie dwie rzeczy: że to ciężka kobyła oraz, że wtyczki są kiepskiej jakości. Idealnie wpisałem się tutaj w ramy czasowe z moją migracją na WordPressa i chciałbym się do tamtego wpisu odnieść.

Czy WordPress jest ciężki?

Odpowiednio skonfigurowany: Nie. WordPress ma mnóstwo funkcji i opcji konfiguracji, dlatego naturalnie waży znacznie więcej niż mniejsze systemy blogowe. Bez odpowiednich opcji i optymalizacji, strona na WordPressie będzie znacznie wolniejsza niż bez niego…

Ale, ale, chwila, moment. Type of Web chyba nie ładuje się tak wolno? W zasadzie to ładuje się całkiem szybko2. A więc ten cały ciężki WordPress i ogrom kodu PHP nie spowalnia strony. Jak to możliwe? Krótko mówiąc: Cache. Kiedy wchodzisz na typeofweb.com to co widzisz to tak naprawdę statyczny HTML wygenerowany wcześniej przez WordPressa. W momencie gdy odwiedzasz mojego bloga, żaden kod PHP nie jest wykonywany na serwerze! Wszystko idzie z cache’a. Po opublikowaniu przeze mnie nowego artykułu, albo po wprowadzeniu zmian na stronie, WordPress automatycznie generuje statyczny HTML. De facto działa to prawie tak samo jak statyczny generator plików typu Jekyll. Dodatkowo, pliki CSS i JS są konkatenowane i minifikowane, a wszystkie obrazki na bieżąco optymalizowane.

Wniosek: Przy odpowiedniej konfiguracji, WordPress nie ma żadnego negatywnego wpływu na wydajność!

Czy wtyczki są kiepskie?

Tak. Zdecydowana większość wtyczek jest źle napisana, niewydajna i, co gorsza, zawiera poważne błędy bezpieczeństwa. Ale aby ten problem rozwiązać, wystarczy rozsądek 😉 Nie instaluję pluginów, które są mało popularne, a samą ich liczbę ograniczyłem do absolutnego minimum. Niektóre widgety, jak na przykład „Type of Web na Facebooku” napisałem zupełnie sam – na podstawie wtyczki, która miała dużo więcej funkcji i przez to znacznie więcej potencjalnych błędów… Po prostu ograniczyłem to ryzyko.

Sam WordPress jest popularną platformą, a ewentualnie łatki ukazują się dość szybko, więc wystarczy cały czas pozostawać na bieżąco, aby zminimalizować jakiekolwiek ryzyko ataku. Sprawę ułatwia fakt, że WordPress – w odróżnieniu od Ghosta – aktualizuje się zupełnie sam. Nie wiem natomiast jaki jest czas reakcji zespołu Ghosta na ewentualnie zgłoszone bugi, ale domyślam się, że z racji mniejszego rozmiaru zespołu i mniejszej popularności, ten czas reakcji byłby dłuższy.

„Za” WordPress

Na konfigurację wszystkiego, łącznie z nowym serwerem, wgraniem wszystkich plików, modyfikacjami motywu, napisaniem kilku prostych wtyczek i doinstalowaniu kilku bardziej skomplikowanych, poświęciłem ledwo parę wieczorów. Efekt – działający blog, dokładnie tak jak chciałem, z opcjami, których potrzebuję. Pozwala mi się to skupić na tworzeniu ciekawych treści (jak, mam nadzieję, ten artykuł), a nie oprogramowywaniu bloga… raz ustawiony blog będzie mi służyły bez żadnych zmian przez długi czas.

Podsumowanie

Dlaczego więc uważam, że Ty powinieneś pozostać przy Ghost (lub jakimkolwiek innym systemie), jeśli z niego korzystasz? To przecież proste: Najważniejsza jest sama treść, a nie forma. Jeśli narzędzie, którego używasz Ci wystarcza – korzystaj z niego do woli. Ghost to naprawdę świetna aplikacja i polecam ją każdemu, kto chciałby się pobawić w blogowanie.

Ja jednak wybieram WordPress. Patrząc na dotychczasowe problemy z Ghostem, które opisałem w tym artykule, a które WordPress z łatwością rozwiązał – wybór ten wydaje się być oczywisty. Jeśli dodatkowo weźmiemy pod uwagę moje plany dotyczące Type of Web – potrzebuję systemu, który da się łatwo integrować z różnymi narzędziami i dowolnie rozszerzać 😎… Taki jest WordPress i wydaje mi się, że spełni swoje zadanie w 100%.

  1. Musicie mi to wybaczyć: W tym wpisie słowo „platforma” używane jest w jego anglojęzycznym znaczeniu 
  2. Średni czas odpowiedzi serwera to 360ms. Nad innymi optymalizacjami (obrazki, fonty i inne, które ucieszą Lighthouse) nadal pracuję. 
  • To z jakich wtyczek zostałeś „zmuszony” korzystać?

    • Najpopularniejsze wtyczki do SEO, Cache, Disqus, Google Analytics.
      Do tego Facebook, Twitter, lekki lightbox, lazy loading obrazków, automatyczna optymalizacja zdjęć, oraz specjalna wtyczka do organizowania serii wpisów – jak tutaj na przykład: https://typeofweb.com/kurs/hapijs/

  • krystianj

    Zgadzam się! Wiele ludzi korzysta z WordPressa edytując gotowe szablony – najczęściej szablon Divi, ale jak umiesz sobie napisać własny szablon i wiesz co za co odpowiada to wordpress nadaje się idealnie na różne prostsze jak i bardziej rozbudowane strony. Ponadto można tak zmienić konfigurację że na pierwszy rzut oka w źródło nie zdradza nam że stoi to na wordpressie. Tak jak moja strona -> https://www.k4art.com

    • Ja nie pisałem tym razem własnego szablonu, ale umiem czytać kod i wiem co gdzie i jak można zmienić – wewnatrz child theme – aby kod był optymalny 🙂