It's now 2013, and the WordPress 3.6 development cycle is about to begin. Whenever I talk with other developers about contributing to the WordPress software itself, I often find their impression is that it's difficult to get involved. It's actually not as difficult as it might seem, but things are always easy when you know how. So let's dive in and try and make this easy for everyone.

Pro Tip: For clarity, when we talk about contributing to the WordPress software itself, we call it "WordPress core", or simply "core". That's to distinguish from contributing to the WordPress project in other ways besides code for WordPress itself.

Here I'll be briefly covering the steps I used to approach contributing to core.

Getting Involved

As someone who develops for WordPress, I wanted to give back and help develop WordPress itself. So why didn't I do so sooner? Even though I know HTML, CSS, JavaScript, and PHP already (which are the languages involved in WordPress development), I didn't know what the process was.

Assuming you're already able to develop for WordPress, and are comfortable with those languages too, the main thing you need for contributing to core is knowing the process.

"What things are the WordPress development team wanting to get done?"

"What are their priorities?"

"What tasks suit my skills / experience best?"

"How do I actually get my code in there?"

"I normally develop just for myself or my team, what if my code isn't up to scratch for WordPress?"

These are all questions we probably ask ourselves before getting involved. They all have answers! The trick is to start by getting involved.

"What things are the WordPress development team wanting to get done?"

Some people will suggest you start by jumping on Trac and seeing what tickets are there. This is incredibly daunting, as there are a lot of tickets, even just the ones assigned to the next major release!

I would suggest you start by checking out make.wordpress.org/core. You can get an idea for where things are at there, and more importantly, there's useful information in the sidebar. You can see links to the handbook, written specifically to cover how to contribute to core, the project schedule, and the IRC chat logs and details.

I definitely recommend you jump on IRC and attend the WordPress Dev Chat that happens every week. There's no pressure for you to participate, in fact in a lot of cases unless an opinion is specifically asked for and you have something to add, observation is best. I spent quite a number of weeks observing these meetings before I contributed to the discussion, but it helped me get a good feeling for the current status of things, and also who everyone else was and how they were involved.

"What are their priorities?"

Once you have a good feel for what's going on through IRC, Trac will make more sense. You'll understand where the project is at, you'll know who's replying to tickets on Trac, and you'll probably know particular tickets on Trac that need attention.

Sometimes you may come to contribute to WordPress core because of a particular need or feature you believe should be added in to WordPress itself. The best thing to do in this case, is to create a ticket in Trac, and see what response it gets. If there's no response for a while, try pinging one of the core developers and asking if they can give it a look, and if there's any more info you should provide on the ticket.

You should also be ready to wait. After spending some time on IRC and looking over the project schedule, you should have a good idea of whether your ticket is in line with the current focus or not. If it's not, it may need to wait. Also, it may simply not be something that is appropriate for core. In that case, you may want to start a plugin to add that feature instead.

"What tasks suit my skills / experience best?"

Deciding where to jump in and contribute is really up to you. You can just find a ticket, post a patch, and wait for feedback, or you could contact the developer who owns the ticket, let them know your skills, and ask them to point you at something. Either way is a perfectly legitimate way to go.

It can also be beneficial to test patches submitted by others. So if you're not confident creating a patch for WordPress, you may actually find that applying someone else's patch and taking it from there is easier.

"How do I actually get my code in there?"

If creating a patch, or applying other people's, is something you haven't done before or have forgotten how to do, the Trac front page links to two great resources that I'll also link here:

Even though they refer to Mark's toolbox as "unix", don't forget that Mac OS X is unix-based, so the toolbox actually works for both Unix and Macs. The commands he mentions are run from the command-line, or Terminal app on Mac.

"I normally develop just for myself or my team, what if my code isn't up to scratch for WordPress?"

Some of the developers I've spoken to about contributing mentioned that, while they're good developers and build great solutions for their clients on WordPress, they felt like developing for core required some higher level of code-fu. Well, perhaps certain parts do, but there's a lot that doesn't.

So what about if you want to submit some code that works, but you're not sure if it's best practice, or you feel like perhaps there's a better way and you don't want to look silly?

Whatever you submit, it's going to be reviewed before it gets rolled into WordPress, so you needn't worry that if you write some imperfect code it's going to be distributed to millions of websites. You also needn't worry about looking silly, because we're all aware that there are different levels of developers, and it's really the fact you're trying to help improve WordPress that matters. You can learn a lot from the feedback you might get too!

Conclusion

Getting involved in contributing to WordPress core is a very worthwhile exercise. It may seem daunting, but once you sit down and start, you'll find it's actually not so difficult, and it can even be a little addictive knowing that you're helping work on a system that powers so many websites. I've learnt a lot from contributing, so even if you feel like it's perhaps a little beyond you, give it a shot and you might find actually doing it helps get you up to speed.

So when should you do it? Why not now? The next developer chat is on Wednesday at 9pm UTC, and Mark Jaquith will be getting the 3.6 development cycle underway. The proposed theme is "Content Editing", so he's asked core contributors to start thinking about editing, editorial workflows, revisions, autosave, distraction free writing, etc.

Let me know about your experiences contributing to WordPress core in the comments below.

See you in #wordpress-dev on IRC shortly!