Seeking Community Support for the Drupal Console Stable Release
June 14, 2016
For those unfamiliar with the project, this post provides a brief overview of Drupal Console.
Drupal Console is the command-line interface for Drupal. It provides tools to generate boilerplate code, interact with the system, and assist with debugging.
The following resources offer more detailed information:
Why Community Support is Needed
Like many open-source projects, Drupal Console relies on the volunteer efforts of its contributors and maintainers. While this model is effective, community demand for new features and stable releases can outpace what can be accomplished during volunteer hours alone.
Similar initiatives, such as the Drupal 8 Accelerate program, the d8rules funding program, and the D8 Module Acceleration Program, have successfully used funding to sponsor contributor time. This approach helps accelerate development and deliver finished products to the community sooner.
The project's situation is similar. While core maintainers receive some sponsored hours from their employers, this time is insufficient to meet development goals. Consequently, much of the work continues to depend on personal time.
More dedicated time is needed to address the issue queue, which currently has over 200 pending tickets and feature requests. Additional resources would also allow for better support on the Gitter channel, improved documentation, and increased test coverage.
To that end, financial assistance is being sought to help accelerate the delivery of the first stable release.
The Importance of a Stable Release
Drupal 8 was released on November 19, 2015, after nearly five years of development. With a stable Drupal 8 API now available, parts of Drupal Console require updates to align with it. The project's internals are also undergoing a refactor to improve flexibility and maintainability.
The Drupal Console project has matured over time, earning the trust of many companies that now use and advocate for it, including:
(Posts from other companies are welcome and can be submitted for inclusion.)
With this in mind, the Drupal Console core maintainers have defined the following goals for the coming months.
Project Goals
The following goals are listed in order of priority:
Dependency isolation
Enable Drupal Console to be installed on a per-project basis, rather than as a global PHAR file. The new drupal-console-launcher project was created to serve as a global executable that detects the correct site-specific Drupal Console instance to run.
Composer support
Transfer the existing Composer logic for the `site:new`, `module:download`, `module:update`, `theme:download`, and `theme:update` commands into the new drupal-console-launcher project.
Configuration Workflow
Develop a new command set for exporting and importing differences between the active site configuration and the configuration stored on the file system. This will extend Drupal 8's configuration management capabilities, allowing for environment-specific settings. For instance, this could manage different Solr search cores for production or specify a different REST API URL for local development.
Annotations
Introduce support for annotations, which will provide command metadata for specifying Drupal-related requirements. This includes details like module dependencies or the required Drupal bootstrap level.
Commands as Services
Implement core logic to allow commands to function as independent services within the Drupal service container. Registering commands as services opens up new possibilities. For example, dependencies could be injected directly rather than accessing the full Drupal container, and commands could be called from within a Drupal site's cron or update processes.
Decoupling languages
Allow languages for translation to be registered using Composer. This change, which requires a new custom Composer package, will help decouple languages from the main project. The result will be a smaller core project size and easier maintenance for individual language packs.
Migrations
Update and repair the migration commands to align with the new logic introduced in Drupal 8.1, where migrations were converted to plugins.
How to Contribute
For Business Owners
If your company benefits from Drupal Console or plans to use it as part of your Drupal 8 strategy, consider contributing to the 1.0.0 stable release. You can help achieve these goals by dedicating developer resources to work on pending tasks during office hours.
For Independent Developers
Individual developers can also contribute by allocating some of their time. There is a constant need for help with resolving issues, many of which are suitable for a wide range of skill levels.
Next Steps
To get started, please fill out the contact form on the Support page.