Manifesto

WordPress developers
are developers too*

Increasingly building WordPress websites require us to be developers. Our themes and plugins not only use PHP, but JavaScript, CSS, and countless frameworks. Soon working with the editor (Gutenberg) will require us to know React as well. On top of that we work in larger teams with a desperate need for version control and continuous delivery.

As WordPress developers the tools we are left with are FTP clients, zip files and legacy SVN setups. We have no dependency management, no good ways to collaborate on our code, and no good ways to deploy it. Each of us are expected to figure out the solutions to all these problems on our own, even though we all face them on a daily basis. Imagine if carpenters had to build all their tools themselves before starting a project? If I had a dollar for every time a WordPress developer asked me questions like “what about my compiled assets?” or “what about my PHP, JavaScript, or CSS dependencies?”... I would have a lot of dollars. The answer currently is “you’re on your own”. We are light years behind the rest of the established PHP and JavaScript communities.

How are we currently solving all these flaws in our development environments? Often it looks like this: Build everything locally with Grunt, Gulp, Webpack, Composer etc. and copy / paste it via FTP. Good luck doing that on a team! This is not how these tools were imagined. Quick aside: This is still a big improvement to the previous WordPress way of just reinventing the wheel every. single. time (Hello, security issues!).

For 3 years I have been working to improve the workflows of WordPress developers with WP Pusher (a Git tool for WordPress) and now I’m working on a much more comprehensive solution.

As WordPress developers we want to use our favorite tools, the same tools that all our developer friends, outside of WordPress, get to use every day. We want to use Git, Webpack, Composer, and the JavaScript framework of the month - in the way they are supposed to be used. We want continuous integration and deployments. And we want it now without having to figure it all out ourselves and reinventing the wheel.

3 years ago I launched a side project called WP Pusher, a plugin that allows you to install and update plugins and themes from a Git repository. WP Pusher can automatically make sure your site is up to date every time you push a change to GitHub or Bitbucket. Even though the plugin was banned from the w.org directory, it has managed to get a lot of attention. Today some teams are using WP Pusher on hundreds of WordPress sites.

WP Pusher is only a small step towards a better world for WordPress developers. It takes FTP clients out of the equation (can I get a “yay!”?). My experiences from working with Laravel PHP, and before that Ruby on Rails, are what prompted me to make Git more accessible and useful to WordPress developers. However, I still have a feeling that there is more I can do.

Working on WP Pusher and talking to hundreds, if not thousands, of people about their struggles with workflow has given me a lot of insights. That is why I have decided to tackle a larger part of the problem and decided to build Branch.

Meet Branch 👋

Branch is a build and deployment tool for WordPress developers. It keeps track of your Git repositories and can run all your build and deployment tools for you. When your themes and plugins are built, Branch can deploy them to all your WordPress sites.

Because Branch is built on Docker there are really no limits to what kinds of steps you can have in your build flows. You can run composer install, npm build:production, modify files, move files around or do whatever you need, in order to build your plugin and themes. Branch makes it simple. You can keep your Git repositories clean (no /vendor or /node_modules folders on GitHub please!) and use Branch to build everything when you are ready to deploy.

I want Branch to be an all-in-one developer platform for WordPress developers and I have lots of ideas for upcoming features. I want to get the first version out as soon as possible, so I can get feedback from all of my fellow Wordpress developers while building.

See how you can build a theme with PHP and JavaScript dependencies with the Branch prototype

* At least some of us

Reserve a beta spot

As you can see in the video above I have a working prototype of Branch. In order for me to fund the development and make it ready for the first users I need to gauge the interest. If Branch sounds like something you could use, please put your email in the form below. If you know anyone who might find Branch interesting, please share this page with them!

FAQ

What happened when you clicked "Deploy" in that video?
Branch is hooked up to a client plugin installed on the WordPress host. When clicking "Deploy" a message is sent that initiates the update of the theme. The client then hooks into the WordPress core update functionality and fetches the newest build from Branch's server. In the future I want Branch to support SFTP as well, so you can revert if you push a change that breaks WordPress.

When is the beta ready?
Branch is quite a big project to tackle. When I have gauged the interest in Branch and seen that people really want this I will be able to invest more resources into getting the beta ready. The best thing you can do at the moment is to let me know if you really want this.

How is Branch different from my shell script?
Ouch! Good one. The answer is: In quite a few ways probably. First of all it really depends on what kind of sorcery you have put in your shell script. If the script is run on your local machine, you will still have to commit all this nasty dependency stuff to your Git repository. If the script is run on your server, your site might be down while your script is running. Also, you are quite lucky to even be able to run shell scripts on your server - but is it really the life you want? I challenge you to share your script with me!

Ps. I want Branch to grow to become an all-in-one development platform for WordPress developers - not a competitor to your shell script.

Can it run my unit tests?
Soon it will. And if your tests fail you will receive a notification and the deployment will be halted. Neat, right?

If you have other questions please send me an email or tweet @ me so I can update this FAQ.

Who makes this?

Hi! My name is Peter. I’m a PHP and WordPress developer. I’ve been building WordPress websites for more than 10 years. About 3 years ago I decided to try to make Git more accessible to WordPress developers and built WP Pusher - A deployment tool that can install plugins and themes from GitHub and Bitbucket.

Find me on Twitter

Send me an email