10 Lessons from 10 Years of Contributing to WordPress Core

Photo of a WordCamp Europe 2015 Banner outside the venue

Today marks a special anniversary for me: It has been exactly 10 years since I received my first props for a contribution to WordPress Core. And it was just a day before that I actually worked on that first contribution.

You may know that I am a long-term WordPress Core contributor, having contributed ever since. To celebrate this 10-year milestone, I wanted to reflect on this journey and share the 10 most valuable lessons I learned along the way. But first, let me provide a bit of background about just how I started.

How I Started Contributing to WordPress Core

It all started at the WordCamp Europe 2015 Contributor Day, an event I still remember fondly as my favorite Contributor Day experience. The atmosphere was incredibly welcoming and productive, largely thanks to the fantastic guidance of Konstantin Obenland, who was the Release Lead for the upcoming WordPress 4.3 release.

While leading the Core table, he encouraged us to test the new Site Icon feature, which was nearly ready to be committed. I dove in with a few other contributors and started testing various scenarios. I managed to uncover a minor bug that only appeared when JavaScript was disabled in the browser. I worked on a patch to fix it, and a few days later, on June 29, 2015, the feature was committed to Core with my first props included.

That first small contribution was the starting point of my long and rewarding journey. After a few more months of occasional contributions, I began contributing heavily in early 2016, focusing on the Multisite component. Over time, my responsibilities increased, eventually running team meetings and becoming a component maintainer. In November 2016, just 17 months after I had started, I was honored to be named a WordPress Core committer. And little did I know, this would be just the first chapter of my ongoing journey as a WordPress Core contributor.

Becoming a long-term WordPress Core contributor is not an easy task. But in some ways, it’s not as hard as it seems. You may think you need to be an incredible coder, and you may feel imposter syndrome. But that’s just a small part. The most important skills are interpersonal skills such as communication, flexibility, perseverance. To celebrate 10 years of contributing, I’m going to share with you 10 things that helped me in my journey the most.

1. Communicate, and Communicate Well

As a good engineer, it is equally important to discuss and reason about code as it is to actually write the code. Proactively documenting what you’re doing goes a long way. Some examples:

  • If you raise an issue, provide details and include context, including why you think it is a valid issue.
  • If you open a pull request, use its description to explain at a high level the relevant technical choices you made in the code you wrote – unless it’s a typo fix of course.
  • Unless the code is trivial or you really want to write it just to test whether it works, discuss what you’re proposing first, e.g. in a ticket. Spending hours on writing code that may not get merged can be frustrating. Gathering feedback on your idea from other contributors first will go a long way in avoiding that experience.

Other than being able to discuss code, it’s equally important to ask questions. If you don’t understand the rationale behind a decision, kindly follow up on it. If you’re attending a Slack chat where someone shares something you are missing context on, inquire about it. Every question you ask and every answer you get will grow your understanding of the WordPress project – whether its overarching philosophies, strategic decisions, or deeply technical decisions.

2. Assume Good Intent

Another important aspect of communication that is worth highlighting separately is to be respectful. Be respectful of your fellow contributors, even if you feel they weren’t. If someone disagrees with you or even if a ticket you proposed is closed without an explanation (which should not happen, but it can), don’t get angry. Don’t get defensive. Don’t get arrogant. Remain kind, and follow up. The other person probably didn’t mean any harm.

Assuming good intent means to keep calm even when your initial reaction tells you not to. Sometimes, a reply that comes across as harsh may be the result of the other contributor lacking the time to reply, which is not necessarily an excuse. Other times, it may be the result of the other contributor being from another culture where communication norms are different to yours. In either scenario, the reply that came across as harsh most likely wasn’t meant to be harsh. If you feel yourself getting defensive or angry, maybe step away and come back later.

Another way to say this is don’t take things personally. Your proposals and code may be rejected, sometimes wrongfully. Either way, this is entirely specific to the problem that you’re trying to solve. It has nothing to do with you as a person or your quality as a developer.

3. Be Persistent, As Long As Appropriate

As I previously mentioned, sometimes another contributor may have feedback or propose something you disagree with. And sometimes, even though that’s not ideal, they don’t provide adequate context – we all make mistakes. If you have taken the time to introspect and ensure your disagreement is valid, make sure to follow up. Ask the other contributor to share more context, or lay out clearly why you disagree.

For example, it’s okay to reopen a ticket that you created when it’s closed but not resolved. Just keep in mind the previous points on communication and self-awareness.

