Derek Herman has been chiefly responsible for building and managing Envato's WordPress-based publications for many years, including Tuts+, AppStorm, and FreelanceSwitch, and recently Market Blog and Studio Blog, collectively serving up WP goodness to up to ten million visits a month. We recently asked him to contribute to the WordPress Core on behalf of Envato and to share the experience.
For roughly a decade, I've been developing custom WordPress themes and plugins, and the majority of that time has been dedicated to one Envato project or another. Although I enjoy developing and ultimately overcoming the unique inherent challenges of complex custom WordPress themes, shifting my focus towards the WordPress Core for the first time was truly a refreshing and humbling experience.
Developing for the Core felt a lot like the early days at Envato as a junior developer and I was having to learn new skills almost daily. At the time, I was still pretty new to development and had predominantly focused on design. I worked mainly as a print and UI designer, that occasionally dabbled in building web sites. I learned HTML & CSS some years before my journey with Envato began, and that was only out of necessity so I could avoid hiring a developer for my client work.
Thankfully, I recognized my hidden developer potential and began feeding my insatiable appetite for all things front-end. I read books, entered competitions, took college elective courses, changed my major, built professional relationships, found client work, and generally did anything I could to learn how to turn a Photoshop file into a website.
When Collis and I started building the second version of PSDTuts back in August of 2008, I had no idea that I would end up specializing in WordPress. Or that a single freelance job would shape my career so dramatically. However, I must admit my development chops at that time were still in their infancy.
Each and every other Envato theme that followed was progressively more complicated and required learning at an extremely elevated pace. It was a trial by fire.
All we seemed to do for the next couple of years was see how far we could push WordPress. It was almost as if Collis recognized my limitations and asked for something that was just beyond, yet still close enough to reach as long as I pushed myself a little harder. I enjoyed the challenge immensely. We were both learning something new every time we built a website and it did seem like a long running inside joke, but ultimately it was the perfect recipe for success.
I ended up building dozens of custom themes for Envato sites and dozens more for clients, and I honestly thought I had reached my full potential as a WordPress developer. I couldn't have been more wrong.
It's funny, contributing to the Core was kind of like the final exam of my WordPress education. The main difference is that this exam would not be over in a couple hours. It may very well end up taking me years to master and hopefully pass.
When Collis contacted me about contributing to the WordPress Core on behalf of Envato, I was excited. I mean, who wouldn't want to be sponsored to do something like that? It was such an amazing opportunity. Looking back though, I believe that excitement was for all the wrong reasons.
Except for a small ticket a few years ago, I had not properly contributed to the Core and thus didn't fully understand the depth of my ignorance. I figured it would be a walk in the park. That was a big mistake.
Even though I had already built some seriously complex themes and plugins, I discovered that I had miles to go as a WordPress developer. You cannot fully appreciate how little you know until it's staring you directly in the face in the form of hundreds of open tickets.
It was discouraging to see all the things I couldn't fix. Also, the steep learning curve to getting setup so that I could contribute meaningful patches back to the WordPress Core was initially overwhelming.
In order to work on the Core you need to be familiar with build tools such as SVN or Git, npm, Grunt, and Sass, for example. But to really make a difference as a developer you need to learn about PHPUnit. This was the point I discovered that I didn't know as much as I thought I did.
Testing units of code just wasn't one of the things I had been introduced to yet, so the concept was still foreign to me. That unknown divide made getting setup to write unit tests feel like a chore, and is what caused my initial missteps.
If I had known about a simpler way of getting my system prepared for contributing, things may have started off with a little less stress. It wasn't until after updating my system, and manually installing PHPUnit and a few other requirements, that I learned about Varying Vagrant Vagrants or VVV for short.
If you decide you want to contribute to the WordPress Core, I strongly suggest you make VVV your first stop, followed by reading the entire Make WordPress Core Handbook, then creating a WordPress Slack account, and finally subscribing to the WordPress Trac mailing list, AKA the firehose.
What I actually did was attempt to fix a patch before reading the entire Handbook and properly setting up my Mac. I was eager to get started and just didn't prepare. I dove straight in. Thankfully, that approach only lasted a couple days before I realized my mistake. I couldn't test my patches, which meant I didn't know if they would have backwards compatibility issues or add a new regression.
It was laughable to think that I've been coding without unit tests for this long. It made me feel like a junior developer again! Once I installed PHPUnit and learned how easy it is to create unit tests, those feelings drifted away. They ended up not being the mysterious concept I thought they were.
Generally speaking, unit tests are fairly simple to write if you understand the bug you're trying to fix. They are just PHP after all. Once I was actually set up and prepared to write patches, with unit tests, a whole new world opened up. That list of open tickets didn't seem so discouraging anymore, and I could contribute with added confidence and understanding of the entire process. Well, at least that's what I thought.
It's not about you. It's about WordPress. That's the most important part of contributing that I hadn't learned yet.
When I started creating patches, I was making it about me. What I wanted to see in WordPress.
Once I understood the goals of the project, I started to make better contributions and had a dozen or so changesets in less than a month. I found it easier just to be helpful and fix small issues at first. For me, it was UI related tickets. Once I felt more comfortable, I started trying to tackle bigger tickets that dealt with things like build tools and permalinks. I even went after some really old bugs. I tried to think about tickets in terms of how they would benefit the entire WordPress community and not follow my own personal agenda.
There's certainly been bumps along the way and I've made some mistakes and been called out on them. But it doesn't deter me from the bigger picture, which is making WordPress better.
Those that decide to contribute should understand that the people that came before us have a great deal of experience working inside the Core and you should try and learn from them.
Regardless of how much of an amazing developer you think you are, there is someone that knows more than you. Listen to their advice and don't take it personally when someone disagrees with you. There are so many different ways to tackle these problems, but the important part is that you're trying to solve them.
For those of you interested in pushing the boundaries of your WordPress knowledge, try your hand at contributing to the WordPress Core. At the very least you'll learn some best practices. However, you might just discover how much you have to gain as a developer, which is worth much more than money.
There are so many ways to contribute that your current skill level is irrelevant. You can still be helpful. There is much more to the WordPress Core than code alone. Contributing could mean Trac pruning, documentation, blog posts, translations, or simply testing patches for consistency across browsers and so much more. There is certainly no shortage of work that needs to be done.
In reality, there is a shortage of contributors. Not enough so that WordPress doesn't move forward, but if more people contributed even a couple hours of their time a week things would certainly progress faster.
If you want to become a better developer, I recommend you consider making a contribution. I know I'll be continuing to push my own limits and submitting patches for the foreseeable future. It's just too much fun and too important for me to stop now.
I wish to thank Envato for sponsoring my time and allowing me to focus on the Core without any other distractions. It has been a truly eye-opening experience and one that may very well shape the next decade of my career.
By Derek Herman.