Relaunching DrupalEasy.com on Drupal 8
It's been a long time coming, so we are really happy to announce that DrupalEasy.com recently relaunched on Drupal 8 (8.0.3, to be precise)! Our previous site was also our original - built on Drupal 6 with more than its fair share of cruft. As we thought about what our new site should be, we made the easy decision that it should be focused on two things: our Drupal Career Online 12-week training program and an expanded focus on tutorials, videos, and quicktips for Drupal developers looking to up their game. It of course provides, what we hope, is easy access to our other training and consulting services.
Data migration
We’ve got some solid experience with data migration - we've worked on numerous migration projects for clients, we offer a (Drupal 7, for now) Getting Your Stuff into Drupal workshop, as well as some experience working on Drupal 8's core migration system. For the migration of DrupalEasy.com, we decided to use the core migration path combined with the Migrate Upgrade module to migrate everything possible. Our data model was rather simple, and didn't require any major changes, so we felt this was the best and most efficient option. It worked like a charm - other than changes we wanted to make, all of our content and most of our configuration (which, granted, we modified after the migration) came through just fine.
At this point in time, continuous migration isn't readily possible with the core migration path. To overcome this, we decided to re-run the migration, in-full, every two weeks. This required that we basically start with a fresh Drupal 8 database each time, so after each migration we had to re-enable a number of modules and our new custom theme, redo a bunch of configuration settings, and tweak some content. While we used configuration management as much as possible to alleviate the repetitiveness, we still ended up with a multi-page manual checklist that needed to be performed with each migration.
Text formats
One of the main issues we ran into after migrating content was that on our old site, we had way too many text formats, including the dreaded "PHP code" format. We knew we wanted to reduce the number of available text formats in the new site - this meant reassigning text formats for existing content. As an exercise in module development, we wrote a custom action plugin that we could use on the main admin/content page to select which node bodies we wanted to assign a new text format to. We ended up with more text formats that we originally planned, mainly because we found that we really like the default "Basic HTML" format and wanted to use it as much as possible. Rather than updating old content to use this new format, we simply re-labeled two previously migrated text formats as "legacy". (Yes, we did remove the "PHP code" text format.)
Blocks
One of the major sources of work for the new site was with Blocks. While the core migration path migrated all of our blocks to the new site, our design called for a whole new set of blocks, configurations, and placements. So, post-migration, we removed all migrated blocks from display, and created new blocks for the site. You can see many of these new blocks on the home page as well as several of the landing pages on the site. As of this moment, all of the block placement is done with the tools provided by Drupal core (even though we were very tempted to use Block Visibility Groups).
Forms
We have forms. Contact forms, Drupal Career Online application forms, post-training survey forms. On the old site, we used Webform, but Webform isn't available yet for Drupal 8 - and (sadly) we may not miss it. The core Contact forms combined with the Contact storage module are an adquate replacment. So much so, in fact, that we wrote a quicktip about it.
Contributed modules
Perhaps the biggest win on the new site is in the number of contributed modules that are (currently) required. As of this moment, we are using 11 contributed modules:
- Google analytics
- Honeypot
- Big pipe (soon to be in core)
- Redirect
- Libraries
- Contact storage
- Configuration Update Manager
- Features
- Pathologic
- Markdown filter
- Field group
This compares favorably to over 50(!) contributed modules enabled on the Drupal 6 version of the site. Granted, more than a few of those 50 modules are now part of Drupal 8 core, but it nonetheless makes the new site much easier to maintain.
There are still a handful of modules that we'll be adding once we're comfortable with their release status, including Pathauto, EU Cookie Compliance, Metatag, and XML Sitemap.
Custom Theme
One of the most important changes to the site is that we're finally responsive. Quite frankly, it was a bit embarrassing that our old site wasn't responsive. After researching available base themes, as well as considering building a custom theme with core's "Classy" theme as the base, we selected the Neato base theme. Neato includes all the Sassy goodness that we were looking for, as well as using the Bourbon library and Bourbon Neat grid framework. While our only complaint about Neat is that it isn't based on Classy, we managed to overcome that limitation and build a theme that we're proud of.
Custom module
In addition to the aforementioned custom action plugin, we also wrote a small custom module for the site that provides a custom field formatter for link fields that outputs them as an HTML5 audio tag. We'll be doing a separate blog post on this module in the future. In the meantime, you can check out the code.
Feedback
So, what do you think? We know there's still a few rough edges (the HTML5 audio tag breaks out of its block in some responsive modes), but we also know it's about 1000 times better than the old site. We're looking forward to using the new site to provide more and better resources back to the community, as well as to help spread the word about our world-class training and consulting services!