 Okay, so I hope you guys are able to see my screen now. Sorry for the technical mistakes. Okay, so coming to the topic. Firstly, thanks. But she and the team for giving me the opportunity to present. While working with Drupal contributions, I came across the initiative of Drupal automatic update. And this kind of interest, like I drove to it because this is one of the most requested features on Drupal and it has been missing since a while. Let's start with very basic. Currently what we do is manual updates. So if we have a Drupal site, we do manually update the site every now and then. So what are the issues that we face with manual updates currently? The security update process is like complex and it takes time consuming. It takes a lot of time to do the update. Overall process may take up to like a week or a month to complete and finally get the security update deployed on your production. So this is major challenge that most Drupal site face. Thirdly, we require technical expertise of a dev team or an agency to perform the update. If a layman is there, he won't be able to perform the update by himself. And as a result, what happens is a lot of small sites receive less updates or the updates are being ignored. So in order to tackle this challenge, there is a new initiative which has been taken forward and that is a Drupal automatic update. So just to let you know, this is like the most requested feature in Drupal and this is in the final stages. So I'm going to briefly touch base on what exactly is an automatic update and how this currently functions. So what does automatic update provide? Firstly, it provides patch level update through Drupal code. So directly on the pick of a button, you should be able to update your code and include the next patch update. I mean by patch update, what I mean is like a security update. For example, if your Drupal site is on 9.2.9 and if 9.2.10 version comes up with include security update, you should be able to directly do it. Second thing is it can detect and report problems at every stage of the update. So if there is any failure, you will get notified and the update will be terminated and there won't be any changes on production. Third thing is there is a robust API which has been provided by this module and you can hook into every stage of the update process. As a result, if you want to perform certain operations, maybe you want your custom deployments to happen along with the update process itself, you can do that as well. I'll go through the hooks as well at the end. So currently only patch level updates are supported but there are two experimental features also provided. That is updating to a minor version which is something like 9.2.9 to 9.3. This is an experimental feature which is being actively worked upon and this will be available as a part of this module. And lastly, updating contrast modules and themes. So this is also being actively worked upon but there's a lot of development which is still needed in this particular area. So for now, I have tested patch level update and minor update and things went ahead pretty smoothly without any issues. So how does this update actually work? How does Drupal basically perform the update? This happens in four stages. Firstly, what happens is we create a stage directory. The stage directory is like a replica of your entire code base and it is copied into a temporary directory. I'll show you how exactly that happens. Then nextly, it uses Composer to get all the required packages. So one thing we need to ensure is Composer is up to date. So all the required packages are fixed and it is saved in the temporary directory. Finally, new updates are applied and they are deployed on the site that we are updating. And whatever, finally upon success, the stage is deleted. So this is how this is the basic workflow of automatic updates. What are the limitations with this? Completely unattended updates are currently not part of this module. Though this will be supported in future, currently what we can do is we can click a button and the entire update process is completed. In future what is planned is we could just set the updates on Chrom and if there is an issue, we would be notified on the email directly. And if the update is complete, also we would get notification. The deployment will happen in the background. So this will be supported in the future. So currently it is not supported. A major version upgrade is currently not supported and in future also there is a discussion going on how we are going to tackle this. Downgrading to a lower version, older version that is currently not supported and finally multi-site are not supported. So this is in its initial stages but whatever features are there are going to be in the Drupal 10 core soon. So I am really excited about this new feature. So what are the requirements basically if you want to have a site configured on automatic updates? Firstly, the site should be managed by Composer. Second, the Composer version should be 2.3.5 or later and Drupal must be able to change its own code base. By this statement I mean the site itself should be able to modify the code base. The file system access should be there. There are a lot of hosting providers which currently don't support this but Acquia has recently started providing this as an update. So we should be able to perform the update directly on the Acqua server and this is going to be available on other servers as well. And if you don't have access, like if Drupal doesn't have access to change its code base, you can still run the update on your local and easily the update should be completed and then you can push the changes to the server. So this is not a blocker but other two things are required. So firstly, site should be managed by Composer and Composer version should be 2.3.5 or later. How do you get started? Firstly, you can directly use the Composer require. It's currently a separate module and this is going to be part of the course as I mentioned. You can install automatic updates like a regular module like how you install any other module then visit the extend page and click on updates tab. I'm going to show you a quick demo as in I've prepared slides because I've prepared slides of the updates because this process takes some time. So how do we set up automatic updates? So once you add the module to your site, you can enable this module. So update extensions is a part of experimental code and automatic updates is a fully functional module. So we enable this once we enable, I go to the update tab and I see there is a security update. So just to let you know guys, this is also available for Drupal 9 and older versions 9.3 plus is supported for now. And I have the demo that I did was in 9.4. So this is upwards compatible to Drupal 10 as well and it is going to be released in Drupal 10 first. So once you select, once you see there's an update and you will get a button to update to the latest version. Then once you click it, a batch process will start. It is going to start downloading all the updates. Once all the updates are downloaded or staging environment, a stage folder is created and here you get the option to complete the update. It's recommended that you backup your database and site before continuing and finally the updates are applied. If you see the temp directory, it contains a staged update folder. So this is where all the action happens. And finally this code is then replaced onto the actual site. Once this is complete, it lets us know that the update is complete. And if there is any error messages, this would be shown here and it won't be applied on the product, on the site that you're updating. So you need to fix the issues if there are any identified and then complete the update. So that was a very brief introduction of how the updates manager works. So any questions, I can take those ones. Is there a way to complete like if somebody's got this installed somehow through the new feature that's coming where you can have a plugin or a module browser and you go, they go and install themselves on their server and you're trying to control their installation by a composer or something. So they've gone and magically installed this module and then is there a way to completely lock this down so this can't happen? I kind of don't want it. I wanted to know if there's a way to make sure that it doesn't have to get on the system. Got it. So if you don't want some certain modules to be installed or some certain packages to be installed, I haven't explored that, but I'll maybe search and I'll get back to you on that. Yeah, because if you just drop like a file in the root directory, which is like no automatic update or something and then if that file existed, then it shut the whole thing down. Yeah, something like that. That'd be cool. Yes. Yeah, that is an interesting thing. Maybe we can hook into the system and that should block us. So I'm, I'll just touch base on the hook. So there are a lot of at every, every, at every stage, we get hooks events which are available. So we can write some custom code here to hook into the system and prevent that from happening. That is how we do it. Yeah. That's great. If you want to explore this, it, this is this hooks are a part of a package manager. Automatic update contains package manager module, and it has API dot PHP file, which tells you what are the events and for every, for every stage, we have a pre and a post event. We can control a lot of things there. And the same package manager is used by project browser in each of you guys are familiar. The project browser also uses the same package manager to install desired. So this can be very helpful. Okay. I haven't played around with this module before but sometimes some updates like a configuration exports. So this will do that to you also for at least one in. Yes. So, yes and no, both basically. So this module, what it will do is it is going to update your composer and do db updates. So it's not going to export config and everything so that we'll have to do. And yes, the it is supposed to. There are limitations of this with this module currently. It is only support like only work. It only works currently for very small site, which don't have CI PD integrations and don't have a large workflow for now. But in future, yes, a lot of conflicts will be auto resolved and stuff like that will happen. I'm also new in like exploring this particular module and I found it very interesting. And in Drupal 10, what I feel is this module is going to mature and maybe Drupal version level is where we'll see full-fledged automatic updates happen. Yeah. Sorry, go on. To say it was going to become more more of a part of the ecosystem. I guess we should start coding modules correctly. That's make sure that they have proper config schemas and things that we can update automatically. Yes. Yeah, I mean, I was going to ask about and you showed the hook system and and you also mentioned CI CD. I was going to ask about that. Sure. Yeah, if something fails in a process, it doesn't it doesn't apply to production. You mentioned that. But what about hooking in like visual regression tests or, you know, functional automation tests and these types of things? Is that possible? Or how would you do that? Absolutely possible. That will require some custom coding. So before we push it on to the production, we'll have an option to hook into the like try to hook and implement that. I also saw one demo where the stage environment was created on another server. So even that is possible. A lot of options, a lot of possibilities to explore. Currently. But yes, as you mentioned, we can run visual regression testing testing here. And what what's the mobile? Like if something fails, you know, it doesn't apply to production. So you were suggesting that, you know, you have to go and action every problem on there. Is that sort of the process? Like it didn't work. I get a notification or whatever. And I start manually addressing any problem that's reported. And then it would eventually work. Is that how? Yes. Yes. It is going to it is going to give you exact reason right by paint. And we'll have to add in. We'll have to fix that and retry with the update. But yeah, as I mentioned, currently it's only. The aim is only very small site. It's in for only smaller sites, which have less config import and less complexity. But in future, this is going to like work seamlessly. One more thing I wanted to add is, yeah, in future, all the. In from scratch, I think everything will be installed via project browser. And as a result, there will be a lot less issues reported later later on. So what is the key? All right. Any more questions? Thanks a lot for this.