Maybe you hear about the project Drupal Console or perhaps not because is an independent project related to Drupal 8.

If you are an older Drupal user/developer, you could find some similarities with Drush Project, and to be honest, there are some similarities.

But if you are a Symfony developer, you will find some similarities with Console Component and actually, it’s what it is, Drupal Console is an implementation of Symfony Component to meet the Drupal 8 Way.

The Drupal Console, embrace the principles of Drupal 8 about using Symfony 2 components and other libraries to solve the commons problems instead to reinvent the wheel for everything, that concept is called PIE ( Proudly Invented Elsewhere).

Using the Symfony Console Component David Flores and Jesus Olivas start a project to implement the same concept from Symfony to Drupal 8.

One of the incentives to create the project Drupal Console was have a pet project to force them to learn the Drupal 8 way.

But now the project is not a pet project anymore, you can see the full list of contributors at https://github.com/hechoendrupal/DrupalAppConsole/graphs/contributors and if you want to be part of this project drop a message using the Gitter room https://gitter.im/hechoendrupal/DrupalAppConsole .

The majority of commands in Drupal Console require a Drupal 8 instance because the bootstrap of Drupal 8 is loaded to have access to all classes and libraries used in Drupal 8, to avoid reinventing the wheel. But of course, you can contribute commands without dependency of Drupal 8.

Right now the Drupal Console has 28 commands listed below.

$ drupal list Drupal Console version 0.6 .5 Available commands: cr Rebuild and clear all site caches. drush Run drush from console. help Displays help for a command list Lists commands self-update Update the console to latest version. cache cache:rebuild Rebuild and clear all site caches. config config:debug Show the current configuration. container container:debug Displays current services for an application. generate generate:command Generate commands for the console. generate:controller Generate & Register a controller generate:entity:config Generate a new "EntityConfig" generate:entity:content Generate a new "EntityContent" generate:form:config Generate a new "ConfigFormBase" generate:module Generate a module. generate:plugin:block Generate a plugin block generate:plugin:imageeffect Generate image effect plugin. generate:plugin:rest:resource Generate plugin rest resource generate:service Generate service migrate migrate:debug Display current migration available for the application migrate:execute Execute a migration available for application module module:debug Display current modules available for application module:download Install module or modules in the application module:install Install module or modules in the application module:uninstall Install module or modules in the application router router:debug Displays current routes for the application router:rebuild Rebuild routes for the application

Most of them are oriented to generate code to speed up the process of development for Drupal 8, but in the same way of Symfony Console has commands to interact with Cache, Migrate and Database you can contribute modules for any purpose, so your imagination is the limit.

In my case, I’m the contributor to commands related to Drupal 8 Migrate and Modules integration. My inspiration to create these commands wasn’t to replace Drush; my ideas were to understand how the Migration process works and be aware of the module activation process.

After complete these commands now I can say I understand how Drupal 8 Migrate process works and how a module is installed and uninstalled.

But the learning process doesn’t end in Drupal 8 components when I try to create the command module:download I have to declare libraries Zippy and DOMQuery as dependencies using Composer. Why code those libraries myself if I can use code created for non-Drupal Developers :P.

So right now we are looking for testers and coders for new commands to improve the Drupal Console, if you think you can contribute with Drupal Console core, you are more than welcome.

Also, we expect in the future contribute to Symfony Console Component some code based in our needs, again why to create an island of code, instead of that pushback code to the core and help other Open Source projects.