 It's not get status, right? So where is the where is the MD file I can't see the MD file Yeah Let me see what else. How do you see what you're pushing? Let's see what's in the repo All right, I go to file here, right? Yeah, I think it's okay. Just stop it and it's okay There is not a picture Just it just pushed all the way. All right, but we don't need the html Yeah All right, so here everyone So welcome to the majority workshop We prepared something. Yeah, try to build a module. It will be It's because it's not ready yet. So I Mean the project is not finished, right? So we're only doing a lot of stuff by hand and maybe we come up with some ideas to build some better tooling for that But it would be not that hard to build a module So I guess I want to explain first how does it work like in current Fedora and maybe How we wanted to work later so I thought I'll be Figure white was so I need to use this one. I have it up ready. Oh No, I just wanted to talk about the branching and stuff. Okay. Sure So, yeah, I don't have any slides. I thought like I can use this. Can I use this? I think so. Yeah, yeah We can get rid of Wi-Fi Only these No, I just want to draw something so Yeah, it's an official So, how many of you know Fedora How many packages A lot of you. Okay. So, you know how the branches work and everything like you have a repo for package and it's got branches for example f24 f25, etc And then we take all the packages for example from branch f25 and build a distro out of it So in modularity, it will be a bit Messier because we'll get branch for I don't know version of the package and then we have a module and D Where we select the packages and the respective branches to build the module so you can choose and Mitch makes a match the branches as you like so Yeah, basically that's it So So, yeah Yeah So if you prepare Which you wanted to use so Python over with scripts and stuff, but the Wi-Fi is pretty slow here So we bought a virtual machine for you. We can SSH to that and try to stop that. So Yeah, we need a repo No, it's fine. It's working. You can see it here as well Yeah Should we play the video which video I put a video in here, so you don't know what it is. What our module is You can play a video They can watch if they want to then Okay, if you like, yeah All right, so we have a virtual machine where you're going to build the modules. So it's on this IP address 35 Right, yeah, that was like for the original plan But yeah, the Wi-Fi is pretty slow. So we have generated the file for you It won't be just interactive and It's only Because we will be using SSH and we don't have to download like packages Yeah Yeah, that's everybody know Do you know SSH, right? So there is thing called Marsh, which is like faster SSH, right? That's transparently So this So you can use SSH or Marsh to connect to this machine and we have users called student from 01 to 30 Yeah, and Password is I think Password is DefconnCZ with three instead of the V and for security purposes, yeah, it's much more safer So Who's got a laptop? So let's try for example, here you go one That's creepy, because I think we have you You can All right, so two, three, four, five I think six, seven, eight Five Nine, ten I don't see a laptop there. Eleven? No. You? No, eleven, twelve, thirteen. No So twelve No No So thirteen, fourteen No, so fourteen Defcon Defcon Yeah, security Can you open the repo? Oops Yeah Maybe we can we can show the login Here's the wrong one That's going to do the end goal. We'll start here, so this one So could anyone connect? No. No, no, no, okay Can you read? Actually, or should I just sit on the screen? Okay So it's like three five one five six two five three four three, okay Four three, thank you Student zero one two thirty Yeah What really? It's Langdon's fault What Defcon scissor Yeah, so this guy's Alright So could anyone connect? It's usually not the case with a warship Someone have to have troubles So next thing we need to do is to Open this URL. I can copy it here as well So on the URL is a guide and That's the machine where we're going to build it It should be beefy enough for everyone to do all the stuff and Yeah So I can just go through the so do you want to go through the guy sure. Yeah I suggest you to make sure that everyone is like was able to connect because it's usually the case that Some people are not and then they will be lost during the whole workshop. So all right better ask Yeah, so can I help everyone is that working for Yeah So we can try to connect here and Two screens really So It's like So it was the wrong you are What did it open this file just about other people. Yeah, we go how we want to get people to this file, right? Oh my god That's the wrong one No, it's the wrong one We need to put the file there No, this file I guess yeah Sorry got the wrong URL We'll try it again. Oh my god. Yeah, sorry. It's a different URL. It was wrong one soap Well, it's still there. You can just go to the files and find the d file or you can use this URL We realized the Wi-Fi was so bad yesterday, so we were then going to do it in containers. Yeah Yeah So do we have the links to the moduland d I We could just you know guide through the thing This one all right You want to run this after it's pretty fast now Is it yeah, it is we don't need to do that you can go over what a module MD is Yeah, right. I think I need to use it. I have a notebook though No, because you need to print out with a module MD Do we yeah? All right, so we can just display that one. Yeah You Sit Yes, we will yeah You can do just so do so and become a route. Yeah, yeah, we are on the machine So please just I don't know don't do anything Yeah, we will kill it after the workshop. So that's fine No, please don't kill the machine at least you can kill it in the big in in the end, but yeah So I like the picture it was there, so can you open yeah this one Yeah What is the test module right Does it all right, so oh my god, okay, so So do you put prepped EP leader? I did in there Should be in there Yeah, oh it is okay No, but we should have the This module right yeah So why is productivity here? What I didn't run it No, but okay Yeah, I guess so All right, so the correction would be we need to download the Testing module, I don't know why it's not here. I guess it's some kind of different version of something just broken So should I just do like them? So I'll just look into the thing Yeah I don't think there is like anything I will put it there. I just need to prepare it. I guess because Yeah, yes What's this? Okay, so it's 35 Soon as you are copying it to the home directories, okay. Oh, that's great Yeah So there is like student one and student zero one Okay, so should we try? I don't know. I think it doesn't matter. So Yeah, you should have This built modules directory in your home. All right So you can take it from I all right. Let's let's do it. Let's do it together. So Yeah Yeah All right So let's try to get the let's try to get a directory with the build script and the module and these so it's in home Fedora, you need to be rude to access it. So so those two You will need to type your password and then It should be in home fedora built module so we can copy it to home fedora built module to The home like this Yeah, we know All right, so into your own home. So yeah So home student. I don't know what So like this so Niels, you don't have to do it some of the some people can have it already there some not so If you don't have anything in your home, please do this command Yeah What what's doing 25? Oh Like all right. Oh I know what I mean. Yeah All right. So for me, it's already there. Oh, thank you All right Then I need to go to my home directory. So it's like home student. I'm for example 25. I get to the built module directory and there is a Pref CPD module which is a One of the modules we can build So let's have a look at the module MD. You got to start No, oh, there's a dog running this one. Yeah Okay, okay, okay. Yeah Or I can just Make it smaller. Yeah. Oh my god. What just happened. So it crashed Yeah, the process what? No, the terminal crashed. So I have to run the terminal again. All right. Sorry guys Okay, so let's try again. We can view the Build module preft PD YAML Yeah, I know So Okay Yeah, just use PI So, yeah, this is the module MD. So there is a summary description license of the file Dependencies so we need the base runtime and also we need for runtime There are some references about I don't know where the project lives, etc So there is an install profile, which means if I install the module the prep tpd package should install and an API which means This is the only package I guarantee will stay unchanged or like Yeah, actually, it's like that and I have components. This is these are all the packages in the module so there is the for prep tpd prep tpd and also the dependencies and I'm taking all the packages from 25 here. So There is a name of the package there is a git branch in this kit And also I can specify a build order of the packages. Oh, sorry. So it's Yeah, so it's in the build module directory. There is a prep tpd and prep tpd YAML Yeah, you can still it for me for example, or it was in the It's in home Fedora Built module copied it. That's why you can copy it from here Isn't it So just copy it from student at 25 Yeah, what student 25 works, yeah So does everyone have in their home This so that's the example module we can try to build here, but it's got a lot of packages. So I don't know To this model before instead of Hmm Okay, I just started looking for you I think it was Mm-hmm Yeah Oh The test module because this is just too big, but I have no idea how to Play yeah, the plane will do it. All right because we shouldn't do the pro of tpd one Yeah So is it there yeah, that's fine Mm-hmm What Yeah Okay, so let's try to build it, but I realized the private tpd might be even Big so I just created a new repo in my home. So There is this test module thing, which is a much simpler So it's in what all right longer. We copy it for you And it will find it in your home. So if we do This module yeah, yeah It's in student 25 home on Langdon will compete to to your home as well So this one got like I don't know just three packages, which should be pretty easy to build so You will have it in a moment and to build it We need to use the script from the build module directory. So I can do build module like this and I can specify the Yeah, okay So I can specify the test module I want to build so it's like that and the results. So for example just results and this will This will run a Dr. Container with module build service in it and I put it into container because it could like this much dependency so I don't want to mess up the machine and It will build the module in mock We're like mock next to docker, but yeah, no No It's different What All right Yeah All right Yeah, I don't know well it's running inside docker, but Yeah Okay, sorry, yeah Yeah, so this will download all the packages from Fedora build them in the order we specified before And produce a repo so So yeah, the workflow we want to do is just for users to somehow generate the module MD file and Submit it to build it will be built automatically But to write the module MD file it can be a bit tricky because you need to specify all the dependencies of your package So we might want to come up with some tooling for that But in the meantime, for example, if you want to try we can do repo query and figure it out or I don't know. Yeah So we are using a fresh mock for each of those packages. Yeah No, no, no, we use the we use a mock with the base runtime When we build a package we'll take it back Well, it's kind of yeah, okay, it's been faked for you. So It's a fake base runtime actually All right So there so I think one source RPM from Fedora. Yes, it's being built in mock, right? And then what happens when another package is being built the same thing. Yeah, the same Oh, they do they do because they can provide build dependencies for themselves Yeah Yeah, yeah Oh in which order I mean, all right Yeah Again So in the meantime To So yeah the way to do right now you need to write a module MD yourself but If you want to for example try that, I don't know if you have some packages And even you don't know the dependencies or you want to Try manual builds like one package by another manually you can use copper. I don't know Does anyone do have you do you hear about copper Fedora copper? It's a community built service. Yeah, he does because it's his project, right? Yeah Mirko, you're gonna work on a copper. Hey Some All right, so writing the module and the Was one option and we will always use module and be to build the modules But if you want to try it first and you know, for example, not a federal package or just member of the community who's not contributed to federal at all you can use copper, which is a community boat service and You can do right now something packages to copper build it and use it by yourself But you can also build modules in copper. So If you have some builds, so if you have some Packages built in copper you can then go to here to modules and you will be able to For the record, this is dead instance. Yeah, yeah in production What's it have instance, but right and There is a bit different approach you just add the packages Before you will build it manually and then it will be able to select which packages you want to include so Then I can select some which will be the API. So for example, I care about just this one Yeah as normal project and copper will generate the module and before you based on this So you can specify the API the install profile for example default So I want to install just this one And I can have more Installed profile for example, I don't know like big one and I can install for example all these three packages and When I click here build module Oh Yeah, I also need to specify the name stream and version name is taken from the project's name Stream is like variant of the of the module. So For example, if I install a module, I will specify name and name and stream so it can be like web server and with this kind of database and this kind of An example, I don't know it can be if it's a one component that can be version If it's something more complicated like lamp, there is no such thing like version of lamp It's gonna be for example Adam's version. So I can just type Adam and Kind of like the major yeah Now I mean do I need to do when I change the API do I need to like bump it or I just change it So I can have stream number two Number one Yeah Yeah, in federalize will be like the name will be taken from the kids people name Stream will be taken from branch and version from the timestamp of the Yeah They can have or I can have Python and yeah Or can or even Python. I don't know 2.4. I buy that 3.6 and this So it's like yeah version of variant and the version will be taken from the timestamp of the build So it should be I guess it should be Automatically later. So Yeah, I just didn't feel these so I just type some version Yeah, it's to be the integer Yeah, I'll get to that So so when I get the module built in copper it will look like this I can open the previous version because it will be already done and It shows me how to install it on my machine I guess the workflow might be be different in the future when we are ready but right now I can test it with this we have a DNF plug-in for installing the modules and Yeah, I will enable the repo and I Can install it and there is the module and D Which I will be able to then take and submit Into Fedora for example if I want the package if I want the module reviewed and Available for everyone as part of Fedora Yeah, it's like upper generated the module and before you so you don't have to write it yourself You can just build the packages select API install profiles and this I Have All right, so that was the copper part and in the meantime we should get this ready on the yeah So this is ready and I should be able to in to see the results. So the results are Are here so I can just go there results something you need to have at least one. Yeah Yeah, for example default, right? I guess this will be also a policy decision or technology decision So yeah, if we decide what called default it will be default. So that's the that's the output What's not still fixed here is this When we build a module you want the RPMs what? Oh, I fixed it today. Okay, so I have an old version several hours old version Yeah Will get rebuilt Yeah Yeah Now it generates a module and he and copy those files to module and he and director Yeah, it's like not ready. So if you open the Directory on back-end there is the great repo for Vienna and module and the director Okay, so when I build package one and three like names And then I create module that they're only two years inside the one you If the one will be missing from the repo even if I build it in the same copper I guess you shouldn't even build the module if you don't have all the dependencies in there Yeah, so then you have to include it right yeah Yeah, so yeah, so You need to include all the dependencies which are not in the base runtime kind of yeah Oh in the future, I guess of course Maybe yeah So yeah, the copper part was like yeah demonstration of the workflow The technical side Yeah, yeah, it will it will give you instructions in the In the module section probably no Yeah All right, yeah But when it's fixed huh Yeah, so you can just All right So yeah, now we have 25 but they're later when it when it's fixed up. It's been already fixed there will be So there will be the module name Stream name and the version Yeah Yeah, but there will one extra step so when we build this module We just know it gets built. It's working at least for the build part. So we will be shipping that putting it into the next state when we Built an artifact that we will actually install so there will be a darker image No, right, yeah, it gets tested and then people to talk to image for example that you can install or even the or even the Repo, but I guess in the f-26 will be just the images, right? Versus repose Repose to yeah Yeah I need for this port and stuff like that. All right, I can show you So, let's have a look Yeah Oh A standalone container with ice in it is not good for anything except building on a container Yeah So Yeah Okay Like the no no no like should you create the basic Yeah, that would be But that would probably case like there will be You probably still have this you have to connect Because there is always Yes, you like it's likely it's likely that you will probably find a use case We want to generate a container for like every module. I was just gonna clarify that it doesn't currently at least Generation of those doctor And if you think about it, like sometimes it may not make sense from an author perspective Like you want to you know, the author needs to be thinking through what their kind of artifact outlets are Well, you need to somehow you need to somehow define The minimum legs to pull the package Yeah, so that we can do it's also but it's also the like What is the what's the module's intent great? What am I gonna maintain that module for right? And the thing is that there are really multiple cases of that So if you're doing a DNS server in a module, you may want to have two containers like if you want the Authority to be in a server of the user interface and a passion DNS server that you can figure that this drops into a system Not just the one-to-one You know it depends on the use case Part of this we're gonna try to capture in like that one's right like to you know, these are the best practices, right? Part of it's just gonna require people to think it through, you know, when you do that, please like what you call Multi-service inside of dinner. Yeah, that's just that you called your system. Yeah, even if it's just one server Yeah, I think that's the path We're Right now we're waiting for the infrastructure, right? So we're kind of writing a bunch of stuff over here that we're not what we need to then plug into the infrastructure one of the plans So there's some clean up Happy But for some stuff for example like web server or something which can run One option is to build Container automatically. So for example The built is then when I submit a module for built it will automatically produce Container with the module without the configuration and without the run statement, etc And then I will be able to use it as a base image To produce even more variants of the container in OSBS For example Yeah Right All right All right Can I have Python 36 module and part of Python 37 module both provided use of in Python Or not not on the same post Like so I do I can like have those module available at the same time Right, but I'm not be able to install them at the same time not as RPS only as containers But if I install them as containers then I require the user of this Python Do you have his application also as a container? Well, yeah In the or on the top of it You have module can your two modules can provide using in Python 36 using in Python 37 Yeah, so I can run it on RPS Yeah, it's no different. We're just encapsulating. You're acting that problem in a different thing, but it's the same problem Yeah, yeah, yeah, okay. I'm just making sure that it's the way I thought it is All right All right, so that was the Building part and We can try to do the I don't know the development part like writing the writing your own module MD But I guess that would be useful for just people who want to I guess help us with For example developing some kind of tooling because right now it would require to get the package query for all the dependencies and Filter all those join based on time So I don't think it's like useful for everyone so Yeah So the building part is like this. I guess that was all Now you have to do this, right? Yeah, well, I can do I Can try All right Yeah, that's it So yeah, when I was building the so right when I was building the module it just took all these Three packages and build them in the based on time build routes and I can see I have Built all the on this one specified. So you would first build these two parallel packages and then These these things Yeah, yeah I don't think it's useful Right, all right, so I guess That was it. So are there any questions or something? And dependency in both If you creating what you want to install as RPMs on the system You need to think about this. So one way to The same situation No, it's the same situation if you want them both run on the same system directly You need to package it in a way that they will install in the separate part. So for example, one of achieving is is No way, this is like an implementation, right? But you can for example the API packages will remain the same but all the other dependencies Maybe built in a way that we installed in a different part Yeah And Okay Yeah One of the reasons why we need to get the size of the base on time right to minimize that problem becoming unnecessary I think there's a difference in the base runtime and the common Minimal install which is small, but there's still to be some things every need they should be available across Some of this gets you into kind of a philosophical discussion about the entity where kernel Minimum space common user space and we have to sort that out What we call is we do have already Getting this company this trade-off right is very much We still have a lot of you to figure out all the options because right now It's actually today really not a problem for it's a challenge that we have to get right if we're gonna start If you so So you have a tree The more If you change the rule and say oh, I want a different g lip see But you did that then like that's great, but every way to run that on the same instance of The system is to run it in a container That's just basically the trade of business if you conflict to high in the tree then parallel or yeah parallel Install of conflicting stacks that will contain us all for us We don't want to force you to contain this but we're gonna apply a lot of the traditional constraints Basically as many to use the hard to use cases which are solved by the containers will solve only with containers We need to get the really common stuff I guess As long as it's easier than our Name the bind truth thing, you know So I guess this was a great Oh We still don't have the base runtime So we can try to I don't know install it in a container, but Yeah, right so we can run DNF install Yeah, pretty much All right, thanks for coming The lighting talks which will be at six at the D rooms and you can check In the application on the website if you click In the schedule on the lighting talks, you will see who is presenting and what