At drupal con there were a lot of talks on Drupal 8. It has a whole lot of changes, in it's interface and under the hood. Here's a summary of what's to come:
The first question anyone asks is when this will be released, which is still pretty ambiguous at this point: "End of 2013" or "When it's done". We are in the "Polish Phase" of the chart on the right.
The other question is when should I move to it, and the response to that depends on who you are:
- Module Developer: NOW
- Small site or early adopter: mid 2014
- Large site or late adopter: late 2014
This release of drupal was organized and pushed by having set goals / initiatives, which are:
- Views in Core
- Configuration Management
- Layouts (SCOTCH)
- Web Services (WSCCI)
This method was really helpful in getting the drupal community to focus on the main goals and not splinter off too much into all the other possible improvements that could be made.
There are a lot of changes in the base setup that you'll notice when you install it:
- Moved core into it's own folder so people know not to hack it or put files in there
- Added a local settings file to allow for easier pushing of settings between environments while still having local overrides: http://drupal.org/node/1118520
- No need for sites/all, but you can still use it: http://drupal.org/node/1766160
- They also have a new folder at sites/default/files/php for symfony to put it's compiled code.
- An improved install process that is easier on the eyes.
They've also incorporated module filter and a simplified menu admin to make it easier to manage.
- Filters: http://drupal.org/project/module_filter
- Menus: http://drupal.org/project/simplified_menu_admin
Editability / UI Features
They've done a lot to improve the Administration UI. They've incorporated views, allowing content and user lists to be easily editable. They've added ctools dropdown style buttons to make a less button heavy ui. The vertical tabs that were below the content are now to the right, in a style more like wordpress. There's also a built in WYSIWYG (ckeditor), that includes inline editing capabilities.
- Dropdown Buttons: http://drupal.org/node/1608878
- WYSIWYG: http://drupal.org/project/ckeditor
- Inline (Quick) Edit: http://drupal.org/project/edit
They've removed a few features that you're used to in Drupal 7, but are moving them to contrib modules:
- IE 6/7 Support
They've added a lot of things into core to accomplish a mobile first approach. Breakpoint.js, a responsive table solution, responsive images, responsive versions of all the themes, touch event support, and a responsive preview of what it will look like. They've also added a mobile friendly admin toolbar and are working on getting block management simpler. One nice effect of this is that blocks can be placed into multiple regions by default.
- Breakpoint: http://drupal.org/node/1813914
- Tables: http://www.acquia.com/blog/responsive-tables-drupal-8
- Images: http://drupal.org/project/picture
- Themes: http://drupal.org/project/responsive_bartik
- Admin Themes: http://drupal.org/project/ember
- Block Placement: http://drupal.org/project/layout
- Admin Toolbar: http://drupal.org/project/navbar
- Preview: http://drupal.org/project/responsive_preview
- Touch events: http://touchpunch.furf.com/
It has a new configuration API with a YAML backend to separate the configuration from the database. This solves a common problem of moving just configuration changes between environments without blowing away the whole database. It also comes with a dependency manager that may be helpful for downloading dependent libraries in the future called Composer.
- A good introduction: http://heyrocker.com/how-use-drupal-8-configuration-system
- YAML definition: http://en.wikipedia.org/wiki/YAML
- Composer Explained: http://crossfunctional.net/blog/2013/may/indefinitive-guide-composer-dru...
They've baked in some cross browser compatibility features (modernizer and normalize.css).
Edge side includes are now part of core, allowing partial page caching even during authenticated sessions.
Entity / Fields
While the work with entities is still very much underway, they're reworking how that's all being accessed and trying to improve the api into a typed data api. They also improved the blocks and standard contact form module to use actual fields. New field types of telephone and email are baked into core.
- Tel links: http://drupal.org/project/telephone
- Emails: http://drupal.org/project/email
- Blocks: http://drupal.org/node/1880620
- Typed Data API: http://drupal.org/node/1794140
- Widgets / Formatters: http://drupal.org/node/1985716
Entity translations are now in core, allowing a better translation infrastructure.
A number of accessibility improvements have been made, from adding a help guide to pages for new users, to better consistency on tabbing and aural feedback.
- Aural: http://drupal.org/node/1959306
- Help Tours: http://drupal.org/node/1809352
- Tabbing Manager: http://drupal.org/node/1913086
- Debounce and Throttle: http://drupalmotion.com/article/debounce-and-throttle-visual-explanation
- Displace: http://drupal.org/node/1956804
- Backbone.js: http://www.opensourcery.com/blog/adam-dicarlo/backbonejs-twig-and-drupal
- Modal API: http://previousnext.com.au/blog/understanding-drupal-8s-modal-api-and-di...
Drupal's move to symfony has given it a large amount of new plugins and libraries to use. Things are moving to the plugin, event, and serialization API. There's now dependency injection to allow for easier passing of configurations. Routing is used instead of hook_menu. And guzzle can be used to make HTTP connections.
Another big initiative is adding Twig, which gives control of the front end back to front end developers and keeps them out of PHP. It also is removing a lot (like 3/4) of the existing rendering / processing engines. This streamlines it a lot, but there's a lot of performance considerations to take into account. The primary push is to move tpl.php files to twig files, then replace all the theme functions and refactor the render API.
- Serialization API: http://drupal.org/node/1899138
- Plugin API: http://drupal.org/node/1637614
- Dependency Injection: http://crossfunctional.net/blog/2013/mar/getting-cozy-dependency-injection
- Events: http://drupal.org/node/1509164
- Symfony: http://crossfunctional.net/blog/2013/mar/symfony-components-in-drupal-8
- Twig: http://twig.sensiolabs.org/
- Guzzle: http://guzzlephp.org/
- Routing: http://drupal.org/node/1800686
This is still changing at this point, but you can find updates on these pages:
They are already making lists of things for drupal 9, such as using Symfony's asset management, and other libraries, as drupal 8 is nearing code freeze and a lot of them are far from being added.