I have a relatively good memory for dates, so I noticed that it was exactly today three years ago that I joined the WordPress community. While I have drastically failed in blogging more over the past year (and I guess I intend to continue that “streak”), I thought it would be a good time for a recap of what happened in the past year since I wrote my last such recap.
Regarding the title of this post, “Porque tres?”, you might wonder. I know, WordCamp Europe this year was in Belgrade, Serbia – but I don’t speak any Serbian, and instead I’m actually in Seville, Spain right now, practicing my Spanish (lo que he aprendido desde hace dos meses) and working from here for the next three weeks.
Another reason I am here is that I love the old town here, and in two weeks there will be WordCamp Sevilla at which I’m speaking. Oh, and do you remember? Seville was also the very city where it all started for me: Earlier today, I walked by the Hotel Barcelo Renacimiento and got a little nostalgic. This is where I met the WordPress community, at WordCamp Europe 2015.
But now, let’s drop the nostalgia and get into some WordPress recap mood though!
The “Servehappy” Project
So after WordCamp Europe last year in Paris, a major project I started together with Alain Schlesser was the “Servehappy” feature project for WordPress core. Its goal is to increase the adoption of modern and supported PHP versions on the web, by means of educating non-technical site owners of the topic and explaining them how to update their version accordingly. It has been a challenge moving this forward, particularly in terms of breaking this technical topic down so that non-technical people understand the importance of it and see an incentive to take on the hassle of updating – because updating the PHP version of your server is, unfortunately, quite a bit more complicated than updating the WordPress version of your website in most cases. However, we quickly got buy-in by the project leadership and have since collaborated with several teams who have helped us a great deal.
One of the most critical parts of the initiative was creating a support page on wordpress.org, that WordPress core will link to in case it discovers an issue with the PHP version. It is mostly this page, its content and design, which will determine whether the project will reach its goal. The WordPress marketing team helped us a great deal, getting the initial copy we had written up polished. As of now, the page is already live – however, it is currently mostly a wall of text. We had a very productive discussion just about a week ago at WordCamp Europe 2018, and both the marketing team and the design team will focus on making the text more precise and better guiding the visitor through the content, plus visually enhancing it. Speaking of the design team, they have already done a great job helping us with implementing a notice in WordPress core that will be shown to site owners when they run a version of PHP which is no longer supported. This part has already been merged into trunk.
The first iteration of the project is now to finalize the support page, and improve WordPress core to make the process of updating the PHP version as seamless as possible. We currently estimate all of this being part of WordPress 5.0. We have also been working on preventing plugin and theme updates if the respective plugin or theme requires a higher PHP version than what is currently being used. This gives an even more immediate benefit to site owners to upgrade (read more about where this is currently at in our latest weekly recap post). While we consider this part not critical for the first iteration, it might as well become part of WordPress 5.0 if it gets ready in time.
Oh, and one more thing, the term “Servehappy” is just an internal name for the project. Just like “Gutenberg”, it will most likely disappear at some point or at least never be exposed publicly to the user.
At WordCamp US 2017, we published the multisite roadmap for the near future, with more than a year of discussions going into that document. If you’re interested, you can learn much more about our efforts there. A really nice outcome of this roadmap is that our main focus for now is simply writing code. We have spent a lot of time figuring this out, and because of that, at this point only few discussions are needed. We already managed to get the new feature of supporting metadata for sites merged into trunk, which will allow developers to easily extend this data, both internally and soon also in the REST API. We plan to have this and also most of the other improvements part of the roadmap to be part of WordPress 5.0.
I’m much looking forward to where we can take multisite, particularly I’m even more excited for the user-facing improvements we can work on once this foundation is set. I have a dream, of multisite no longer being that scary thing that is hidden somewhere, and I hope at some point it will be just as easy to manage as the rest of WordPress. And once we reach that point, we should also no longer require the user to edit
wp-config.php in order to set it up. If you’re one of the multisite haters, don’t worry – I do probably understand why you currently hate it, and what I just talked about is way down the road. But I’m positive that we will get there.
Better extensibility of the REST API
A project that has been a long time coming is making the extension of existing REST API endpoints easier. WordPress core content types are typically extended by using metadata, however so far it has been a hassle making this metadata available in the REST API. While a function
register_rest_field() has been around for quite some time, it is not tied to metadata, thus requiring the user to write extra callback functions. Don’t get me wrong, we need this function, especially for more advanced cases of extension – but it is too complicated when you simply want your metadata field to be readable and editable through the REST API.
You might already know that there is already a function in WordPress core to register metadata for the REST API, called
register_meta(). It has supported the REST API already since WordPress 4.6, however it so far has had the significant problem that it only has allowed metadata registration for an entire WordPress object type, i.e. all posts (of all post types) or all terms (of all taxonomies). While it is perfectly fine for users and comments, posts and terms are object types used in a much broader scope, with custom metadata usually only applying to a single subtype (a post type in case of posts, a taxonomy in case of terms). The original commit already included support for subtypes, however due to time pressure for the release of WordPress 4.6 back then and it not being clear whether this is the right approach, subtype support was removed again before the release.
I had opened a ticket shortly after the 4.6 release to continue the previous efforts in figuring out how to add subtype support to
register_meta(), and it took a lot of discussion to move forward. However we have been very busy especially since the end of last year getting this actually done, and I’m very proud to announce that this more-than-2-year project has now been completed, as of just a few days ago. A special thanks to K. Adam White for pushing this forward.
This is just a short segment: I have to say that I am proud of what we have accomplished in the past year regarding documenting what we have been working on. We have been publishing recaps every week for the outcome of each PHP team meeting which has made it very easy for everyone interested to stay up-to-date. With the multisite team, we managed to do the same thing while working on our roadmap, with the roadmap itself being a great step in that regard. We have since then stopped posting weekly multisite recaps, but that is only because we didn’t consider them important anymore as progress at this point is only related to writing code. The idea is that we will at this point only publish posts for bigger updates, such as dev notes for new features or other important changes. This is the same approach we used for the work on
register_meta() – keep everyone up-to-date with all the important decisions made so that they can chime in as necessary, while keeping the maintenance burden as little as possible.
A big thing for me personally was joining team Yoast earlier this year. Having always been a freelancer, it had been a long time unimaginable for me giving that up, but Yoast is one of the most respected companies in the WordPress space and an outstanding employer, and I really appreciate how much effort they put in also giving back to open-source. I’m also very much in line with their entire company philosophy and agenda, so eventually I was very happy to join them part-time. Part-time because, like I said, I had never worked for a company before, and I kind of wanted to dive in slowly. So far it has been an amazing experience though.
I’ve been working on their plugin (mostly multisite issues so far, of course), and I have had a lot more time contributing to WordPress core because of them partly sponsoring me. Their team is great, and I particularly like that they are still mostly a company with a local office. While that brings its own challenges in terms of integrating the remote people, I love being able to drive over to their offices once in a while (they’re only about 2 hours away from where I live) and working from there. Being there in person hanging out with everyone is great, and also often feels much more productive than the endless Slack conversations I’m used to as a remote worker.
In 2017, I participated in 8 WordCamps, all located in Europe or the US. I spoke at three of them. Particularly interesting for me was to be part of Camp Press (a wonderful retreat-only event hosted by Mendel that I participated in in fall), and a few local American WordCamps after only having attended European WordCamps (or the big WordCamp US) before. They certainly have a different vibe I felt: They appeared to focus a bit more on business and less on the contributing part of the project, on the other hand I think the quality of sessions has on average been a little better. Overall, I enjoyed them, with my favorite being WordCamp Seattle, which I plan to attend again this year. It was also a great experience speaking at WordCamp US 2017, sharing my story about how I started contributing to core with the goal of making that easier for other people. While I had given a workshop at WordCamp Europe 2017, this was my first time actually speaking at one of these bigger events.
2018 started off with a ton of events. Most importantly for me, I felt honored to have been selected as a speaker for LoopConf, my first non-WordCamp conference. I gave a talk about the complexities of multisite organization, particularly in regards to multinetwork and global administration. This was a great experience, and I received a lot of positive feedback. Generally, the quality of sessions at this event was just outstanding. I hardly managed to talk to people during the day – I tried, but pretty much every time I wanted to, the next session once again sounded to good to skip it. By the way, I really want to attend more non-WordCamp conferences. Hopefully, soon even a non-WordPress conference – broadening your horizon is always a good thing. Since I had to travel back to the US for LoopConf, I also attended WordCamp Phoenix and WordCamp Miami while I was already there, two of the biggest local WordCamps around the globe. In Europe, so far I was part of WordCamp Noord-Nederland, a very local event, which I enjoyed very much for that especially. I also attended WordCamp London and the very first WordCamp Retreat in the small town Soltau, Germany. Being just 4 hours away by car, that was an easy decision for me – and I have to say I definitely would not wanna have missed it. I enjoyed the whole concept of combining a WordCamp with a retreat, I often told folks since that I considered it a mixture between a WordCamp and Camp Press. I’m really looking forward to where this concept is going and I hope I’ll be able to attend the next one. Very special for me was also having my sister accompany me to her first WordCamp. After I had nagged her for several months that she should just go there with me because I know she’d love it (with her working in social media, it’s also a great fit), she finally did – and I’m really happy to say I was right in my assumption. Just after WordCamp Retreat, she booked her flight and ticket for WordCamp Europe, and eventually even became a volunteer and part of the social media team of the event. She now feels exactly like I did after having had attended my first WordCamp: “Why didn’t I do this sooner?”
This year, so far I have spoken at 6 events (at WordCamp Noord-Nederland even with two sessions), plus one more already scheduled with WordCamp Sevilla, so I have already doubled the speaking engagements I had in all of the year before. The number of events I’ll be attending throughout the rest of the year will also remain somewhere in that region, I’m currently estimating a total between 12 and 15 events.
Having travelled more than in the years before, last but not least I’d like to highlight my ongoing fun Twitter thread about me running around the world. Obviously not continuously, but being a fan of Forrest Gump, and having done a big trip through the US in fall 2017, I liked this idea. After I had returned back home, I didn’t feel that it should have stopped there though. So I continued to post an ugly exhausted selfie of me running once for every location that I travel to, and I will continue to do so indefinitely. It also ties in really well with my efforts to get into a better physical shape, which for 2018 and beyond, I finally put very high on my priority list so that I actually did work on it. It feels good being healthy, and I have made a ton of progress in the first half of the year already.
WordCamp Europe 2018
Of course, my annual recap could not be called that without talking about WordCamp Europe! My fourth year joining this event, I travelled to Serbia together with the Yoast crew. I had never been to Eastern Europe before, and I have to say, I terribly regret it that I never did. Everyone was very friendly there, and the WordCamp itself was outstanding as well!
I would say that this has been my favorite WordCamp Europe so far. I had many very good and productive conversations, regarding both WordPress core efforts and other projects (I was particularly impressed by Morten’s progressive starter theme). I received very positive feedback for my session about the WordPress Capabilities API, which I was very happy to hear. I was even approached by someone who asked me to give such a session at another specific WordCamp. Having had given the session twice before in just a slightly modified way, I felt like this was definitely the most polished variant of it.
It was also great to catch up with everyone, and as always at those big WordCamps, I particularly spent time with those I don’t see as often, like from the other sides of the world. Of course a few of us also went for a run together one morning.
Not only for me personally, I would say this was the best WordCamp Europe, the organizing team did an amazing job. The venue was perfect: Being very large, you had to make quite some ways to get from one place to the other, but on the flipside it meant there was a lot of space for special activities, contributing, sponsors and people to just chat or even have a quiet timeout somewhere. I would like to especially highlight the great design and all the small details that the organizers considered when getting the venue ready for the WordCamp.
The only downside of the entire event was the contributor day for me. Don’t get me wrong, pretty much everything there was perfect too, however the WiFi barely worked which made it almost impossible to get a lot of progress leading the core team, which I did together with Anthony Burchell this year. It would have been okay if I could instead have had good in-person discussions to move other efforts forward, but in terms of getting new contributors set up and motivated, this was just a pain. At least I still did engage in a few of those very productive conversations during the day (the most important one for me being a last chat regarding the aforementioned
Back to the great things, the after-party was a complete blast! For the first time, it had a live band who really succeeded a great deal in entertaining everyone with popular cover songs. It was the best after-party of any WordCamp I have attended so far, and having talked to several other folks about that, I know I am not the only one saying that now each big WordCamp will need to have such a band in order to be able to keep up with that.
I’m excited for the future