Sometimes you may be overruled, or a discussion continues back and forth a few too many times with seemingly no noticeable progress. Sometimes us humans, we simply disagree, and that’s okay. Take a moment to think how strongly you think your point is correct. Sometimes, it’s right to keep pushing. Other times, it’s right to give in. Don’t keep pushing excessively. It’s important to know when to accept another person’s decision and move on, even when you disagree. Especially in situations where several other Core contributors disagree with your point, think twice. There may be something they understand that you don’t, or you may be proposing something that is not aligned with the WordPress philosophy. Simply remember, you can ask.

4. Pay Attention to Detail

The previous points primarily focused on communication and introspection. But now let’s talk a bit about code. I’m not going to talk about algorithms or code patterns though. Something that you can try to do, regardless of how experienced you are as a developer, is to pay attention to detail and go the extra mile. Your mindset should be to get it done right, not quickly.

Sloppy code doesn’t get committed to WordPress Core. Some of the important things to look out for is code style, comprehensive inline code documentation and doc blocks, as well as test coverage. Proactively making sure your code is safe, documented, and tested shows that you care and is a great signal of a promising new contributor.

Similar care is equally important when reviewing other people’s code. Point out when any of the above are lacking or inadequate. Think about edge cases the code may not be catering for yet. Ask questions if you’re unsure. Take the time to be a thorough reviewer.

5. Think at Scale

WordPress is not just used by millions of websites, it’s used by over a third of the web. I’m sure you already know that, but it’s crucial to remember that anytime you are thinking about technical solutions. Whenever you want to make a change in WordPress, consider the entire spectrum of WordPress sites. I already mentioned to think about edge cases, but here are some more examples for what to keep in mind:

  • WordPress can run anywhere – $1000 premium hosting or a Raspberry Pi. Be especially mindful of the lower end here.
  • WordPress can be used at any scale – a small business portfolio site with five pages, or a membership site with millions of user-generated posts from thousands of users. Be especially mindful of the higher end here.
  • Many WordPress sites do not use an object cache, many are on older technologies, such as outdated versions of PHP or MySQL.

Another important aspect of thinking at scale is the impact that WordPress has on the rest of the web. WordPress can influence the web to change. A new feature or API in WordPress could lead to other platforms or even browsers considering it. Use WordPress’s scale responsibly – it can be a lever for the web as a whole, but make sure you’re only proposing a new feature to be merged into WordPress Core once it is ready for its scale.

6. Increase Scope Gradually

When you first start contributing to WordPress Core, it’s natural to have big ideas and see opportunities for major improvements, even complete rewrites of certain APIs. However, if you’re new to the project, pushing for a massive change or a brand-new feature right away is often going to result in resistance and likely won’t succeed. Believe me, I’ve been there. This can feel frustrating, but it’s a natural part of how open-source communities function.

Established contributors need to “get to know you” first. They need to assess your expertise, your motivations, your communication style, and your willingness and availability to see complex ideas through to completion. This is simply a human element of collaboration. Your idea might be entirely valid, and you might be the perfect person to execute it. But others won’t know that until they’ve had the chance to work with you and observe your contributions over time.

This doesn’t mean your valuable ideas will be rejected outright, but you might encounter hesitation or caution. A better approach is to increase your scope gradually. Start with smaller, more contained contributions: Fix bugs, improve documentation, or address minor enhancements. This helps you build trust and credibility within the community. Furthermore, by contributing to less complex endeavors first, you’ll gain additional expertise and a deeper understanding of the intricacies of WordPress Core development. This experience will likely enable you to approach those more complex ideas later with even greater insight and a stronger ability to execute them successfully than you would have had when you were completely new.

7. Find Your Niche

While it’s a great starting point to contribute to any random issues you find or care about in the beginning, it’s incredibly valuable to eventually find your niche within WordPress Core. After some initial contributions, ideally you’ll discover an area that genuinely interests you and where you feel you can make a sustained impact. To give some personal context, for me that initial niche was Multisite, as mentioned earlier. I focused on it largely because I was working with a client with a large Multisite installation at the time and wanted to improve some quirks I was encountering in the foundation. For you, it might be any of the other dozens of WordPress Core components.

Perhaps it’s a component you frequently interact with in your own WordPress development work or hobby projects where you’ve identified opportunities for improvement. The more practical experience you have with a specific part of WordPress, the more likely you are to contribute valuable enhancements and fixes to it.

