Contributing to WP-CLI

Drawing of female freelancer sitting in front of their laptopDoes WP-CLI save you effort and time while working on the sites you manage?
Do you use WP-CLI to automate your infrastructure or deployments?
Do you feel positive about the WP-CLI project and its mission?
This guide will tell you about the many possibilities you have to get involved and play a role in this official WordPress team.

Introduction

First of all, thank you very much! If you’ve read this far, it must mean you are taking the initiative to contribute to WP-CLI. It’s because of you, and the community around you, that WP-CLI is such a great project. It not only makes for a fabulous tool people can use in a reliable manner, it also makes for a fun and rewarding project to collaborate on.
Contributing can take many forms, and we will discuss the most prominent ones. Before we start, though, here’s a list of what contributing is not:
  • Contributing is not limited to code.
  • Contributing does not require committing to a specific amount of time.
  • Contributing does not require expert knowledge in any of the areas it touches.
Drawing of a man hanging from a rope to work on a computer.We encourage you to contribute in the way that best fits your interests and abilities. If at any point, you’re not sure how to proceed with whatever you are doing or feel you’re in over your head, help & support is just a chat message away! Please don’t hesitate at any point to just ask questions or let us know about the issue you’re facing.
Also, please do know that there are no expectations you need to fulfill or requirements you need to meet. This is meant to be an enjoyable, collaborative experience. So make sure you don’t put pressure on yourself and rectify your course of action if you feel that you’re not actually enjoying it anymore.
Now, with that clarification out of the way, let’s try to cover some of the most common ways of contributing to WP-CLI.

Spreading the message

Drawing of a woman watering plants that look like social media network logos.Not everyone knows about WP-CLI or how it can help improve how you interact with a WordPress site.
There are multiple ways of how you can help spread the message about WP-CLI:
  • Post clever uses as tips to social media (tagging @wpcli on Twitter is always appreciated).
  • Submit conference talks about usage and best practices.
  • Publish tutorials on your blog.
  • Give a demo at your local meetup.
Note: You can request free stickers to distribute at events → read about the requirements.

Supporting users

Drawing of a typing indicator in a chat system.A great way to learn more about WP-CLI yourself and to help other people make progress is to jump into one of the support channels and try to answer questions other people have posted. Doing the detective’s work, understanding how the moving pieces work and finally getting to the bottom of a user’s problem can be very rewarding, and you learn all kinds of internal details along the way.
There are three main avenues where people can request support:
Any open issue/question/thread you can find in these locations are open for anyone to contribute an answer or to ask further questions to help diagnose the issue.

Improving documentation

Drawing of a woman filing notes.Is documentation your strength? Take a look at the currently open documentation issues and see if you can tackle any of those, or create a new issue if you’ve read through the documentation and found it lacking in a specific area.
There are a couple different types of documentation currently part of WP-CLI:
  • Documentation for individual WP-CLI commands (anything underneath developer.wordpress.org/commands) is contained in the PHPDoc for each command. This means that to edit the documentation for a command, you will need to edit the file that actually provides the functionality for that command. The web documentation is generated from these files at the time of release, so you may not see your changes until the next release.
  • Individual documentation pages (anything under make.wordpress.org/cli/handbook) can be edited by contributing to the handbook repository on GitHub. You don’t necessarily need to navigate the Github repo though; any page that is part of this repository will have an Edit link in the top right of the page which will take you to the corresponding file on GitHub. Just clicking on that link brings you to a live editor which will generate a pull request out of your changes.

Localization

Drawing of multiple windows showing the same basic content.WP-CLI is in a special position when it comes to localization. Its main output is not supposed to be localized, as it is used for scripting purposes. If your scripts depend on a given string to be printed to the console, translating that string into a different language will, of course, break these scripts.
What should be translated, though, is the different types of documentation we have. Unfortunately, we are currently lacking the infrastructure support on make.wordpress.org/cli to properly support translated versions of the handbook or command reference.
What can be translated right now and is open for contributors is the README file shown as the frontpage on wp-cli.org. The different language versions can be found in subfolders in the wp-cli/wp-cli.github.com repository. Please use the English source version as the reference source, as it is the only one to be guaranteed to be up-to-date at any time.

Reporting security issues

Drawing of a man manipulating a security shield.Don’t publicly disclose a security issue you’ve just found!
The WP-CLI team and the WordPress community take security bugs seriously. We appreciate your efforts to responsibly disclose your findings and will make every effort to acknowledge your contributions.
To report a security issue in a responsible way, please visit the WordPress HackerOne program. You will be able to submit details about the security vulnerability in a confidential way, to avoid malicious users immediately exploiting the vulnerability on live sites. You will be contacted by the WordPress security team about next steps as soon as possible.

Reporting a bug

Drawing of a computer screen showing an alert.Think you’ve found a bug? We’d love for you to help us get it fixed.
Before you create a new issue, you should search existing issues (*) to see if there’s an existing resolution to it, or if it’s already been fixed in a newer version of WP-CLI. You should also check our documentation on common issues and their fixes.
Once you’ve done a bit of searching and discovered there isn’t an open or fixed issue for your bug, please follow our guidelines for submitting a bug report to make sure it gets addressed in a timely manner.

Requesting a new feature

Drawing of a man rearranging post-its on a whiteboard.To request a new feature, please create a new issue in the issue tracker of the wp-cli/ideas repository.
This is the very first step that any new functionality should take. It will be further fleshed out within this issue until a decision has been made about whether the feature is a good fit for the official WP-CLI bundle and how the technical implementation should be handled. At that point, the issue will move into the repository where its code will finally reside.

Working on the code

Before you can start writing code, you need to decide what you plan on working on.
  • Good first issues
    To get your feet wet with working on the WP-CLI codebase, you should star with one of the issues that are marked as good-first-issues. These issues usually require less historical knowledge and are very limited in scope and complexity. Often times, you’ll find the proper approach to solve the issue directly explained within the issue conversation.
  • Fixing a bug
    Even though we spend a lot of time writing tests and reviewing code, we cannot completely avoid bugs in a codebase of this complexity.
    If you want to see a list of known bugs and help fix them, you can use this GitHub search (*).
  • Implementing a new feature
    You can find the collection of submitted feature requests in the issue tracker of the wp-cli/ideas repository. There are labels that define what the current state of a feature request is:
    • state:approved: This feature request has already been accepted in principle and only needs someone that can invest the time to make it happen.
    • state:considering: This feature request seems to be useful and a good fit for the project, but additional discussion and fleshing out is needed before a final decision can be made.
    • state:unlikely: This feature request was deemed not to be a good fit for the project. The reason for this is probably stated in the issue conversation. An implementation of this feature is unlikely to be accepted for bundling into an official release. Note: This might still be a useful third-party command in its own right.
    • In case there is no state label associated with the issue, it probably needs more extensive discussion still to find out how it relates to the official WP-CLI code.
Drawing of a software developer working on their laptop.Once you’ve decided to commit the time to seeing your pull request through, please follow our guidelines for creating a pull request to make sure it’s a pleasant experience. See “Setting up” for details on making local modifications to WP-CLI. Keep in mind pull requests are expected to have tests covering the scope of the change. Read through our code review guidelines for a better understanding of how your pull request will be evaluated.

Anything missing?

Hopefully, this short guide has presented many different ways of how users and fans of WP-CLI can contribute to the project’s continued success.

If you think we missed anything, please tell us so in the comments below! We’d love to hear your feedback and are curious about yet other ways of contributing to WP-CLI.


(*) Link requires you to be logged into Github, otherwise it will show a 404.
All images provided by unDraw and licensed under the MIT license.

#contributing