Can the technology behind WordPress Playground help other PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/index.php projects run in the browser?
Joomla contributor Herman Peeren is exploring that with Joomla Playground, an early community project that runs Joomla in a browser tab. You can explore its administrator and frontend without installing a local PHP server or setting up a database.
For me, the interesting part is what this brings back to the shared tools. Joomla introduces different queries, workloads, and assumptions, revealing compatibility and performance lessons that contributors can investigate together.
What Joomla Playground shares with WordPress
The project builds on two components from the WordPress ecosystem.
The first is PHP.wasm. Joomla Playground uses the @php-wasm packages developed in the WordPress Playground repository to run PHP as WebAssembly in the browser. Joomla’s files and database also operate locally. The second is wordpress/mysql-on-sqlite. A Joomla-specific adapter connects its MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com driver to this library, allowing MySQL queries to execute against SQLite. You can inspect that connection in the database adapter.
The browser architecture follows a familiar pattern: a worker runs PHP, a service worker routes requests, and an iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. displays the CMS. Joomla adds its own startup logic, configuration, and Blueprint steps around that foundation.
Exploring Joomla without a local setup
Open Joomla Playground in a recent Chromium browser, such as Chrome or Edge. It starts a temporary site and automatically signs you in to the administrator. The toolbar lets you switch between the administrator and the public site. The project’s guide documents Joomla 6.2 and 5.4, with PHP 8.3, 8.4, and 8.5. It also describes controls for saving a site in your browser, importing and exporting ZIP files, and inspecting captured email without delivering it. Project guide
I suggest exploring the multilingual Heritage demo. A Joomla-specific JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. blueprint prepares content in English, Dutch, German, French, and Spanish, using demonstration data from Clifford E Ford. If you are preparing a workshop or demonstration, pay attention to persistence. Temporary sites disappear when you reload the page or close the tab. Saving keeps the site in that browser; exporting gives you a copy you can move elsewhere.
Lessons from running another CMS
Herman’s report provides concrete findings for contributors to explore. His tests included PHP.wasm 3.1.60 and MySQL-on-SQLite 3.1.1, so these observations are starting points for reproduction against current upstream code.
SQL compatibility
Joomla exercised SQL behavior that needed additional handling, including prepared statements, missing functions, server variables, and binary comparisons. One case affected login: session identifiers stored as binary values did not match the string comparisons Joomla used to retrieve them. Herman added local workarounds in the database adapter.
These cases could become regression tests for the shared database library. That is a practical benefit of testing another application: it exposes behavior that WordPress alone may not exercise.
Faster browser saves
Saving thousands of individual files to browser storage proved expensive. Herman switched to a shared base ZIP plus a snapshot of changed files, using Playground’s filesystem journal to track modifications. In his local measurements, saving dropped from 13 seconds to approximately 0.3 seconds. The implementation also replaces snapshots atomically and uses a per-site lock to prevent competing writers. Storage implementation
My reading is that this approach deserves testing with WordPress workloads. Those figures describe Herman’s Joomla tests; they do not establish the same improvement for WordPress Playground.
Making the site usable sooner
Two other findings involved requests sharing a single PHP worker. An unavailable network connection could leave a request waiting for minutes, blocking those behind it. Background search indexing also repeatedly entered the queue ahead of page navigation.
Herman enabled PHP networking through browser fetch and split indexing into smaller batches that yield between requests. Deferring indexing roughly halved the Heritage demo’s reported time to become usable, while the toolbar showed the remaining work. Report, sections 13, 18, and 24
For someone opening a demo, the practical question is simple: when can I start using the site? These findings give contributors specific cases to investigate around network failures and background Blueprint work.
Learning across the PHP ecosystem
Joomla Playground shows how this collaboration can work in both directions. Shared infrastructure makes another CMS easier to explore, and that CMS brings integration experience that can help improve the infrastructure. For educators and community organizers, there is also an immediate benefit: people can explore the software before spending time configuring an environment.
Try Joomla Playground, explore Herman’s source code, and share reproducible findings in the issue tracker. Thank you to Herman, Milana, and the contributors across these projects for making this exchange possible.
Which PHP application would you like to explore in the browser, and what would you test first? Please go to the Playground Channel and share with the team.











