W tym odcinku mojego podcastu rozmawiam z Adamem Zielińskim – core-kontrybutorem WordPressa i pracownikiem Automattica. Adam opowiada o WordPress Playground, innowacyjnym narzędziu pozwalającym na uruchomienie WordPressa bez potrzeby posiadania serwera! Dowiedz się, jak działa WebAssembly, jak Playground radzi sobie z bazą danych i jak może ułatwić życie każdemu deweloperowi.
Co sądzisz o WordPress Playground? Jakie masz pomysły na jego zastosowanie? Daj znać w komentarzach!
🎥 Partner odcinka: cyber_Folks – 20% rabatu na hosting WordPress z kodem podcast!
Podcast dostępny m.in w: Spotify, Apple Podcasts, Google Podcasts
Linki, o których wspomniał Adam w podcaście:
✅ https://w.org/playground – dobry punkt wejścia do wszystkich materiałów
✅ https://wordpress.github.io/wordpress-playground
✅ Quick Start Guide
✅ Playground web instance
✅ Guides
✅ Blueprints 101 – A crash course
✅ Developer Hours Videos: Americas Region (May 23,2023)
✅ Watch „WordPress Playground: the ultimate learning, testing, & teaching tool for WordPress” by Anne McCarthy
✅ More links and resources
✅ Blueprints gallery
TRANSKRYPCJA AUTOMATYCZNA:
Maciej:
Cześć, w dzisiejszym odcinku podcastu moim gościem jest Adam Zieliński i myślę, że to jest takie nazwisko, że jeśli widzicie to nazwisko na przykład na agendzie WordCampa czy jakiegoś WordApa, to już z góry wiecie, o czym Adam będzie mówił. I dokładnie tak samo jest u mnie dzisiaj w podcastie – będziemy rozmawiać o Playgroundzie. Natomiast zanim przejdziemy do tego tematu, to Adam, proszę, przedstaw się – kim jesteś, czym się zajmujesz i jak to wygląda u ciebie w tym WordPressowym świecie.
Adam Zieliński:
Cześć, ale miło w ogóle, że powiedziałeś o tym, że już wiadomo, o czym będę mówił, jak gdzieś moje nazwisko jest. Cześć, jestem Adam, pracuję w Automatiku, jestem core-kontributorem, jestem w core’owym zespole WordPressa. Pracuję przy projekcie, który nazywa się WordPress Playground, czyli WordPress, który jest uruchomiony na serwerze. W przeglądarce albo w dowolnym miejscu. Oprócz tego, że pracuję przy WordPressie, mieszkam… do szkoły aktorskiej, gram spektakle improwizowane.
Maciej:
Tu spokojnie możemy też używać tych angielskich form, bo jednak nasze środowisko jest przyzwyczajone dosyć mocno do angielskiego, a język polski często nie nadąża za tymi naszymi…
Adam Zieliński:
Tak.
Maciej:
Na początku może powiedz trochę na temat tego, od kiedy jesteś w Automatiku i jak tam trafiłeś, bo myślę, że dla naszych słuchaczy też jest to dosyć ciekawa rzecz. No bo jednak wiele osób pewnie by chciało tam pracować – to jest taka firma marzeń dla ludzi z tego środowiska.
Adam Zieliński:
Do Automatika trafiłem w styczniu 2018. To już 7 lat. W tym roku to jest chyba 21 rok, jak zajmuję się programowaniem. Przed Automatikem bezpośrednio pracowałem przy takim projekcie, który nazywa się Bench. Jeśli ktoś z was używał… to mieliśmy dosyć podobny produkt. Taki whiteboard online, na który można było wejść, rozmawiać z innymi ludźmi przez kamerę, przez mikrofon, przez przeglądarkę bez instalowania żadnych rzeczy, pracować na dokumentach, pisać dodatki w czasie rzeczywistym – takie do współpracy. Robiłem to jakieś 5-6 lat, w poznańskim funduszu. Rozwijaliśmy produkt przez jakiś czas, natomiast ostatecznie nie zmieniliśmy się w…
Wcześniej, przed tym, pracowałem jako freelancer przez mniej więcej 10 lat. No i zakończyła się ta moja przygoda z Benchem. Już było wiadomo, że projekt nie pociągnie, że trzeba firmę sprzedać albo zamknąć. Każdy z nas, założycieli, szukał swojego dalszego zajęcia. Ja byłem już bardzo zmęczony projektami freelancerskimi, które robiłem wcześniej, bo to za każdym razem było szukanie nowego klienta, wdrażanie się w projekt, ogarnianie płatności. To trwa kilka miesięcy. Może kilku klientów trzeba równolegle ogarniać, bo do jednego nie ma tyle godzin, żeby cały tydzień wypełnić.
Bardzo nie chciałem tego robić i chciałem być w jakimś miejscu, w którym będzie po prostu stabilnie, może wypłata będzie przewidywalna, niezależnie od tego, ile będę pracować. Może urlop jakiś będę miał i on nie będzie wpływał na to, czy jestem w stanie rachunki zapłacić.
Miałem dużą przeszłość z WordPressem, bo WordPress to był system, który pozwolił mi złapać moje pierwsze zlecenie zagraniczne, bo na początku pracowałem tylko na polskim rynku. W którymś momencie, jeszcze jak w liceum byłem, to pamiętam, że przed maturą tego samego dnia miałem rozmowę o pracę, w sensie o zlecenie. Wtedy to się ODesk nazywało – portal, który łączył freelancerów i zleceniodawców, dzisiaj to jest Upwork.
I tam znalazłem człowieka, który potrzebował zmian na swojej stronie. Wykonałem te poprawki i potem wspólnie pracowaliśmy przez kilka lat. Ja coraz lepiej tego WordPressa poznawałem, wdrażałem się w niego. Później poszedłem w zupełnie inną stronę, ale to doświadczenie WordPressowe ze mną zostało.
I zobaczyłem, że Automattic rekrutuje. Naczytałem się dużo o tej firmie, że to jest taka fajna, zdalna firma i że wszyscy tam chcą pracować, właśnie tak jak Maciek mówił wcześniej. Postanowiłem spróbować – złożyłem chyba dosłownie 5 czy 6 CV w tamtym okresie i jedno z nich było do Automattica. Tak na zimno, zupełnie nikogo tam nie znałem. Odezwali się do mnie, potem zaprosili mnie na rozmowę i finalny etap rekrutacji wtedy jeszcze był czat z Matem. Od tamtego czasu jestem właśnie w Automatticu.
Maciej:
Myślę, że przejdziemy do Playgrounda, bo jednak po to się dzisiaj spotkaliśmy i to jest bardzo ciekawy temat. No właśnie, co to jest ten Playground i jak on działa, jeśli miałbyś wytłumaczyć to takiemu użytkownikowi WordPressa, który postawił z pięć WordPressów w swoim życiu?
Adam Zieliński:
Playground to jest taki WordPress, którego mogę otworzyć na swoim telefonie, przejść w tryb samolotowy, odcinając cały dostęp do internetu, a on dalej działa. Dzieje się tak dlatego, że jest uruchomiony w całości w przeglądarce. On nie musi gadać z serwerem, tam nie ma żadnego komputera, z którym komunikujemy się przez internet. Cały WordPress, całe PHP i cała baza danych są pobierane na nasze urządzenie i działają u nas lokalnie.
Ma to duże konsekwencje dotyczące tego, co możemy z tym zrobić. Możemy stworzyć całą infrastrukturę naszego projektu, dokumentacji, wtyczek – w tej dokumentacji możemy mieć interaktywne przykłady, w których użytkownik może klikać, dodawać strony, bawić się blokami i nie musimy w tym celu kupować żadnych serwerów, martwić się o prywatność czy legalność.
Maciej:
Moje pierwsze zetknięcie z Playgroundem było takie, że myślałem, że to po prostu szybkie stawianie instancji WordPressa gdzieś na serwerze. A potem doczytałem, że nie potrzeba serwera i miałem w głowie pytanie: „Ale jak? Przecież to niemożliwe!” Jak to działa?
Adam Zieliński:
To działa dzięki WebAssembly. WebAssembly to format binarny, który działa w każdym środowisku uruchomieniowym, np. w przeglądarce. Aby uruchomić WordPressa w przeglądarce, skompilowałem PHP do WebAssembly.
Baza danych to większe wyzwanie, bo MySQL nie działa w WebAssembly. W ramach Playgrounda stworzyliśmy więc wtyczkę, która tłumaczy zapytania MySQL na SQLite – bazę danych, która może być wkompilowana w PHP.
Cały system działa wewnątrz przeglądarki, nawet komunikacja z internetem działa poprzez tłumaczenie zapytań PHP na wywołania fetch w JavaScript.
Maciej:
Tutaj pierwsze pytanie, jakie mi się nasuwa, to o ile przy PHP mówiłeś, że została po prostu skompilowana jakaś konkretna wersja do WebAssembly, to przy bazie danych zapala mi się takie światełko. Proste zapytania, takie w miarę standardowe, mogą działać i może być wszystko super, ale pytanie – czy możemy mieć sytuację, że coś, co działa na klasycznej wersji bazy danych, nie działa tutaj ze względu na ograniczenia Playgrounda?
Adam Zieliński:
Mogą być takie sytuacje. Zachęcam do zgłaszania takich problemów w repozytorium Playgrounda – wtedy się o nich dowiadujemy i możemy je naprawiać oraz usprawniać Playgrounda.
Jeśli chodzi o PHP, to na ten moment działa już dosyć sprawnie. Są jeszcze jakieś niedociągnięcia, ale duże rzeczy, jak dostęp do internetu czy dostęp do plików, już funkcjonują.
Jeśli chodzi o bazę danych, większość zapytań działa. Testy jednostkowe WordPressa z wtyczką do SQLite przechodzą poprawnie. Natomiast są wtyczki, jak Yoast czy WooCommerce, które używają bardziej zaawansowanych zapytań i one nie działają na obecnej wersji.
Wzięliśmy tokenizer do zapytań MySQL-a z projektu PHPMyAdmin i używając go, namierzaliśmy w zapytaniu słowa kluczowe, np. SELECT czy wartości w cudzysłowach, i punktowo tłumaczyliśmy je na inny dialekt. To pozwoliło zaliczyć testy zapytań typu SELECT UNION czy DELETE usuwające dane z wielu tabel jednocześnie.
Pół roku temu zaczęliśmy eksplorować inne podejście – parsowanie zapytań do MySQL-a w sposób podobny do tego, jak robi to sam serwer. Zamiast patrzeć na tokeny, parsujemy zapytanie do drzewa składniowego i analizujemy, jakie konstrukcje wspieramy. Dzięki temu możemy przeprowadzać testy na całej bazie pluginów WordPressa (czyli na tysiącach wtyczek) i sprawdzać, jakie elementy MySQL jeszcze nie są dobrze obsługiwane.
To działa zaskakująco dobrze – jest szybkie i zwiększa wsparcie dla MySQL na SQLite. Mało tego, może to być przydatne nie tylko dla Playgrounda, ale i dla samego WordPressa, który może docelowo wspierać SQLite natywnie. Przy niewielkim dodatkowym wysiłku moglibyśmy w przyszłości dodać wsparcie np. dla PostgreSQL, MongoDB, a nawet dla przechowywania danych w plikach na dysku, jakby to była baza danych.
Podsumowując: tak, są problemy z bazą danych, ale pracujemy nad nimi i będzie lepiej.
Maciej:
Fajnie słyszeć, że macie realne plany na poprawę sytuacji. A jak wygląda kwestia przeglądarek? Czy każda współczesna sobie z tym poradzi, czy są jakieś ograniczenia? Pamiętamy wszyscy czasy Internet Explorera 6 i wymagań, że wszystko musi na nim działać…
Adam Zieliński:
Boże, jak mi przypomniałeś te czasy… Cienie robiło się wtedy na osiem obrazków, na każdą stronę i boki…
Dzięki za tę wycieczkę w przeszłość!
Dziś Playground działa na każdej współczesnej przeglądarce. Są niszowe wyjątki, jak links działający w terminalu, gdzie raczej bym się nie spodziewał działania. Ale na telefonach, Macach, Windowsach i Linuxie działa bez problemu.
Niektóre przeglądarki mają więcej funkcji niż inne – np. w Chrome możemy załadować WordPressa z lokalnego katalogu i zapisać tam dane. W Safari na iPhone’ach ta funkcja nie działa, bo Apple jeszcze jej nie dodało.
Sama baza, czyli WordPress w przeglądarce, działa wszędzie. Można go konfigurować przez Playground Blueprint – powiedzieć, że chcemy konkretną wersję WordPressa, określone wtyczki, motywy czy treści. Wszystko to działa jako Progressive Web App, zupełnie offline.
Maciej:
OK, poruszyłeś ciekawy temat – dostęp do systemu plików. Jak to wygląda pod kątem bezpieczeństwa? Czy Playground działa w jednym systemie plików, czy w wyizolowanych środowiskach?
Adam Zieliński:
Domyślnie Playground nie używa systemu plików poza tym, co trzyma w pamięci w zmiennych JavaScriptu. Jest to izolowane w jednej karcie przeglądarki i żadna inna karta nie ma do niego dostępu.
Jeśli użytkownik chce zapisać dane na dłużej, używa Origin Private File System (OPFS). Jest to mechanizm podobny do LocalStorage, ale daje złudzenie hierarchii plików i katalogów. To jest przypisane do całej domeny Playground WordPress.net.
Może więc zaistnieć sytuacja, że mamy dwa Playgroundy w różnych kartach i jedna wtyczka zajrzy do plików drugiej. Planujemy to odizolować, ale to wyzwanie, bo musimy równocześnie umożliwić użytkownikowi dostęp do jego danych po ponownym otwarciu przeglądarki.
Jeśli chodzi o system plików lokalnych – przeglądarka daje nam dostęp do wybranego katalogu i tylko do niego. Nie ma ryzyka, że Playground odczyta inne pliki na dysku użytkownika.
Maciej:
Dzięki za wyjaśnienie, to uspokajające, że przeglądarka czuwa nad bezpieczeństwem.
A jak w ogóle zaczęła się praca nad Playgroundem? Skąd pomysł?
Adam Zieliński:
Dokładnie, to była oddolna inicjatywa.
Pracowałem z Gutenbergiem i spędziłem dwa lata ucząc się jego warstwy danych. Gdy piszemy posta czy edytujemy szablon, dane przechowywane są lokalnie, a potem wysyłane na serwer przez REST API.
Nie było dobrej dokumentacji, więc postanowiłem napisać tutorial „Your first application with WordPress data”. Dostałem dobry feedback, ale ludzie zwracali uwagę, że zanim zaczną pracować z tutorialem, muszą zainstalować WordPressa, Apache, Dockera itd.
Na Contributor Days widziałem, że nawet doświadczeni deweloperzy mieli problemy z uruchomieniem WordPressa w wersji developerskiej.
Wtedy pomyślałem: a co, jeśli WordPress działałby w przeglądarce? Nie na serwerze, nie w chmurze, ale lokalnie?
Znalazłem istniejące próby uruchomienia WordPressa w przeglądarce, ale miały problemy: brak logowania do admina, niestabilność, brak podstawowych funkcji. Pracowałem nad tym kilka tygodni i stworzyłem pierwszą wersję Playgrounda, która działała stabilnie i wspierała własne pliki oraz PHP.
Na początku reakcje były mieszane – „po co to, skoro mamy Dockera?”. Ale teraz, po dwóch latach, Playground pokazuje swoją wartość i ludzie widzą, jak wygodne jest uruchamianie WordPressa bez instalowania dodatkowego oprogramowania.
Sam używam Playgrounda jako aplikacji do notatek – działa offline jako Progressive Web App i synchronizuje się między urządzeniami.
Maciej:
Bardzo ciekawa historia – tutorial stał się początkiem czegoś dużego. Możliwości Playgrounda robią wrażenie. A ile osób pracuje nad tym projektem?
Adam Zieliński:
To jest trudne pytanie, dlatego że technicznie w zespole jest 9 osób, ale 5 z nich, włącznie ze mną, jest zaangażowane w Playgrounda. Są jednak także ludzie z innych zespołów i spoza Automattic, którzy się angażują.
Jest na przykład Huanma, który pomógł przepisać całą dokumentację Playgrounda i ją strukturyzować w taki sposób, żeby faktycznie prowadziła człowieka od momentu dowiedzenia się, czym jest Playground, do momentu budowania aplikacji.
Technicznie nie jest on w tym samym zespole, ale jest bardzo istotną częścią sukcesu. Więc trudno na to pytanie odpowiedzieć jednoznacznie. Musiałbym powiedzieć, że jest to kilkanaście albo nawet kilkadziesiąt osób, jeśli miałbym wziąć pod uwagę wszystkich kontrybutorów, którzy angażują się w kod, developer relations czy design.
Maciej:
Rozumiem, że można dołączyć do Was na takiej samej zasadzie jak do WordPressa – na zasadach open-source?
Adam Zieliński:
Tak, repozytorium Playgrounda jest dostępne na GitHubie pod adresem: github.com/wordpress/wordpress-playground. Można tam wejść, podnieść sobie jakieś issue albo rozpocząć dyskusję i zapytać, co jest dobrym pierwszym issue.
Z tego, co zaobserwowałem, potrzeba kontrybucji często pojawia się, kiedy ktoś zaczyna używać Playgrounda i napotyka jakieś ograniczenia. Staramy się szybko przeglądać zgłoszenia i wszelkie kontrybucje są mile widziane.
Maciej:
Czyli jeśli ktoś miałby ochotę, to może do Was dołączyć w dowolnej skali, na jaką czas mu pozwala, nawet jeśli to tylko małe zmiany?
Adam Zieliński:
Tak, dokładnie.
Maciej:
Chciałbym jeszcze zapytać o przechowywanie danych w Playgroundzie. Czy jeśli zamknę kartę przeglądarki albo wyłączę komputer, to wszystko mi zniknie?
Adam Zieliński:
To zależy. Domyślnie Playground jest tymczasowy – wszystko, co zrobisz, zniknie po zamknięciu karty przeglądarki. Jest to celowe, aby można było łatwo testować zmiany bez konieczności ręcznej konfiguracji WordPressa za każdym razem.
Natomiast istnieje możliwość zapisania instancji Playgrounda na lokalnym dysku lub w PFS (o którym wcześniej rozmawialiśmy). Po zapisaniu można później wrócić do swojej pracy, nawet po wyłączeniu komputera.
Dodatkowo mamy możliwość eksportu do ZIP-a – można zapisać aktualny stan Playgrounda i później go przywrócić. Jest też funkcja eksportu na GitHub, co pozwala na łatwą integrację z cyklem pull-requestów.
Maciej:
Czyli jeśli zapiszę Playgrounda do ZIP-a, to mogę go wysłać koledze, otworzyć na iPhonie itd.?
Adam Zieliński:
Tak, dokładnie. A nawet jeśli chcesz, to możesz takiego ZIP-a wrzucić na serwer i używać jako WordPressa.
Maciej:
A co z bazą danych w takim przypadku?
Adam Zieliński:
W archiwum znajduje się plik bazy danych. Możesz uruchomić WordPressa w oparciu o SQLite albo przenieść bazę do MySQL, jeśli użyjesz odpowiedniej komendy WP-CLI.
Maciej:
To faktycznie otwiera nowe możliwości. Jakbyś miał przekonać dewelopera, który nie używa Playgrounda, do tego, że jest to przydatne narzędzie, to co byś powiedział?
Adam Zieliński:
Klasyczny zestaw narzędzi jest super i nie ma nic złego w jego używaniu. Natomiast Playground pomaga w sytuacjach, w których standardowe narzędzia bywają uciążliwe.
Na przykład jeśli masz zmiany lokalnie i chcesz komuś je pokazać, to możesz je wrzucić na staging – ale może masz wspólny staging i inni go używają. W Playgroundzie możesz po prostu dodać do pull requesta guzik „Otwórz w Playgroundzie” i udostępnić wersję do przetestowania.
To także ułatwia wysyłanie demo klientom, testowanie aktualizacji czy reprodukcję błędów. Możesz na przykład wyeksportować Playgrounda do ZIP-a, a tester może go otworzyć i dokładnie zobaczyć, jak wygląda środowisko, w którym wystąpił problem.
Maciej:
Mnie szczególnie zainteresował ten przycisk do testowania kodu z pull requesta. Czy dobrze rozumiem, że tester może kliknąć i od razu zobaczyć środowisko ze zmianami, które proponuję w pull requestcie?
Adam Zieliński:
Dokładnie. Wszystkie pull requesty do WordPress Cora mają taki przycisk. WooCommerce również wdrożyło podobne rozwiązanie. Możesz dodać taki przycisk w opisie pull requesta i tester od razu odpali środowisko z Twoimi zmianami.
Maciej:
A co z prywatnymi wtyczkami? Czy można je testować w Playgroundzie, nie udostępniając ich publicznie?
Adam Zieliński:
Tak, można w Blueprint podać URL do paczki ZIP, ale trzeba pamiętać, że jeśli Playground może ją pobrać, to każdy, kto zdobędzie ten adres, również może. Warto więc zabezpieczyć URL tokenem lub inną metodą autoryzacji. Ogólnie jednak wiele wtyczek WordPressa jest już dostępnych w wersjach demo, więc warto udostępniać wersje pokazowe, bo to ułatwia klientom decyzję o zakupie.
Maciej:
Teraz takie pytanie, bo podejrzewam, że jesteś osobą, która widziała tych playgroundów najwięcej. Jakbyś miał podać jakiś taki najciekawszy przypadek użycia? Coś, co nawet Ty powiedziałeś „wow”, bo ktoś miał świetny pomysł?
Adam Zieliński:
Mhm. Jest edytor do pluginów WordPressa, takie ADE można powiedzieć, w przeglądarce, które jest spięte z AI, pomaga nam kodować i ma od razu podgląd playgroundowy wbudowany w siebie. Na StackBlitzu widziałem również podobne eksploracje. Widziałem osobę, która zachostowała Playgrounda na blockchainie, bo Playgroundy to tylko pliki statyczne – nie trzeba serwera do ich działania. To było bardzo ciekawe. Aplikacje mobilne również. To mi się bardzo podobało. Pierwszy raz Ella zrobiła to w Block Notes, aplikacji na iOS, dostępnej w App Store, używając Playgrounda i WordPressa. Do tego Anne McCarthy stworzyła slide deck, całą prezentację w Playgroundzie, jako stronę WordPressową i eksportowała ją do innych formatów. To są rzeczy, które nie przyszłyby mi od razu do głowy.
Maciej:
No to są faktycznie bardzo nieoczywiste przypadki użycia WordPressa. Mnie zdarzyło się używać WordPressa do różnych dziwnych rzeczy, łącznie z systemem, w którym WordPress był bazą danych dla treści wyświetlanych na telewizorach w marketach. To był taki headless, tylko bez Reacta czy czegoś podobnego na froncie, po prostu telewizor.
Adam Zieliński:
O, wow! Niesamowite, nie przyszłoby mi to do głowy.
Maciej:
Ale to było jakieś osiem lat temu, bardzo dawno temu, na początku mojej przygody z WordPressem. Takie różne dziwne rzeczy robiłem, więc nie dziwią mnie takie zastosowania. Ale muszę przyznać – prezentacja i aplikacja mobilna w WordPressie – to robi wrażenie. Myślę, że Playground ma jeszcze duży potencjał.
Adam Zieliński:
Tak, bardzo bym chciał, żeby była funkcja w Playgroundzie, która pozwala Ci jednego WordPressa przekształcić w aplikację desktopową, mobilną, serwerową, czy front-endową. Po prostu jednym guzikiem tworzysz raz i potem używasz w każdym ekosystemie, np. jako rozszerzenie do przeglądarki. To jest bardzo realne, bo wszystkie te rzeczy mają ten sam rdzeń i tę samą logikę. Różnią się tylko bindingi do konkretnego środowiska – jak komunikujemy się z internetem, jak zapisujemy pliki. To są już detale implementacyjne. Myślę, że to się wydarzy w którymś momencie. Jeszcze przypomniałeś mi o jednym przypadku użycia. Mój kolega z Automattica, Artur Piszek, stworzył coś, co nazywa Personal OS. Trzyma wszystko w WordPressie, synchronizowanym z Evernote i innymi aplikacjami – notatki, to-do listy, swój hosting plików. Nawet artykuły do czytania zapisuje w WordPressie. Teraz chcę w Playgroundzie odpalić coś podobnego i zobaczyć, jak to można pospinać. Jest też Blueprint w katalogu Blueprintów na GitHubie, który zamienia WordPressa w czytnik RSS. Używa wtyczki Friends od Alexa – pozwala śledzić feedy, oznaczać wpisy jako przeczytane i robić adnotacje. Można mieć prywatny, osobisty czytnik treści.
Maciej:
Tutaj nasunęło mi się pytanie bardziej techniczne. Czy mamy jakieś ograniczenia dotyczące ilości miejsca na dysku w Playgroundzie? Jeśli wrzucę tam film, czy przeglądarka to udźwignie? Od czego to zależy?
Adam Zieliński:
To zależy od trybu, w którym działa Playground – czy pracujemy z pamięcią, czy używamy OPFS (Origin Private File System), czy pracujemy z katalogiem lokalnym.
Co do zasady, nie ma technicznych przeszkód, żeby ładować duże pliki. Ale na ten moment wszystkie pliki, nawet jeśli używamy OPFS, mają kopię w pamięci.
Więc jeśli wrzucimy 3-gigabajtowy film, przeglądarka może powiedzieć „nie, nie dam rady”. W przyszłości planujemy pełną integrację z OPFS, co pozwoli na przechowywanie plików bez kopiowania ich do pamięci.
Testowaliśmy to i do 4 GB działało bez problemu, ale później pojawiają się ograniczenia. Natomiast jeśli zapisujemy pliki w katalogu lokalnym, to ogranicza nas tylko dostępna przestrzeń na komputerze.
Maciej:
Powiedziałeś wcześniej o narzędziu do pisania kodu. Czy uważasz, że Playground w przyszłości może być kompleksowym rozwiązaniem dla programistów – czymś na wzór VS Code’a, z edytorem, wersją testową, debugerami itp.?
Adam Zieliński:
Bardzo bym chciał, żeby tak było. Myślę, że to realne. Największym ograniczeniem jest brak wsparcia dla buildowania JavaScriptu w przeglądarce. Większość pluginów wymaga uruchomienia np. npm run build, a na razie nie mamy działającego Node.js w przeglądarce.
Ale to jedyna poważna przeszkoda. Są open-source’owe edytory kodu, już testowaliśmy CodeMirror w Playgroundzie, działało podpowiadanie kodu.
W przyszłości moglibyśmy debugować w narzędziach przeglądarkowych i płynnie przechodzić między JavaScriptem, PHP i nawet kodem C, na którym oparty jest PHP.
Jeśli dodamy do tego możliwość budowania aplikacji na różne platformy, to nawet na tablecie czy telefonie można by pisać kod, testować go i deployować, otwierając nowe możliwości dla programistów w regionach, gdzie komputery są rzadkością, a internet jest ograniczony.
Maciej:
Świetnie. Jakie są plany na ten rok?
Adam Zieliński:
Temat jest zawieszony, bo w styczniu Automattic zamroził wszystkie kontrybucje do WordPressowych projektów. Czekamy na ponowne otwarcie.
Gdy to nastąpi, planujemy:
- Lepsze wsparcie dla Xdebug,
- Pełne wsparcie dla MySQL,
- Narzędzia do eksportu i importu danych w WordPressie,
- Możliwość synchronizacji zmian między stronami,
- Możliwość instalowania Playgrounda jako aplikacji mobilnej czy desktopowej.
To wszystko zmierza do stworzenia kompletnej platformy do budowania aplikacji opartych na WordPressie.
Maciej:
Co byś polecił deweloperowi, który chciałby zacząć pracę z Playgroundem?
Adam Zieliński:
Mamy dokumentację, tutoriale i nagrania z Developer Hours na YouTube. Ryan Welcher, Jonathan Bosinger i inni prowadzili sesje społecznościowe, które warto obejrzeć. Anne McCarthy również nagrała film o swoim podejściu do Playgrounda.
Maciej:
Na koniec, jakieś zabawne błędy, które popełniłeś w WordPressie?
Adam Zieliński:
Niedawno moja żona próbowała edytować stronę na WordPressie i nie mogła znaleźć guzika „Edytuj stronę”. Kliknęła „Edytuj witrynę”, potem logo WordPressa i trafiła na WordPress.com zamiast do WP-admina. Zajęło nam to dobre kilkanaście minut, żeby znaleźć rozwiązanie! Jeszcze zaangażowaliśmy w to Denisa Yelle, bo akurat robiliśmy to jak widzieliśmy wszyscy. I udało się wykmienić na końcu, że OK, bo to jest strona główna. I żeby wyedytować konkretnego posta, to trzeba najpierw kliknąć tego posta i dopiero wtedy pojawia się ten guzik. Bardzo mała rzecz, ale frustrująca i zajmuje bardzo dużo czasu. Przepraszam, bo miało być śmiesznie.
Maciej
No fakt faktem w WordPressie są czasem takie zakątki, których albo nikt od bardzo bardzo dawna nie zaglądał i jest tam jakiś taki kod, który wymagałby poprawy delikatnie mówiąc, no ale jest jak jest myślę, że WordPress ma też bardzo duży potencjał i na te drobne niedoskonałości możemy zawsze tam przymknąć oko.
Adam, bardzo Ci dziękuję za poświęcony czas. Myślę, że dla moich słuchaczy będzie to taka solidna pigułka wiedzy, jeśli chodzi o playgrounda, o to co się w ogóle tam dzieje pod spodem, bo bardzo dużo tutaj powiedziałaś właśnie o tym, jak to wygląda pod maską. Mnie to też bardzo interesowało.
Na koniec jedynie zostaje mi zapytać Cię, gdzie można Cię znaleźć w internecie, jak można się z Tobą skontaktować, jeśli ktoś po tym podcastie miałby do Ciebie jakieś pytania i chciałby z Tobą po prostu pogadać.
Adam Zieliński
Dzięki wielkie za zaproszenie. Super było móc porozmawiać. Chyba jeszcze na żadnym podcastie nie poszliśmy w takie głębokie rejony, więc też się cieszę, że była na to przestrzeń. Jeśli chodzi o to jak mnie znaleźć, to moja strona to jest adamadam.blog i tam publikuję wpisy. Można do mnie pisać na adam.adamziel.com Jeszcze jakiś czas temu bym podlinkował do swojego Twittera, ale myślę, że będę uciekać z tej platformy, więc na ten moment strona i mail.
Maciej
Okej, i myślę, że LinkedIn też jest takim miejscem, gdzie cię można
Adam Zieliński
Tak, tak, tak, LinkedIn jak najbardziej
Maciej
A w realu no to myślę, też na jakimś World Campie się spotkamy jeszcze w tym roku. Chyba we Wrocławiu coś się ma dziać. Nie wiem, czy dobrze pamiętam, ale tak, tak, więc tam. No to jak najbardziej tam. Jeśli ktoś ze słuchaczy lubi improwizować i czasem we Wrocławiu się pojawia na jakichś improwizacjach, to tam również może mnie spotkać.
Maciej
Jak widzicie Adam człowiek wielu talentów. Dziękuję Ci jeszcze raz Adam za udział i zapraszam Was do kolejnego odcinka podcastu.
Adam Zieliński
Dzięki również.