 Alright, let's get going. Welcome to DrupalCon Global 2020. This session is preparing you and your site for Drupal 9. Hello, my name is Kristen and I've been doing Drupal for a very long time. Feel free to reach me at anything at Kristen.org or catch me on Twitter. Just a quick thanks to Hook 42. Some of you might know Hook 42 from the Drupal community and just wanted to give a big shout out to the Hook 42 alum and hopefully you can connect with some of them during the conference. Here's an agenda for today. We're going to talk about why you might choose Drupal 9, some research you can do, auditing your existing site, visualizing what your new site might look like, planning for that, executing on that vision and ultimately celebrating. So why might you choose Drupal 9? There are a lot of different CMSs out there and you know I'm partial to Drupal but you want to have reasons why you choose the frameworks that you do. And one of the big reasons that I would recommend using Drupal 9 is the innovation model. So starting with Drupal 8 they started doing a release, large releases every six months and that allowed for large features to be rolled out on a regular schedule and those are actually also scheduled which is a big deal. And this has been a great improvement over previous versions of Drupal where you could, you had to you know wait for a long time or you had to rely on the contributed projects to get that kind of innovation. So that's one of the big reasons but there's lots of reasons why you might want to choose Drupal 9. There's a lot of great accessibility, support, multilingual, you know, the security is really top notch with the security team and there's a lot of number, a lot of reasons why you might want to choose Drupal 9. So for those of you familiar with Drupal 8 though you might look at that and go well those sound familiar. I think those are the same as Drupal 8 and you would be correct. That's everything that you get in Drupal 8 is what you get in Drupal 9. So what really are the differences then between 8 and 9? So one of the big deals is that when you go from 8 to 9 it's the easiest upgrade in a decade and you might have heard that already. Previous updates or upgrades from major versions have been a big deal and been a bit headache in Drupal. So this is definitely a major step forward for the Drupal project. And one reason why it's a very easy upgrade is what they did is they just, it's very similar the code between Drupal 8 and 9 other than they got rid of some deprecated or old code and which has actually made the code base significantly smaller and they also improved some testing by making that simplified as well. And then on top of that one of the main differences is it updated a bunch of libraries that Drupal is dependent on like twig and symphony. So as far as like visual changes because all of those things are kind of under the hood there are some things that make Drupal 9 better and that would be the admin theme that has been worked on since Drupal 8 but should be stabilizing in 9.1 which is called Claro. And then also there's a contributed project called Olivero which is for a modern front end theme and that is slated to be added in Drupal 9.1 as well. So you've probably seen this quote, the big deal about Drupal 9 is that it should not be a big deal. And that's actually true if you're on Drupal 8. If you're on an earlier version it's still unfortunately a big deal. So can you wait? So this is some timing that you can keep in mind when you're planning out your project. If you're on Drupal 8 I would recommend that you just go forward and it's pretty straightforward for the most part unless you're going to do a big redesign. So just go forward and do your upgrade. But if you're on Drupal 6 or 7 then you definitely need to think a bit more about it and we'll talk about that more later. But the support for Drupal 7 is actually a little bit longer than Drupal 8 due to COVID and giving people more time. Drupal 8 couldn't be extended because it relies on Symphony version that is going to be end of life. So that one is fixed for 2021. So first thing you're going to want to do is do your homework which is one reason why you're probably watching this. And we need to really get a handle on this, do some research. Some of the things that you could do are watch some of the other sessions at DrupalCon Global. There are a number of great Drupal 9 sessions and here are I think pretty much all of them listed here. There's a deep dive which goes into more nitty-gritty. There's all the initiatives, both new initiatives and also existing initiatives and kind of what's new, what's going to happen with those. There's a session on migration tools that are available via Acquia and going from 7 to 9 to make it easier. And there's also a session for preparing your own custom code and contributed code for Drupal 9, the upgrade, and then of course the session. So one of the things you might want to do when you're researching is play with Drupal 9. So this is especially important if you haven't used Drupal 8 much. One option would be to use simply test me and that's a site you can go to and you can go ahead and spin up any version of Drupal, well I don't know about maybe not Drupal 4, but lots of versions of Drupal 9 and you would just go to simply test.me, choose 9. I think 9.02 is available now but choose whatever the latest and greatest of Drupal 9 is and launch sandbox and then you know wait a little bit of time go get a coffee or a tea and then come back and you're going to see a new site there that's Drupal 9 and you can play with it. So some of the things you might want to play with when you're checking out Drupal 9 are the media and media library, layout builder, at Workspaces is a really interesting experimental module that lets you build a bunch of content and you know nodes and blocks and things and bundle them all together and make them all live at once which is a great new feature and some of these things have been in Drupal 8 for some time but like the content translation but definitely I would focus if you're new to Drupal 8 if you want multilingual obviously try the translation tools but other than that I would really recommend you take a look at media, media library, library, layout builder and Workspaces. So one of the things is to get prepared is you have to make sure that your hosting is going to support Drupal 9 and if you're on one of these hosting platforms you'll be fine probably some others as well but if not you just need to make sure that whatever hosting company you're using or if you're hosting it yourself that you meet these minimum requirements and these have been updated since Drupal 8 so you know just just double check that all of that's going to work if your hosting isn't ready yet you could still do your update on you know your local your own servers until the hosting is ready but a lot of the major platforms are ready already. So some resources that are available are you know obviously the Drupal 9 documentation there's a specific section called upgrading Drupal which talks all about going from six and seven to nine or eight to nine which is super helpful. Hoitzi.hu has a number of Drupal 9 resources I've started writing some more blog posts about Drupal 9 recently and then there's a Drupal Association post which is quite recent which is nice by Tim and Angie Byron has a recent podcast and I'll put these slides up on the session page soon. So after you've done some research and you've convinced yourself that yep I'm going to go with Drupal 9 then next I would recommend that you do an audit of your existing site and it's always good to kind of step back take a look and see what's going on get the big picture but how much do you need to audit and that really depends on what you plan to do with your new website. If you're on Drupal 8.8 then or 8.9 and you want to go to Drupal 9 then I mean it's super simple so you don't really have to do too much you're gonna have to do a little bit of auditing and make sure that your code um you don't have any deprecated code but other than that it's pretty straightforward. If you were on Drupal 6 or 7 and you wanted to do a big redesign which would make sense at this point then you know I recommend you audit as much as you can. So what are the kinds of things that you want to audit? Definitely you're going to be auditing the gap so the gap would be how far away are you from Drupal 9 so that's not only the version you're on maybe you are on a really old version of Drupal 7 and you haven't been keeping up to date for some reason so obviously you'd have to um to you're further away than if you were on the latest version of Drupal 7 and the other thing is how not just your you know the core version but all of your contributed modules right if you're using 300 contributed modules which I hope you're not I have seen that in audits but yeah hopefully you're not but the more complex your site then the bigger that gap's gonna be you're gonna have to go and check everything and see what's supported and what's not but there's a lot of things that you can audit while you're doing this uh you could check your SEO and your accessibility and do site architecture and all that so some tools that you can use when you're doing your audit include internal Drupal tools that are available and we're going to go into more detail on some of these later so upgrade status we'll go into more detail and that's a module that you can install on your site and any reports is for the architecture of your site and that's for Drupal 8 for Drupal 7 there was an architecture module that you can use instead site audit is some drush tools you can run security review some other tools for security tightening and the hacked module is for seeing if you've modified any of your core or contributed code so those are all super important as far as external tools there's a number of them deprecation status we'll talk a bit more later but that's a website you can go to to check out contributed projects on Drupal.org and page speed insights or web page tasks there's a number of of checkers you can do lighthouse tools and things and browser stack or any number of tools in order to check your site on different browsers and devices site improve is one that can check accessibility or SEO waves and accessibility tool so most of these are actually all free I think site improve is the only one that is a paid service but then if as far as manually checking your site obviously you know you can go take a look at the code whether it's custom custom modules or custom themes review any documentation that you hopefully have do manual testing user testing and that testing can be you know as many people as you can you can use a professional service to use user testing or you can try to you know try to do that in-house or with friends and family and then another one that's you know a bit tricky is doing screen reader testing because you have to really understand the tools in order to do that so one important thing when you're doing an audit for your site is please don't use your production site if at all possible a lot of those tools that I mentioned you know the external tools you know you point it at a site and it does a scan and it'll give you a port I wouldn't point that at your production site but hopefully you have a test site a QA site staging where you can point that that site should be non-indexed so the crawlers aren't grabbing it but yeah definitely and if you don't have an external site that's not production to run a lot of those tools you can run on your local as well your local environment so like the lighthouse tools with the developer built-in developer tools so once you've done your research in your audit you want to try to figure out where you're going you want to see where what is your new site going to look like and you get to dream but before you dream it's very important that you have a good handle on your budget and timeline for your project and you know you if you have a shoestring budget but you want to do a huge redesign those things aren't going to work together so having a good idea of you know your max budget and if there's any deadlines you really really have to meet then that can help really define the scope of the project and you need to decide you know if you have the money then especially if you're coming from six or seven you know can you do a redesign and if you can I highly recommend that if you're coming from eight um you probably already did a redesign recently so unless you were an earlier adop early adopter so it's maybe not as important there but definitely from six or seven if you can do a redesign as part of the project that would be great and you should assume that it's going to cost roughly the same as what it cost when you built your original site at least for the update from six or seven to nine you're going to put together your team and one of the most important things is make sure that whoever the stakeholders are on the project are very engaged and that you're getting proper review and sign off from them so that the expectations are very clear you don't want to go off and start building something and then come you know figure out later that that wasn't really what they wanted some of the things that you should make sure to keep in mind when you're doing your discovery period is any of the audits that you already did especially the gaps in the effort uh any for all the changes that you're going to make uh well you have to decide are you going to make changes so if there's a feature are you going to leave it as is I mean you need to probably you know port it somehow but is is it essentially the functionality going to be the same or do you want to redesign it as part of the project possibly remove it which would be great because then it makes it less complex and easier to do or maybe you're adding new new features and the other thing is you want to make sure you understand your priorities for all of these things is it must have you know mvp well it'd be nice to have if we can fit it in or maybe it's something you don't even want to do and you want to make sure it's very clear that that's documented because sometimes later those things come back and people are like way I thought we were going to do this thing but if you've documented it and say no we did this is for the reason why we decided not to do that then everybody's on the same page you're going to end up having a lot of meetings and discussions during a discovery period and sometimes they're called workshops you're going to be talking about all sorts of things the ui competitors all the different features branding all sorts of fun stuff and the goal really is just to figure out you know how is your audience going to engage with the site and you know how can you improve and make it the best for your users at the end of a discovery period you would end you know you would you end up with some deliverables uh functional requirements you know business requirements a number of visual deliverables mock-ups wire frames site maps you know information architecture sometimes people actually put together a simple prototype and it doesn't have to be in Drupal 9 though you know it's possible you could put together some of those things there if you wanted people sometimes will use other tools like webflow or something in order to be able to test the navigation so once you've done your discovery you kind of have an idea of where you want to get you need to make sure that you do proper planning in order to get there and to be prepared is half the victory so how you get there will depend on where you are and some of the steps are going to be the same so this slide really is talking about oh the the commonality so if you're on six seven or eight you're going to do some of the same things so make sure to start you know that your hosting supports Drupal 9 you want to clean up as much stuff as possible on your current site and remove anything you can that will make things so much easier as you're upgrading that would be you know modules you don't need content you don't need pretty much anything just be careful if you're actually removing modules that you do it in a careful way you want to disable the module so the Drupal 6 or 7 disable it uninstall it then ultimately delete the code need to do that uninstall step to make sure the database gets cleaned up then you would update core and the contributed code to the latest version of whatever version you're on so if you're on an older version of Drupal 6 and you you wouldn't want to update to whatever the latest version of Drupal 6 is same with 7 same with 8 so just get to that last version um minor version uh patch version of the version that you're on and then you're going to do some specific steps that depend on if you're on 6 slash 7 or on 8 and we'll talk about those next then you would do any testing and then you get to celebrate so there's kind of two approaches if you're on six or seven there's two approaches depending on what you envision for your Drupal 9 site one thing is if you have a fairly straightforward site and you're pretty happy with it as is and you kind of just want to bring it over like it is you would do this approach first you would create a new separate site which is on Drupal 9 add any contributed projects to that obviously they have to support Drupal 9 then any custom code you have well custom modules that you have on your site you can use the module upgraded and that will help you convert your code your custom module code from actually the only works on Drupal 7 uh convert that to uh something that's supported for Drupal 9 and there are other tools that are available for Drupal 6 then what you can do is you can use the migrate suite so there's migrate tools that are in Drupal and also in in so in core and there's also some that are part of the um contributed space but you would use those tools in order to migrate the configuration of your site so that would be the structure content types vocabularies that kind of thing migrate that over since you you are happy with that structure you can migrate that that structure over you can do any other kind of fine tuning um and then you can migrate the data over and just one fail swoop and that can happen using a UI so there's a migrate Drupal UI modules part of core that you can use and if and it can take some time depending on the size of the site so if you find that it times out then you can use some drush tools in order to to do essentially the same thing but if you find that your Drupal 9 site you want to do something very different and if you have any complexity on your site I would recommend that you really think about doing this you would want to rebuild from scratch so you would still build a new base site in Drupal 9 add your contributed code and you can still do the updating of your custom code with module upgrade but at that point you wouldn't actually have the Drupal migrate tools build out the structure for you you would build the structure just how you want it and then you can do the theming and everything then what you would do is you would actually use migrate and do a mapping between the old structure and the new structure so there's a source which is the old site and the destination which is the new site and you would do the mapping and you would have to write some code it's it's not that difficult it's mostly YAML files and you would do that in order to pull over the data from the old site to the new site now for going from 8 to 9 it's the easiest upgrade in a decade so it's pretty straightforward so what you where you've already gotten to Drupal 8 8 or 8 9 the latest version and then what you would do is for your contributed code you just go and find whatever the latest version is in Drupal 9 and if it's not available then there are tools so rector is a tool that you can use to try to update that yourself and then you can patch it manually and contribute that back your custom code same deal you know there's rector the rector tool that you can run to try to patch that so that it's really easy or you know that covers about 50% of the cases or you can you know manually make changes and look at change orders change records and then you would update the core to Drupal 9 the architecture things that you should be thinking about are how you want to do layout what kind of editing experience you want your content editors to have SEO tools a lot of that is in the contributed space any kind of component model that you want to support if you're going to use pattern library or something of this of like that the content workflow and then how are you going to do this migration and that really depends on kind of are you happy with your structure or not and then you know you want to be able to pull that content over from the old site to the new site there are a number of Drupal con sessions that cover a lot of these things and that in order to figure out your architecture in Drupal 9 media and Drupal 8 that's equivalent so that works for Drupal 9 as well that'll go over media media library paragraphs versus layout builder which is a you know something you really should understand and you know use layout builder if you can it's pretty cool frontend component integration methods so that's you know how are you going to do your frontend and you know bundle your content kind of reusable chunks throughout the site building a admin like really great admin interface SEO which again a lot of that's a contributed space and then just migrations in general so what's the effort involved well it depends really depends on what the audit showed you know so what version you're on what that gap looks like what modules are already available in Drupal 9 or maybe they're not available and you decide you don't need it anymore so you can remove that and also rector coverage which is a tool that we'll talk about more we touched upon and then as far as complexity you know obviously the bigger the site the more complex there's a lot lots of modules lots of content lots of entities lots of integrations you and then the more things that you're changing then the more complex it will be and then lastly you want to you know you it will really depend also on the experience of your team and the more complex it will be really depend also on the experience of your team and are they familiar with object oriented you know programming and are they already familiar with Drupal 8 if they are then should be fine and lastly if they're if they haven't done a migration and they're going from 6 or 7 to 9 then definitely that's something that is a very meticulous process and it's not that difficult but it is something that you have to be very meticulous so at the end of at the end of this you're going to have you know of your planning session you're going to have some number of deliverables as well you're going to know who's on your team you should have some idea of the schedule and the cost you should have an idea of what your architecture is going to look like and your migration approach and hopefully you're starting to put together some tickets so you can get going and a year from now you'll wish you had started today and that is always the case so if you're on Drupal 8 then yeah no reason to not start you have more wiggle room on 6 or 7 but if at all possible if you can start today you'll just it'll be better finally you're going to need to actually do the work and make that dream a reality and there's a number of Drupal concessions that are going to help you with that especially if you're not familiar with Drupal 8 since these are similar for Drupal 9 you're going to need to understand Composer and how to use that you need to understand configuration management also just if you have any custom functionality custom modules really understanding how you alter and extend Drupal from a code perspective layout builder if you're going to be using it which I recommend you know there can be some gotchas so make sure you keep those in mind as you're before you start building twig if you're coming first from 6 and 7 then you know used to be php template and twigs way better so make sure you understand kind of some of the tricks for that and including some of the add-on modules that makes it easier to do twig and then migrations and there's several migration talks and if you're going to do a migration definitely watch a bunch of talks read a bunch of tutorials really if you haven't done it before make sure you really understand it how to do migrations and here are some upgrade tools and we touched upon it some of this before upgrade status and we'll show a screenshot in a bit is a module that you would install on your site on either seven or eight module upgraded is a module that you would install on your site for Drupal 7 upgrade read rector is a module you would install on your site for Drupal 8 and that runs a Drupal record or rector which is a command line tool then there's change records that explain like all the code that's been deprecated in case Drupal record rector doesn't have the automated tool or rule in order to fix that for you that you can just do it yourself of course you've got Drupal.org information upgrade status works for custom code or contributed code deprecation status will show screenshot in a bit and upgrade rector we talked about then for migration there's the core tools the migrate Drupal core tools and then there's the contributed tools that you can use in order to have the command line support and extra plugins and things like that so if you're going to figure out if your contributed projects are supported by Drupal 9 there's another number of places to look and these are not exactly in order but there's a lot of information you can get from other places so obviously if you go to the project page on Drupal.org if it shows it has a Drupal 9 release you're good to go note that it may say Drupal 8 blah blah blah but that is a Drupal 9 supported release so that can be a little bit confusing if you haven't seen that before the other thing is on the project if they don't have a release yet that's available for Drupal 9 they might have a section that says kind of what their plan is for Drupal 9 and might link off to a roadmap issue and you can read that and get an idea of where they're at and maybe when the release will be available you can check the issue queue to find existing patches that are for any issues for the module that may have haven't been might haven't been committed to the project yet and hopefully those are tagged with Drupal 9 compatibility that's the tag we're trying to use then there's the deprecation status tool which we'll show a screenshot of which you can go and just look for any project and see what status it is if there's a Drupal 9 version available or not then there's upgrade status module which you can install on your site and then take a look at your custom and contributed code and if you don't find anything that you know there's no issues already created with patches and it looks like you're going to have to fix you know something yourself for the contributed project you can obviously you know look at the change records figure out what the changes make a patch yourself apply it to your own site and then make an issue on Drupal.org attach the patch and then other people can use it as well so here's deprecate deprecation status it's a tool from aquia which is super helpful you can go and just see like all the different projects that you know are ready to go and there's a lot ready you know roughly three thousand so around a third that are already Drupal 9 compatible which is amazing compared to previous major releases another roughly third that are would would be compatible if there's just a one line change to their info file so that's super easy let me you could patch that yourself if you needed to and then there's a number of others that have other issues that need to be resolved some easier than others upgrade status install it on your on your own site and then it'll just tell you for your custom and your contributed code is if there's problems or there's warnings do you need to fix something now if there's rector coverage it'll show you it's pretty cool the module upgrade that is Drupal 7 only there's a little intro video if you watch that just on the project page upgrade rector if your command line d you know prefer the command line you can go and run it Drupal rector but from the module you can go and grab the code this way and then the migrate UI tools personally I've always done migrations using you know writing code and the ammo files or even pre before their ammo files but for this if you have a more straightforward migration and you're pretty happy with your site then you could use this UI in order to you know fill in your information press a button you know it might take several hours or possibly days and then you know it'll pull everything over again if it times out then you can run this equivalent tools through the command line then are you ready to launch you'll need to make sure that you've done internal checks external checks and then kind of the last final countdown so internally obviously you want to make sure you're on the latest greatest of everything possible and that upgrade status shows you know everything looks green your status report just your normal Drupal status report looks all clear security review and so forth and just the regular Drupal logs are looking good there's no weird errors or warnings any external checking that you can run you know for performance or devices you know broken links all that kind of stuff you want to make sure that you're happy with the end product before you press the button and then maybe you added some test content along the way you go and delete that if you're doing migration passes and that happens if you're doing a site where you have the live site and you have your your other site that you're migrating to and the live site you might grab a snapshot of you know the data at you know from a month ago and then you're building the site you're building the site but then you know you'll go and you'll get that incremental information so everything from you know the last month and you can pull that over before you actually cut over to the new site any kind of cash tuning final testing and then I mean you need to make sure you have a launch plan and there's tons of blog posts out there if you just look at you know launch you know the Drupal launch or whatever there's all sorts of blog posts that talk about all the things that you should make sure that you do before you do the final DNS cut over and then you get to celebrate and enjoy your site so this yeah I mean if you went from 8.8 to 9 you might not feel like it was that big a deal but I think you should still celebrate but certainly if you went from 6 or 7 to 9 you know most likely it wasn't unless you had a very simple site and you wanted it pretty much as is it was probably a bit of a big deal so you should celebrate your achievements with that I just want to say a triple thanks and special thanks to my family Josh Jacob and Aaron and my mom Merle she's been staying with us we're all in lockdown like so many others in the world and another special thanks to Gabor who's the head of the Drupal 9 readiness initiative and has been doing all the amazing Drupal 9 lead stuff so big thanks to him and if you have any questions whatsoever just feel free to ping me at anything at christen.org and or on twitter you know just reach out ask me whatever questions I'll try to get these slides up soon and yeah hope to see you at Drupal Kahn and I hope you have a great event thanks a lot bye