Transcript
[00:00:00] Nathan Wrigley: Welcome to the Jukebox podcast from WP Tavern. My name is Nathan Wrigley. Jukebox is a podcast, which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, making it significantly easier to create WordPress websites with Playground.
If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.
If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you, and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.
So on the podcast today we have Adam Zielinski. Adam is the creator of WordPress Playground, a WordPress core committer, and tech editor release lead for WordPress 6.0. He works as a WordPress developer at Automattic. In his spare time, he can be found bouldering, practicing improv comedy, and playing badminton.
In this episode, we talk about Playground, a groundbreaking project that is redefining the way we interacted with WordPress. Adam’s visionary approach to creating a seamless WordPress experience with a web browser has revolutionized how easy it is to access WordPress.
We discussed Playground’s history, from the initial frustrations that sparked the idea, to the development process that brought it to life. We gain an understanding of the profound impact Playground is having on the WordPress landscape, and its potential to shape the future of web development. It’s not often that the word profound is rightly used, but it feels appropriate here.
We explore the enormous potential uses of Playground, from simplifying setup processes to enabling experimentation with plugins and themes. Adam’s vision for Playground as a catalyst for democratizing website creation, and enabling a culture of innovation within the WordPress community, is something that’s still evolving, and it’s clear that the direction that the project takes is still being figured out.
This project really does change the way that WordPress can be used, and there’s so many exciting prospects for how it might shape the future of web design and development.
If you’re interested in hearing about cutting edge advancements reshaping the WordPress landscape, this episode is for you.
If you’d like to find out more, you can find all of the links in the show notes by heading to wptaverm.com/podcast, where you’ll find all the other episodes as well.
And so without further delay, I bring you Adam Zielinski.
I am joined on the podcast by Adam Zelinski. Hello Adam.
[00:03:21] Adam Zielinski: Hello Nathan. Thank you so much for having me.
[00:03:23] Nathan Wrigley: He’s giving me the thumbs up. You can’t see it, but I had to practice Adam’s surname several times. And I’m going to just say it that once, because there’s a high chance I got it wrong.
[00:03:31] Adam Zielinski: It was perfect.
[00:03:32] Nathan Wrigley: Thank you so much. We’re going to talk today a little bit about a very, very exciting development in the WordPress space. You probably have caught sight of it, if you follow the WordPress project closely. It’s called Playground, and it is profoundly interesting. And if you’ve not touched it, it may be that some of the things that we’re going to talk about today will, I’m going to say, it will shock you. Because what Adam has thrown together is something truly remarkable, to help you create WordPress websites on the fly.
Let’s get into that a little bit later. Before we do that, Adam, would you just spend a moment just telling us a little bit about yourself. Your WordPress journey, where you work, where you live, whatever you like.
[00:04:09] Adam Zielinski: Absolutely. So I live in Poland. I work at Automattic, I’m sponsored to work on the open source WordPress project full time. I’ve been doing software for like 20 years now. I started back in secondary school. I found this little website on the internet where you could get little geeks, just to make a website for a furniture store. Nothing, like an e-commerce store. I just, hey, we exist.
And no one there asked if I’m 13 or not, so I was able to get going like this. And also my brother, he was doing video games at the time. So I also had someone to coach me. Yeah, these days I spent my entire professional time building WordPress Playground.
I also do some bouldering. I do improv comedy. In fact, like in a couple of weeks, I go to some workshops. And then In July, there’s one musical workshop on a festival, and after that we’ll have a short performance on the main stage. So that will be my first time on a big event like that in the improv scene. So I’m as excited as nervous.
[00:05:09] Nathan Wrigley: Absolutely fascinating. May I ask, do you do your comedy in your native language, or do you stray into other languages as well? Because I imagine the barrier to being funny in a different language is quite considerable, because of all the nuances and the little phrases that people use, and the quirks of the lilt, and the rise, and the fall, and all of that.
[00:05:28] Adam Zielinski: Yeah, I do it in Polish and in English. But in improv comedy, you don’t have to be as concerned about the little phrases, because if you play a character truthfully, and your partner on the scene plays a character that has interesting interactions with you, like with your character, the comedy is in the scene, right? Like you don’t have to try to be funny. In fact, if you try being funny, you probably won’t be. So it’s about being real.
[00:05:52] Nathan Wrigley: Yeah, so you’re in character during these? Wow, honestly, I feel there’s a whole other podcast that we could have done right here.
[00:05:58] Adam Zielinski: Oh yeah.
[00:05:58] Nathan Wrigley: We’re going to drag it, kicking and screaming, back to WordPress. Thank you for your bio though. That is amazing.
So you are working for Automattic, and you are a full-time contributor to WordPress. Now, did you say WordPress Core? But then I also think I heard you say that you are working on Playground full-time, at the same time. So are you on Core, Playground, or both?
[00:06:19] Adam Zielinski: I think I’m more like, way more on Playground side of things these days. So I started with the Gutenberg project, then I became a Core committer there. I was also contributing to WordPress Core. And now I am spending like virtually my entire time on Playground side of things.
But this involves interacting with WordPress Core and WordPress Core teams. So these days we use Playground, for example, during the plugin review process, theme review process. There is a Gutenberg block that allows you to embed Playground in a post or WordPress page. I think it’s been recently deployed to learn.wordpress.org. Now I’m interacting with that team to get some interactive courses and learning materials online.
I haven’t committed anything to Core in a, yeah, in a couple of months. But you have to choose where to allocate your time. It’s very difficult to split your attention between multiple projects, like we just discussed that off the record.
[00:07:12] Nathan Wrigley: Before we hit record, we had a conversation about shattered attention and things like that. Can I ask, when you created Playground, and obviously, dear listener, apologies, you may not know yet what it is, but we’ll just get this bit out of the way.
When you created Playground, was that a project that you were working on as a side project? Were you just doing that in your spare time, or was this something that Automattic, for example, wished to bring into existence, and so you got the job of doing that? So yeah, how did it actually begin?
[00:07:41] Adam Zielinski: I don’t think anyone dreamt it was even possible at the time. I was just writing a technical tutorial for something in WordPress. And I wrote the lessons, and then I realised that before publishing it, I also have to write lesson number one, setup. And there it opened a Pandora box of, oh, install Docker. Oh, maybe you’re on Windows, maybe you need WSL. Oh, install, Node.js. What’s Git, right? Like, here some resources about Git.
And I get so annoyed with that. I wanted to write none of it. I wanted a set up checklist that just says, click this button. And so I wondered, well, you could do this with a cloud setup, an infrastructure, right? Like, sort of like GitHub code spaces, where you spin up something in, I don’t know, like Amazon Cloud or Google Cloud.
But that costs money. That’s difficult to maintain. It’s also not that easy to set up, right? It takes time. And then you have all sorts of problems like, what if someone uploads illegal content in there? Are you hosting that now? And so I thought, well, we should be really running WordPress in the browser. Only that’s impossible, right? But I wonder, maybe it’s not impossible.
And I knew about this technology, WebAssembly. It was the promise of running all the regular desktop software in web browsers. I’ve been hearing about it for like 10 or 15 years, at that time maybe. So I felt like, I wonder if that went anywhere. And so I started digging and tinkering. And two weeks later, I had a very rough prototype.
A lot of things didn’t work. You sometimes got kicked out of WP Admin. You know, like styles wouldn’t load all that. It was super slow, but it worked. And my manager at the time, I think he was like preoccupied with other stuff, so he didn’t mind. When I came up with this prototype, I got very mixed reactions actually. Like some people were super amazed and like, whoa, there’s so many implications to this, and, wow, it’s magic.
But actually, most people were like, yeah, it’s a cool toy. What are we going to do with it? It has no practical uses. And it took months to get the perception of Playground further, to get people to perceive Playground as something actually revolutionary, because it absolutely is.
And something that takes WordPress into so many new possible applications. It solves the most annoying problems WordPress. Setup, resetting your site, right? Like, when you want to try new plugins, everyone’s always creating new sites, and then deleting them, or resetting the same site to its original state, or previewing code changes on GitHub, I can keep going like that. But yeah, I think, did I answer your question?
[00:10:10] Nathan Wrigley: Yeah, yeah. that’s great. So I’ll just paraphrase what my experience of Playground is, because we haven’t laid that foundation out. I don’t understand the underlying technology, so Adam is going to have to shepherd me through that, as we have this conversation.
But from the end user’s perspective, when I’ve set up WordPress websites in the past, there’s always been some kind of interaction with a file structure. You have to download WordPress from .org in my case. And you take it from there, and you upload that, and then you create a database, and you bind the database to the wordpress.org repo that you’ve created, and then you’re off to the races. And you have to host that somewhere, and that whole process now can be done with the click of a button inside of a lot of hosting companies and so on.
But there’s some kind of wall there. You either have to interact with files, or you have to pay a hosting company to make that happen. And the first time I saw a Playground, I clicked a button, and there was a WordPress website, a moment or two later. And I genuinely do mean a moment or two later, I think the time it’s taking me to say this sentence is significantly longer than the time that it takes to get your website up there.
And I remember I had no context around what it was. Nobody told me what was going to happen. They just said, oh, click this. So I clicked that. And I was staring at the screen thinking, what, there’s WordPress, but I didn’t have to pay for anything, I didn’t have to go anywhere, it just appeared. And then the cogs start going in my head. Where’s the database? Where’s the files? Where’s all this come from? How is this possible?
And then being truly flawed by it, thinking, no, this is some kind of implementation of, as you said, WebAssembly. This is happening inside the browser. And then of course, the admiration comes in like, how did that get done? Who did that? And of course it was you.
So, this is the ability to install WordPress, inside the browser, at the click of a button. A fully functional WordPress site. So there’s no impediment to using it, apart from if you don’t have three seconds to wait, give up. That’s the only problem. If you don’t have three seconds to spare, then okay, fine.
Okay, so the technical bit I want to dig into a lot, it’s a podcast, so we won’t go right into the weeds. But, when I click that button, and I want Playground to be invoked, to have my WordPress website, broadly what’s going on? Like, there must be files somewhere. There has to be the file structure of WordPress. There has to be a database in some way, shape, or form, because that’s how it’s built? Where are they coming from? And once they’ve come from there, where are they now living?
[00:12:49] Adam Zielinski: They all live in your browser. Playground, very broadly, is a technology to run the entire WordPress tech stack in your browser. So to run it on a server, you typically need something like, people call it LAMP stack, right? Linux, Apache, MySQL, PHP. And Playground brings all these pieces into the browser, in some shape, or form.
So PHP, for example, we are running as WebAssembly. So PHP, the programming language, is a program in itself, right? Like, it’s written in C, you can look it up on GitHub, and you can build it as something you can run on a server. But now with WebAssembly, you can also build it as something you can run in JavaScript, which means the web browsers can run it, and Node.js can run it, and a lot of other environments can run it.
Then the database, MySQL. We don’t run MySQL in the browser. Technically, maybe we could do that, but there’s a lot of reasons not to. Instead, we are running SQLite, and SQLite doesn’t require a separate program. It’s just a library, and it writes all your data to a file. So when you run Playground, it actually downloads a pre-populated database with WordPress already installed, so you don’t have to go through the installation wizard. All the queries, all the SQL queries go through that database.
Now the syntax is a little bit different than with MySQL, and we have an entire translation layer to take MySQL queries, and express them in SQLite, and take SQLite results, and express them as something that came from MySQL.
So really the same W DB object works for interacting with the database. Then we have Apache. Normally you run a web server, and this allows you to request different pages. Now, WordPress works as a, you navigate it as a classic website, right? So we click a link, and then the URL changes in your browser bar. Which means the browser had to perform a request, ask some server somewhere, get a response, and then maybe there are images, and scripts, and styles in that response. So it has to go and fetch all these resources.
And normally you have an Apache, or Nginx, or another server software running somewhere, and the browser goes there. Obviously we don’t have that in the browser, but there’s a cool technology web browser supports these days. It’s called Service Workers. And you can intercept all HTTP requests. And it’s meant for progressive web apps, so we can run offline. But we are playing a little trick on that Service Worker. And instead of caching things, we are just rerouting that to PHP, where WordPress can serve them.
Finally, in the LAMP stack you have Linux, which provides you with all the external world, right? So it allows you to allocate memory, write files, read files, interact with the network. It gives you access to all the devices on your computer. Again, like, we don’t have access to all of that in the browser, but we are shipping implementation of all these bits written in JavaScript. So we have a JavaScript file system, it’s just three objects in trench coat, right? Like, pretending to be a directory structure.
We have a networking bridge that can rewrite network traffic as fetch calls. We have memory allocator, which is the compiler that turns PHP source code into WebAssembly. And so on and so forth. So it’s the entire tech stack running in the browser. And you can also ship it to so many other devices. We have a CLI tool. We have a VS Code extension. So we just installed it from the marketplace, and boom, we have a WordPress server. No dependencies at all.
Ella Van Durpe, I hope I’m pronouncing that right, she built an app called Blocknotes. It’s Playground, it’s WordPress, in an iOS app, in App store. I bet you would be able to run it on your smart fridge, right? If you had enough time. So really this turns WordPress into an application engine, so to speak. You could write a WordPress plugin, bundle it as Playground, and ship it to all these places where Playground can run, which means most devices these days.
[00:16:42] Nathan Wrigley: I just want to make sure that the listeners have really grasped what’s going on here. So this is WordPress purely inside the browser. Through all of the contrivances and clever things that Adam has just described, it’s all happening inside the browser. And so just dwell on that for a moment, because that is actually pretty profound.
I do wonder, when you’d been working on it for a couple of weeks, and you actually had this version working, you said it had various faults, which I guess you’ve been tackling as time has gone on. Did you get that sense of, wait, what have I done here?
You know, this is quite remarkable, because the stated mission of WordPress is democratise publishing. Let’s just concentrate on the word democratise there. It’s get anything into the hands of everybody. That’s really what the endeavor of the project is, get publishing into the hands of everybody.
And a big impediment to that is the experimentation part, playing with WordPress, being able to judge whether it’s a good fit for you, your business, the agency that you run, whatever. And especially for non-technical people, trying WordPress out is a bit of a faff. You could either do it on the desktop, with downloading additional software, but again, if you’re not very technical, that is a bit of a hurdle.
This is a one button install, three second wait, whatever it may be. And then you’re off to the races. So, again, now that I’ve said all of that, did you get a sense of the profundity, the profound nature of what you’d built, after you’d worked for those two weeks?
[00:18:12] Adam Zielinski: Yes. I was staring at the screen, I distinctly remember thinking, this is profound. I didn’t fully understand all the implications with all the devices. WordPress as a vector for delivering apps. Maybe setting up a site, not even knowing how to code, and then pressing a button, and exporting that as something you can run on a desktop.
And by the way, we are not there today. Technology allows that we don’t have that button. But I knew this is going to change the way we think about WordPress, and the way we use it, the way we learn WordPress. But I guess I was mostly focused on things that annoyed me specifically. So maybe that tutorial, right? Oh, now I will be able to teach people without asking them to go through all these steps. Or maybe now I will be able to try out plugins, or do development environments, again, like without spending all that time. And maybe that can work on Windows.
But honestly, I feel like we’re only still scratching the surface. And I understand more and more about Playground every month, like the apps angle I just told you about. That came up I think in April, right?
There’s another idea, if you can run an app on your mobile phone. And we were also exploring synchronising data between Playgrounds and WordPresses. So maybe you would write an article in a Playground, and it’ll get published in a website somewhere. And then maybe that website could have five different copies, and they would all synchronise in real time. And I think we’re like quarters, or years away from that. But assuming we had that, maybe WordPress could power a social network app, right? Since you can run it on every device, and you can exchange data in a distributed way. There’s all sorts of wild ideas.
[00:19:48] Nathan Wrigley: Okay, so we’re back at the beginning, you’ve spent a couple of weeks building it, and you’ve got this working, functional prototype, let’s call it like that. It feels like that got picked up fairly rapidly, because then I started hearing about it, Playground, at various different points. I remember attending one of the WordPress flagship events, I can’t remember which one it was. Matt Mullenweg was on the stage, and he was just basically saying, oh, and there’s this, you know, everybody should check this out. This is pretty amazing. And I was thinking, gosh, okay, this is now a serious endeavor if it’s getting mentioned at that kind of event, that’s fascinating.
So you then were able to start working on it, more or less full time. And I’m guessing that there must have been some conversation to be had there, within Automattic. People must have realised, yeah, let’s get Adam on this. We can see some blue sky in this project. We can see some useful things that we could do with it. Is that kind of what happened, that your work week got turned around and, okay, Adam, you are on Playground now?
[00:20:47] Adam Zielinski: Yeah, you got it more or less right. I’m saying more or less because, so Automattic is sort of choose your own journey type of place, where you can be in a team where you’re very directed, or you can be in a team where you’re very autonomous, right? There’s all sorts of teams out there. And I was always a free electron type of person.
So I just started working on Playground. I like saying no one stopped me, that’s more of what happened. And these days, team for Playground. So there’s three of us, and it’s a very nice change. So there’s Brandon, there’s Bero, and there’s me. And, man, it’s so nice just working on this with other people, because it’s been quite a lonely journey for some time.
I had support from Dennis Snell, who’s been also maintaining Playground while I was on a sabbatical. I appreciate Dennis so much, and he’s done so much good for Playground. We don’t have enough time to discuss it. At the same time, he’s also had a lot of other projects on his plate.
I was mostly trying to figure out, oh, let’s communicate about Playground. Let’s publish something. Let’s prepare a video for a State of the Word. But let’s also keep developing new features. Let’s also focus on the vision, and let’s also fix any bug people report, right? Like, I was all over the place. And these days, I feel Playground is in a much better place, in terms of focus.
One of the things we want to do in a short term is figure out all the ways Playground can crash. We’ve seen a uptick in usage of Playground. It’s been featured on a few workshops, on learn.wordpress.org. I think Ryan Welcher featured it. Jonathan Bossenger, I think Anne McCarthy also did, and a few other people. This really inspired some folks to start using it, building blueprints for the plugin directory, to share a live demo of their plugin.
And of course, when you see more users, they discover more issues in the software. So that’s what happened, and that’s fantastic because now we can fix all of that. But this also means new feature development isn’t going forward as quickly, as if Playground was already stable. But stability, building trust, releasing a high quality documentation, that’s a big priority right now. Because if the platform isn’t stable, it won’t be as useful. So that’s what we’re trying to do.
[00:22:59] Nathan Wrigley: I remember using it, as I said, for the first time, and pressing the button, getting my WordPress website, and there it was, everything working as you would expect, the brand new, up-to-date version of WordPress. And then closing the browser, and wondering, okay, what’s going to happen now? And at that point, that was that. Everything that I just created, was gone. So, well, that’s fine. I had no expectations beyond there.
I’m wondering if, in the future, the disposable nature of it might be something that you are working on, so that it could persist. Let’s say that I click the button, get the WordPress Playground going, but then choose to come back to it, I don’t know, a week later, two weeks later, it’s something that I’m doing as a side project. The way that I’ve interacted with it, that would’ve been impossible. Everything is disposed of the moment you close the browser window. But just wondering if persistence was something that might even be possible.
[00:23:56] Adam Zielinski: Absolutely. And there’s a bunch of ways to tackle that. So right now in Playground, in the upper right corner, there’s a little button, it says like WordPress 6.5, PHP 8.3. And it allows you to change versions of WordPress current PHP, but it also allows you to change the way Playground is persisted. So the default mode is that it’s temporary, and it’s gone the moment you close your browser tab. But there’s also a browser cache mode, so then when you return to Playground website, it’ll remember your last site.
And there’s also an experimental mode, that allows you to synchronise Playground to your local directory on your computer, from your web browser. So if you choose that, the entire WordPress structure will be recreated on your machine. And if you make changes in Visual Studio Code, for example, they will show up in Playground.
There’s also an export button, so you can download your site as a zip file. You can export it to GitHub as a pull request. That feature also exists. With pull request specifically, I’m exploring a static site collaboration workflow. So the idea is this, you have a GitHub repository, you have a lot of content in there. Maybe that’s a documentation for something, maybe that’s entire website. So you have HTML pages, you have uploads, you have some plugins. And that repo is used to create a static site, and it’s hosted somewhere.
But then you can also go to that static site, and let’s imagine it’s a documentation site. So maybe every article has a little button called Edit in Playground, and you click it, and it opens Playground with that article already loaded in the editor. You change it, you upload something, you click export to GitHub as a pull request, and boom, there it goes, there is a change proposal.
Now, someone else would be able to review it by clicking a button in that pull request, and loading your changes in Playground, and say, hey, good job, or, oh, there’s a typo, let me fix it. And they will just update that pull request.
[00:25:50] Nathan Wrigley: That is truly fascinating. And it is just really blowing apart the very nature of what it is. Because when you first came up with it, I feel like the word Playground was just the perfect encapsulation for what it is. You know, you just mess around, and then you close it down, start something else, mess around, close it down. You’re just messing about. You just want to test out a new plugin, you want to try something new, you just want to see what the latest default WordPress theme looks like, and how you do full site editing, and all of that. You just want to have a tinker, and you just want to do it. You’ve got a little bit of time, and then you close the browser and it goes away.
But it seems like the intuition here is that, you’re stepping away from Playground’s roots, if you like, of just, it’s disposable, it’s just for a bit of fun. And it’s moving into the territory of something more permanent. So not just, it can be retained and persists in the browser, but we’ve got ways of shipping this. We can take this from your Playground, we can put it up to GitHub, and then from GitHub, who knows where that could end up. You know, it could end up in a CDN somewhere as a static website, like you said, or it could do a multitude of other things. It sounds like it’s going from more Playground, to developing actual real world projects.
[00:27:04] Adam Zielinski: Yes. So that static site, for example, it could be completely static. So you could run it without any PHP hosting, so very cheaply on a CDN. But then you could go to slash WP Admin, and you could have a running Playground there.
[00:27:18] Nathan Wrigley: So it’s static without the static.
[00:27:21] Adam Zielinski: Yes. Perhaps block markup could replace markdown for a lot of use cases actually. Because in markdown, it’s great for simple documents, but then if you want to go beyond that, people started inventing ways of extending that. So maybe you have MDX that brings React to markdown. Maybe you have syntax extensions. I think Gutenberg repo uses some of that, right?
There’s a lot of these projects, and all these things amount to blocks essentially. Just give me more ways, more widgets in markdown, give me more things I can express, right? And with Playground, yeah, like you can express any WordPress block. Just install it in WordPress, export, use it in a post, save that content of that post, that’s your block markup. And there’s a lot of ways you can interact with it. Render it, right? You can edit it in WordPress.
But to your point, there is a development environment these days. It’s been released by wordpress.com, it’s called Studio. And it’s actually built on top of Playground, right? So we don’t need any Docker. You don’t need any virtual machines. It’s running Playground inside an Electron app, and it just works. You don’t need any dependencies. Just install it, there it goes. Maybe that same environment, with the Playground for its WordPress for Apps paradigm, right? Maybe we’ll see it on tablet at one point. With all the ways to utilise Playground, actually, I have a note, let me refresh my memory a little bit.
Alright, so if you’ve ever been to a contributor day, you’ve probably seen how difficult the setup can be, right? Just getting WordPress running on your machine for a new person, it can easily take the entire contributor day, even if you have full access to WordPress Core developers during the event. Playground can reduce that to a single step. And there can be even multiple, predefined WordPress builds, right?
Are you a Gutenberg developer? Are you a Core developer? Do you want to just contribute to docs? Then we could take it to a browser, right? So you wouldn’t even have to do anything locally, and you could still take advantage of Git, and pull requests, and all these workflows.
Further along, perhaps we could encapsulate some contribution workflows without ever reasoning about code, right? So I imagined a theme directory on wordpress.org. It could have Playground, where you would just build a theme, you would be able to go back to it, submit it for a review, right? If we add a code editor to that, now we can have a plugin contribution workflow.
These days, we’re about to launch a community space for Playground Blueprints. So Blueprints are these configuration files that express an entire WordPress setup. So maybe you want a WordPress with WPCLI and a specific plugins, or maybe you want a WordPress with a so and so theme, and a bunch of content, right? Maybe that’s your site. Or maybe you want to preinstall your plugin, and configure it with a useful default content for the demo.
So you can now encode that as a JSON file, and the blueprints community space, it’ll be just that. It’ll be what wordpress.org/plugin is, but for these blueprints. So everyone will be able to share a blueprint, review the blueprints that are already there, immediately launch a WordPress site from any of these blueprints. And I hope this will spark a lot of cool ideas for Playground usage. Honestly, people are teaching me so much about what you can do with Playground these days.
Someone recently mentioned this idea, they really don’t like working with PowerPoint, and there are ways of building slides in WordPress. So now I have a blueprint that turns WordPress into a slide building, presentation building program. It’s configured with the right theme, it has some slides already in it, it has an export to PDF button, and you can just start editing and then save a presentation, export it as a PDF, host it as a static site, right? If you want to share a link with the world.
And I’m not even like touching on things like classroom usage, or education use cases, right? There’s a professor using Playground to teach students about building websites, and it’s very easy for them because it doesn’t require installing anything. So I think like the university computers are like locked down so you cannot install custom software, but you can open websites. So you can go to a Playground site, or this version of Playground site where you have a code editor. And you can just start hacking with a plugin, or just a setup. And then you can export it, or submit it for grading, publish what the entire class created. There’s a lot more.
[00:31:44] Nathan Wrigley: Yeah, I mean, truly, the sky is the limit really, isn’t it? Because, again, just to take you back to that moment where you had spent two weeks on it, and there it was in its nascent form, none of this was going through your head. And now here we are a little while later, and it’s almost like, you know, you’ve got the theme repository, you’ve got the plugin repository, and I feel like we need a Playground repository. And, you know, you’ve described it as blueprints.
That just seems to have so much utility. Just different flavors of WordPress. Okay, do you want a super stripped down version of WordPress? Are you just beginning? Do you just want to look at WordPress for the first time? Click this button. Are you more experienced? Do you want to get straight into the full site editing? Okay, click this button, and you’ll be hit with that as soon as you launch it.
But then of course, all of the different things, the companies who produce plugins, who would like to be able to demonstrate what their plugin does, well that, until now, required you click a button, and you connect it to some third party service that they pay for, which spins up a WordPress website with their configuration. Now, you just click a button and it’s there in the browser, and it can now come with the dependencies that it needs.
So let’s say you’re a WooCommerce plugin house, and obviously you need WooCommerce built into it. You can have that set as a dependency. So click the button, not only does our plugin come, but it’s fully configured, ready to go with WooCommerce and everything.
Just so many uses. And then it feels to me, this is kind of like not really stretching the horizon very far, but it feels to me that, then the ability to be able to click a button inside of your Playground, and then take it to more traditional hosting, so that you do have something more permanent. Might be kind of useful, but from everything that you’ve said, there’s a thousand different directions, tendrils going all over the place, you know, the education space. Just a million different things. And I guess that must be one of the nice things from where you are sitting. You’re just seeing all of this interaction in a project that you built, and that must be joyous.
[00:33:49] Adam Zielinski: It is. And, man, like there’s so many great ideas floating around in the community. Use cases I would never come up with in a million years. And I just love seeing more and more of these.
[00:34:00] Nathan Wrigley: I do like the idea of being able to go to an official blueprint repository, if you like, and just sift through user submitted versions of WordPress. Let’s say you’ve just decided that you want to start selling a course online, here’s a perfectly pre-configured LMS experience for you, just so that you can see how that works. And, you know, or a shop, a WooCommerce shop, or just a regular WordPress website with full site editing, all done for you. But now we’re going to use this theme, oh, you are not happy with that one, try this Playground over here, we’ve got a different theme, but everything else is just the same.
1,001 user submitted, varients of WordPress, and that’s never been possible. We’re always starting from, basic WordPress then build things on top of it, because of the fact that there’s a lot of work which needs to go in before your site is working. Now with all these dependencies built in, the click of a button, there it is, ready to go. Like you said, it’s profound. It really is incredibly profound.
[00:35:01] Adam Zielinski: One more cool thing I wanted to share though, we have a plugin for WordPress. You install it, and then you go to WP Admin plugins directory, and every plugin has install now button, it has it now, but it also has preview now button. And that preview now button clones your website in Playground, installs that plugin, and opens it in a new tab, so you can see, oh, do I like using it? Would it break my website? Is it even doing what I need it do? And you don’t like it, you just close that tab, and your production site is as it was before.
[00:35:33] Nathan Wrigley: Yeah, I’d forgotten about that. Yeah. But if you go to wordpress.org, now there’s a button. I remember there was a little bit of a kerfuffle where, it was a few months ago, where Playground got launched on the plugin repository, and for various different reasons, dependencies largely being the thing I think, that got withdrawn. Then, I think now it is that the plugin developers need to just tick a box to say, yes please on my plugin listing, please put Playground there because that will be something that I want.
And now I would imagine the majority, so long as it works, why wouldn’t you have that? You can go and experiment. So that’s new. If you haven’t been to the wordpress.org plugin repository recently, there is now, on a lot of plugins, a button just to use Playground. Click the button, you’ll see it, you’ll be able to see it immediately, and all the wonderful things that it does.
[00:36:16] Adam Zielinski: Yeah, although that’s not what I meant.
[00:36:17] Nathan Wrigley: Ah, apologies.
[00:36:19] Adam Zielinski: What I meant is, there’s a separate plugin called the Playground. And if you install it on your WordPress site, you will get that preview button inside WP Admin, and it’ll preview that plugin a copy of your site.
[00:36:31] Nathan Wrigley: Wheels within wheels. It’s very meta that isn’t it? I didn’t know that existed. So you’ve got a Playground site. Inside of that Playground site, you can install the Playground plugin. I guess you could get inception going on there, couldn’t you? Playground within Playground. within Playground, all the way.
[00:36:49] Adam Zielinski: Yeah, that is actually possible. So there’s a Playground Gutenberg block, and it’s in the WordPress plugin directory, and it has a preview button and it opens a Playground with that block inside Playground. So yeah, there are multiple levels.
[00:37:00] Nathan Wrigley: We’ve obviously waxed lyrical. I think it’s a fabulous project. Just what it’s going to open up in the future, who knows. I think the word profound, I think that’s the exact appropriate word at this point.
However, all of this light that we’re shining on it, I presume there’s still things that you would like to fix. Things that don’t yet work as expected, that maybe some things which you’ll never be able to overcome, given the state of what browsers can do at the moment. Should we just talk about that? What are some of the limitations that you know of at the moment?
[00:37:28] Adam Zielinski: Absolutely. So not all PHP extensions are supported in the browser, and we support more every month. But not yet at the place where you would have 100%. It’ll never be 100% right? Like for example, you cannot use Curl in a web browser. You can use it in a node version of Playground.
We’re just bringing in support for different image formats. So WebP and surprisingly jpeg. Png was already in there. Network is a large challenge. So WordPress would sometimes open, let me speak with a little bit more jargon. WordPress would sometimes open a TCP sockets to specific addresses, and you don’t have that API in the browser, right. You can only do fetch and few more things, but not that. So that may never be supported. Like if browsers had that, it would be large security risk. You can however do that in a node version of Playground.
The database support. I think all core features work well. And we even had a 99% of unit tests passing in Playground. But there are some plugins using MySQL features that are not yet supported. So I think one of them is select union. So we still have some work to do with the database support.
So by default Playground doesn’t have access to network, and you have to enable it in Playground options. That’s a performance thing. Playground is significantly slower with that. So just to give everyone snappy experience by default. However, we do have something going on to have networking by default and also have it being very performant. That will hopefully go away sometime soon.
And honestly, like we’re learning about new limitations. Yeah, I would say like every week of every month, people come to Playground repository, they ask about their use case and someone wanted to use soap client. It’s not supported at the moment.
Someone else wanted to run a real server, right? So send a link to someone, somewhere and it’s just running in your browser. So we cannot really do that at the moment. But maybe it will be possible actually in the future. Like, I’m playing with a few ideas about that. So if you use Playground and something isn’t working right, come say hi to the Meta Playground channel on WordPress org Slack, or the WordPress slash WordPress dash Playground repository on GitHub, and tell us, we may not know.
[00:39:50] Nathan Wrigley: I feel like you’ve created a bit of an iPhone moment with WordPress. What I mean by that was, everybody had a mobile phone prior to the iPhone, and then the iPhone came along, and then everybody really wanted an iPhone because it was so profoundly different. And it feels like you’ve done something profoundly different with WordPress, and when apps came along and suddenly, yeah, there was an iPhone, but it was an iPhone and it looked nice and everything, and then apps came along and made the iPhone more profoundly interesting.
You’ve enabled more profoundly interesting things to be done with WordPress than could be done two years ago, and the supplying of that is crucial. But it’ll be interesting if we have this conversation in, let’s say three years time, I think the real interest will be, not necessarily the Playground bit, and forgive me, I’m not denigrating what you’ve done because it’s remarkable, but it’s what everybody will do with the Playground that you’ve built. And the unique things that they’ve created. And the hither to as yet unimagined things, which will become commonplace and normal with WordPress, that at the moment nobody’s even conceived. And you’ve hinted at a few of those now. And so you’ve genuinely stirred interest, and something novel in the WordPress space and that isn’t often happening..
[00:41:16] Adam Zielinski: Thank you so much. I’m blushing. Yeah. truly amazing.
And think that iPhone moment analogy, it’s excellent. And if you don’t mind, I’ll borrow that.
[00:41:27] Nathan Wrigley: When the App Store came to the iPhone, that moment where the iPhone, which was fun and you could play songs with it, but you couldn’t do all the other things, like store your notes and sync them to the cloud and communicate with other people on chat apps.
I imagine the developer community will jump on board and come up with a thousand different ways to build on top of Playground.
[00:41:46] Adam Zielinski: The analogy may be going further than it seems at first because every blueprint is like an app, right? You have WordPress as your vehicle for setting things up. And then you can create a slide building app, as I said earlier. But I had someone running Doom, like the video game in the Playground.
Yeah, you can build a course website with it, right? If you just pre-configure it in the correct way. We have a pull request previewer running in a couple of projects, right? You have a preview link on GitHub just posted automatically. You have plugin previewers. You have project demos. So many different things.
I have a blueprint that if you run it, it doesn’t actually create a Playground you can use, but it gives you a zip file. And in that zip there is a static version of what you started with, right? So now you can not only produce different WordPress setups and website setups, but also artifacts, right?
Maybe another blueprint could, I don’t know, render a PDF, right? And that would be another version of your slides, to keep using this example.
You can embed Playground. You can ship Playground on all the devices. So I’m imagining a world where you can build a WordPress plugin, click a button, and now you have a desktop app. You have a server app. You have a front end app. You have a progressive web app. You have a phone app. You have a tablet app. You have a terminal app, right from a single code base. We don’t have that button today, but I think it’s very possible to build one.
[00:43:16] Nathan Wrigley: It feels like the slogan is Playground, taking the friction out of using WordPress. Making that first step so much easier. No matter what your level of experience, if it’s the first time you’ve used WordPress, or if you want to do something more complicated. Just that frictionless step that you’ve created is, yeah, absolutely brilliant.
So just before we go, I know that you mentioned the Slack channel where you are hanging out. Maybe you want to mention that again, just so it’s gone into people’s heads. But also if anybody is curious, maybe there’s other places where you can help with the Playground project, but also if you’re willing, are places where people can get in touch with you.
[00:43:52] Adam Zielinski: Absolutely. Twitter is one of them. I’m most attentive to GitHub, cause I’m spending a lot of time in the Playground repo and all the Playground related activity. So probably the easiest way to reach me is through issues and discussions.
If you have something unrelated to the product, but just wanted to explore your use case, ping me on Twitter. There’s WordPress.org Slack, called meta-playground and that’s another good place. And also I’ll be on WordCamp EU in June. I’ll be having a talk on the main stage about WordPress Playground. So come, say hi. Watch the talk and let’s talk in person.
[00:44:28] Nathan Wrigley: Nice. Thank you very much. Adam Zelensky, thank you so much for chatting to me today. I really appreciate it.
[00:44:34] Adam Zielinski: It’s been so lovely, naan. Thank you so much for having me.
On the podcast today we have Adam Zielinski.
Adam is the creator of WordPress Playground, a WordPress core committer, and Tech Editor release lead for WordPress 6.0. He works as a WordPress developer at Automattic and lives in Wrocław, Poland. In his spare time, he can be found bouldering, practising improv comedy, and playing badminton.
In this episode, we talk about Playground, a groundbreaking project that is redefined the way we interact with WordPress. Adam’s visionary approach to creating a seamless WordPress experience within a web browser has revolutionised how easy it is to access WordPress.
We discuss Playground’s history, from the initial frustrations that sparked the idea, to the development process that brought it to life. We gain an understanding of the profound impact Playground is having on the WordPress landscape and its potential to shape the future of web development. It’s not often that the word profound is rightly used, but it feels appropriate here.
We explore the enormous potential uses of Playground, from simplifying setup processes to enabling experimentation with plugins and themes. Adam’s vision for Playground as a catalyst for democratising website creation and enabling a culture of innovation within the WordPress community is something that’s still evolving, and it’s clear that the direction the project takes is still being figured out.
This project really does change the way that WordPress can be used, and there’s so many exciting prospects for how it might shape the future of website design and development.
If you’re interested in hearing about cutting-edge advancements reshaping the WordPress landscape, this episode is for you.
Useful links
The Blueprint Gallery: Share your WordPress creations with Playground
Blocknotes by Ella Van Durpe
Adam’s presentation at WordCamp Europe 2024
The playground team:
Dennis Snell: https://github.com/dmsnell/
Brandon Payton: https://github.com/brandonpayton