Drupal 8 was officially released last November. Since then I have planning to try to migrate my blog from previous version of this great CMS. Drupal 8 comes with many improvements and I definitely wanted to leverage those on my site as well.
Besides that, I always used my personal site as an experimental sandbox where I tested new Drupal modules, themes and technologies. Even if I am very active contributor to Drupal core and contributed modules and I've been working on an enterprise Drupal 8 project at my work, I've never actually migrated a site to Drupal 8 to this date. It was definitely something I wanted to try.
A previous version of janezurevc.name was running on Drupal 7. It is important to note migration from 7 to 8 isn't officially supported yet. Drupal 7 won't reach EOL for at least few more years, which makes this migration not critical. However, migrations from Drupal 6 have been fully supported since the day 8 was released. 6 will reach EOL this month, which makes migration from 6 to 8 an absolute priority.
Migration
My site is actually very basic. I am using content (2 content types), taxonomy (1 vocabulary), few contributed modules and that is really it. It turns out that everything that I needed migrates reliably.
I started the process by reading official documentation. Besides Migrate and Migrate Drupal modules that come with core, I needed few contributed modules: Drupal upgrade, Migrate tools and Migrate plus.
Migration itself was extremely easy. I installed the Drupal 8 site, enabled migrate modules, started migration and waited for a few minutes. That's it! At least for core stuff. There are some glitches when it comes to contributed modules, but even those were fairly easy to resolve.
I want to thank everyone that contributed to Migrate in Drupal core. You did an awesome job!
Theme
The Drupal 7 version of my blog used a Sky theme, which is unfortunately not ported to 8 yet. For that reason I needed to search the theme repository and came across the Bootstrap clean blog.
It looked nice and it had a Drupal 8 -dev release. Regardless of that, it worked like a charm. I even contributed minor patches and am planning to contribute a few more.
How do you like the theme?
Modules
Like almost every Drupal website out there mine also uses few contributed modules. Let's see how that went.
Disqus
The Disqus module has been ported as part of the Google summer of code project, which I mentored in 2014. The module itself works very well. We changed the architecture a bit; instead of having a custom database table, we instead used a dedicated field type. This approach comes with many benefits. By doing this we're not limited to nodes anymore. Disqus can be used on any entity type now.
Even if the port was there, migration was not. I used this opportunity to dig into this part of Drupal a bit more. I wrote a 7 to 8 migration support for everything Disqus needs. This includes general configuration, fields on entities, statuses and identifiers. My code is already committed and you can give it a try.
Did you try Disqus migration? Let me know how it worked for you.
Pathauto and Redirect
D8 ports are available on their Drupal.org project pages. They work great. While core migrates existing aliases, alias patterns, redirects and other configurations aren't supported yet. I had just 3 alias patterns and less than 10 redirects on my old site, so this wasn't hard to fix manually.
If you meet @Berdir please buy him a beer. He did an awesome job porting this (any many other) modules.
Media
I was using media to embed images in WYSIWYG, which uses the legacy embed token in Drupal 7. This part was unfortunately not ported yet. I was using this in less than 10 places so I decided to fix this manually too. I used a simple SQL query to get node IDs of content that used the legacy token. Then I simply changed it to standard tag with data-entity-* attributes, which Drupal 8 uses for it's own image embeds.
Markdown filter
Recently I found out that I prefer Markdown when producing written content. It doesn't interfere with my writing flow nearly as much as WYSIWYG editors do. When using Markdown, I focus on content instead of the appearance (for the same reason I really liked LaTeX during my university years).
Guess what? There is a module for that! The Markdown filter comes with a text filter that will convert Markdown syntax to HTML when displaying it. And it also has a Drupal 8 port. Download, install, configure, use. It was as easy as that!
How does Markdown work for you? Do you prefer it over the WYSIWYG editor as much as I do?
Other modules
I used a few other modules on the page. All of them have some kind of Drupal 8 release:
All of them work without any problem. I downloaded, installed and configured them. Google analytics even comes with support for migration (which meant the 3rd step was not needed).
Great work, maintainers and contributors!
Other interesting stuff
I also used this migration to move my blog to a new hosting solution. The old blog was hosted on a VPS that I had used in the past and am slowly moving away from. Most of my sites and services are currently hosted on a dedicated server at Hetzner (they provide excellent value for the price, so I'd definitely recommend them).
Recently I started using Docker for my development environments and I wanted to try it in production too (I mentioned I am (ab)using my personal site for experimenting, right? :)). As a result of that I'm hosting janezurevc.name in a Dockerized environment managed via Docker compose. Compose is super nice as it allows you to describe your infrastructure stack in a single YAML file. This allows you to commit it to a VCS repository and replicate infrastructure anywhere you want. But this is already a topic planned for some of my future posts.
Did you try to migrate your Drupal 6 or 7 sites to 8? How did it go? Which contributed modules are you using?