 So we can start. Hello everybody. Welcome to my talk about building a full site in Drupal 8 Alpha or how we used to say now at TomAzLabs, Grüezi jaal, an easy way that we are a Zurich and Austin-based company. So Grüezi as hello of the Swiss German word and the jaal of the US. My name is Michael or schnitzel on d.org or also on Twitter and wherever you find me. I'm head technology at Amazelabs and when I'm not sitting upside down taking a picture, I actually usually take picture of all of you. So I took the picture of the group photo which is on Flickr if you want to search yourself. And actually there's a video as well and it's not released yet but we'll be short to be there too. So why building a site in Drupal 8 Alpha already and we've already seen in beta before there's even an upgrade path. Well we decided as a company to and we do it as a learning experience. Everybody of us at one point we need to do Drupal 8 sites so why not start as early as possible and doing it. So it wasn't decision that we said okay we want to do it and to learn a lot of stuff about it. The other side of course it's also about research. So we wanted to know what is the status. All our customers they ask us constantly what is the status, when it will be ready, can we start already. So we said okay we're building our own site which we have the most control about it. Nobody actually expects us to deliver something. We do it with the aids to figure out what it's if it's possible not. And at the end it also was some insanity. We really we don't like sleep and we like to we like to stay in the over the weekend in the office and we like to support our local pizza deliveries. So yes it was also some intent. Okay what I will talk about is first about the process. How did we even start doing that? First thing and you see there it's February 2013. So more than a year ago we decided we want to rebuild our own website and the first thing is building your own site. The hardest part is the design because you do every day you design for your customers but when you do it to have it for your own that's the craziest because everybody has ideas everybody wants to do something and so. So we started in February 2013 and it was more than a year of process to actually figure out the design. When I say figure out the design there is a lot of progress in there. So what you see here actually was the first idea we had and nobody really liked that so we had another idea and we maybe liked that but we changed it a bit so we had another idea so you can see like the designers long shades suddenly popping up. So at the process of like a whole year at the same time all the design changes so we suddenly have iOS 7 with flat design so we get influenced or like our designers get influenced every day. So we had another idea as well and you actually see slowly how it's building together when you look at it as it is today. So it's a bit too big fortunately but if you go to MazeLabs.com that's how it is. So the first thing we actually did was we designed the whole thing and we designed it for the show. It's not done in any browser because we said we want to do whatever is technically possible. When you do something in a browser you do a lot of things. You design a lot of stuff that you only do because it's possible and we had a lot of stuff there. When I looked at it I sit together with my themeers we didn't even have a clue how we built that but we said we tried and we go through it so I told my designers or that designer which is actually sitting here do whatever you want. I constantly was checking with him to figure out if it's too insane it's just even possible but we gave him a lot of freedom to do whatever he comes up. So after we had the design we built our war room in our office. We printed all the designs, we put them on a wall and together we're side building people with themeer so you see me, Kassrin which is also here and Kassrin is the themeer, Boris was side building, we're sitting together and discussing how we do that. Usually we don't never do that because we know how to build stuff. So a lot of people can everybody which has a seat raise your hand, a seat on left and right side raise your hand so you can walk in and sit down where people are handing hands sit down there so everybody gets a seat. Perfect thank you. Okay because usually we can we look at things and we know already how stuff is built. We have a lot of country modules we know how stuff is done but with the aid we knew we have core. There is no country module yet or when there is a country module we don't know how good it is. So it was a lot of iterative process. We thought about okay can we maybe build it like that? Can we? Can we not? And we were like trying stuff out so it was a long process to really figure out okay how do we build stuff. That took around a month mid-March to mid-April and then actually in April we started theming and backend development so we actually after we side-build it we went into theming we fixed some backend stuff we had migrations to do and stuff and then end of April we did the testing and the bug fixing and yeah that's how our issue queue looks like so the arrow is actually the launch date so we started to test like three days before we went live and that was like one of the weekends I mentioned so yeah it was crazy so the red line is the amount of open tickets and the green one is to close at the same time so you see there's still a lot of stuff open and so it was a crazy time at the end but we've done it and on the date that we wanted to launch on time on the minute on the 29th of April our DevOps hit the button and we had our site launched and everybody was happy. Okay so how have we done what were the issues first site building at amazing labs we almost build every site with panels the problem is it's completely missing in the end so that was there was not even there was not even a start to do something and so what we've come up is as views is now fully and is it's an entity itself and in views headers and photos you can include other entities and as views is an entity itself so we basically created a lot of in inception of using views of course we could do it in custom code that would have been a possibility but we decided on first thing we want to know what is possible without custom code at these days because it's easy when you have something that is not yet done to just write custom code and then we definitely would have the people for it but you want to see if it works and if it because we find actually a lot of issues in there which some some views box and so so when you look at the site like that that's our services page you see on top there are three services we show then there is some very very excel with a picture and at the bottom you already have you have again services so there are different view modes and that's the view how it looks like so that's the page for it so that's a service page and you see inside of the header we have another view which shows the three on top and that's how our pages built not really the best way but it works it's a bit inception and we tried to not include a view in a view so it's like maximum one page and in there there are and another big topic is everything is done with view modes so when you know in in in views you can either show a view mode a rendered entity in some type of you mode or you can do fields at amazing labs we only do view modes and multiple reasons for that in the eight a special one is caching because now Drupal had to play the core has and caching based on view mode level so whenever you show a view mode it's the same everywhere so the stuff is really fast and also we try to do we do that with every side to only have view modes and not any lists of fields inside of use the problem is we use penalizer and penalizer is obviously also missing and there is display suite and already ported to Drupal 8 but the problem is it's not it does not have enough flexibility that we actually need we wanted to have full control over it so we ended up in feeling like going back to the roots if you do every day with penalizer we went back to twig template files so we just took our twig template files and we changed them one of the problem is that a lot of theme suggestions are missing there are no theme suggestions for view modes per entities no view modes for fields there is no theme suggestion for page so you can say like I would like to show this page whatever time you show a user or no that want to have it different there are also no themes suggestions for forms with the form ID if you need to do something special or even a custom block there is one template file for all your custom blocks you will ever create so it's a lot of stuff missing and we're currently checking with like theming people in d8 how if we really want to add them to core we believe yes they should be in and but we'll still figuring out if this works if not the most probably and just check that it's going to go into a base theme and yes so how does it work the process is that that the site builder that actually created the content type he's the person that really knows about the single fields like where is the information actually stored and what he does he creates a twig file with all the variables just in there so we don't use just content we really went in there and said okay we want to position the stuff ourselves so he just puts it in in one row and he doesn't really care about the html because the html is the themeer so after he done that the themeer goes in and the themeer changes it to whatever he was like to have so he adds wrappers to two different things he uses html 5 whatever you need even there is like an if so sometimes we have screenshots which was not yet sure at the beginning if you will have screenshots so you add some widths so it's a process of the site builder preparing and the themeer taking over and doing that stuff and that actually works with twig template files really really nice it's something that doesn't really work with panelizer if you want to have your own html it's a lot of work to do that the problem is if you want to do something special or like load additional information like the birth date of the author or so you just need to do pre-process already and that's just coding and not site building so so that was actually the whole site building part we did everything with view mods we had a lot of views in views and everything was done with twig template files after that we usually do we build the whole site just in basically black and white or like wireframe style without even touching the theming so we first do the architecture of the of the data of the nodes of the content types and then we go into theming again here there is no base theme we built usually with Drupal 7 we use omega for all our base theming needs but when we look in core it's actually not necessary you don't need a base theme anymore base themes how we use them in Drupal 7 do a lot of resetting for us they make them HTML5 aware they give us some frameworks around to use better JavaScript stuff and so but from the actual HTML code core is pretty nice what it outputs so how we've done it is we built CSS and our grids fully custom we used the first time we used 2c2 and as HTML5 in core we didn't really need that so when I say CSS and grids are fully custom we usually never use predefined grid systems because as I said I allow my my designer to go whatever he wants to do so we have like a grid system for every page which is different but with 2c2 that works really well and allows you to have a system that is reusable in different sites and you just change your grid systems and so on but of course the biggest issue was the missing theme suggestion so we that took us a really long time to figure in Daniel to build them in to do them to learn how they work because usually they are there already in 7 so twig and I've put that a less than 3 in there so it was definitely really nice to work with twig it's it's it's at the beginning it's hard to learn because it's like your your brain knows how we would do it in PHP and then you you search for okay how I do it now in twig but after a couple of times working on it you learn how it works and it makes it so much better your code looks so much nicer it's easier to write hard to debug though but we never really had to do that one of the hidden superpowers though of twig or extends and blocks I won't mention them if you're interested in them go and check them out but they're not really used in in core itself because they're hard to understand but when we figured out how they actually work it was really nice to use them and make easier page and change stuff rate and easier so if you're interested in that one hard problem though was accessing only a value of from a field so when you look at the example with the content field title this shows you the wrapper of that field immediately but if you want to change it like to have an h2 and you only want to have a value of the field there is no documentation how that works it's actually used at one single place in core like in the message template so it works with that dot zero that means you get the the value of the first element inside the field title because it basically could be a multiple field and with that you not get any wrappers with the field title you only get really what the user entered in field title we use that a lot maybe we use it too much but um it was just like one way that was really hard to to figure out first and then also if you need additional stuff it was a bit um was was a bit tricky there another problem that we had which is what we tell our themers is that whenever they want to change something like in a theme function you go into core you search for the function that already does that it's called theme underline username and what you do then you copy it over into your used to be template file now it's the dot theme file you copy it over to your um theme you change whatever you want to change you save it you clear caches or your rebuild caches interpolate and you go to the site the problem it will fail and it will fail with a php error that the femur has no clue about it the problem is new attribute the namespace for attribute is not copied so i'm not sure so what you actually have to do you either define the namespace on top or you call it directly from the triple object but i'm not sure if this is something that we can tell our themers to like learn about namespacing and stuff so that was a lot of issues that when they when the females tried to do that they came to me and said i broke the site it's like a php error and class not found and they know have no clue about classes and objects so um that was really hard in the beginning to figure that out and to explain them how it works and to use that so that's maybe something that we have to do there as well for just the experience of the themers to make it easier for them either explaining them how um how namespacing works indirectly where where we explain them how to copy paste theme um functions or somehow next topic configuration management um definitely the new kitted and block never really nobody really used it before um how we usually build sites is that sites are side-builded so while we do side-building it already happens on the dev server so it doesn't really happen locally on a on a on a developer's computer it directly happens on a dev server because all they need is core and can configure it if they need a new contract module in case there are some and you can download that with thrush etc so from the beginning we didn't really use configuration management at all but at one point you have a lot of different people working on it and they change a view locally and then they usually they will create a feature or maybe do the whole step again but we really wanted to use configuration management one issue there there is no git integration out of the box so there is no explanation or there's no standard yet how to do um git with configuration management the current process that we used was we created the new config directory inside default config so core itself comes with an active and a staging directory but you can create your own your additional one and the usual the active and the staging directors are inside default files which is excluded from gitignore but we added one into side default config which is then picked up back it so whenever a developer on his local site that changed something and that's pretty much almost everything so if he changes the field if he changes the view if he changes whatever something via the ui he has to export that configuration and rush already has a configuration management um integration so you do the rush config export config dash dash add dash y what's that is um he basically exports the config into the config directory that is defined in settings php with the dash dash add it automatically calls git to add these changes to the git so he does not forget that and the dash y just accepts all the changes um then he commits them and he pushes them and then he goes to the dev side if you have an automated system or not and then you make a git pull which will change the yaml files so the configuration is saved in the yaml files in the config directory and you can just rush config import um them and it will integrate them really important though is that every change needs to be exported immediately what happened for us is that somebody was working on the dev side he was playing around with a view and he was happy with it and it was like looking at it whatever working with it at the same time a local dev changed a completely other view doesn't have to be the same it can also be a completely different change he exports goes to the dev side makes a git pull and says drush config import drush config import config and now the configuration management thinks the view is not in your import so he really imports whatever is in there he imports in there so he basically deleted the view because the config management thinks that it's maybe deleted and that's something different from features in features you just say what things you would like to add but not what to remove and configuration management does that so it's um I try to figure out if there is a possibility to prevent that to like say what is really good is that during a drush config import drush shows you what will be done so it shows you stuff will be added what will be deleted and what will be changed the problem is then when you are at a point there that um that you realize there's something wrong you need a lot of git knowledge to okay now how do I export now the current configuration and merge that into my changes so it's a lot of hand writing so what I told my devs is whenever you make a config change directly export it and you will be safe for the future so that was configuration management and it actually helped us really well so whenever you do a change on your local you do whatever you want you go into fields you change them you create views you don't even have to create a feature so there's no such a thing of bundles like how we know them from features you just export the whole config you go to your dev site you import the config and everything is there which is really nice the process is really fast and and a lot of times when I actually export the config and I look at the changes the areas oh yes right I changed that field as well which I definitely would have forgotten while creating a feature so where you need to know what you just changed next topic updates as I said it's troupel 8 alpha there is no upgrade path at all so whenever you change something um or whenever there is a head update and you you want to do that you have to do a lot of work and that's the process so first you make a backup make a backup of your site then you make it get pulled and they get merged so basically what we do we merge the newest changes from 8.x branch we merge that into us the next thing you do you just visit the page maybe you clear caches maybe that doesn't even work because that already fails um so you maybe go into the database and clear all the config files and then you delete the php directory which is in there and then you visit the page and you definitely have a wide screen of death so you enable all the errors which is usually done and then you look at it and you see an error and then you start your step debugger and you go through and then okay you see like an error in maybe menu and then you go into the recent change notices and you go in there and you don't okay good and then you the only thing that you can actually do is go to the database in you go to the heart and change something that you believe that maybe it is and maybe it works you may not then you step debug again you reach change notices again you do it so there is no process honestly there is no way how to do it if you ever have to done that these are the four four the four things that work the best for me first read the change notices they tell you a lot what has changed in your site like there is maybe a new configuration part or there's a new menu or there's something so you at least get okay these are maybe the things I will find step debugging helps you a lot like realizing what works but sometimes you don't even know how it should be so what I did a lot of times is I create I install a fully new Drupal 8 site on another on another death instance and I look and I compare databases so I went into and I realized okay good so that array change now it has an additional array and then you added serialized arrays in the database and so so that was a lot of things and also compares deck traces with new installed sites or step debug at the same time with new installed sites so that you know okay on a fresh Drupal 8 installed this hook has to be called and then that and this class should be there and then you look at your site and you realize it's not there so you learn a lot of stuff how Drupal 8 works you I stepped debug probably like three four times through whole Drupal 8 stack trace call of everything one really fun one was that one that took me like six hours it's called consolidate system module and system theme and system theme disabled into core extension config it's an issue so I I didn't mention like if you want to go to read the issues that will be a lot of time the error I had was that call to undefined function system region list if you read that error where would you go where would you go any ideas I went into the theme system region theme layered where it defined so I maybe thought okay there had to be something changed in the regions well it wasn't the case so the problem was actually the issue on top that they changed the config it used to be system.module system.theme and system.theme to disable it it was its own keys inside of my of the config and now it's core.extension and the problem was that my Drupal site was loaded without any module because there was no module to load and no theme to load and the first thing that called was that system underline region underline list was somehow not included from theme.ink but basically it call it started at Drupal site without any modules the best is and unfortunately is not here there is in the issue of that is the comment of alex pot saying do we really need a change notice for that no we don't need it because I think better as he writes I've debated whether or not a change notice is necessary I think better than change notice will be a set of documentation on how the 8.x extension system works I mean I totally agree with him it's not that like I think the change notice should handle my case but after after like six hours during the night working with that and like scrolling through the issue to learn and you read that and say like whatever I learned a lot of stuff I can tell you now how the how the core.extension looks like out of my head I can fix sites which has like module and modules installed I don't even need rush to install modules now it's I can do it in the database so that's that's fine too and yeah so it's just a lot of fun learning how things work okay next topic multilingual actually my own thing as I'm part of the d8 mi team so we did a lot of stuff there we had some issues though and first there is an old thing that's like arc which usually tells you like in which path you are which is used a lot in different modules is deprecated and interestingly it also contains the language path prefix which is not the case in seven so rather to wait to actually find to have the issue fixed that is that contains that I had to hack arc that he excludes the language prefix to actually work then interestingly and if you go to our site that's still the case and field label translations are cash too hard so if you visit the german site and afterwards the english site some stuff is not translated that's the reason for it then we have some issues with empty reference load lose language info so we have a lot of issues they're all created on truba.org and people are working on it or we already have fixes for one really interesting thing is the money link translation so there is currently no way in the aid to translate money links people are working on it it's really hard because of different reasons but I want to show you our code we basically just put the t function around every title of every menu it works the problem is just when when somebody changes the title you have to translate it again but I mean we all know it's not used by any customers so and sometimes he creates like strange stuff but it works that was like what's that seven lines of code fix for for doing something so yes we hacked core as well we had to it wasn't like even possible next topic we have an already existing site in Drupal 7 and and we had some blog posts the other problem is that the migrate module is not yet ready at all there is some migration path from d6 to d8 but there is no from d7 to d8 and we hoped that it's at a point but we couldn't do anything so basically we had to build our custom migration from scratch how we done that we have on the d7 site we installed the service module and made an endpoint to connect to load all blog posts via chasen on the drupal 8 site we built a custom migration module which is inspired by migrate so it uses with the same structure the same idea which basically loads the chasen files on the d7 site fills them it has a mapping fills them into d8 objects really nice working with the entity api it's much easier to create any entity from code fill that and save it basically that's it it's pretty easy if anybody's interested in the code you can see it it's just straightforward but the good stuff is we only had to migrate blog post and the blog post authors so we really stripped down because every other stuff we changed anyway and we didn't migrate any comments because we said well it's a bit sad but we have to strip out stuff so that's what i mentioned at the beginning because it's our own site we can do such stuff like a customer would never allow us to remove comments when you upgrade from one side to another so that was migration the next topic backend development so we had to do some things some small adaptations like we have what we wanted is like when you comment so we have again comments on the side that you immediately assign or sign you up to our newsletter that was idea and some other stuff so we what you do is you go out there and you search for examples you search for examples out in the world how it works the problem is a lot of the examples that you find on a lot of different sites they don't work anymore because core already changed so that was really hard that because usually you go out there and you search for examples and they work but then they change like really nitty gritty small things in the yaml that you don't realize at the beginning so that was a lot process to find good examples of things the example module was also really hard and because it's it lacks behind as well and if you're like up to date with head to head the example modules obviously it takes time so we also most of the time scratch that and so what we did is we basically took easy modules or modules that we thought are don't take views or whatever so to take like an easy model that doesn't do a lot of stuff and look at it and learn how and how you create your own pages how you define routes how you define things and other part is look at tests so a lot of time tests actually give you a lot of help how things are supposed to work how you call stuff like if you're interested in how do i create and a note from code and completely from code most probably there will be a test which tests exactly that if that works so you go into the tests and you look at there how do things work and how they how they are done one really hard part was the theme render cache so as i said before there is a lot of new caching in in Drupal 8 that's really cool the problem is that your code is not called anymore because it's cached and if you just disable caches that's not going to help you because that's still in luckily that's now fixed so there's a setting to disable that but during our time we had like every desktop or like every local environment had like a small terminal on the right side and you saw like drosh crs like endless amount and it took a long time because yeah but every time you do make a drosh cr it just takes a long time to load and to do stuff but at the end and we were able to do our things that we really wanted there is a lot of stuff open that we really want to do at the beginning we saw there are a lot of still open tickets so there is improvement to do but also that it was really nice so coming to a resume it works i mean you can go there we did it in time which honestly is a bit surprising but we have a really great team that as i said don't like sleep at all so that's that's that's a really good thing and we created a lot of d.rdo issues or a lot a lot of issues on d.rdo where we had we have found stuff that we never even thought about and actually the developers and the themers they don't want to go back to d7 now so which is i think we are on the really right path so i mean from from a developer's point of view and being myself a developer it's such it's so easier to learn how things work with like classes and interfaces and especially interfaces which tell you like how stuff works and for theming i definitely see that like all the things that you need a base theme for in d7 is now all in core and twig makes your life a lot easier you don't need to learn a lot of php and so the problem is we still probably will build Drupal 7 sites for the next two years or maybe for the next one the half year so i'm really sorry we can't go yet we can't migrate everything yet to d8 but it was nice and if you ask me if you should do the same as i said it depends how how good your pizza delivery services and so now it's like what i would do i would wait for beta because for me the hardest part was really the head to add updates because it's yeah you're basically thrown in some code and you have to dig if you want to learn a lot of stuff about d8 that's one way to do it there may be better ways but it's one way but i would wait for beta because when we have upgrade paths that issue will fix a lot but then i really encourage all of you to try it out to play around to find issues to come up with things that nobody ever else thought of create the issues on Drupal.org write them in their people there which will find if it's a duplicate or not but it's really important for all of you that that we all together make Drupal 8 what we wanted to have and that's only when you go in and try your stuff and play around and so so that's it i hope you learned something and you're not scared of Drupal 8 because it's not it's actually pretty awesome and if there are any questions i'm happy to answer them you have to come stand up walk here and talk to the scary microphone hi i was hi i was just wondering uh how often did you chase head when you are working on this four times or so okay so it wasn't like a weekly thing or anything well we built the whole site in four weeks but oh well then it was a weekly it was made pretty much a weekly thing like my weekends so like we worked over so what i did i mean i being active in core myself you know like with which issues are coming in so like i waited a long time for the issue that changed um that the active config is not saved in files it's saved in the database so that was one i was waiting for that so like that i know like the more a bit milestones i waited for them so i did it like in total like three or four times currently we're completely waiting on beta because we are happy with the site how it is right now so depending on when we have beta i hope i will probably need to do one or two additional ones but then we hopefully have an upgrade path go on thanks hi so um you mentioned that you built your own little migrate code to to import in your your blog posts and stuff i'm curious um you know if you have a certain number you know just copy pasting you know having someone manually do that is sometimes the the best way just because it's fast but did you get a sense um until migrates ready and people are using that if people did want to start using beta you know like what do you think in terms of the amount of code like amount of you know nodes or whatever that need to go over is there some sort of threshold do you think well if they've got you know tens they're fine but not hundreds so we had 300 blog posts and we already had a squad team of people waiting for me telling you we can do the migration and they basically will come over to we can and do it by hand by manually by manually copy pasting um at the end writing the migrate code took my back-and-developer one day and that's definitely less than anybody could have done that faster and it's actually more bulletproof as well um we like while we migrated we realized that we made um a site building change so we introduced elite which didn't exist before so we actually had to compute elite now elite like elite field so we used to show the full blog post on our blog overview but now it shows you only a teaser with elite and um and that was a decision in design and what we never thought that we don't have such field so like while the migration we run the migration then like the teasers are all empty and saying oh wait there is a lead now so we re-rolled back so that we also we also implemented the rollback system in in the migrate and um so and then we just did it again and I guess if we would have done it by hand it would probably be like end up in saying okay now you people you have to do it like not again but like to do things and so it was easier but I I think like 300 was a point where I I had no clue how long it will take I estimated between one to four days implementing the migration what was really good um because I have I have two developers which do a lot of migrate itself so they do a lot of migrate code um yeah we just gave you a shot I told him look if you start doing it spend half a day if you can give me an estimation then we decide and um so your question coming back I would say if you have like 100 150 nodes that's probably the time and I'm happy to share my code yeah I was gonna say where you can you share it yes we'll can it's not yet anywhere but um yeah it's we can definitely do it thanks hi hi thank you for this um so I was taking notes yes as you were talking and of things that are issues with core that are not related to oh by the way it's alpha yeah I counted only two things that were issues that are addressable yes and I was wanting to like the ones I found were we need more theme suggestions out of the box sounds pretty easy to do and some way just to streamline the um dumping uh config file to staging process yes which also to me at least sounds fairly easy to do yes is there anything else that's related to Drupal not the fact that it's alpha but just the Drupal itself you'd recommend that are things we can do that just are going to make that process easier for people along those lines any other things we can do now that we just go ahead and do to improve that developer experience I think the biggest one was the theme suggestion that's definitely the one the other one was the one with the with the theme copy pasting and I don't know if you want to how we want to fix that so how many theme functions do we have left I thought almost all of those are now templates I would need to check that's actually a good question yeah it's definitely way less than we used to have in my my understanding was the goal was to push everything the templates except for like two or three that are called super often okay then then then I would then definitely yeah so the one that used to us was theme username that's probably one of the two or three that's still left and then maybe I mean my suggestion would be that we then just don't use the namespacing in in core itself so directly load it from from the Drupal object and do a not standard way but make it easier for themers or maybe make a comment somewhere because it ended up in themers sitting there and having no clue at all but yeah beside of that that these are probably the two things that that I see the most and those all sound really like simple easy things to do yes I I'm gonna take that as a compliment that we've done a good job with it yes that's really good to hear definitely did a really great job the biggest problem you can find with d8 then yes and it's a multilingual side too so we um if like the org stuff but that's already at rest so that's then then we'll see and the other stuff is like so if you're wondering about um layouts and things so panels um so there is initiative or there are people currently working on that because that was like for us the biggest point of like oh that is missing so people are actually working on there is already a module which is called page manager which allows you now to do some stuff so that's also thank you thank you hi um I thought that method you showed where the back end developers output all the variables to the twig file and then the themers came in and wrapped it with the html yes I thought that was really cool I hadn't seen that done exactly like that I'm curious though did your themers develop the theme in static html and css and then move that over they just went directly into the twig yes so our normal process with seven is that um the site is first site build it in a wireframe type so we look we have most of time we have a finished design or a finished wireframe and photoshop a finished design in photoshop or a wireframe in some kind of wireframing tool then the site builder goes in and builds that but more like in a layout thing um so he maybe uses an already existing two column template or so in penalizer and panels okay and then the themeer goes in and changes what he needs but the themeer basically gets the html already pretty much defined um so with that um we never really build like prototypes or like we first define the html we used to try that actually like three years ago we started with that process because that's what everybody else is using the problem is it's like with seven it's so hard to get your html in there so what we saw us is actually like creating the css again um so we rather go the process there that that we first do the site building and then the themeer comes in looks what html is there changes it to according its needs like going from that stage to that stage but pretty much work with the html um that is there and not come up with a whole side feed so in your situation the themeers are they're just very comfortable with writing directly into drupal and and flushing cache and that kind of thing yes part of their process yes they're drupal themeers they're not like got it okay themeers that can just do html and css got it thanks so when you were explaining the four ways that you tried to debug things or or not the way that you tried to debug things i guess the way you tried to find out what had changed well the fourth one was that you looked at tests so these are the test one is i or no no i no i never looked at tests no when you were trying to figure out what there was when i'm trying to figure out how stuff works like how to build my own custom modules yes i look at tests okay so how did you know like which like i think for example you looked at a module like how do you know which test to look like yes how do you know which test i don't know i i like i let's imagine if i so like let's say you have a module you're looking at an example in core and you see it has a method or something right and then you're like um you know i wonder which tests did you run coverage reports to try and identify which tests what i did once is like i looked at all the tests that i could select just to look at them to look at their names the simple tests the simple tests yeah and at one point there was like one was it node clone or something and i said that sounds interesting so i went to the code and then i saw some code that actually copy paste um oh that that creates a clone of a node of an already existing one and saves it and it's a new one so it's a lot of like looking at test and names but also knowing like like okay stuff for nodes is most probably not in the user module right so like more like looking into the user module and but it's a lot of discovery and so you read tests you treated it like a book like a table of contents you're like i think i will read that chapter yeah yeah it's because there are no example modules but the cool stuff is now with with Drupal 8 being all in classes you can actually guess class names so like if you like type i mean if you use an IDE that like knows all the classes and gives you suggestions like typing clone and maybe there is something so it's a lot of finding stuff quick question how many custom modules did you end up rating more or less and one one one so the mod aside currently has installed three modules three content modules our own then we have global redirect in because the sco is pretty bad and um the last one is honeypot that well i fixed it well well let's say let's say if you i figured out in which orders you have to change the configuration that it works so i didn't actually write code it's like you like one one of the select boxes that breaks everything so i just tried and say it's right i don't know but yeah so like the problem was the first spam we launched at nine o'clock in this first time we had a nine nine nine nine hour one minute so actually like after we were happy we were like fuck you have to fix now the spamming which nobody like i thought like what can we get at least two hours because because like you know it's like there is no html like the html of a drupal 8 is not really common to spammers but it looks like that we use we use so many machine readable code now that the spammer is super happy which are super good probably for accessibility and so which is great but it's also good for spammers to find our code yeah global redirect honeypot and a custom module that does stuff and another question uh you mentioned you used vmode in use yes um i don't know if in drupal 8 you have more than two view modes you can create them by it there is now a UI to create view modes yes finally so it's like one of the things in yeah there's so you can create your own you can define them you can attach them to entities so yeah they are there and you should really use them okay good then if you have more questions if you want to see code come and hit me