PHP Meeting Recap – April 16th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • After some back and forth of discussing the color of the widget title border, we decided that we should go for a contextual coloring for now: orange (as a warning color) for outdated sites, and red (as an error color) for insecure sites. However, only after the meeting, we realized that there would hardly be any occasion for us to show the orange warning-type bar.
  • It is important to not rely on color alone for conveying information, for accessibility reasons.
  • We agreed that the efforts to make the widget less visually jarring should avoid downplaying the sense of alarm too much, as that defeats the purpose.
  • The wording of the widget was rediscussed again. However, the result was confusing because not everyone was referring to the most recent state of the widget. We finally didn’t budge from what was concluded last week: the editorial version is good with the exception of the word “guarantee”.
  • We discussed adding a visual symbol, like an exclamation mark, that provides more of a visual cue than the red border. I’ve added a new path with screenshots to the patch that does just that:This also makes the widget still quite noticeable when collapsed.

Next week’s meeting

  • Next meeting will take place on Monday, April 23th, 2018 at 15:00 UTC in #core-php.
  • Agenda: Discuss latest version and the use of the exclamation mark symbol.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #summaries

PHP Meeting Recap – April 9th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • The design meeting had not taken place at the time to discuss design of the nag, but the topic was discussed later the week, so next week there will be feedback to review. Screenshots of both the expanded and collapsed state of the dashboard widget are present on the ticket #41191.
  • Via the Automattic editorial team, an updated version of the copy for the nag was suggested and uploaded as a patch.
  • The suggested changes were met with consent, especially considering the removal of a rather redundant sentence to continue reading and a fragment focusing on the people working on WordPress (as they are not the group the widget is targeting).
  • The new “PHP Upgrade Required” was approved as well. While mentioning the term PHP which may initially be unknown to the site owner, it clearly identifies the problem, and via the word “required” it is a clear call to action.
  • The one sentence questioned was the following:

    The instructions we provide will guarantee a secure, painless update.

    Particularly the word “guarantee” may be misleading as it is impossible to guarantee a painless update process. @nerrad shared multiple alternatives which he also added to the ticket. There was consent that at least “guarantee” should be replaced with “help with”.

  • An important thought that was emphasized again was that, while upgrading PHP is not that trivial, there needs to be a positive attitude and expressions being used about that in order to motivate site owners to proceed. It must not be too euphemistic though – updating PHP is undoubtedly more complicated than updating a browser for example.
  • Except for the one sentence it was agreed that the revised version is more accurate, on-point and in line with the wording used in core otherwise.

Next week’s meeting

  • Next meeting will take place on Monday, April 16th, 2018 at 15:00 UTC in #core-php.
  • Agenda: Discuss design feedback for the nag, as expressed in their meeting and on the ticket.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summary

PHP Meeting Recap – April 2nd

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • Design feedback was not yet available to review, so this was postponed to next week.
  • Per #41191, @pento will ask the Automattic editorial team to review the wording.
  • @markjaquith brought up that the large amount of text currently in the nag may be too much. Since the PHP upgrade education page already contains detailed information, the nag should be more on point. Key points are:
    • PHP runs your site.
    • Your PHP is outdated.
    • Updating makes your site faster and more secure.
  • @flixos90 suggested to compare the nag with the one from Browsehappy which is way shorter. While upgrading PHP is not trivial, it should be possible to shorten the current copy so that it is only a bit longer than the Browsehappy message. Something like the following may work already:

    It looks like your site is using an outdated/insecure version of PHP. PHP is the programming language that WordPress is built on. To make your site faster and keep it secure, please upgrade the PHP version on your webserver.
    Learn how to upgrade my PHP (link)

  • It’s important to highlight the performance aspect of upgrading, not only the improved security.
  • @afragen shared his proof-of-concept for rejecting plugins that require a higher PHP version than available. While a core implementation would need to cover much more than the functionality present, it is a good source to start working from, and some of the code or ideas may be reused in the implementation for #40934.

Next week’s meeting

  • Next meeting will take place on Monday, April 9th, 2018 at 15:00 UTC in #core-php.
  • Agenda: Discuss design feedback and wording of the nag.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summary

PHP Meeting Recap – March 19th & 26th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

Chat log from March 19th
Chat log from March 26th

Chat Summary

