A rising tide lifts all boats. -- United States President, John F. Kennedy (borrowed from the New England Council)
Inspired by the proverb "A rising tide lifts all boats", we want to lift the quality of code across the whole WordPress ecosystem. Tide’s vision is to run automated quality testing for all WordPress plugins and themes and make those test results visible for both the authors and the end users of those plugins and themes. This will help improve the quality of code throughout the WordPress ecosystem and help WordPress site owners make better choices about plugins and themes.
The Tide project is an official component of the WordPress project and still in the early stages. Today, Tide scans all WordPress plugins and themes and provides scan results as JSON through the Tide API.
The next step is to start using the JSON output in the WordPress plugin and theme repository to show PHP compatibility information. This will help drive the adoption of the newest PHP versions as both plugin/theme authors and WordPress site owners installing those plugins and theme will be more aware of the PHP compatibility of each plugin/theme.
Progress can be followed in the WordPress meta issue tracker at https://meta.trac.wordpress.org/ticket/4309.
Tide services are responsible for the following:
- The Sync Server polls the WordPress.org API's for themes and plugins to process and writes them to a queue.
- The PHPCS Server reads messages from a queue and runs reports against both plugins and themes, then sends the results back to the Tide API.
- The Lighthouse Server reads messages from a queue and runs Google Lighthouse reports against the themes only, then sends the results back to the Tide API.
- The wptide.org website includes both the documentation you are reading and also serves the JSON API endpoints from where the reports can be queried. Visit https://wptide.org/search to see examples of JSON reports.
You can also run your own Tide instance and do your own customized reports if you are for example a hosting company that want's to use this technology for custom testing and quality assurance.
The following diagram notes which Google Cloud Platform (GCP) components are used to represent the four Tide services, and how the themes and plugins API on WP.org connects to the Sync Server. The basic flow is that a User or an API Client will make a request to the Tide REST API, which sends back a response. The request could create messages in the queue where one or more services process them by running automated scripts and witting the results back to the API. Additionally, the Sync Server will poll the WP.org API's for new themes and plugins to add to the message queue.
- The sync, PHPCS and Lighthouse servers: https://github.com/wptide/wptide
- Go packages used by the servers: https://github.com/wptide/pkg
- API: https://github.com/wptide/wp-tide-api
You can contribute to this documentation at https://github.com/wptide/docs.
Working with Tide
Currently you can:
- Search for plugins & themes and view their audit reports in this documentation.
- Install Tide to help test and develop locally.
- Deploy Tide to Google Cloud Platform and run your own variation of Tide in the cloud.
In the future you will be able to use Tide as a service to test your plugins or themes during development.
There are many ways to contribute to Tide. You can help us champion the adoption of the quality testing results in the WordPress project. You can also help by contributing code or documentation to Tide itself.
Props: Bartek Makoś (@MakiBM), Brendan Woods (@brendanwoods-xwp), Cathi Bosco (@cathibosco), Daniel Louw (@danlouw), David Cramer (@davidcramer), David Lonjon (@davidlonjon), Derek Herman (@valendesigns), Dušan D. Majkić (@dmajkic), Janki Moradiya (@jankimoradiya), Jeffrey Paul (@jeffpaul), Jonathan Wold (@sirjonathan), Joshua Wold (@jwold), Justin Kopepasah (@kopepasah), Keanan Koppenhaver (@kkoppenhaver), Leo Postovoit (@postphotos), Lubos Kmetko (@luboskmetko), Luke Carbis (@lukecarbis), Meet Makadia (@mrmakadia94), Miina Sikk (@miina), Mike Crantea (@mehigh), Otto Kekäläinen (@ottok), Pierre Gordon (@pierlon), Scott Reilly (@coffee2code), Rheinard Korf (@rheinardkorf), Rob Stinson (@robstino), Sayed Taqui (@sayedtaqui), Ulrich Pogson (@grappler), Utkarsh Patel (@PatelUtkarsh)
Have questions? Join us in the
#tide channel in WordPress Slack. If you're new to Slack, keep it mind that it sometimes takes several hours for community members to respond — thank you for being patient!