Daniel Bachhuber Discusses WP-CLI, the WP REST API, and the Challenges of Contributing to Open Source on Roots Radio Podcast

Daniel Bachhuber, maintainer of the WP-CLI project and a contributing developer to the WP REST API, joined Chris Carr and Austin Pray on a recent episode of the Roots Radio podcast. Bachhuber discussed his recent experience crowdfunding his work on “A More RESTful WP-CLI” as well as the challenges he’s encountered as a contributor to various open source projects over the years.

In the first part of the episode, Bachhuber shared how he spent the 283 hours of time that the WordPress community funded to advance the WP-CLI and WP REST API projects. The funding gave him the opportunity to dedicate time split between the two projects. Bachhuber put in approximately 95 hours towards the REST API in January and February but the bulk of the hours went towards making WP-CLI more friendly for developers who work with the REST API.

“WordPress developers are going to be putting a lot of time now towards writing REST endpoints that expose their functionality to the world, and it would be really nice if WP-CLI interoperated nicely with that and allowed you to use that functionality at the command line without having to separately write your own WP-CLI commands,” Bachhuber said.

He discussed the challenge of scoping out this broad goal and what he learned about crowdfunding during the process.

“The RESTful WP-CLI kickstarter project was intentionally ambitious, because I’m a guy who has big ideas and likes to do big things,” Bachhuber said. “There are some things I feel really happy that I’ve been able to ship and produce so far, and there are other features that, for one reason or another, I haven’t quite been able to execute yet and that’s a bit frustrating.

“It’s a whole different ball game trying to manage the expectations of your Kickstarter backers than it is a single client. I’ve got 107 clients that I have to make happy,” he said.

Nevertheless, Bachhuber said he was able to get the issue backlog for WP-CLI down to less than 60 issues and the dedicated time has allowed him to resolve old issues that have “languished since the dawn of time.”

As part of the rewards offered for contributors to the crowdfunding campaign, Bachhuber offered his time consulting with individuals and organizations, which he found to be easier than traditional physical swag rewards.

“I’m really glad that I chose [consulting] over having to give out physical swag, because it’s very difficult to procure and ship to everyone, particularly when you have international backers,” he said. “Even though I’ve spent a lot of my time fulfilling the rewards and talking with people and having calls with them and meeting up with them in person, it’s a much easier effort to manage than sending 100 coffee mugs across the world.”

When asked if he’d do it again, Bachhuber said yes but emphasized that spending this much time on an open source project only works if you keep a healthy balance with other aspects of life.

“I think it’s really important that if you’re contributing to open source projects on a regular basis or even maintaining them, that you balance your time between that and other things,” he said. “It’s really easy to get burned out on said open source project if you spend 100% of your time on it for a whole month or six months.

“I was pretty intentional to say that the money I was raising was going to cover my involvement with the project for six months, a certain number of hours, and that it was going to be a part-time thing. That was a really healthy way to approach it. I think I would have gotten burned out if I had just tried to dive into it, crank it out, and move on to the next thing,” Bachhuber said.

The Emotional Challenges of Working on Open Source Projects

During the course of the interview Bachhuber was asked to share his feelings on what he referred to as “the kerfuffle with the REST API” that happened in February. The REST API team had written a merge proposal in September 2015 that recommended merging the API in two parts – the infrastructure in 4.4 and the posts, comments, terms, and users endpoints in 4.5 or 4.6. After partially executing on that proposal, the team held a status chat to discuss the plan moving forward.

Bachhuber said that the discussion became “a very emotionally fraught event” after Matt Mullenweg said the project needed feature parity with the WordPress admin before any of the endpoints could be considered for merge. After putting hundreds of hours into the project alongside a handful of dedicated contributors who were already spread thin, he found this new requirement was a difficult pill to swallow.

“For better or for worse, as a maintainer or even a participant of an open source project, you have to have a thick skin and realize that all the time the decisions that are made are not about you – they are about the project,” Bachhuber said. “Even if you are personally offended by the decision, it doesn’t matter because it isn’t about you. It’s really difficult to deal with emotionally.”

Bachhuber’s years of contributing to and maintaing open source projects has taught him a few things about managing stress and conflict that he plans to share at WordCamp Europe in a talk titled, “My condolences, You’re now the maintainer of a popular OS project.”

“I find a lot of joy in maintaining open source projects,” Bachhuber said. “I also have to actively work to address the emotional side of the equation to make sure I’m in a healthy space to continue maintaining the project and the project is not affecting me personally. It’s taken me years to come to a point where I’m comfortable with that.”

In the case of the WP REST API, Bachhuber has come to a place where he can compartmentalize his emotional reactions and responses to the differing opinions.

“I’ve come to a point now where I care but I don’t care,” he said. “I care in the sense that I’d still love to see those endpoints go into core and see the fruits of our labors realized. I don’t care because I’m not emotionally attached to that happening on any particular time frame. I honestly would rather it happen when it’s ready to happen over prematurely, and I realize I might not be the best qualified person to make that decision.”

In the remainder of the episode, Bachhuber and Carr discuss React, Redux, Karma, Enzyme, and other tools for testing and developing with the REST API. Check out the recording of the episode on Roots Radio for more details about Bachhuber’s work on WP-CLI and his crowdfunding experience.