Dashboard widget (#41191)

  • The voice of the widget text has been adapted to better match the overall WordPress feel.
  • The accessibility concerns that were raised have been addressed.
  • The widget currently looks like this:
  • The Trac ticket was flagged for ui-feedback and we are now waiting for the #design team to be able to go over the ticket. Once all of their feedback has been processed and incorporated, the version in trunk will be ready to discuss backporting it to the next minor release (4.9.6).

PHP version requirements for plugins & themes (#40934)

Next week’s meeting

  • Next meeting will take place on Monday, April 2, 2018 at 15:00 UTC in #core-php.
  • Agenda: [Go over #design feedback and] discuss how to proceed with plugin requirements.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summaries

PHP Meeting Recap – February 26th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • The agenda for the meeting was to discuss the API endpoint for which a first version was introduced the previous week.
  • It was ensured that the endpoint parses PHP versions correctly and allows for flexibility by parsing out the actual version number from strings which may contain additional environment-specific information.
  • Some concerns regarding the structure of the response were expressed, particularly related to redundancy, future maintainability and inconsistencies.
  • By the end of the meeting, it was agreed to go with the following response structure:
    • recommended_versionstring – The PHP version recommended by WordPress
    • is_supportedboolean – Whether the PHP version is actively supported
    • is_secureboolean – Whether the PHP version receives security updates
    • is_acceptableboolean – Whether the PHP version is still acceptable for WordPress
  • It was also decided to remove all IP address-related functionality, as it is unlikely that those will be needed in the future. Detecting hosts by IP address and maintaining host-specific data via the API would be a huge maintenance burden, and additionally passing the IP address would overcomplicate the current efforts by having to deal with possible privacy concerns.

Call for Testing

Since the meeting, the API endpoint has been updated to use the aforementioned response data structure, and an updated patch for the PHP nag in core, implemented as a dashboard widget like previously decided, is ready to be applied.

Please thoroughly test the API endpoint and patch. The API is already live, and the current plan for the patch is to commit it to core next week.

  • The API endpoint is available at https://api.wordpress.org/core/serve-happy/1.0/, and it requires a php_version query parameter to be passed.
  • The patch for the core nag is available at https://core.trac.wordpress.org/attachment/ticket/41191/41191.6.diff, making use of the API endpoint. When applied and your installation is not on PHP 5.2, you can “simulate” the behavior by going into the src/wp-admin/includes/dashboard.php file, looking for the wp_check_php_version() function and temporarily hard-coding ‘5.2’ in there instead of the actual PHP version. For the related ticket, see #41191.

Next week’s meeting

  • Next meeting will take place on Monday, March 5, 2018 at 16:00 UTC in #core-php.
  • Agenda: Discuss the patch for the core nag.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summary

PHP Meeting Recap – February 19th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • Main topic for this meeting was to discuss the two different implementations of the servehappy notice we have so far:
    • an admin notice that appears at the top of all pages;
    • a dashboard widget that only appears on the dashboard.
  • @flixos90 quickly described the main benefits of the alternative dashboard widget approach:
    • it requires less logic;
    • it is harder to unintentionally hide;
    • it matches what the browsehappy project did.
  • We discussed how best to set the priority of the widget, so it won’t be displayed below the fold. @clorith noted that adding it to dashboard.php would ensure it is always shown first, just like the browsehappy one.
  • Those present during the meeting unanimously voted for the dashboard widget, instead of the admin notice. We thus decided to go with the alternative approach of the dashboard widget moving forward.
  • We decided to work on getting this into trunk for now, with the option of backporting it to the next minor release if there’s consensus later on.
  • The reshowing of the widget should not be included in the code for now, but could be part of the “database migration” code that gets run on updates. This lets us defer the decision of when to reshow.
  • The discussion then moved on to a ServeHappy API endpoint on wp.org that could be used to dynamically control the behavior of the dashboard widget.
  • @flixos90 has implemented a first version of the API endpoint following the details we’ve discussed, and it is already available right now: https://api.wordpress.org/core/serve-happy/1.0/?php_version=5.2
  • The information that is sent to the ServeHappy API endpoint (PHP version + indirectly IP address through server access logs) might have implications on GDPR compliance. We should raise this concern in the #gdpr-compliance channel.
  • We discussed how to let hosts provide upgrade information. A mechanism using constants or filters would be preferable to providing this through the API endpoint, as we’d want to decentralize this information and not maintain it ourselves.

Next week’s meeting

  • Next meeting will take place on Monday, February 26, 2018 at 16:00 UTC in #core-php.
  • Agenda: Discuss the new API endpoint.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summary

PHP Meeting Recap – January 22nd

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • The #design team has acknowledged our call for design help for servehappy and added a corresponding task in their Trello board. @jaymanpandya has stepped forward and was assigned this task.
  • We summarized again how we’re envisioning the site:
    • stand-alone design, as including it into the wordpress.org page design would reduce the impact and hinder proper optimization;
    • targeting site owners, with the option to make the content adapt to URL parameters for more precise targeting;
    • focused on easy consumption and avoiding overwhelm, with additional, more detailed content available as needed;
    • hosted on wordpress.org infrastructure and showing a small mention to the wordpress.org project;
    • not collecting usage data or feedback through the site, as that will likely get vetoed.
  • @jaymanpandya is an experienced UX designer and will work on a first set of mockups so that we can get a feel for how this might work as a real site.

Next week’s meeting

  • Next meeting will take place on Monday, January 29, 2018 at 16:00 UTC in #core-php.
  • Agenda: Discuss UX mockups and hosting situation.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy

Servehappy Roadmap

The group of people in the #core-php channel has been discussing and planning a project codenamed “servehappy” for some time now. We are at the point where we think that our plan has matured enough to present it to a bigger WordPress audience, in the hopes that we can get buy-in from more people to support or join our cause.

Goals

Primary Goal (long-term, indirect):

  • Reduce the number of WordPress installations running on an unsupported PHP version

Secondary Goals (short-term, direct):

  • Make WordPress site owners aware that they are running an unsupported version of PHP
  • Educate WordPress site owners about PHP and its versions
  • Provide WordPress site owners with tools and resources that enable them to update their site’s PHP version

The primary goal is what we’re aiming at. However, this is not something we can directly act upon. The secondary goals are the actionable elements that are in line with the primary goal.

We are confident that we can produce a definite positive impact on the primary goal through a concerted effort on these secondary goals.

Current State

A good overview of the current state can be found in the project repository’s README.md file.

 

Mockup of the ServeHappy page, showing collapsible sections of content.

ServeHappy page mockup
Click to enlarge

 

Through our regular weekly meetings we’ve made good progress on putting together the content for an informational page called “servehappy (in reference to the “browsehappy” page that helped get rid of legacy web browsers). The page should ideally be hosted on the wordpress.org infrastructure, similar to how the browsehappy page is stored.

 

Mockup of the WordPress admin dashboard, showing an admin notice warning about the PHP version.

Admin notice mockup
Click to enlarge

 

This page is meant to be linked to by admin notice(s) in the WordPress admin dashboard that will appear for people with unsupported PHP versions. Work on implementing these can start as soon as we have confirmation that the servehappy project should be further pursued.

 

Mockup of a plugin detail screen in the admin dashboard, showing a red "Cannot install" button and a link to the ServeHappy page.

Plugin requirements mockup
Click to enlarge

 

Finally, we want to work on enforcing plugin/theme PHP requirements as they can already be stated in the plugin/theme meta information. With time, this will provide developers with better control over their code base and incentivize site owners to keep up with the WordPress ecosystem’s evolution.

We’ve prepared a short overview document that details the core integrations and how they tie into the servehappy page.

As a side note, while working on the servehappy page content, we started collecting links to various resources that can be of use to people wanting to update their PHP version. These can be found in a separate servehappy-resources repository.

Project Progression

We intend to target only PHP 5.2.x initially, to not put too much pressure on the support channels of hosting providers. When a reasonable amount of time has passed and most of the initial updating effort has been completed, we can consider moving the needle up to PHP 5.3.x.

Provided that we have a clear roadmap, transparent communication and the patience to let site owners and hosters handle the updates in manageable intervals, this provides us with a tool to slowly catch up to PHP releases and reduce the currently growing gap between WordPress requirements and PHP versions.

Timeline

Here’s our current preliminary timeline:

Information Page on WP.org – Current Draft
– Trac ticket
1st Quarter 2018
Admin Notice in Dashboard – Trac ticket 2nd Quarter 2018
Minimum PHP Requirements Trac ticket 3rd Quarter 2018

Of course, these are only guesstimates. The actual development work involved makes this timeline easily possible, but what is time-consuming (and hard to predict) is the amount of discussions that are needed to find a concensus on all critical decisions.

Our Request

Before we invest more time into this project, we want to get a basic decision (in principle) about whether we should pursue or not.

  1. Is the servehappy project worthwhile and do we have a general buy-in from Core leadership?
  2. Can we make the servehappy project an official feature project?
  3. Information Page – Can this page be hosted on the wordpress.org infrastructure?
  4. Information Page – Who is responsible for the final editorial check?

To this end, we had the servehappy project added to the agenda of the upcoming devchat meeting on 10th Jan, 2018. This post was prepared to allow attendees of this meeting to get a quick overview of the project in preparation for the meeting.

#php, #roadmap, #servehappy

PHP Meeting Recap – January 8th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

The primary focus of this chat was strategizing about our opportunity on January 10th to discuss the servehappy project during the devchat. We discussed a potential roadmap with estimated timeline so that there’s specific information to offer at the devchat.

Decisions arrived at for rough ETA’s on Roadmap

  • 1st Quarter 2018 is target for servehappy page on wp.org
  • 2nd Quarter 2018 is target for core integration (admin notice etc). See Core integration doc recently published.
  • 3rd Quarter 2018 possible target for plugin requirements work.

Other discussion

  • README.md was updated on the servehappy repository. Pull requests are welcome for keeping it up to date and adding any missing info (such as PHP Compatability Checker mentioned during the meeting)
  • For admin notice initial work will be done in the trac ticket (and that will be the source for initial wire-framing/discussion) and then we’ll do a feature plugin (possibly WordPress/servehappy-admin-notice) for iterating on implementation and easier user/usability testing.
  • Some discussion around Tide and any potential impact on the servehappy project. General consensus is that Tide doesn’t block anything but communication should be kept open between the two teams to be aware of any overlap of documentation or user facing things between the two projects.
  • @schlessera will be preparing a blog post outlining a more detailed roadmap that will be published within two days, the intent being using it as a resource ahead of the general WP core dev-chat meeting.

Next Meeting

The next meeting will take place on Monday January 15, 16:00 UTC as always in #core-php.  The agenda will likely cover the results from servehappy presentation at the dev chat meeting and the next steps from that. See you next week!

#core-php, #php, #summary

PHP Meeting Recap – December 18th

This recap is a summary of our previous PHP meeting. It highlights the ideas and decisions which came up during that meeting, both as a means of documenting and to provide a quick overview for those who were unable to attend.

You can find this meeting’s chat log here.

Chat Summary

  • After asking for feedback last week, we got told that our weekly recaps are valuable to some readers, so we keep writing them. We removed the attendees’ list because it takes a substantial amount of time to complete, with little added value.
  • Due to the upcoming holidays, we are skipping the meetings for December 25nd and January 1st. Next meeting will be held on January 8th.
  • Regarding plugin testing, we reasserted that we’ll still recommend PHP Compatibility Checker for now, even though Tide (Team Home | GitHub) is on the horizon. As long as Tide is not open source and hasn’t been properly integrated into the WordPress ecosystem, it just isn’t a valid option.
  • As we’ve finished the content for the page, we are now discussing the overall strategy of moving forward with the project:
    • produce preliminary deliverables (site mockup, admin dialog mockup)
    • create/update (Meta) Trac ticket(s) to make sure we have a clear set of goals, a proper roadmap and a timeline
    • raise awareness through dev-chat meetings and news portals to get feedback and buy-in
  • Ask a precise question to get a precise answer: “Is that something worth pursuing within wordpress.org scope?”
  • We plan to discuss the project in dev-chat on January 10th. By then, we expect to have the deliverables ready.
  • Two tickets that currently track the progress: Trac 41191 (admin notice) and Meta Trac 2996 (external servehappy page).

Next week’s meeting

  • Next meeting will take place on Monday, January 8th, 2018 at 16:00 UTC in #core-php (Note: We are skipping two meetings because of Christmas and New Year’s Day).
  • Agenda: Discuss latest progress and our approach for the dev-chat meeting on January 10th.
  • If you have suggestions about this but cannot make the meeting, please leave a comment on this post so that we can take them into account.

#core-php, #php, #servehappy, #summary