CMI year-end status update

Error message

  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /usr/www/users/gdd/heyrocker/includes/common.inc).
  • Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /usr/www/users/gdd/heyrocker/includes/menu.inc).

A couple months ago I wrote about the funding I have gotten for CMI, and this is an update on our progress and next steps.

Progress in 2012

For the most part, CMI has been progressing very well. We spent much of 2012 re-architecting the system after hitting a few walls in the initial implementation. Much of this work involved abstracting the way configuration storage is managed, making it pluggable and flexible. Since then, we've been moving forward with conversions and features. Here are some of the highlights.

  • There is now a UI for importing new configuration! You can find this at admin/develop/config. Currently it is pretty straightforward but we are adding the ability to diff your changes as well as tell when your changes have been overridden since last import.
  • About 80% of basic core configuration has been converted to use the new system. These can be tracked at http://drupal.org/node/1696224.
  • The ConfigEntity system was added for managing more complex configuration such as Views and Image Styles. These systems are also being converted to core, although being more complex they are taking longer. This progress can be tracked at http://drupal.org/node/1802750. Note that Views was actually added to core with 100% CMI compatibility from the start!
  • The state system was added to manage data that was traditionally stored in configuration but which isn't really configuration. This will allow us to move everything in the variables system out to either config or state. This work is progressing very well, over 50% of core variables have been converted already! Track this progress at http://drupal.org/node/1775842.

Many of these conversions have required adjustments in the config system or core, and these issues have happened as we've gone along. Additionally, all these core conversions have come with an upgrade path so that the transition from Drupal 7 can happen cleanly and easily.

The work laid out in four paragraphs of text above has taken up the majority of 2012. The re-architecture in particular took an enormous amount of discussion and work in early 2012.

Next steps

We still have some major obstacles to overcome before Drupal 8 can get released. The extension of feature freeze gave us a bit of a reprieve, but this is no time to rest on our laurels [LR: there's something I don't like about that expression. I'd replace it with 'slack off' or 'become complacent' or something like that, but up to you]. Here are some of the highest priority items for the coming months:

  • Multilingual functionality. This is easily the biggest priority before feature freeze. Right now configuration cannot be managed based on language, and we can not identify translatable strings in configurations for people to translate. This work has been slow and, if I'm honest, painful, but it continues to move forward and absolutely must be done by the end of the feature completion phase. This has been the focus of an *enormous* amount of discussion over the last year and a half, which led to
  • Converting the field system. This is probably the most complex conversion we face. Swentel and yched have been leading this effort, and their progress can be tracked at http://drupal.org/node/1735118.
  • Improving CMI performance. Currently CMI represents a relatively major performance regression compared to Drupal 7 and work is progressing on ways to improve the situation. This can be tracked at http://drupal.org/node/1187726.
  • There are still a couple of architecture issues we are sorting out. These seem to mostly be centered about what is done when modules are installed, uninstalled, enabled, disabled, and updated. The best bet for checking progress and status of these is to watch issues tagged 'major' or 'critical' and tagged 'configuration system'.

Thank you to my sponsors

As a reminder, my time on this work is sponsored by the individual donations from ChipIn on my site, as well as the generosity of donations from the following companies:

Acquia
Riot Games
Bluehost
Dennis Publishing
Pantheon
WebEnabled
Reload.dk
Annertech
Comm-press GmbH
Undpaul.de

Thank you all for your support.

Thanks to all contributors

I must also thank everyone who has contributed to CMI in the issue queues, by testing, by writing docs, or any of the other myriad ways that people contribute to core. It would be impossible to list everyone by name, so I won't try, but I would in particular like to call out the Views team for their help in uncovering and fixing a great many problems they encountered while converting Views to Drupal 8. We would not be anywhere near where we are today without their help, and without the sandbox that Views provides for testing more complicated scenarios.

I wrote two chapters of this book - Drupal 7 Module Development and I co-wrote it with Matt Butcher, Larry Garfield, Matt Farina, Ken Rickard, and John Wilkins. Go buy a copy!
I am the owner of the configuration management initiative for Drupal 8. You can follow this work at the dashboard on groups.drupal.org.

I used to work at NodeOne in Stockholm, Sweden. NodeOne is the largest pure Drupal consultancy in Europe. They have built websites for clients like IKEA, SFBio, and Möbler. If you need some work done get in touch!