 I won't, but I will just stop anyway. And thank you all for coming to the first thing. This session is going to be about, I mean, you know, and the modules. But I'm going to focus specifically on site building and maintenance of a Drupal site. My name is Frank, and a little bit more about me. I work for Amazel Apps. We've got in there my contact details. I'm basically on Drupal or any other place outside my company. You can find me on sjgarden. As I said, I work in maintenance and support. So we do work with Amiria, the site, which are about six, seven, and eight. We do a little bit of, well, not a little bit. We're starting to do more and more react as well. Integration, we work with GraphQL. But as I said, this talk is going to be about site maintenance and support. So the first five minutes, we talk a little bit about a few things that I'm going to be talking later on, so that we know the context. Then I'm going to be basically throwing out you a whole bunch of modules, which hopefully will be helpful for you. And then we end up talking a little bit about that. And yeah, having a discussion, and more than open to any questions at the end. OK. I try to structure this in blocks. So we start with hyperblocks, site-building, and then a bit more user-specific cases. In case you are wondering about my accent, I live in Birmingham for the last seven years. I'm going to train here. So we just leave it at that. And if you don't understand me or anything, just please ask me to repeat. OK. I know that I have a bit of a strong accent. As usual, we might be tying, but that way it will make you listen to me, which is great. And all the slides are available in slides.com. So you can just follow me along now or listen to me as well. So at the beginning, it's to code or not to code. And basically, I divided site-building versus back-end versus front-end. I know that is an overt simplification. But basically, when I talk about back-end, I talk about mostly coding. When I talk about front-end, I talk about mostly coding as well. Because we're coding CSS, we're coding JavaScript, we're coding in integration. So at the end of the day, it's coding. And I think we have site-building, which, again, is a huge overseen simplification. But it's mostly flipping around. So you start jubile, you go next, next, next, next, type of your things. But it's mostly done through the UI. So I really think that this is very powerful. I mean, I do like the three aspects. I do a bit of everything, whatever you throw at me. We tried my best to solve it. But I think that the site-building sometimes is people don't appreciate how powerful it can be. And one of the great things of that is the community, the variety of modules that we have. And probably over here, the phrase already, there is a module for that in jubile. So that's true, look for that. And probably somebody has done the hard work for you. And we focus mostly on that today, site-building. And there are a couple of slides and a couple of modules that are more back-end, front-end oriented. But most of the modules we're going to be talking about they are related to site-building. So my question is, what do we need when we are building our site? Okay, if it's a new site, we need time savers. Because usually we want to spend most of the time building what the client is paying us to build. So installing TruePy, having a nice responsive menu. Those are things that are really built in. We don't want to charge the client for that. They, yeah, it wouldn't make any sense because then we wouldn't have time to focus on the most important features. So a whole bunch of these modules are gonna be time savers for you. Then, yeah, when we're building a new site, we need modules, modules, modules. And then I'm making a note here on environments. I will come back to that in a little bit. And then the other question is, if your memory was building or maintaining your site, so what do we need when we are maintaining our site? So when we're maintaining, that usually means bug fixing. It means security updates. It means extensions. It means that this is an existing site. Usually when it's on your site, you just don't worry. You just work on products, brands, and you just start building things because the site is not live. But when we're talking over an existing site, we really need to worry about the problem. How am I going to transfer all this that I'm doing, this full week of work? How am I going to transfer all that to the product server? Okay, and then again, I'm making a note here on environments. And basically, this is the note that I wanted to talk about, so environments. And that usually tends to depend on the size of the project and on the size of the company and also on the level of skills and knowledge of the team. I've worked on pretty much all the four cases that I've set in here. They are all real cases, and probably some of you at some point have worked on all of them. So one of them is working on production. Who has, as I say, into the production server and make a life change? More than once, more than twice. So that's a reality. It's not ideal, but it's a reality. It's there. But I'm going to discuss that for now, okay? Because it's not maintainable in that sense. We need to worry about personal control, whether we change files and all that, and it could create an output. Probably one of the most common ones, especially on small projects, small companies, not a very skilled, well, yeah, team, is development and production. So I have a development copy and then I have a product version of it. But then if we're going to go a bit deeper into that, and we can work with logitech version, logitech push to a development version, which tends to be accessible by client, some of these other things, so that they can test the features before we release to production. Or there are other projects, again, and remember the context, it really depends on the project, it really depends on the size of the company, how many people are working at the same time, what's the volume of work that we are doing for that project. So we can have the situation which we have as well, logitech development, staging, production, who is working or who has been working in the last scenario. So a lot of us, I think that there's a reason for that is by far the safest, especially on big projects, it allows you to play as much as you want locally, you can just do your own thing in your computer, you know that you are not messing around with any of the other work, you can delete records, you can map new records, that's not a problem. Then once you are kind of happy with the things you move into development, okay, development, you usually expose the work to all the developers, to the project manager, product owner, things like that, and once everybody is happy, then move to staging, if it works in staging, that means that it's very likely to work on production as it's pretty much the same copy. So this was kind of the note that I wanted to do on environment, and I don't think that they are super, super, super important at the very beginning, I think that they are very, very, very important on existing sites for obvious reasons. Okay, so let's just move on, I'm basically start talking about those modules that I was talking about, and at the beginning we're going to start creating setting up a project, so what do we need when I am setting up projects? And this module is really handy because I don't know how many of you have been doing that change on a view or something and then realized that you were working on this production in your app, so that has happened to me, that has happened to many other people, and this module in that sense is pretty cool because it allows you, it's available for both Drupal selling and AID, most of the modules that I'm presenting today and they are available for both, and this is very simple module, but basically you can just configure colors per environment, so I usually use green for local, blue for development and red for production because if you are working on something that has a red top bar, then you are conscious, like you are doing something on somewhere with a red top bar, okay? Red buttons, red things are for something, okay? So it tends to be really useful. It's really simple to configure, it takes three lines of code, you can do everything through the UI, okay, you can just install the module, you tell Drupal which are the development URLs, basically if the URL matches that, it will just apply that code. If not, you can always put it in settings.php, if we're in Drupal 8, we can export configuration, so it's really easy to set up. So next module, remember we're setting up our site, now I know that I'm not gonna mess up in production, I know if I am on development or local, something cool about this module is that it offers you links, so in whichever place you are in, you have a link to go to the exact same page to development or to production, which tends to be handy as well. Backup and migrate, remember, all this is site building, we're clicking around, okay, we're not coding, we're not doing SQL dumps and all that, so backup and migrate is a module that allows us to back up the database and move it across instances, but it's not only for database, it also helps with code and with files, obviously the size of the export increases, but you can also do that. And one of the cool features is that you can send it to different destinations like another folder on the server, and you can move one database to another one, you can upload to an FTP server, Amazon S3, even by email, so it's against pretty useful, especially for site builders to move databases around. Okay, remember, we're just setting up our site, I don't really want to move files, 300 necks of files is okay, 10 geeks of files is not okay to put in your local machine. Okay, so if we copy the whole files folder, which we can do with this one, we will be transferring over 10 geeks of files which is just nonsense, pointless. Sometimes we just opt for not doing it, we usually have this kind of site without images, we can just stay work on it, we know what we're doing, we're just changing our user, we don't actually need the image, but then there is this very handy module, which is a stage five proxy in which you just tell Drupal, in this case it's got to be, I believe be a, I think it's got UI, I usually do it through Drupal or through Comf variable in settings, but I think it might be UI as well, you can set up the URL, and basically you just tell, this is the pro URL, and every time that it queries an image, if it doesn't find it on the local, it will download it automatically. So that means that next time, it will be already on your machine. So joystick effectively downloading images, but you are not bringing the whole part, you are just bringing the ones that you need, the ones of the pages that you are working on, it's kind of useful because sometimes I mean, in this case, this example is rendering fine without images, the top image, but there are some times in which when we don't have the image, the CSS breaks completely and things start floating around and all these sort of things. So sometimes it's very handy as well to have the images, and as I said, this is just a one-liner on the settings.php and it can just bring the images and have a pretty accurate copy of the pro URL guide. Another one, remember, where it is set in our site, so you will know that GDPR is coming. Basically, that's all about privacy, which are the main consequences. I mean, there's a lot going on with GDPR, like write before go, then exporting data and all these sort of things, but as developers, what we care about is that sometimes I really need to work with a copy of the pro data because it's a problem that I cannot debug locally because the data is different and locally I have 10 users and in pro they have 10,000. So sometimes you really need the data. When GDPR comes into practice, it would be a breach of law to bring in that data to your local machine and then walk outside of the building with your machine. We'll use laptops, so if you take your laptop to your home and for whatever reason, somebody hacked into your computer, you are giving away data. So what this module does, and by the time I wrote this presentation, there was not a lot going on with this one. I will come back to this in a little bit, but basically what this module does, it just gives you a UI in which you just put the field name and which faker function you want to use. Does anybody know about this faker library? This faker library is a PHP library, okay, as you know too, but it's written in PHP. So that's a PHP library that gives you, instead of giving you lower epsom, it gives you realistic fake data, okay? So you can ask to faker, give me a person and it will give you a fake name, a fake address, but it will look real, okay? It will give you age, date of birth, email address, credit card information, telephone or this sort of thing. So it's got a very cool interface. I mean, it's got a lot of possibilities. Definitely, I think it's nicer than working with lower epsom users. I mean, with all users, they better generate at some point to generate users. Yeah, many times, user name is just 50 characters. Doesn't make any sense. With faker, you can get realistic info. I mean, this module, it is a bit, sorry, it is still in alpha, so just work with caution. But basically, you just need to know a little bit of JSON and how to put a JSON array together. And which, as I said, you put the fill name and the faker function, fill name, faker function. And then you just click a button and that will fake all the data of all your users in the database. You've got the possibility to fake individual data, but you usually want to do it on the whole database. It uses batch APIs, so if you have questions, yeah. Yeah, well, most users still keep the true roles, what's your fake names? Yes, so, yeah. I mean, basically, you can, whatever you don't define in data, right? It won't be changed. Okay. And it uses, I mean, if somebody wants to look into the code, it uses entity API, so it's just basically a generic setter and getter for values. Yeah, you just try to put the values that you put in that array. If it cannot do it, it will just not do it, as it says here. But, yeah, if you don't specify anything for email, the email will be the same. If you don't specify anything for surname, the surname will be the same. So it really depends to how you configure that. And, cool things is that it has a draft command, so you can automate that into deployments, and maybe when you are copying over a product database to your local machine, you can just do the draft command to sync the database and then run that after that, or you can do it through the UI, and you can also configure it on set in stock PHP, so it's pretty useful. I said at the beginning that I was going to talk about this module and basically, about this module, I know all that because I did it, okay, I wanted to put it because I think it's useful. And, at the beginning when I tried, I tried to give it that name, and that name was already taken, but I was almost not a development whatsoever. I checked last week and it's been a huge development. And, one part of that module is sanitizing data. It only does it at username, email, I might mess up, sorry. And, it only does it at username, email, and little else. So, my plans on this are gonna be, I'm planning to contact these guys, so that either I help them. So, that's why I wanted to put the two modules, just keep an eye on that. I did, you can use it. I mean, I've been testing with thousands of users, different mappings. It's not perfect, it needs more testing, but it does the job. That will make our development copies to be GDPR compliant, which is key when we are developers. Okay, so next module. So, probably we all know about this one. The value, who knows that? I'll read this one, sorry. Yeah. I just wanted to ask, have you got any plans to mix it in with the development rights, so that more interesting users? That's a very good question. I didn't think of that. But yeah, I mean, my idea. I mean, you can always go there and submit a future request. Yeah, but I didn't think of that. That's good, that's fun. All right, so yeah, I was asking the question, who has used a developer before? So, most of us at some point were Juba developers, so this is a very, very handy module. It gives us a lot of helper functions for Juba developers that we can put in code. I dump it in a whole object, and it would just output it in a very nice, easy to digest way, better than a bar dump or something like that. It has a lot of sub-modules, and then it has some cool UI features that can help. So, one of them is we can run PHP code, so it will boot up the whole Juba code, and then you can just put a test. I use that a lot when I'm testing the individual parts of my module, so I just put the code in there and see if it runs. Yeah, I know that is good. Instead of maybe running a whole draft command that tries to update six of some users, so I just do it there for one user. It works, we're good. And it can generate some content, as we've already talked about, and it has very cool debugging information for theming when you are theming, so it gives you contextual information about which template is this block coming from, and it gives you information about the pre-processed functions, so it's very useful to know your way. You can switch users, which is very handy feature as well, when you want to test the site as another user. You can edit variables, it's got a lot of useful blocks, and then it's got draft commands available. I think we all know about it, so I won't go any further. Or maybe I do. Emails. If you see the name of the module, it's different, it's not a typo. One of the cool things that the very module does, it gives you the very main log. And why is this useful? To make sure that emails are not actually triggered when testing. If you see there is a little bit of a skin there, and there is this data sentence in there, and so those were my early days with Drupal. I was at Drupal 6 project, and I just set it up. Wow, I set up a Drupal project from Chrome. 1000 emails went out. So we needed to investigate which emails were those, email to the client, apologize, et cetera, et cetera. So I learned in my very first days of Drupal that you need to really think about emails. So one of the cool functionalities that the development module offers is, it gives you kind of this development log, and you can just set it up as usual in settings, but you can set it through the UI. Basically every email that is tried to be sent via the site, it will just not be sent, actually, okay? We just put it, and you cannot see all that, but we can just set it up, avoid it in the server with my local machine, and then you can see the text version of that email. Again, I apologize for the size, but as you know, I mean, probably I knew this, that each screen would be a different size, so yeah, the slides are out of your own line, so you can just check. It's very useful because, yeah, platform uses triggers, emails, rules, triggers, emails on Chrome, et cetera, et cetera. There are some other modules. I just wanted to put the very module in there just because we have already installed in the previous slide, so we don't need to install any other module, but there are these others, like we have read about an email that will actually send the email, but it will send it to an email that we configured, so we can set up our own email address and all the emails will go there. Then if you are going on a more complex setup, like if you are working on a virtual machine, or docker, or whatever, if you don't know what that is, just ignore what I'm just saying, okay? But you could install a service which is maikok and basically add that with catcher or the email traffic in there. I will talk a little bit about this tomorrow on a docker presentation in case you're interested. And then, yeah, more things, so you can always play with your party settings and then I put in there a very silly, stupid snippet which is three lines of code and it just makes the site not send an email at all, so you can always go down that option. It's just a, yeah, custom lighter hook and it just says send emails, no, thank you. That's about it, okay? Then another module and it's developed again. Again, it's not a typo, so I've named it web profiler. Initially it was a separate module for Drupal 8 and eventually they just migrated into, they just put all the functionality inside the web. And if you want to see the information and the whole project is in there and basically it gives you loads and loads and loads of contextual information. It uses the symphony component and so I guess maybe some of you have already set it up on Drupal 8 and it's really useful because it gives you a lot of information about the Drupal installation, about query, about time, about number of queries and you can see the actual queries and also you can even see where that query was triggered. So again, it's a very useful module when we are developing that it will give us a lot of contextual information about the page where we speak. We've got so far, I know I talk a bit fast but are you digesting or is everything? Remember the slides will be there so you can always come back and just go for them slowly. Features module, this module is available for both Drupal 7 and 8. I think it's really more important in Drupal 7 and I think this is one of the reasons why Drupal 8 configuration management system is in place. So this was the very first initiative in which I mean we all know with Drupal 7, Drupal 6, everything was over the place, configuration, data. So it was really difficult especially when we are deploying code. So imagine we created a content type with a view with a block. How do we deploy that to code? Then you need it to go and replicate the steps most of the time because everything was just, yeah you can just not copy the data it's over. Okay, so you need it to go and do it. They were, you could export things separately but it was a bit of a pain. So features was the first attempt to drop out functionality and put it all together in a package. Now we can just move across instances and enable it and then it will create the content type for you, it will create the view for you and it will configure as many things as it can for you. It is not obviously, it wouldn't work with all the configuration but it was the first attempt to tidy up a little bit. Drupal configuration versus Drupal content. And so it's still a very useful module. It has a lot of address commands, it's got a UI and it's got a lot of related modules as well. As I said, you can still use it on Drupal 8. Probably it's not as meaningful because we can just export the whole config and import it. But maybe if you want to, I don't know, develop a block page in which you are creating a view of content type, you can always grab that and then move it across sites. So it's useful to make reusable configurations, okay. Yeah, sorry, coming back to this. I have to say, as I told you at the beginning, I'm working in maintenance a lot and we still work with a lot of Drupal 7 sites and this to me is good. I mean, being able to have something in version control on Git that I can just do on the prod server in pull and then run a command and I don't need to worry about replicating steps. It's really good. So yeah, if you're not using it for Drupal 7, I definitely recommend it and yeah, it's pretty good. Long values, okay. With mobile, if you remember at the beginning, I was setting up on a system site and now we're moving towards more, yeah, taking some of the sites that's already set up. What can I do to move it across environments, these kind of things. This module, many clients hate it and many developers love it. And basically, you can see everything on prod. You cannot change. Anything on prod, which forces you. So somebody can say, ah, that's silly. I can make a change into a view. Okay, if we're talking Drupal 8, that view should be in code. So you should do the change locally. You should export configuration and then you should deploy the code and have everything running by code. Not only that, there are many times with clients proving one access to the Drupal instance and how many times have a client mess up a site? Raise hands. Last week, I was working on a project. Basically, that project, again, Drupal 7. And many of our clients, they want full admin access just because they want it. And that site runs a competition which runs from January until April each year. So those are the key months for them, okay. One month ago, not two weeks, one month ago, the site goes into maintenance mode. Why is the site in maintenance mode? Have you done something? I'm asking all the other developers in the stack. Nobody has done anything. Client, do you know anything about that? Not at all. Okay, let's just put it back online. Let's not worry about it. And fair to mention, I was one of the key events of the year. Two weeks after, in one of the key events of the year, site goes into maintenance mode again. Why? What's going on? Basically, the story goes as, we don't even have the, I think you all know this. When there are Drupal updates, we have that Drupal message. There are really a lot of updates. Click here to download them. So the client with admin rights decided to click on that. The client with admin rights decided to click all the checkboxes of all the modules that did it updating and click on download. And luckily for us, well, I mean, what they do, when they did that, there was a message. This will put the site into maintenance mode. Yeah, submit. Luckily for us, the downloads didn't update because the server, the engine setup just couldn't let go to that page. So we were lucky that there were no actual file override, but the site went into maintenance mode. Yeah, I mean, there were three hours of my life that I would never recover. I think I lost a few years on that because of the pressure, because I'm the main leader of that project. And yeah, I was supposed to know what was why not. I didn't. And eventually it was that. There was a user which had super admin rights and they just stayed up. So coming back to this module, this module will let them see everything. They can still add content to it. So they can add a new article, they can add a basic page, but they couldn't let them for, by any reason, to change configuration, which is pretty handy. You can also put some features in it. So there's another module. So if you want to bypass it as usual, one or whatever. So I'm always going to bypass these kind of things. But I think it's useful as well to have it in there. And the name is very similar to this other module that I just decided to put in there. And basically this read-only mode module is when you put the site in maintenance mode, usually it's a very un-styled page. If you didn't remember to start the page or a styled page, but it's just that page. You cannot navigate through the site. With this module you can still navigate through the site, but you cannot do almost anything else. So it's an alternative to put the site into maintenance mode. I thought that mentioned it. Four modules. Remember I told you at the beginning I was going to throw loads of modules at you. You just take the ones you need. And probably most of us use this already for 2x7 and 2x8. Yeah, drop down menus on hover. It's pretty handy. Otherwise you need to be clicking around with the time. And there were some modules for 2x7 that they've been already included in 2x4.8 because they made sense, like the light filtering of modules and permissions. So you've got all the links in there. I won't go too much about that. I shouldn't be telling you about this module because if you install it, it will never, ever, ever in your life. So remember where to find any option from Drupal. So with this module, it's got the MAC shortcut of, I think it was called Alfred before and now it's Spotlight. Basically, you just press a key combination type wherever you want to go. Like clear caches of performance and it takes you to that place. So I'm starting for some time. And I realized that little by little I was forgetting where was everything in Drupal. Handling with care. But yeah, I think it's pretty useful. It's got a lot of very useful circuits. Drupal, so remember at the beginning, we're talking about updates as well. Who knows about Drupal? Good. So Drupal is an external service. So it's a paid service. And basically what they do, what I mean, nobody knows about Drupal. Who knows about updating modules and code? OK, we all know the pain that it is and all these sort of things. So this external service, basically, you need to give it access to Git and a sausage to the server. And basically it does the Drupal update for you and module and code. So you can configure, you can customize the whole workflow. So you can say this type of update, just ignore it. If it's a security update, just try to pass the program straight away. And there are some people that say that a broken site is safer than a secure site. It's probably some clients don't want to have their site down. But maybe some others prefer to have it down because of the security implications. And basically, the point of this module is that you can just customize it. You can hook it up to Git. I can create automatically pull requests for you. It can test your site on its page. If you've got automated deployments, so for example, imagine that you've got an automatic deployment to the fraud branch. So it can commit to that branch. And that way trigger a deployment on the site. And it will do a lot of stuff for you. So if you are in maintenance, obviously, I mean it's got integration with Tira, with Slack, with email. So if you are in the world of maintenance, obviously, it requires a bit of more skills. But it could be useful. As I said, this page, but it's not really expensive. So it's kind of affordable. It depends on the size of the company and how many projects you have. If you've got three or four projects, very nice, you can do the updates yourself. If you've got 100 projects, then this kind of module can get handy. And then this is kind of the last of the helper modules. After that, we've got the different sections. Just checking the time, we're good. OK, so this is not a module of size. It's the settings.php file. We all know it. Many of us don't commit it to version control, which if you come to more of my session, I will tell you a bit more about it. But there are some people that do commit it. I mean, they don't commit the whole settings, but maybe they commit specific settings for development, specific settings for production. And we can always have the local version that we don't commit. And basically, I'm happy to show you as well after the session if you want to know a bit more about how I do it or how we do it in my company. So we usually have a generic settings which reads for the server variables. And that file can easily be committed to version control. And then we have specific setting files for development. So you cannot see the code in there. It's tiny. But for example, this is overriding the Google Analytics code. We don't want to have our testing go into analytics. It's just pain. We usually don't want to have cache. Usually, when you set up the site, you need to go to system, performance, disabled cache, blah, blah. With these settings, we're just disabling in the file. So we just don't need to worry about anything. So whenever we set the site, this will override whatever is on the database. And we've got the same situation for Drupal 7 and 8. And on Drupal 8, there's a differentiation between settings and config. I've just put a link in there if you want to know a little bit more. But for the purposes of what we are going to use it, it's really just overriding data. A few more site reading modules. We've been so far not following code. So rules. This module is very powerful on Drupal 7. We've been going this morning in the keynote from Ryan, Drupal Merce. They use a lot of rules. And basically, it's the closest thing to coding without writing on an editor, which is both good and bad. Because you are coding into a database, which kind of messes up the whole separation of concerns and all that. But anyway, you can basically set up conditional actions based on events. And you don't always need to code. I mean, you can code if you want. But there is a lot of code in the stack for you. So imagine that I just want to redirect my users. So instead of going to the user page, so when I log in, it usually goes to user1 and whatever. So imagine that I just want to redirect them to a dashboard. So there is a rule for that. So there is an event, which is when the user logs in. And then there is an action, which says redirect to path. And then I can just put dashboard. And we go there. What if you want to send an email every time that somebody edits a certain node? You can do that via rules. So there is a lot of use cases that you can just use. And probably the biggest use cases through by commerce is heavily based on roads. And it's a problem with the sample of it. It's reacting on events, basically. And you can import and export the features. So you can just move them across the sides, integrates with token, et cetera, et cetera. For Drupal 8, they're working hard, but they need help. There's a lot of progress done. So they've done basically all the hard core stuff. They need to do now all the nice looking stuff, which is basically the UI. So all the API functions and all that, everything is created, but they need help. So I just put the link in there. If there is anybody willing to help in anything, I mean, when you are helping on a module, you don't need to be a hard core developer. You can maybe help with documentation, or maybe just try the module and reporting issues that help. So if you feel like helping them, that's the link. Pover it, I recommend it. It's a really powerful module, and we bring out of the goodies for Drupal 8 as well. I believe that today there was meant to be a session on bricks, but the guy who did it couldn't make it at the end. I don't know if anyone would go to that session. I tried. You tried. It didn't happen, no? Yeah, so I didn't want to explain too, too much, because I knew that that was that session. But basically, if you see, this is a bunch of modules, paragraphs, bricks, field group, field collection. All these modules are just meant to ease a little bit the pain of the field management with Drupal. OK, I'm not going to go into too much details. I just found it funny that in paragraphs, the new way of content creation, bricks, is the new way of building pages. Both of them are good. It doesn't mean that they are bad. Sorry. They are really good. One of the cool things of bricks is that it integrates with Drupal Core and with the layout of API, which is coming as a new feature for the latest versions of Drupal 8. But Drupal paragraphs is as well really good. And it allows you, it gives you a lot of flexibility with well-creating content. I'm talking about layout of the pages and all that. So yeah, again, I recommend using it. Webform, has anybody not used webform? OK, so this slide is for you. So basically, with webform, you can just create custom Drupal out of the box. It gives you a contact form. That's about it. In Drupal 8, there is a bit more functionality. You can just build your own forms, but it's very limited. And with this project, you can build custom forms. And then you can just download data. You can just email after the forms of missions. So it's really good. If you are trying to do any sort of complex forms, do you want a lot of built-in functionality? It's really good. It's got a very extensive API. And they've come a long way as well in Drupal 8. And they've added a lot of new goodies that they were available for Drupal 7. So I recommend having a look at it. At the moment, it only does it with users. It uses the entity API. So I think in Drupal 8, if there are entities, we could potentially reuse some of the logic. But so long is only for users. Yeah, the other day, somebody asked me, what if we have a content tree which is awful? It doesn't do it for that, for now. That could be a good feature to have. Thing specific, how are we with time? Was it meant to be until what time? 45. OK, if we will fight more minutes? Yeah. OK. It's all about it. But it is. I mean, if anyone needs to do it, just feel free to do it their own. So remember, we were talking about side building, health-based modules. So the Boostrap module is a really cool module. And most of us might know the Boostrap framework. It is really powerful. It has a lot of options. So there is a Boostrap version for Drupal. It's got CDN support. So that means that it supports the Boostwatch. So we can set up different things out of the box. It works pretty well, especially I haven't tried for this 80% version. But for the Drupal 7, it works pretty well. It could be a really good base thing. I mean, this is more really talking about Boostrap than Drupal. So if you like Boostrap, you will like this. If you want to go a bit more, have more control over it, there is this Omega module. If you install it out of the box, the site will be ugly. But you will have loads of possibilities to bring on top of it. And you will have loads of goodies, yeah, we could sass implementation and all these sort of things. I mean, it's got more than a million downloads. I think that speaks out of it. So if you're more of a front-ended, this could be a really good base module for you. If you don't know too much about front-end and you just want to get something nice looking, go for that, okay? It really depends on the needs of the project. Other use cases, I'm gonna go a bit quicker about this. So what if we have a multi-language site? So in here, we can see loads of countries, loads of different languages. So we used to have two modules on Drupal 7 for translation, and Drupal 8 decided to adopt empty translation. So that's the way that we should probably go for. And then there is some other hyper modules like translation management that gives translators a lot of cool tools that they can use. As I said at the beginning as well, happy to explain any of these when we finish the round. What if we have multiple domains? So these are real-case projects that we're having. And so you can see that there's the domain module, and there you can set up loads of different domains. And basically the cool thing is we have the one database, and then we can share users' content, but we can also have the content available in just the one domain, things like that. I've put a few links to the API first, initially, so because I thought, what about the big couple approach? This is a very good talk about 12 projects that are fed by one backend, and Drupal is fully big couple. So during that, definitely go about those links. Comments for talk about it is a huge, it's a great distribution. Ryan was talking about it this morning. I don't think I need to talk too much. It's really good. And then, yeah, I mean, dropping up, I've given you a fair amount of modules in there, but some of you might be saying that you're missing, yeah, probably I'm missing a lot of really good modules that you will know, so I don't have to listen for you. And again, I just try my best to give you a good overview of many modules that you could use. Instead of this, you could have used that as well. I totally agree. I mean, the cool thing about having so many is that we can choose. And then, yeah, I mean, as I said at the beginning, there's a module for almost everything. This image was founded on Drupal. Basically, they encourage you to always try something that is out there. If it doesn't fit what you need, try to help them so that it accomplishes what you need. And eventually, if you don't find anything, then right, it's not called. So, yeah, I mean, that was it. As I said, the slides, all of them are gonna be available on that. They are already online and public, so you can just go for them if you want. There is no time for Q&A, but I'm gonna be here today, tomorrow, so feel free to reach out to me and ask me anything. Thank you. Is there anything you think you can do to help this part move? Is there anything you recommend that can be used to kind of just scale if you know the size of it? So, in me, it's all about the language. So, there are a couple of modules that you can do, which is some of them are paid version, some of them like this, they are free, which is pretty good, this RISMACID. One of the features that they give you is that when they upload something, it will just compress it for you and optimize it. So, Will it work with existing images that are already uploaded? That's a very good question. For that, I recommend this is not a module, this is built into Drupal. No, I don't know how it's called. So, in Drupal, you can set up image types. I mean, there you can set up a size and that usually when you are outputting in the managed display, you can tell it to use that version and that will take, for example, say a two megabytes image and we crop it to the size you want and I will definitely, so the original image will still be shown in your server, but the image that you will serve the user will be optimized for that. It's, I think it's image styles. Yeah, that one, no, no, no, no.