EasyWordy
Goal
The goal with EasyWordy is to provide a solution for all these people that have started on WordPress and that would now like to evolve to a more advanced CMS, delivery and application ecosystem.
WordPress: a giant on the web
WordPress has achieved a dominant position on the web, both in terms of content creation and operation of websites.
Over 40% of all websites in the world are running out of a WordPress installation.
When looking only a CMS-based websites, WordPress takes a 60% market share. In the last decade, it's also telling that the proportion of websites that aren't using a CMS went from 68% to 30%.
The reasons for the popularity of WordPress are:
- integral personalization capability with themes, leading to a catalog that is now in the tens of thousands of options.
- integral feature extension capability with plugins, with a catalog of ten of thousands of plugins, amongst which are WooCommerce for online retailing, Yoast SEO for search-based marketing and Akismet for spamming control.
- the ease of installing PHP and MySQL that WordPress runs on, meaning the simplest of laptop is all one needs to start creating content or developing extensions.
- the low learning curve of PHP, a template-based interpreted scripting language with dynamic typing, meaning any hobbyist can quickly get to a hello-world result and be encouraged to continue working on themes and plugins.
- the many hosting providers that have built managed WordPress instances that enabled non-technical people to build large-scale solutions without getting in the technical details of content delivery.
Yet WordPress is not a perfect solution! Amongst the top complaints issues that have emerged, we see:
- there are many security issues due to the ease of making bugs in PHP.
- the design of WordPress, PHP and MySQL aren't especially efficient, and scaling a WordPress-based website incur costs that are much better managed with other technologies.
- integrating modern web technologies like React/NextJS, Rust and so on isn't natural in WordPress, usually leading to either sticking to the error-prone and simplistic PHP or rebuilding everything in a different tech stack.
Growing out of WordPress
Two important trends have emerged around 2022: both the growth of WordPress use and of CMS in general has stalled. Why is that?
We think the following factors are at play:
- The COVID effect that has pushed retailers to transition to online commerce is now being absorbed negatively as the growth rate reverts to its mean.
- The native mobile app as an alternative way to distribute content also took a piece of growth.
- The pure textual content websites (blogs, homepages) have turned to cooler video-based format and thus have takend some growth toward Youtube and TikTok, and also to image-based social media (FB, Instagram, etc).
Why is this important?
In 2024, there were 250K new websites created every day, and over 80M existing active WordPress installations (siteefy). Being able to provide a path toward an improvement over WordPress base technology stack given its enormous market share can do wonder for the web, both economically and technically.
There is a lot of information about how low webpage load, security breaches and limited UI and UX impact negatively the economics of online commerce (eg, this Forbes' article). The AI revolution, the main buzz of the day, is likely to have a big impact on content creation. But until the basic issues of security, reliability, performance and technology expansion of the WordPress ecosystem are resolved, the critical elements of commercial activity online aren't going to change much.
The next videos narrated by Matt Billmann are full of great insights on the way the WordPress core design leads to all kind of issues and the way new web technology is able to move beyond them. Note that they are almost a decade old and still very relevant...
As a balance to the JAMstack philosophy, also interesting to look at this Lichess case study, a online chess playing website which is very focused on the UX and server-side rendering rather than client-based rendering as in JAMstack. No technology is perfect, it's the proper approach for a given situation that makes the make or break of a technology.
There are many solutions that try to compete with WordPress using modern web technology, but they have so far barely taken any momentum as they must also provide the very large amount of themes and plugins that are already available in the WordPress ecosystem to present a worthy alternative.
Our approach: recycling existing efforts, extending to new heights
We put together EasyWordy, a technology stack that enables the following:
- drop-in replacement for the existing PHP and MySQL installation that handles the routing logic and still operates out of WordPress,
- incremental and optional replacement of WordPress core functionality by a highly secure and powerful compiled and optimized code, with existing PHP-based themes and plugins still operating,
- incremental conversion of themes into more powerful and performant templating technology using modern web technologies,
- incremental conversion of plugins from PHP code to highly secure and powerful compiled and optimized code.
This solution enables someone using WordPress to very simply transition to a more advanced web server runtime without changing anything on the WordPress code, the themes and plugins, the database, or the proxy technology. Yet by doing the switch, the installation gains a control system where it is possible to introspect the execution of WordPress components and start planning for an improvement path.
The components of EasyWordy are:
- a routing module that tracks incoming request activity, distributes the requests to the PHP engine for execution while tracking operational statistics for each WordPress components (files, functions, theme and plugin use), and then returns the results.
- a visualization system for all historical and ongoing activity.
- an automatic PHP code converter, which does a deep analysis of the logic and creates secure and efficient code that is compiled for efficient execution.
- a configuration UI that enables to trigger the execution of the native code instead of the PHP code for any function written in the WordPress core.
- an equivalency system that enables WordPress core to transparently see and use themes written in the Fudd templating system.
- a bridging system that enables plugins to use non-PHP/WordPress logic directly from PHP.
As part of the FUDD ecosystem, the main part of EasyWordy is written in Haskell. It uses the Servant and Hasql packages for performant and secure routing and database work. Within EasyWordy is the latest stable version of PHP, closely integrated using SAPI, which enables a lot of customization in the execution of the PHP code without any hacking of the PHP official source code.
Technical details
Request Routing
The Servant package implements the hoisting and routing of all requests coming to EasyWordy.
PHP execution
The official PHP engine v8.2 executes the WordPress code.
Automatic PHP conversion
Tree-Sitter and a in-house derivative of Megaparsec achieves the conversion of PHP code into an internal abstract syntax tree (AST) that contains verbatim blocks (html text), comments and logic.
Command App
Templates using the Hugo and Fuddle logic provides the UI for the web-based UI of EasyWordy.
Template to WordPress integration
TBD
Non-PHP logic to WordPress content
TBD