Finding your niche is also important because you simply cannot be an expert in everything. WordPress Core is vast, but there are many specialized areas where dedicated experts are needed, especially where original maintainers have moved on or reduced their contributions. However, at the end of the day, don’t solely define your niche based on perceived project needs. Define your niche based on what you truly care about and are passionate about. This will make your contributions more enjoyable and sustainable in the long run.

8. Be Helpful

Contributing to WordPress Core isn’t just about pushing your own agenda or implementing the features you want to see. A crucial part of being a valuable contributor is actively being helpful to others. Being proactive and offering assistance demonstrates that you are a team player and a great collaborator, deeply invested in the project’s success. It also shows that you’re willing to take on work that might not be the most exciting for you personally, but is essential for the community as a whole.

Here are some examples of such activities:

  • Make an effort to review other contributors’ tickets, discussing ideas and technical approaches beyond your own.
  • Provide constructive feedback on pull requests, even if they’re not in your immediate area of expertise.
  • Offer to run a bug scrub for a specific component, helping to triage and categorize issues.
  • Volunteer to write summary posts for recurring team meetings, keeping everyone informed.

These are just some ideas that will signal to other contributors that you are passionate, eager to work collaboratively, and not just in it for whatever you want to see added to WordPress Core. Being a helpful and supportive member of the community fosters a positive environment for everyone.

9. Adapt Well

A common descriptor for the ideal mindset of a WordPress Core contributor is “Strong opinions, loosely held.” This highlights the importance of having conviction in your ideas while remaining open to changing them based on new information or different perspectives. Especially when you’re a new contributor, it’s easy to fall into the trap of thinking, “This is so straightforward, why wasn’t it added to Core years ago?” Usually, if it hasn’t been, it’s simply not as straightforward as it appears. This often relates back to the earlier points about understanding the WordPress philosophy, paying attention to detail, and thinking at scale.

But even as you become a more established contributor, it will always remain crucial to adapt well. Approach different opinions with curiosity rather than adversity. Sometimes, additional learnings on your own end may genuinely change how you think about a technical approach. There will be times when you disagree with a decision that a majority of other contributors support. In these situations, it’s crucial to find the right balance: know when to keep pushing back if you genuinely believe in your stance, and when to acknowledge that this is not your decision alone, but a collective one that you should accept and move forward with for the good of the project. This goes back to the earlier point about being persistent as long as it’s appropriate. The flexibility and willingness to adapt are hallmarks of an effective and respected Core contributor.

A great post that goes into more depth on this point, even though being old, is Andrew Nacin’s “The qualities of a great WordPress contributor”.

10. Build Personal Relationships

While online collaboration is the backbone of WordPress Core development, building personal relationships with other contributors is incredibly valuable. This isn’t just for your personal growth as a contributor; it also significantly enhances the enjoyment and effectiveness of your contributions. The connections you make can enrich your journey in unexpected ways, and you may make new real-life friends.

Meeting other contributors at a WordCamp or similar event is an incredible experience. Go for a run together, have a beer, do a hacking session together – whatever is fun for your group. Whether it’s finally connecting in person with someone you’ve collaborated with online for months, or meeting a mentor you’ve looked up to since you started contributing, these face-to-face interactions foster a deeper sense of community. Hanging out, sharing meals, and catching up in person inevitably changes how people see you. Having met someone in person simply tends to change the dynamic, even in subsequent online interactions.

It may not always be feasible for every contributor to attend a WordCamp or other event to meet fellow contributors in person, and that is certainly unfortunate. However, the unique understanding forged through in-person interactions is something a purely online community simply cannot fully replicate. If you have the opportunity to participate in such an event, I strongly encourage you to take it. The bonds you form will make your contribution journey even more rewarding.


Looking Back and Moving Forward

This decade of contributing to WordPress has been a remarkable journey of both personal and professional growth. I can say with certainty that I am where I am today, in so many ways, thanks to contributing to WordPress Core. The lessons I’ve shared here are reflections of countless hours spent collaborating with other community contributors, solving complex problems, building powerful features, and helping to build the open web. Contributing to WordPress Core has taught me more than I could have ever imagined when I first uploaded that small patch back in 2015.

I hope that these reflections are helpful, whether you are a seasoned committer or someone who is just considering making their first contribution. A large open-source project, especially at the scale of WordPress, is an excellent way to work on something bigger than (very likely) anything one of us could come up with by ourselves. I remain as excited and motivated as ever to continue playing my part in its future.

What about you? If you’re a contributor, what are the biggest lessons you have learned on your journey? I’d love to read about your experiences in the comments below.


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *