Skip to content

Vision and Philosophy #472

Open
Open

Description

WordPress Playground Vision and Philosophy

Vision

Playground exists to bring WordPress to the people.

WordPress should be instantly accessible to users, learners, extenders, and contributors.

Learning WordPress Through Exploration

Playground aims to shift the WordPress learning journey from following screenshots and videos into engaging with a live site where it's safe and easy to creatively explore the concepts being taught.

Imagine live Playgrounds that guide users through building their first website, customizing a theme, or setting up an e-commerce store. Furthermore, users would have the freedom to take a detour and explore on their own. The goal is to not to create specific tutorials or apps, but rather to empower developers with the tools necessary to build them.

Key features include support for pre-defining an initial site setup and the ability to provide step-by-step interactive instructions.

Learning WordPress Development Through Writing Code

Playground aims to encourage and accelerate learning WordPress development.

Imagine an in-browser code editor with an instant preview of everything you build. New developers would be guided through building their first WordPress extensions, and experienced developers would hone their WordPress skills with live code snippets and interactive examples embedded in the documentation and tutorials. Furthermore, developers would be able to start developing locally with zero or almost zero setup steps.

The goal is not to build such a full-featured code editor in Playground, but rather to provide the tools necessary to build one.

Key features include running PHP code in Playground, an abstraction for synchronizing files with a Playground instance, and a PHP binary that supports CLI tools like wp-cli or phpunit.

Instant access to WordPress ecosystem

Playground aims to empower developers to build WordPress applications that are available in an instant and without any server infrastructure.

WordPress ecosystem consists of many powerful extensions that could become accessible without any pre-requisites. Imagine using WordPress as a notes app, getting acquainted with plugins and themes through official live demos, or starting a full-featured development environment with a single-click. The goal is not to build such applications, but to empower the ecosystem to make them available on demand.

Key features include abstraction for integrating a custom filesystems, in-browser support for network requests, and the ability to use and configure specific PHP extensions.

Project philosophy

Focused Framework over Alluring Add-ons

Playground focuses on the minimum work required to fulfill its vision. Therefore, new features are evaluated based on the following question: Does it bring the project closer to its vision in the long run?

Every new feature, no matter how great, makes the codebase a little bit more difficult to approach and adds a little extra time to weekly maintenance. Saying yes to an appealing feature is tempting, but it means saying no to something else. Saying no is difficult, but it makes space for what's indispensable.

Therefore, Playground makes the difficult decision and chooses to focus on its vision – even when that means saying no.

Diligent Design over Quick Quirkiness

Let the long-term success of the project lead the solutions. Some changes can be done quickly, other require more time. Move as fast as the problem allows, but no faster. Move as slow as the problem requires, but not slower.

  • Playground changes affect diverse browser, server, and desktop applications. This project therefore applies more caution when considering the impact a given pull request might have on the various downstream applications using the library.
  • Framework features tend to be difficult to remove. This project therefore delays introducing new features until it's clear there's no existing way to accomplish some goal.
  • Feedback is the single best way to make better software and better decisions. Therefore, even if you have doubts about whether a feature belongs, please share your requests so that your needs can help shape the project.

Developers are under all sorts of time pressures so let's be kind to our future selves. An hour of diligence today saves ten hours of maintenance tomorrow.

Modular Minimalism over Coupled Complexity

WordPress Playground follows the Unix philosophy:

  • Each unit of code should perform one task well. To perform a new task, build afresh rather than adding more features.
  • Expect the output of every function to become the input to another, as yet unknown, function. Only return what's necessary and avoid extraneous information.
  • Field-test new code early and only make it a public API if it stands. Don't hesitate to throw away the clumsy parts and rebuild them.
  • Favor small, focused tools over large libraries, even if it means building them from scratch. Only integrate those libraries that are absolutely necessary.

As Antoine de Saint-Exupéry said, "Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away." Let's aim for this kind of perfection.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions