Lessons from Our Drupal 8 Blog Migration
Late last year, we upgraded our blog from Drupal 7 to Drupal 8. Our main objective was to invest in our skills within Kalamuna so we could, in turn, better serve our clients. We have a lot of Drupal 8 migrations lined up over the course of the next year or so, and we foresee many more coming down the pipeline. This gave us a chance to learn the ins and outs of Drupal 8, with the added value of sprucing up our very own blog. This post is a summary of takeaways from our experience that I hope will help you on your own Drupal 8 adventures.
Don’t Underestimate Your Project
One of the drawbacks of our blog being a small site was that it felt like we could easily rush through and get the site up quickly. It took concerted effort from all of our team members to ensure we took our time and fully addressed the issues that came up instead of giving them a band-aid and calling it a day. If you’re embarking upon your first Drupal 8 project, prepare to learn.
Content Migration: Allocate Hours for Clean-Up
The migration itself turned out to be one of the simplest parts of the whole process. The native Drupal 8 migration module easily ported over all of our content architecture as well as the content itself in a matter of minutes. However, the ease of this migration was somewhat deceptive; when we looked at the migrated content, a lot of the in-line media (images, videos, etc.) did not import correctly. We ended up burning more than a few hours just cleaning-up the content and making sure all our files were there.
The other drawback of this one-button-push migration solution is that any cruft we no longer needed on the site (extraneous fields, bad namespacing, taxonomy terms we no longer used, etc.) was automatically ported over to the new site. For this project, it wasn’t too difficult to go in and clean up the site architecture, but for a larger Drupal 8 migration, we’ve implemented custom code to tell Drupal what parts of the old site need to be migrated. Check out this wiki article for more information.
Prepare to Chart a New Course
Drupal 8 has grown a lot in the last year or so, and much has shifted since the project began. That means that some of the documentation is not quite “there” yet. Compounding the issues with documentation is the lack of a charted course for problem solving. Drupal 8 gives us a lot of new tools and cool ways of addressing problems, but it will be a while before the community consolidates knowledge and codifies processes. There might be a dozen different ways to achieve the same result, and the community is still working out which of those ways is best for all the individual use cases.
Working in Drupal 8 meant figuring out for ourselves what the best way forward was in any given situation. Sometimes this meant doing something the hard way, or re-doing something we thought we’d figured out. On the other hand, this also led to a few cool discoveries about things that could be easily achieved in Drupal 8 that were tedious or difficult in previous versions of Drupal. (For instance, Drupal 8 Views lets you duplicate any display as a different display type, which is handy for a site that needs to share a lot of content between pages and blocks).
Integrate Drupal 8 With New Tools
An exciting thing about a new technology is that you can see how it works with your own new tools to offer even more value. For us, this meant getting our own Kalastatic front-end framework ready to interact happily with Drupal 8. We’ve been using Kalastatic for a while on Drupal 7 projects (for more information about the Kalastatic prototype tool, check out this 2016 Badcamp session) and we wanted to make sure that when our Drupal 8 client projects commenced, we had everything ready for the Kalastatic prototype to work seamlessly with the new Drupal 8 twig templating system. This process led to some interesting backports for Drupal 7 also in the form of twigshim, which lets us use twig templates in either version now.
Overall, our first Drupal 8 migration was a success, and we learned a thing or two that I hope will help you in our own dabblings with D8. Since our blog is a fairly light-weight Drupal site, we were able to focus less on making sure all our modules were Drupal 8 compatible, and more on mastering the ins and outs of D8 core, such as configuration management, Symphony, and the twig templating system (which we all more or less agree beats the old tpl.phps of Drupal 7 by a mile.) With that experience under our belts, we’ve been excitedly tackling more complicated Drupal 8 migrations and projects for clients such as the UCSF School of Dentistry, Kettering University, and Fair Trade USA.