Drush 9 Roadmap

This week marks Drush’s 10 year anniversary! This old utility knife has responded to millions of requests, shaving seconds off our daily tasks. We hear it all the time at Meetups, Camps and Cons: “I couldn’t live without Drush!” We agree, and use it all day long.

In order to thrive for another decade, the Drush maintainers are sharing some significant changes for Drush 9. Note that Drush 8 will be maintained for a long time so please don’t fret if your needs aren’t met by Drush 9.


  1. Drush 9 commands will be classes, not procedural .inc files. We have embraced a standard form called Annotated Command. A Drush command is now a single method, along with PHPDoc and annotations that declare arguments/options/examples, etc. Commands now look similar to PHPUnit tests or Drupal8 entity definitions. We have already ported a few commands (Views: before and after, Init: before and after). Drush 9 will keep support for old-style commandfiles in order to ease this transition.
  2. We have started replacing a lot of custom CLI code with Symfony Console. Lots more to do.
  3. Move output formatters into its own open source project. This is done!
  4. Move site aliases to their own project. Lots more to do.
  5. Require a site-local Drush, and drop Phar support. Possibly keep a slim, global finder/launcher.

Drop code assembly commands and promote Composer as an alternative.

  1. Drop `make` command. Offer make-convert and composer-generate as upgrade paths.
  2. Drop pm-download (dl) and pm-updatecode commands. `composer info` and `composer outdated` are replacements for pm-updatecode.
  3. Write helpful error messages, help topics, and blog posts to support folks as they transition to Composer.

Single Drupal Version

  1. Drush 9 will only support Drupal 8. It looks like Drupal is going to stick on 8 for a long time, so we might as well simplify to one major Drupal version per Drush version.
  2. Drupal 6 and 7 users can happily use Drush 8 for a long time (we will support it for a long time).
  3. This goal and simplifying pm commands help us deprecate Drush engines, which are a pre-OO construct.


  1. Step up the blogging in order to let the world know about our improvements.
  2. Build a static web site like http://robo.li/ or https://drupalconsole.com/. Incorporate our docs site and drushcommands.com functionality
  3. Tutorials for end users and command authors.

As always, please jump in and help with ideas, pull requests, and reviews.

Like what you read? Give Moshe Weitzman a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.