 So good morning, everyone. I won't be starting quite yet, but this is going to be about the Drupal 8 gaming experience, so if you're expecting something else, feel free to find the other session. So, how many of you were at Morton's session yesterday? Okay, pretty good amount, thank you. That's good. Did you learn a lot? Good stuff. And by the way, once I get to the coding, there's a little bit of coding in this, not too much, but there's some. I don't know, it might be a little bit hard to see with the lighting and everything, but there's URL there. You can open it on your laptop or your phone or whatever, and you can follow along that way if you like. You don't have to, but it might be helpful. So it's bit.ly-d8-tx-dca16. And also, if you go to the page for this session on the DrupalCon Asia website, there is a PDF and a link to the slide as well, so if you don't want to type all that out. Okay, so this feels like a good time to start. So thank you, everyone, for coming. It's really nice to be in India. I used to work as core mentor on IRC for about two years, and I worked with a lot of people from India, so it's really nice to actually be here and meet some more of these people that I've met online. So thank you all for the hospitality and welcome. So this is about the Drupal8 gaming experience. It's kind of a newer session, so if you've seen any of my sessions before, this will be a little bit different, and maybe a little bit of overlap, but it's mostly new stuff, so hopefully you can learn something from this. So before we get started, I just wanted to tell you a little bit about myself, and by the way, can everyone hear me? Okay. In the back. Not too loud? Good. Okay, thank you. So my name is Scott Reeves, also known as COTSR. I'm one of the co-maintainers of the Drupal8 game system, and working with Twig and all those fun stuff, and also the current maintainer of the stable-based theme in Drupal8. And pretty recently, I'm also provisional Drupal8 core committer for friend and demon. Thank you. I've made, I think, two commits so far, so it's pretty fun. I'm also a team lead at Digital Kidna. We are our 40-person Drupal shop out of London, Canada. And as you can see from my picture, I used to be a pilot as a child. So, before we start, I just want to talk about a couple sort of concepts because the title of this is the Drupal8 theme experience, and it's kind of a little bit of a play on words because it's, I want to talk about the theme experience. So these two things, theme experience, TX theme experience and DX developer experience are tags that we use to categorize issues on Drupal.org. You could think of these as similar to user experience, but the user is a themeer or developer. And themeer is kind of a weird thing. It's a, we might call it a Drupalism. It's more so in previous versions of Drupal. We've made it a little bit more defined in Drupal8, but it's still a hybrid role, and the theme is often responsible for designs, CSS, JavaScript, templating, maybe some PHP. Who knows what else? But much respect to all Drupal themeers. You don't have an easy job, so keep yourself surrounded with costs. So like I said earlier, I've been involved with twig and things like that, so I actually started getting involved with twig and Drupal8 in about spring of 2013. And I was like, yes, twig! It's going to solve all of our problems. But as I quickly found out, there was much more to it than math. Just converting things to twig is not really the full answer. Yes, it's a big improvement over PHP template. Rest in peace, PHP template. Well, not really. Good riddance, PHP template. Twig got me really excited about getting involved, but in the end, there was a lot of other changes. For example, in the previous versions of Drupal, we have pre-process and we have process, and it's kind of confusing. It's not always clear which one you're supposed to use. So we just have pre-process now. So let's just one example. I'm not going to go over all of them, but I'm just going to go over a few things. There's documentation if you want to learn about all of the changes in Drupal8 email. If you really, really want to learn every little thing, you can also look at the change records, although by this point, a lot of them are probably really out of date, so documentation is probably better. If you find there's lacking documentation, please help us to make it better. So in this talk, I'm going to be covering more about not really necessarily all of the changes, but how we designed these things, how we made these decisions about what we were going to change in Drupal8, and hopefully help you to learn to learn with these things, because they're different from Drupal7. It's new things, but we wanted to learn to work with this instead of fighting and trying to still do things the whole way. Drupal8 is a shift in thinking. If you keep thinking and working in the same way as Drupal7, or if you're trying to convert everything one-to-one from Drupal7, you won't be happy. It's better to start fresh. New ways open up new possibilities, so I think it's a great time to embrace that and see what new possibilities it has in your work, and just for playing with stuff. The other theme of this talk is the idea that individuals and small groups can have a big impact, in this case on Drupal. All the things that I'm going to be talking about today are things that were added in Drupal8 and driven by just passionate community members, just small groups of people, small discussions, and yes, we want to change this. If you're thinking of coming to the sprint on Sunday, please do. Even if you just have ideas, that's great. We need ideas. Morton is our idea person, and we need more idea people. Yeah, we need same people as well. So, please come and join us, even if you just want to chat about things. Especially if you've already started playing with Drupal8, we would love to hear your feedback, and maybe there's some pain point that you keep running into, and maybe we can kind of come up with a way to make that better. And by the way, if things get really confusing, feel free to wave your hands if I'm going too fast or something, let me know, I'm fine with that. I'd rather you get more value out of this and if you have a question, chances are someone else does too. So, I'm going to cover a few things. I'm going to talk really quickly about the core-based themes. For those of you that were at Morton's session yesterday, he already did a good coverage of this. And I'm going to talk about the without filter and sort of what that does and why we added it. I'm also going to talk about the quick game registry loader. This is kind of a mouthful. It's a lot of words. I'll explain it later, don't worry. And then also working with libraries and some of the really cool new capabilities that we have with libraries. So, for the base themes, if you've heard of the... well, how many people have heard of the Drupalcon Austin Consensus Banana? A few people? Yeah, okay. Anyway. It's a weird game, but... Yeah. It was basically a discussion group of around, like, 20, 30 people at a Drupalcon a couple of years ago and trying to figure out, you know, what can we do with a markup to make it better as we were kind of struggling for a long time and, like, we couldn't agree on how to do things. So, we kind of figured out... I mean, the proportions are not exact or anything. This is... it's maybe, like, three quarters in one quarter. It's tough to say, but... they're more, like, think of them more like personas. So, we have the sensible two-thirds. And these people... they maybe don't want as many dips as you had in Drupalcon 6 and Drupal 7, but they still kind of want, like, classes. Like, you could have, like, a node-article class or something like that to say that you're on an article node and things like that. And then the clean one-thirds is very, very minimal. Basically, you just have wrappers and things, and if you need a class, you add the class, and you would work with the variables that are in the template to add whatever you need. I would say most people are probably going to use class B. That's the sensible. And, by the way, if you fall into the clean part, we're not saying you're not sensible, so don't be offended. Please. Um... Yeah, so if you want a little bit more help in doing your CSS and stuff, I recommend you use class C. If you really, really want, like, bare bones, minimal stuff, or maybe you're writing a base theme, stable might be a good choice for you. Um... And to use these in your info file, for class C, you put base theme class C in your info YAML file. And for stable, you just do nothing. Stable is the default, so... um... I kind of wonder why class C isn't the default. If it's the majority, the short answer is it's complicated. And the long answer is I'm not going to get it again. So stable is a backwards compatibility layer. It's a snapshot of Markup so that we can continue to evolve the Markup in core and keep making it awesome for future versions of Drupal. And just in case you're wondering, class C inherits from stable, so... um, yeah, so... See... ... ... ... ... ... ... ... ... ... If you're feeling really dangerous, or you just want to see the core Markup, you can set base theme to BALLS in your info YAML. I really wouldn't recommend it because the core can change pretty quickly, um, so it can break your site. If you build a live site and put it to production with base theme BALLS, and then start to upgrade to Drupal Core, it... your site might get pretty broken, so that would be bad. Another shift is that there's more powerful things you can do in the Drup templates. So classes are generally in the templates now instead of the process, which is like a really wild idea to us a few years ago, um, but I'm pretty happy with how it ended up, and overall, people seem to be getting along pretty well with it. It's a lot easier to modify and work with all these classes and things. You can also do cool stuff like attached libraries, and, uh, we have this fancy new attributes object where you can add classes and remove classes and do things with attributes, and it's very cool and powerful and, like, if you're familiar with jQuery, it's a little bit similar to that in syntax and stuff. If you want to learn more about what you can do with templates, and maybe you missed Morton's session yesterday, or you just want to kind of relive it, if you go to the slides, the little asterisk star links to Morton's talk from that tank last year. So, yeah, check that out. And just to kind of stop on a concept here, additive versus subtractive. So, this kind of came up a couple times with different things that we were working on. For the clean one-thirds of people, it's really problematic and kind of error-prone to try and remove all classes that you don't want. It's a lot better to be additive, and other than you don't have to use nasty things like regular expressions to remove out all the marketing classes that you don't want. So it's easier to start with almost nothing and then build up. And these concepts also apply to how we integrate a twig itself into Drupal. We didn't want to change twig too much because we wanted twig to feel sort of... to feel sort of familiar to people who are maybe working with symphony or any other frameworks or CMSs that use twig. And, like, we wanted to be familiar for them. So we added some few things, but we didn't really take away anything. We, you know, we added, we maybe changed a few small things, like for auto-escape related, but mostly that was the same. So now I'm going to talk a little bit about filter. You might remember show and hide in Drupal 7, but it won't work. This kind of looks like your blade code. It used to be your blade code, but we killed it because it's not good. So, the show and hide, they manipulate a renderer ring, they manipulate the printed property, the hash printed of a renderer, whatever you're using. It kind of, you kind of have to keep track of what the state of the renderer is as opposed to just, like, kind of getting what you want. The other problem with show and hide is that if they were real pain to any woman in twig, we had to create these crazy, not me personally, but kind of twig team, create these, like, crazy twig reference objects and be like, oh yeah, we're going to, like, add it in there and pull it out and it's just, because twig doesn't really work with things by reference. Anyway, we had to come up with another solution. So, we did the, instead of show and hide, we have now the without filter. We actually got the inspiration for this from another CMS that's also using twig called app CMS. So, I think that's a great example of, like, using other tools, kind of getting into bigger ecosystems allowing us to kind of just do more things and do things in a more standard way somewhat. So, both of these examples print out the same things, actually. But as you can see, I mean, I think so anyway, that second example is a lot clearer what you're actually doing, especially if you take out all the code comments and everything. So, alright, now we're going to make sense out of the twig registry loader. So, before we made this change, there were two ways to reference a twig template for your template. So, if you're doing things like extending, which I'll show an example of in a minute. So, the first way is by namespace of the modular theme. So, in this case, it's using the stable base theme. So, you do path stable, slot-a-clock, slot-a-clock, the second way is using the full path from the Drupal root, which is pretty ugly. So, core theme stable, blah, blah, blah, blah. The namespace loading just maps to the templates directory in case you're wondering, because it kind of looks like the first one was missing the templates directory, but it's because your twig templates are always in the templates directory, it's always consistent. At one time, we only had the second method. So, if you started using that in all your twig templates, and then you decided you wanted to move your theme or move your modules or something, you would have to adjust the paths in all your templates. So, it was a little bit of an improvement, but as I'll show you, so, twig blocks. Twig has its own concept of blocks. We call them twig blocks, we don't confuse them with twig blocks. We didn't want to try renamed Drupal blocks, they've been around for a long time than we had Twig and Drupal, so we thought about renaming twig blocks to something like twig block, like the little tag block. By the way, I don't know if people can see that too well at the back. No? Well, like I said, you can get the link to the slides on the DrupalCon website, so that might be easier to follow along. So, this example is showing the twig block here inside of the Drupal block template just to exercise your brain a little bit this morning. So, we have a twig block inside of the Drupal block inside of the twig block, we're just printing the content of the block, but what that does is allows us to extend this template and then override only this part of the template. So, this example below this is another template separate template from the block template like a more specific block template, let's say, and it extends the first template, so it extends the stable beams block template and then it overrides the contents of the block and all it does is add a wrapper. That fancy little parent function is just printing the whole contents of the parent block. So, it's kind of, in this case it's probably overkill, but it's just kind of an excuse to show some quick magic. So, let's say you're starting to build out your theme. You have your info file, you have starting to build out some templates, you have your page template, you have, and let's say you want to override the markup of your search form. So, you have a little search form in your header or sidebar or something and let's say for some reason you just need an extra wrapper around the content. So, you create a template override and you just say, I want to add a class of block search form wrapper around the content of that block and then later on you decide to override all of the blocks of that block. But now, your search form block is still referencing the parent theme. Your search form block is still like extending from the parent theme, not from your theme. You may want to do this, you may intend to do this, but you may also forget about it, especially as you start to grow and get more templates and things might get out of sync. You might wonder why my search form block better showing up on all my other blocks. So, this is, again, showing the same same stuff, but yeah, we're still extending the parent theme. And I was like, okay, this is great, we have the namespace method, we just have to specify the whole path, like what more do you need? But there's a person in your community named Mark Drum said that we're talking I think about IRC and he said, like what if we didn't specify anything, we could just say, I'm extending my block template and it would just figure out what you mean. And I was like, well, I don't know. We have a lot of other things to do, like we have to convert everything. So I wasn't so sure about this and at the time we didn't know it was going to be like another one and a half years before it would come out, so we're like, no, no, no, we have to get it done. We have no time. So this is how you do it. You just say I extend block. And what this does is it looks up in the Drupal theme registry which template to use. So if you have the block template in your theme, it will use that. Otherwise it will go to the parent theme. If it's not in the parent theme, it will go to maybe the grandparent theme or the monobot whatever. This is a really good way to mix the two worlds of Drupal where the Drupal lamp has template overrides and the Drupal lamp has like extending and we can do like things to make things kind of cleaner or cleaner anyway. So yeah, so that's pretty cool. So this is kind of what I would recommend as the preferred order when you're referencing when you want to do these straight extending. So number one, whenever possible just use the template name. In some cases that won't work. So if you're overriding a template that declares a Tweet block and you want to extend that like in the block template example if you just say I'm blocked at each and all the Tweet and I extend blocked at each and all the Tweet it will try to extend itself and that's when it's going to loop. So if you run into that hopefully we'll have like an exception or something soon so that you kind of know what you did but if you run into that you can use the second method because that's kind of what you mean in that case. You don't want to extend your own template. And then, yeah, I really can't think of a reason excuse me why you would use number three but it's still okay. And this is the first shout out. This is for David Wang who's right here today actually which is nice. A.K.A. Heatings. So after this was committed people were tweeting about this and he said like I thought it would always work like this. This is good stuff. If you ever see some changes happening in Google and you are really excited please tell us, Tweet or post an issue queues especially in this case when we weren't so sure this was a really good validation for us especially for me because I spent a lot of hours working on this and I was like I hope this is good because in part of all there's often a lot of hypothetical situations where you're like well like how would people actually use this and we kind of have to like dream up these scenarios so this was really appreciated so thank you. Now let's talk about libraries. So before I jump into this I just want to say libraries I think are really great and I think they're like pretty much as big of a change as Tweet. I don't know that might be I just yeah that's what I think so they're a big evolution but they're an evolution of like hook, library and Drupal 7 which I wasn't really that familiar to be honest I used it a couple times but not very much by the way if you download the slides or something the little asterisk is and I came to a good documentation page on Drupal where you can learn a lot more about this I'm not really going to cover the basics other than kind of explaining what this is and then showing some examples of stuff you can do now that we're using libraries so one thing that is really cool is dependencies so out of the box your blade, for anonymous users doesn't load any JavaScript at all if this is really nice because it's like lightweight however if you have a cuddly slider and you need a query for your cuddly slider you need to say dependencies or such a query otherwise your cuddly slider will be a broken slider unfortunately not really the slides are on the Drupal Conagio website but yeah it's yeah yeah normally this works better but I probably shouldn't start on light for this venue I didn't really know it was going to be like this so I apologize hopefully you can follow on the website or check it out later so dependencies are great because you don't have to mess with weights like weights are really annoying if you have to mess with them in Drupal 7 and like Drupal 8 libraries are everywhere so just embrace them they're also namespace so if you have a library name like cuddly slider or if you have file names like CSS or JavaScript you're in your library they don't have to be unique anymore like in previous versions if you had like node.css it had to be like different or node.theme.css or whatever it was and this was actually the reason why Morton's patented FOID technique worked because you can only have one with a certain name so it's nicer to not have that because it could be really confusing and you can still make things FOID so this is another example of a small amount of people that came up with this and basically one person built the libraries overrides and the libraries extends before we had this it would have been like a lot of custom PHP if you wanted to actually do these things so this is really great style sheets removed and style sheets override do exist but they're deprecated like I said libraries are everywhere I would recommend embracing libraries both this way my kind of tip for doing these easily is like you can kind of see it's well maybe you can't see but anyway it's kind of nested to show the library that you're overriding this component and it's like kind of a sick a lot but if you actually go to in this case assy.libraries.yaml you can kind of just copy that and then copy that into your info file and it becomes a lot easier I don't know if that makes sense but maybe when you start to work with us it'll click so when we set it to false we're just removing so you can override and say remove one thing I would say is be careful about removing JavaScript you might break stuff so css is usually pretty safe but if you're you can remove an entire library and the library can contain css and javascript so just be a bit careful you can also with overrides you can specify a path to css or javascript in your theme to override things now one of the really cool things you know I really wanted like this libraries override and like there's really practical uses that I didn't really realize when we were working on the html work because like I said it's like hypothetical a lot of the time but when we started building real sites in people 8 I realized that you could basically have jQuery update in like four lines in your info file so whenever jQuery 5000 comes out and it's like so new, so shiny you don't really need jQuery update you don't need a module in your info file you can just say libraries override for jQuery and then just give it jQuery 5000 create your cache and you're good so that's pretty cool for today maybe a more useful thing I don't know how many people use Modernizer you know, awesome so same thing you can override Modernizer so core ships with its own build of Modernizer and you can override it with your own custom build the only thing to keep in mind here really is to remember to be additive because core needs certain tests and things in a Modernizer build so start with the core build and then add the things that you need another cool thing you can do is extend libraries so you can have your themes library load whenever another module or themes library is loaded so this is really useful for like conditional loading if it's only for like a certain case or a certain like module you can just kind of add your own styling or JavaScript or whatever on top of that so it's kind of like the reverse of dependencies because you're kind of you're kind of saying like no I'm going to come after and like kind of tack on to your thing and this is just like me giving a shout out because like I said there's basically one person who built all this so yeah, and yet I'm probably not pronouncing that name correctly but yeah let's give him a round of applause because like I said it would have been a lot of painful like tarot your hair or PHP so this is much nicer and I want you to remember Drupal 8 is not done it may be out but there's room for more like I said when you just print something they come up with your ideas for Drupal 8.1.x, 8.2.x whatever, Drupal 9 doesn't matter all these ideas came from just like small groups of people you don't need to be a coder you don't need to be able to think about stuff and like come with your feedback and it's all fine, you could really use your help thank you we have plenty of time for questions I tend to leave a lot of room for questions the only other thing I want to mention is please if you can if you can find the time please evaluate my session on the Drupal ConAsia site it helps a lot especially because this is a newer session for me so please give your feedback what you learned or maybe what you wanted to learn didn't learn anything it's fine, be honest I don't mind hopes and dreams oh, we have one I mentioned that we could overwrite some of the CSS saying we don't require code as in we don't require code it's a pension of users users and people called CSS saying it as words but if we require some properties for keeping up with CSS some certain sections how do we go about it do we use a priority or inheritance at particular classes how do we deal with that because some part of the CSS we don't require and some part of it we require so how do we go about it and prioritize things in that approach what is your viewpoint on that I don't know if I can say what the best way is but in cases like that I would maybe tend towards a simpler solution and maybe just actually remove the menu about CSS and just take the parts that you need and add it to your theme because it sounds like otherwise it might get quite complex you can do things like make your CSS depend on the menu CSS or the menu library yeah I think especially when it comes to CSS specificity and stuff I would probably just keep it simpler so from my opinion I would say if you can get away with it just use class here stable I think in my opinion the landscape is a little bit similar to around when Drupal 7 came out where there's not really a lot that's really good so rather than wait I would suggest to just use one of the core based themes because they're pretty reasonable like you have HTML5 markup and with all the new capabilities core like you have breakpoints and you have like responsive images and all stuff like this in core so that's kind of my recommendation but do your own research as well and keep an eye on things thank you I had a question that is how does the library override and library extend work with library altars like if you have multiple library overrides in different themes multiple library extents like what is kind of like the order of them being proceeded like how can you alter the libraries and how does it affect at which point is that happening yeah I would say I'm not super super honest but sorry I'm not super super familiar with exactly where it is but basically it has its own like book library altered so it comes in fairly early I think like when you do it through the info file it's basically cash I think when you if you also did like a book library info alter in your theme you would already have this stuff that you did in your info file I don't know if that helps okay I'm going to go try it and see so I want to ask if you would like do your own research and let's say we have a couple of you know in this case we're going to try and put the same library at two different places so is there a way that we can go a lot of so two different libraries so what do you mean by places so what do you mean by places like different pages or so I'm not sure what I mean is same library is being altered at two places okay so sorry can you repeat so you have a single library and it's being altered at two places so you can sign on it it's kind of like something and in other cases it's being altered by printing but in the world it's first and which one is it impossible no it's not impossible I think even when it's set to false it's still kind of there in the sort of array of libraries like if you want to do like phpbook even if you set to false I think it's still there so you can still kind of add things back if something is overwritten once it'll kind of change that so maybe if you're taking one like CSS file and changing it to another it'll kind of save that in the library definitions so when it comes time to your next override you may actually have to use the path of the second kind of library override so it can get a bit complicated one thing that we probably want to do as well with these is at least add like a namespace so you can say like at name of theme and like specify the path that way because right now with the stable things sometimes to override things like to override like a specific CSS file sometimes you need to specify like a big long path to like stable things because stable themes actually if you look at maybe I should just bring it up if you look at the stable things okay anyway if you look at the stable themes info file you'll see that it has like a lot of library overrides so you're basing it off of that so it's already doing overrides so you just kind of have to you know keep that in mind when you're doing your own so why ask this but it's kind of similar with what we have basically like we have similar books within two different modules and then if we consider the actual size of which books takes on and if you have similar books you know basically because then you see the module way and each book takes on as to say which books are on this class and then if we sort out which one we might want the later on I don't know all these things yeah like in that case it kind of sounds like you maybe want a separate library instead of always using the same library if you have all these modules that are working with it especially because you can do like libraries extend and things like that so maybe one module could like extend it with its own library instead if that is possible for your use case in general I would discourage modules from doing too much with CSS in terms of like overriding libraries because if you're creating a module especially a controlled module it would be making it really complicated for people if you're like overriding libraries and they don't know about it and they're trying to also override libraries so I was just going to say so in this situation I think yeah sorry so I don't know if that really answers your question but hopefully it gives you some things to think about thanks first of all I have a hundred questions to that we can we can prioritize like yesterday I was sitting with Kappa sessions so there is events we can prioritize higher events comes in the where is the priority number in the library Kappa is there it's just like we can prioritize the library which has to be loaded I actually I have I just want to ask you the Kappa also like I was telling yesterday the events can be loaded according to the priority setting so we can load the library like that are you able to so it's a one JavaScript file I want to load it separately from suppose like color box so I don't want to use the the basic one we are having it so I want to load my JavaScript library this has to be loaded first I think you would declare dependency right okay if I'm understanding why do we do that how can we do that so maybe I misunderstood but I think like for your library so sorry does your library depend on color box or the other way okay color box depends on your library yeah and how it should be customized but you want that loaded before or after color box yeah before okay so and are you declaring color box library or someone else you so you just declare you create two libraries you have color box library and then you have your custom whatever and then in your color box library you save dependencies you know my other library and then it will load that stuff first or dot tick files right because there is TMS and then dot tick files I don't think so that's the best way to attach libraries yes sometimes it is because if you know that the library is only needed when that's with somebody's library then you're optimizing your own loading because that is always loading okay thanks so it just depends thank you I like to that it's also possible to add additional parameters or a JavaScript file when it's being loaded and you can specify a weight which can be minus so you can set like minus thousand and it's going to be loaded before anything but that's not really the suggested way because it's not something that you can really trust on you can always hire a lower priority so I think that the way to use the dependencies is the better way because the dependencies are used to create the priorities I would like but there is other way if you can figure it out yeah I just like the dependencies because it kind of figures things out for you yeah okay go ahead you meant service workers who are people so how can we do that service workers no idea I wish you luck so I just want to grab one piece of my thumb anyways I just said earlier on that tomorrow there will be a whole screen but one of the things we've used in the last three or four years is going to be stupid kind of finding a life hold somewhere I'm kind of anxious now to take over a life hold and discussing with people for hours we really need new ideas for this we need a lot of people that have an opinion or an idea or help us out figuring out which way we want to push the theme it seems we can't have an idea that we know what we're doing we really don't because improvising just as all implies to it we've just done it for a lot of years so we really need to do it tomorrow and this is about opening a life to come with us even if you don't even hope so that's just the end of the world we're going to have to discuss it and put in ideas and talk about what we want to push to the 8.1, 8.2, 8.3 as so many things we don't even know yet but a lot of these things comes because we talk to each other so it's extremely important that we get people to show up tomorrow and even the dumbest questions are actually the best questions but that's also figuring out where we want to change stuff in the future so it's actually if you put in like an hour tomorrow that's going to save you like a week of work in about two years it's kind of strange to think of that but putting in the time now is actually going to save you in the future and those kind of issues you have about how to do this how to do that all these different concepts if we have them, we know what we can do with it and we're pretty tight-roof around the geometric project but we want to have more people in and right now we're basically more than Europeans and English that's kind of the people behind it it would be pretty sweet maximizing into a worldwide concept there's just a bunch of black dudes and kind of eats in color and they're pretty badass chicks by the way sorry for that sorry I'm going to get my ass kicked out because anyways, come tomorrow pretty please help us out I need more ideas and I need sane people and I've met enough sane people also people, it's not so sane but that's good so this is probably a really good example of something that hasn't really been considered and thought through how to do to support that so if you're interested in talking about how we could support that and I just looked it up and it was an experiment of how we could work so that's something that we could work with tomorrow awesome, okay I think we have one more question over there I don't know if there's still a mic over there yeah hello yes I have a question here oh yeah go ahead I'm trying to work with Drupal 7 Drupal 8 and it's a contributed theme and used by many sites according to Drupal.org maybe more than 12,000 sites so in Drupal 7 the way the main menu inside branding a couple more things were shown it was using PHP code inside of the template files but it was using functions and variables now in Drupal 8 site branding and the local menu task that is tabs we have blocks for them yeah so from what I've been talking I've experienced that two ways to do that would be I think variables using process functions and using those variables to show the branding and tabs another way would be to create two new regions in which I can use the everyday learning on blocks so being that this theme is used by a lot by so many sites they would want to to work with Drupal 8 and what should I do in this case because if you listen to new regions it seems that Drupal 8 is a big variable seems like Drupal 7 so I think if you can I would like to discuss that with you after because it's a very specific question I think and the only other thing I want to mention not to discourage you but just like I said earlier a lot of people moving to Drupal 8 will be starting crash so they may yes use the same theme but they may not again not to discourage you but if you can please come up after and we can talk about it in detail yeah sure thank you and over here can you extend everything in Drupal 7 we cannot extend regions and oh like do you mean from the info file yes yeah I think that's pretty much the same so you can't extend but you can kind of copy it and add your own so I don't know if that's what you're asking but like I know when I first started doing Drupal 7 theme and I was using base theme I just wanted to add the regions but it doesn't inherit the regions you just need to re-specify all of the regions does that does that help? yeah I think it's the same so you just need to copy into your info yeah thank you over here yeah I just want to mention that Dan Callahan from Mozilla presented on service workers yesterday okay yesterday didn't really tie it to Drupal but maybe you can pull them in to accept something tomorrow a service workers society and get something to happen service workers society does it sound like it has a secret handshake or something cool thanks for that any other thoughts we have like I think a few more minutes but if not that's what they do you can like that's good to you alright thanks everyone for coming thanks for sitting around