Drupal 8: Finally Ready for Production

Drupal 8: Finally Ready for Production image

It’s been a while since Drupal 8 was first ready to try out. But even since then, I was checking out news, reading updated docs, working on my Drupal 7 projects… still waiting for something real. And it finally happened – during the keynote at DrupalCon Barcelona, Dries announced the first D8 release candidate and basically confirmed that it’s now ready for production sites!

road to Drupal 8

And there my journey had started; after all those weeks, I finally received a great opportunity to try out the real D8.

Getting started

You can download D8 here, which its configuration is not difficult – everything is well described in the official docs, I didn’t find any issues there. Just a small reminder: after applying configs in settings.php/services.yml (such as enabling twig debug), don’t forget to run the new drush command for cache clearing: drush cache-rebuild
Speaking of drush, for Drupal 8 you will need to update your drush up to the 8th version. If you want to keep both for purposes like executing drush commands on a remote server which runs older drush versions, just put drush8 in another folder and create an alias (more info). That is an easy and rather straightforward way, but there is also an automated way to do that, which could be useful in some cases.

Folder structure

Looking into the folders structure – it is a bit different to D7, but pretty logical, the main differences being: folder ‘core’ – Drupal’s heart has been moved here, and we don’t need to put themes and modules into the sites folder! We already have these folders in the root and from now on we should add custom/contrib subfolders there.

Opening my site – creating base content types, blocks (entities now! I like it, Bean module, thanks and goodbye – we’re finally able to create different block types and add fields. Breadcrumbs, site name and slogan are blocks now (+1 to karma from non-developers I think, as they don’t need to research what is code and how could they put this info in some other place) and, well, finally we don’t need the title = ‘’ for title hiding, for this purpose, a simple checkbox was added!).

Content

Content looks great (live editing on pages – this feature was even backported to D7 Quick Edit module, I guess it’s perfect for content editors), so I was pretty excited.

Deployment

It should be as easy and comfortable as it only could be for any person that will be deploying a project – even if it was not the same person that was working on this particular site in the past. For this purpose we have the Configuration Management – an interface for importing and exporting site configurations. And as almost everything (besides the content) is configurations, this tool means easy deployment and reusability (I think this is the fullest info base over CM). The Features module that we used in D7 is pretty heavy and was avoided rather often in small projects (eg. in those being coded only by one developer), leading to sacrificing usability with deployment. But the new, better workflow for deploying in D8 that’s in the core out of the box sounds great, and means easy deployment for any sized site!

Theming

Check out this introduction for a deeper look (I like this intro even a bit more than the official one).

Decided to try on a few pages and checked which variables do we have in preprocess_html, looked for devel – and turned out there was no stable release, which didn’t sound too well, so while I was researching devel issues track, I decided to config PhpStorm with xdebug for Drupal 8 – great instruction, thanks! So in case of no devel – I was ready to work, but it’s worth mentioning that devel’s beta worked fine in general, I usually used kpr($variables) – krumo submodule for d7, and so I found it similar in d8 – krumo($variables). devel 8 was extended with different debugging tools; there is also one more submodule – Kint – kint($variables), which looks really good and should overtake the role of the now unsupported Krumo.

No one has ever had any doubts that the Views module would be present in the next Drupal core, and of course it is in D8.

In general the core team does listen to devs’/users’ needs. A huge amount of great, often used and I would say expected functionality were added in Drupal 8: Ckeditor module for Rich text editor, Module filter, Date, Link, Email, Phone, Reference field types, entity cache module, custom view modes can be created for any entity (bye DS or custom code), admin pages are mostly views now and much more.

I was able to create all necessary functionality for a site without any problems or any lines of custom code in a module (I wasn’t able to enjoy OOP in Drupal fully – but I definitely will), and I don’t find the barrier to entry for Drupal 8 is much higher than D7 – so newbies go ahead, you have a lot of abilities in core, everything is pretty well documented and followed modern standards.

Theming took a bit more time than usual as there is a new theme layer here: HTML5 markups, naming convention, CSS architecture, the template engine in general (TWIG is great – a lot of people are already used it, but in addition to the general theme layer update in Drupal 8, it’s just a great pleasure to see improved and much cleaner code in templates, reduced amount of duplicated code and the ability for developers to extend base templates with necessary additions but not completely replace them as before; easy syntax, security – autoescaping by default, DB calls and PHP scripts couldn’t run in a template.

*Small tip: config your IDE for syntax highlighting and autocomplete of .twig templates, PhpStorm has native support. *

Also the idea to have 0 theme functions in core by the time Drupal 8 is released sounds interesting.

The future is here

drupal 8 is future

All these initiatives are great and finally Drupal is not so outdated and is using modern tools and best practices (we don’t need to excuse it because of its age anymore :)

So, work on Drupal is in progress, it is well supported (D8 is really less “Drupal” specific and closer to modern standards, frameworks – hey, Symfony is here – and OOP in general; I bet all of that will grow Drupal’s community with high quality developers and as a result bring improvements), the core team and the community are strongly connected, devs and users are researching best practices and use cases, and Drupal 8 looks finally ready for production sites.

Tip: Don’t miss core changes – @drupal8changes

**X-Team is hiring Drupal developers!
**Click here to learn how to join the league of the extraordinary.

KEEP MOVING FORWARD

Yulia Tsyba / drupal