Title: Feature Project: Servehappy
Author: Alain Schlesser
Published: February 7, 2018
Last modified: November 5, 2018

---

#  Feature Project: Servehappy

The servehappy project is an initiative that seeks to educate WordPress site owners
about the value of having the latest version of PHPPHP The web scripting language
in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher
powering their WordPress site. This supports the overall goal of increasing the 
percentage of WordPress installs running modern PHP versions.

## Background

One of the coreCore Core is the set of software required to run WordPress. The Core
Development Team builds WordPress. tenets of WordPress is backwards compatibility.
Support for PHP 5.2 is and has been part and parcel of that tenet. Over the years
however, there has been increasing tension within the WordPress developer community
on this support for PHP 5.2 between those who support keeping the minimum PHP version
requirements the same for WordPress core, and those who want to increase the minimum
PHP version requirements for WordPress core. There have been numerous arguments 
made for either side and you can follow some of the discussion [here](https://core.trac.wordpress.org/ticket/33381).

Beginning around mid 2017, there were a number of discussions initiated (in various
channels) about resolving some of this tension and keeping WordPress as a project
moving forward with PHP language related topics. Out of these discussions, a number
of initiatives were started that support the overall _initial_ goals of:

 * Encouraging Web host providers to provide the latest PHP versions and provide
   an upgrade path for their customers to get on the latest versions (this is something
   that has been happening for a while now)
 * Educating site owners about PHP and why PHP version matters.
 * Decreasing the amount of reported WordPress sites running older [EOL (End Of Life)](https://en.wikipedia.org/wiki/End-of-life_(product))
   versions of [PHP](http://php.net/supported-versions.php).

Once these goals have been reached, then it becomes possible to more practically
begin discussions about:

 * [Increasing the minimum PHP requirements of WordPress](https://core.trac.wordpress.org/ticket/33381)
 * Introducing more modern PHP practices/design patterns etc that require later 
   PHP versions in WordPress PHP code design and structure.

For clarity, its worth re-iterating here, that the immediate goal of the latest 
PHP initiatives (of which the _servehappy_project is a part) is **not** to raise
the minimum _requirements_ for PHP in WordPress core. The immediate goal is to put
in place supporting structure and site owner education/resources etc so that we 
can more actively reduce the number of existing active WordPress sites on older 
PHP EOL versions and thus improve security and performance of the web.

## Following along

We will endeavour to keep this document up to date, but for all the most recent 
information you will want to follow along at:

 * [Slack Channel](https://wordpress.slack.com/messages/core-php/)
 * [Weekly update posts﻿](https://make.wordpress.org/core/tag/servehappy/)
 * [Related trac tickets](https://core.trac.wordpress.org/query?keywords=~servehappy)
 * [Original roadmap (January 2018)](https://make.wordpress.org/core/2018/01/09/servehappy-roadmap/)
 * [Updated roadmap (July 2018)](https://make.wordpress.org/core/2018/07/17/servehappy-roadmap-update-and-priorities/)

## Big picture overview

The following table gives a high level overview of all the various components contributing
to the servehappy initiative.

> Note: all delivery dates are _rough_ estimates only.

  |  Deliverable |  Links |  Status |  Est Delivery Date |  
   |  **Information page on wp.org** |

 * [latest version of the page](https://wordpress.org/support/upgrade-php/)
 * [trac ticket](https://meta.trac.wordpress.org/ticket/2996)

  |  content final, needs design |  pre-WordPress 5.1 |  
 |  **Fatal error protection** |

 * [trac ticket](https://core.trac.wordpress.org/ticket/44458)
 * [GitHub PR](https://github.com/wp-core-php/wordpress-develop/pull/3)

  |  in development |  WordPress 5.1 |  
 |  **Adminadmin (and super admin) notice in dashboard** |

 * [trac ticket](https://core.trac.wordpress.org/ticket/41191)

  |  done, needs 5.1-merge |  WordPress 5.1 |  
 |  PHP version requirements for plugins |

 * [trac ticket](https://meta.trac.wordpress.org/ticket/2952)
 * [trac ticket for API support](https://meta.trac.wordpress.org/ticket/3642)
 * [trac ticket for core display](https://core.trac.wordpress.org/ticket/43650)
 * [Announcement post](https://make.wordpress.org/plugins/2017/08/29/minimum-php-version-requirement/)

  |  done |  2nd quarter 2018 |  
 |  Respecting pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/) or can be cost-based plugin from a third-party. requirements in core |

 * [umbrella trac ticket](https://core.trac.wordpress.org/ticket/40934)
 * [prevent installation trac ticket](https://core.trac.wordpress.org/ticket/43986)
 * [prevent updates trac ticket](https://core.trac.wordpress.org/ticket/43987)
 * [prevent activation trac ticket](https://core.trac.wordpress.org/ticket/43992)
 * [prevent updates screen trac ticket](https://core.trac.wordpress.org/ticket/44350)

  |  in development |  WordPress 5.1 |  
 |  PHP/WP version requirements for themes |

 * [trac ticket](https://meta.trac.wordpress.org/ticket/3718)

  |  blocked |  TBD |  
 |  Respecting theme requirements in core |

 * [umbrella trac ticket](https://core.trac.wordpress.org/ticket/40934)
 * individual tickets soon

  |  blocked |  TBD |  
 |  Benefits/stats collection |

 * [issue tracker](https://github.com/WordPress/servehappy/issues)
 * [Benefits & Stats project board](https://github.com/WordPress/servehappy/projects/1)

  |  ongoing |  TBD |  
 |  Resources collection |

 * [the servehappy resources repository](https://github.com/WordPress/servehappy-resources)

  |  ongoing |  TBD |

A more descriptive outline of some of the concrete deliverables associated with 
the servehappy initiative:

### Information page about PHP versions and updates.

This page will live on WordPress.orgWordPress.org The community site where WordPress
code is created and shared by the users. This is where you can download the source
code for WordPress core, plugins and themes as well as the central location for 
community conversations and organization. [https://wordpress.org/](https://wordpress.org/)
and is intended to be referenced throughout the WordPress.org project and eventually
linked to from the WordPress dashboard for sites not meeting a minimum PHP version
requirement for the notice to appear.

 * [latest version of the page](https://wordpress.org/support/upgrade-php/)
 * [https://meta.trac.wordpress.org/ticket/2996](https://meta.trac.wordpress.org/ticket/2996)

### Fatal error protection

When making changes to their site, fatal errors may occur, which tend to be hard
to solve for non-technical users. Therefore, WordPress should be able to detect 
such errors and aid the user in fixing the underlying problem. In particular, this
involves implementing a sandboxing mechanism where the plugin or theme causing the
issue is temporarily paused in the admin. While this will still cause the “white
screen of death” to be present on the site’s frontend, it allows the user to still
log in to the backend and resolve the problem.

 * [trac ticket](https://core.trac.wordpress.org/ticket/44458)
 * [GitHub PR for actual development of this feature](https://github.com/wp-core-php/wordpress-develop/pull/3)

### Admin notice in WordPress Dashboard

This admin notice will serve as a portal into more substantive educational pieces(
linking through to the [Information page about PHP versions and updates](https://github.com/WordPress/servehappy#information-page-about-php-versions-and-updates)).

 * [trac ticket](https://core.trac.wordpress.org/ticket/41191)

### Minimum PHP version requirements for plugins and themes in core

The proposal is to allow plugins and themes to have a minimum PHP version requirement.
This will involve work done in WordPress core and the WordPress.org plugin repository
to support this. While there are multiple tickets for the individual parts of this,
the [umbrella trac ticket](https://core.trac.wordpress.org/ticket/40934) provides
easy access to more details on this part of the project.

### Collection of Benefits and Stats

Ongoing collection of benefits and statistical data is used to help sell the “update
PHP” proposition to users. These have been collected as issues in the [issue tracker](https://github.com/WordPress/servehappy/issues)
and managed in the [Benefits & Stats project board](https://github.com/WordPress/servehappy/projects/1).

If you want to suggest a new benefit or stat, please [create a new issue](https://github.com/WordPress/servehappy/issues/new)
and label it accordingly.

### Collection of various third-party articles and hosting resources

See [the servehappy resources repository](https://github.com/WordPress/servehappy-resources)
where there is an ongoing effort to collect a resource library of third-party articles,
and PHP upgrade tutorials (including host specific tutorials) that can be utilized
in other resources developed as a part of this initiative.

## PHP Compatibility Checker

While not directly related to the servehappy initiative, the [PHP Compatibility Checker](https://wordpress.org/plugins/php-compatibility-checker/)
is a free third-party plugin that allows site owners to check compatibility of their
plugins and themes with specific PHP versions. In the current version of the [draft](https://github.com/WordPress/servehappy/blob/master/DRAFT.md),
this plugin is recommended to be used as a prerequisite. The servehappy team has
been collaborating with the developers of that plugin, to prepare it for that purpose.

## Tide Project

Similar to the above plugin, the [Tide Project](https://make.wordpress.org/tide/)
will indirectly support the various efforts in process. It will particularly help
with providing feedback to users about what plugins/themes they have in use on their
site that might not be compatible with a PHP version being upgraded to. It is currently
unknown what an integration could look like, due to the early stage the service 
is in.

See [here](https://xwp.co/tide-a-path-to-better-code-across-the-wordpress-ecosystem/)
for an overview of what the tide project is.

## Join the project!

We have meetings every week in the [core-php Slack channel](https://wordpress.slack.com/messages/core-php/),
with the next meeting taking place on [Monday at 16:00 UTC](https://www.timeanddate.com/worldclock/fixedtime.html?iso=20260608T1600).
Weekly recaps can be found under the [servehappy tag](https://make.wordpress.org/core/tag/servehappy/).

# Post navigation
