Our weekly team updates
This week Sergey merged a PR that Ari created and worked on for a while, Carolina is back from her time off – while Justin is enjoying some rest – and Francesca enjoyed an in-person event. The team is getting ready for the final quarter of 2021, a thought that is exciting and puzzling at the same time: where did the year go?!
I continued working on the Webfonts API proposal. This week I finished the implementation and submitted a patch (see pull-request #1573 for more details). This first version of an API provides the base for future iterations, and although it does not include everything I initially had in mind, it is a solid foundation for future iterations and implementations.
For the past couple of months, my primary focus was the “Update the Updater” project. As a result, I was unable to closely follow developments on Gutenberg. But, this week, I started getting back to it. Development there is happening at a very fast pace, so there was a lot of catching up to do. Still, I managed to find an issue that made it impossible for me to add an existing navigation menu to the navigation block and submitted a patch in #34837.
I looked again at the WPLANG issue reported in #50980. I’m starting to believe this is unsolvable with the current structure we have for locales. Any change we make has the potential to break a lot of 3rd-party plugins. It’s possible to fix it for single-sites, but then multisite breaks, and we don’t want that. I’m unsure how to proceed on this front. The issue is a nightmare to fix because of decisions made a decade ago.
I continued working on an admin UI for plugin dependencies. I addressed some feedback on the ticket and refactored some code according to that feedback. The implementation works. However, we need to have some more discussion in WordPress Core to figure out the best way to move forward.
I finally finished the “SEO Copyrighting” lesson at Yoast Academy. It was a pretty long session that took a lot of time to complete, but it was worth it. I now feel more confident about writing content and have a better understanding of how to structure a post. It covered things I never considered before, from storytelling and ways to engage an audience to SEO best practices for the content.
I am back from vacation, and I spent most of Monday catching up on what I missed and replying to messages and emails. Last week, I did cheat a bit and helped proofread the call for testing from the FSE outreach program: FSE Program Exploration: Help with the future of Block Theme Switching and participated in the hallway hangout. Anne McCarthy, Marcus Kazmierczak, and David Smith are hosting another open hallway hangout about adoption pathways for full site editing on Thursday 16th of September at 18:00 CET.
Gutenberg and Core
For Gutenberg, I have followed up on two of my older pull requests, and I have done several pull request reviews. I am now looking for smaller issues that I can solve without getting stuck to ease myself into working with Gutenberg again. I plan to do the same and get familiar with the open issues in the WordPress 5.9 milestone to see where I can help and where my time is best spent.
I have worked on minor improvements for the Theme Check plugin, making error reports easier to understand. This involves testing and also reaching out to theme authors about the changes. I added a new check for image sizes. The plugin now warns if the theme has images larger than 500Kb, and reminds theme authors to compress their images. On the topic of Theme Check, I still hope to be able to add tests. I got stuck on bootstrapping WordPress so that the checks that use WordPress functions can be tested, and I have not worked on it this week.
I have also participated in a discussion about updating texts for some of the theme requirements. Updating or explaining the complex requirements is a follow-up from the feedback the team received in the call with theme authors in July.
This week I have completed a video course about PHP performance optimization.
Last week I had the pleasure to attend Freelancecamp in person for the second time this year. The dates are more or less inspired by the school year dates: in June, end of year party, in September, welcome back party. The event welcomed more than 110 people from across Italy for two days of knowledge exchange. Yoast is now a regular sponsor, and our colleague Laura gave a talk about how to leverage our plugin.
Enrico came with us as well, and it was a great addition to the on-site team. We combined our knowledge to give information about a wide range of topics, from WordPress to our products to general SEO advice. People were also keen to discuss Duplicate Post with him: from the tech behind the plugin itself to the acquisition process. Now that in-person events can happen in Italy, I am actively looking for more occasions to meet with people and talk about WordPress and Yoast.
Lately, I have not been working much on Core itself, but I have started thinking about allocation of the team for the final quarter of 2021 (how? how are we on Q4? Help!). I had a call with Josepha Haden-Chomphosy, the project executive director, to reconnect after the summer and see how the Yoast team can help. WordPress 5.9 will focus mainly on Full Site Editing, but other areas of Core can use our expertise.
Last week I continued looking into some early tickets for WordPress 5.9, as part of my duties as a Core Committer. I made twenty commits to WordPress core, mostly various bug fixes and enhancements. I also triaged new tickets incoming into Trac (the bug tracking system that WordPress uses).
Safer plugin and theme updates
One notable change that I recently merged is Ari’s PR for сreating a temporary backup of plugins and themes before updating. This aims to make the update process more reliable and ensures that if a plugin or theme update fails, the previous version can be safely restored.
- When updating a plugin or theme, the old version is moved to a temporary backup directory:
- If the update fails, then the temporary backup kept in the
upgrade/temp-backupdirectory is restored to its original location.
- If the update succeeds, the temporary backup is deleted.
To further help troubleshoot plugin and theme updates, the Site Health screen has now two new checks:
- A check to make sure that the
temp-backupdirectory is writable.
- A check that there is enough disk space available to safely perform updates
Intl is a recommended PHP extension
Another notable recent change is that WordPress now recommends to install the Intl PHP extension.
Why is the PHP Intl extension important?
WordPress is a global, international software with support for a multitude of languages and with infinite combinations. Approximately half of the installations are in a language that is not the default (English), which leads us to think about localization, transliteration, encoding conversions, calendar operations, collation, etc. In short, everything you have with the different languages and formats that are around the planet. And this is what the PHP Intl extension provides.
What do we as the WordPress Community gain from this extension?
This extension provides a lot of functions for better internationalization support, including but not limited to:
- collator_compare() to compare Unicode text strings
- numfmt_format() to format a number according to the selected locale
- the normalization of characters
- the formatting of messages
- getting the first day of the week according to the locale.
In addition to functionality and ease of development, the extension can also help improve security, with classes like Spoofchecker that can tell you if ‘google.com’, ‘goog1e.com’ can confuse the user, or functions related to Internet domains, both to convert an IDN domain to text and text to IDN.
Hosting Team Recommendation
Taking into account that WordPress continues to grow, the Hosting Team has considered a good recommendation, but not an obligation, for all hosts that work with WordPress to offer this extension, by default, to all users. For reference, check: Why hosters should install the PHP-intl extension.
I ran mission control for the WordPress 5.8.1 security and maintenance release. It features 60 bug fixes in addition to 3 security fixes. Because this is a security release, WordPress recommends updating immediately. The people working on the release also updated all versions since WordPress 5.4.
The release party was initially planned for just a few hours, but went well into the night and took about 12 hours due to a large number of editor packages to be published and some last-minute bugs discovered.