Ratioweb w Portland: Drupalcon’22
Między 25 a 28 kwietnia w amerykańskim mieście Portland (stalica stanu Oregon) odbywał się DrupalCon — najważniejsze wydarzenie społeczności Drupalowej tego roku. Ratioweb, nasza organizacja, była jednym ze sponsorów konferencji, więc zorganizowaliśmy grupę reprezentantów, która udała się na miejsce. Podróż przez półtora kontynentu to nie bułka z masłem. Ekipa poradziła sobie z tym bez większych problemów, pomijając może drobny fakt, że niżej podpisany dotarł dzień później, niż planował.
Nasza ekipa składała się z trzech osób: Karol Bryksa i, niżej podpisany, Marcin Gokieli zajmują się głównie back-endem, natomiast Marcin Fajfruk odpowiada za zarządzanie projektami, PR i pokrewne tematy. Ulokowaliśmy się w wygodnie położonym hotelu Mark Spencer, kilka przystanków tramwajem od centrum konferencyjnego. Pogoda nie odbiegała tak bardzo od tego, co zostawiliśmy za sobą w Polsce. Było wprawdzie trochę pochmurnie, ale nie zimno. Całkiem dobre warunki na to, żeby spędzać czas na konferencji. Rejestracja przebiegła bezproblemowo, zabraliśmy się do rozstawiania naszego stoiska.
Ratioweb to niezależna organizacja, działająca w modelu kooperatywy. Płaska struktura organizacyjna, wymienność ról, metodologia agile to kluczowe elementy naszej kultury pracy. Cały zespół składa się z około 15 osób plus kilkoro mniej czy bardziej regularnych współpracowników. Pracujemy zarówno dla klientów z Polski, jak i z Europy i USA (krajowi klienci to ok. 40%). Specjalizujemy się we współpracy z organizacjami pozarządowymi i edukacyjnymi, ale wśród klientów mamy też klientów korporacyjnych. Wykorzystujemy takie technologie open-source jak Drupal, VueJs, Grav.
Jaki cel przyświecał naszej wyprawie na DrupalCon? Zależało nam oczywiście na kontakcie z potencjalnymi klientami, szczególnie takimi, do których trudno byłoby dotrzeć z Europy Środkowej. Równie ważne było zorientowanie się w bieżącym stanie technologii związanych z Drupalem, jak również nawiązanie i utrzymanie kontaktów z członkami społeczności związanej z tą technologią. A okazja była szczególna – DrupalCon w Portland był pierwszym wydarzeniem drupalowym „na żywo” tej skali po pandemii. Dzieliliśmy czas między przebywaniem na naszym stoisku, wykładami i warsztatami a dowiadywaniem się, co oferują inni uczestnicy.
Kluczowym elementem DrupalConu były wykłady. Najważniejszy był zapewne „Driesnote” Driesa Buytaerta, który jest inicjatorem i liderem projektu. Zaprezentował on przegląd obecnego stanu projektu i innowacjach, które pojawiły się w ostatniej, 9. wersji i tym, czego możemy się w najbliższej przyszłości (wersja 10, która ma ukazać się pod koniec bieżącego roku) i nieco dalszej (Drupal 11).
Możemy chyba założyć, że osoba czytająca niniejszy wpis wie mniej więcej, czym jest Drupal, ale krótkie wprowadzenie może być pomocne- zorientowanie się w historii projektu pozwoli lepiej zrozumieć wyzwania, jakie stoją przed nim w przyszłości. Drupal to system typu CMS/CMF, który służy do tworzenia stron internetowych, aplikacji webowych, i pokrewnych (jak na przykład API dla aplikacji mobilnych). Jego największą zaletą jest wszechstronność i uniwersalność. Z jednej strony bowiem oferuje wygodny wizualny interfejs użytkownika, który pozwala szybko stworzyć złożoną stronę ze skomplikowanymi formatami wyświetlania danych, zorganizowanych w dowolnie wiele pól. Naprawdę dużo można osiągnąć bez żadnego programowania – ja na przykład rozpocząłem swoją znajomość z tą technologią od napisania cyklu artykułów w piśmie „Komputer Świat Ekspert” ponad 10 lat temu. Nabyte umiejętności pozwoliły mi niedługo potem stworzyć profesjonalną platformę e-learningu języka angielskiego – z płatnym dostępem, częścią treści dostępnych za darmo, systemem zniżek dla klientów korporacyjnych itd. Wszystko to odbyło się dzięki platformie Drupal Commerce 1 na Drupalu 7, z pomijaną porcją kodowania po stronie back-end (cały front-end był customowy). Nie chodzi o to, żeby unikać programowania – kod zapewnia możliwość testowania, rozszerzania, jest bardziej zrozumiały dla nowych współpracowników. Możliwość szybkiego naszkicowania pozwala jednak szybko stworzyć model i przedyskutować możliwe rozwiązania zarówno z klientem, jak i wewnątrz zespołu.
Drupal wykonał znaczący postęp w warstwie programistycznej wraz z pojawieniem się wersji 8 z 2015 roku. Zdecydowano się przebudować projekt w oparciu o Symfony – czołowy obiektowy framework PHP. Stał się on znacznie bardziej złożony strukturalnie: pojawiła się złożona tkanka serwisów, pluginów, kontrolerów itd. Nadal wiele można uzyskać klikaniem, ale warstwa programistyczna wymaga większego przygotowania. Kod jest łatwiejszy do utrzymania – czy też może po prostu bardziej zrozumiały. Tworzenie prostych projektów stało się może nieco bardziej problematyczne, natomiast możliwe stało się budowanie znacznie bardziej złożonych aplikacji. W znacznym stopniu wynika to z faktu, że wykorzystano wiele standardowych narzędzi i dobrych praktyk z innych projektów PHP, które z kolei opierają się na rozwiązaniach wypracowanych dla innych języków. Drupal dąży do osiągnięcia kompromisu, który będzie korzystny z wielu punktów widzenia. Z jednej strony możemy szybko naszkicować strukturę projektu, omówić rozwiązania i rozważyć różne opcje. Z drugiej natomiast ostateczna wersja kodu opiera się na solidnych wzorcach i standardach, a dzięki temu jest łatwa w utrzymaniu.
Powróćmy do przemówienia Driesa. Przedstawiony powyżej ideał jest bardzo atrakcyjny, ale nie został jeszcze w pełni osiągnięty. Prezentacja lidera opierała się, jak to widzę, na założeniu, że system jest obecnie oparty na solidnych podstawach i zmierza we właściwym kierunku. Owszem, pojawią się ważne innowacje, ale mają one raczej ewolucyjny niż rewolucyjny charakter. Widzę dwa najważniejsze kierunki zmian. Pierwszy z nich to reorganizacja. Przykładem tego rodzaju działań jest ograniczanie core Drupala. Pomysł jest taki, żeby podstawowa instalacja systemu nie obejmowała elementów, które nie będą potrzebne większości użytkowników. Dodatkowe funkcjonalności możemy uzyskać, korzystając z modułów, które rozszerzają możliwości systemu. I tak na przykład funkcjonalność Forum obecna jest jeszcze w samym D9 (‘core’), ale zostanie przeniesiona od oddzielnego modułu (czyli tak zwanej warstwy ‘contrib’) w wersji 10. Oznacza to, że ci, którzy nie zamierzają z niej korzystać, nie będą mieli automatycznie zainstalowanego odnośnego kodu (a ich system będzie mniejszy i prostszy). Ci zaś, którzy będą chcieli z niej skorzystać, mogą w prosty sposób zainstalować odpowiedni moduł: wystarczy wydać polecenie ‘composer require’.
Tak to wygląda w teorii. Praktyka jest natomiast nieco bardziej złożona. Przesunięcie kodu z core do contrib (jak to ma się stać z Forum) lub w drugą stronę (jak to się stało z modułem Views w D8) pociąga za sobą istotne zmiany „polityczne”. Jeśli moduł staje się częścią rdzenia Drupala, to problemy związane z bezpieczeństwem odnośnego kodu stają się relewantne dla wszystkich instalacji systemu. Jeśli zaś przenosimy dany kod do oddzielnych modułów, trzeba zapewnić zasoby dla utrzymania i dalszego rozwoju kodu, który dotąd był wykorzystywany w wielu instalacjach. Choć więc pozornie zmiana taka ma charakter jedynie kosmetyczny, to przeprowadzenie operacji wymaga starannego planowania i wydatnego wysiłku.
Drugi ważny kierunek rozwoju dotyczy „polityki zagranicznej”, czyli integracji ze światem zewnętrznym. Świetnym przykładem może tu być nadchodząca integracja edytora HTML CKEditor w wersji 5, która ma nastąpić w Drupalu 10. Tu również kluczowy jest aspekt strategiczny: chodzi nie tylko o jak najwyższą jakość samych komponentów, ale też o to, by jak najbardziej ułatwić współpracę z użytkownikami czy programistami z szerszego świata PHP.
Dries kładł nacisk na to, że Drupal ma być jak najbardziej zgodny ze standardami, jak najlepiej udokumentowany. Na celowniku znalazły się tak zwane „drupalizmy” – konstrukcje i sposoby postępowania, które występują jedynie w Drupalu. Dostosowanie się do dobrych praktyk ma znacznie ułatwić adaptację platformy. Wymaga to dużej pracy programistycznej, ale znów – cele wyznaczone są przez czynniki „polityczne”, problemy współpracy zarówno z innymi projektami, jak i wewnątrz społeczności. Jeśli jesteście ciekawi mojego zdania na temat tego podejścia, to jest ono jednoznacznie pozytywne. Drupal jest obecnie dojrzałym projektem – można powiedzieć, że pozostawił za sobą problemy wieku dziecięcego i okresu dojrzewania, ładnie wydoroślał. Nie ma potrzeby dokonywać gwałtownych zmian, warto teraz skupić się na współpracy z innymi. Co nie znaczy, że nie byłoby miło, gdyby pojawiły się zmiany w Form API… ale to duża sprawa, której czas, miejmy nadzieję, nadejdzie.
Jeśli chcecie dokładniej poznać przemówienie Driesa, to możecie je obejrzeć, jak również wiele innych prezentacji z Portland, na Drupal Association na kanale YouTube.
To skłania do postawienia pytania: jeśli tak wiele materiału jest dostępnego online, to czy warto przemieszczać się osobiście na tego rodzaju wydarzenia? Moim zdaniem zdecydowanie tak. Najciekawszym elementem konferencji było bowiem nie treści, faktycznie dostępne w internecie, ale spotkanie społeczności. Na DrupalConie można było doskonale zaobserwować jej różnorodność. Spotykaliśmy bardzo różne osoby, wywodzące się z różnych środowisk. Jak zaznaczyłem powyżej, jesteśmy małą organizacją – tymczasem stoisko obok zajmowała firma EPAM Systems, zatrudniająca tysiące programistów z całego świata. To też dowód tego, że Drupal jest rozwiązaniem skalowalnym. Można było się przekonać, że projekt Drupal wkłada wiele wysiłku, by być dostępnym dla każdego, niezależnie od religii, narodowości, preferencji seksualnych itd. (promocji różnorodności poświęcony jest specjalny pod-projekt). Podczas spotkań panelowych zapewniono tłumaczenia na język migowy, przy wejściu dostępne były znaczki, pozwalające deklarować zaimki, pod jakimi życzysz sobie, by się do ciebie zwracać, i inny zestaw, który pozwala ci zadeklarować, czy jesteś w nastroju do rozmów, czy raczej chcesz mieć spokój. Dla zainteresowanych dostępny była sala modlitw.
Takie podejście dawało bardzo konkretne rezultaty. Publiczność była bardzo różnorodna, bez dominacji modelu korporacyjnego (który był oczywiście też wyraźnie obecny). Pozwala to wykorzystać większą pulę osób zarówno do zadań programistycznych, jak i testowania czy tworzenia dokumentacji. Oznacza to też, że dyskusje nad przyjmowanymi rozwiązaniami nie będą dominowane przez perspektywę jednej grupy – co przekłada się na bezpośrednią zaletę konkurencyjną. Zatrzymam się na chwilę przy kwestii przypinek deklarujących zaimki i chęć rozmowy. Rozwiązanie proste, tanie i bardzo proste, a pozwala uniknąć pewnych problemów, czy ograniczyć ich skalę.
Samo Portland jest fascynującym miejscem. Tuż obok hotelu znajdowała się olbrzymia księgarnia, spory sklep płytowy i rowerowy, znalazła się też ścianka wspinaczkowa. Okolica Portland to wspaniała przyroda – szkoda, że nie dało się jej lepiej poznać. Ostatniego wieczoru udaliśmy się z Marcinem na długi spacer, podczas którego wykonał on szereg świetnych zdjęć. Oczywiście, dzielimy się nimi z wami, o proszę!
z ambitnymi ludźmi i projektami