Welcome back to the channel. In today's video, I'm going to show you how to use gravity forms and tap the information that's coming in through the form submission and then send it to an API or send it to somewhere different. Now, if you haven't seen my video where I show you how to do the exact same thing with contact form 7, you can see the card that has just popped up right now or you can check in the description to see that particular video. Otherwise, let's jump into creating a form and if you don't want to see the whole process of creating a form, you just want to be able to tap your information and send it. Then you can check the video chapters down in the description and skip to the part where we start tapping that information and sending it. Otherwise, let's jump into creating a form for those who have never used gravity forms and see the power that gravity form actually has. Now, I've installed version 2.4 so I'm going to activate my gravity forms as a plugin and then I'm going to get a new part here that says forms so I'll click new form. I'm going to call this inquiries and I'll say inquiries from my suppliers. So I'll create the form and this will give us this field that looks like this but the new version of gravity forms will actually take you to something that looks like a post. So in here I'm going to do very simple things. I'm going to add a single line and basically this is going to be the name. Now with gravity forms of course they will allow you to add so you can say this is the business name and you will see that as you add those different features they actually show up right here. Let's move to the appearance panel so we can add name here and it will show up like what we see here. We can have our field increase in size by saying large so it will complete the full width or medium to take up just a small portion and if it's small it will be really really small. So I'll go for medium as a size. You can add custom classes if you need to and then style it and then you can have a custom validation message and say maybe please enter a name because someone might have missed adding that field. You can choose to say I don't want to see that label up there and you can choose it to be hidden or you can leave it as shown and then you can choose to say let the description be above the input so you'll have this description showing right up here. So there are a couple of things that you can do to make your form look much better and in the advanced section there are a couple of things that you can do. You can have a default value for example. You can change how this is viewed in that mean so I'll add this as a medium so that when we see that when the form has been submitted you'll be able to see this. We can always add a default value if someone misses but in this case we don't want anyone to skip this so we have all these fields right here but I'm going to go into the advanced fields and I'm going to choose an email address because I want to be able to reply to the email and what I'm going to do is add a confirmation for the email. I want someone to be able to confirm their email so that in case they have messed it up they will automatically get something telling them hey you messed up on your email and then I'll put a field as required to show that our email is required and then in the appearance we leave the fields as media so we'll save our form and then after that I am going to add a couple of other things for example I need to be able to check their order and I will say how many pieces of items do you want to order how many cars do you want to ship and then that will be the number of cars. I can choose a format and then I can choose to say we can have a minimum of one and a maximum of five and we'll say this is required and then when we go to the appearance we can set up whatever we need down here and in the advanced section we have all these fields now with this field we have a number and I'm going to move it up and the reason I'm going to do that is I'm going to ask my suppliers when they enter a number here then I should be able to get an email field in here so I'm going to come back here go to advance and I'm going to choose to add a Nebo conditional logic now what this is going to do is that it's going to show that email if all the rules that we have down here are met or if any are met so you can choose your option down here and I'm going to say let's look for the number of cars and we're going to say is number one is greater than one and then we can add another rule and say number of cars is actually less than six because we say the maximum is five so I'm going to have those as my rules and then I'm going to update this so let's go and preview our form and see so this has a name requirement so I'll put my name as techie press and then in the fields here I'm going to put three and you'll see that my email automatically shows up here now I didn't have to add this to show up after the three or so but I wanted you to see how the conditional logic actually works so if I put a number like seven it will not show but on hitting submit this is going to say the number can only be up to five so the form automatically does that validation for me but I wanted to have when someone enters something like three that automatically get the email then can feed it in so you can see the bits of differences that we have with the phone so let's close this out so with this we're now ready to have our form we'll put it on our website and then we'll have it sending information to our API or a database away from our website so the one thing that I need to do is I need to come to the settings here the settings form I can see if there is anything that I need to change here maybe enable animations if I need to and then I can limit the number of entries or I can schedule the form and say this form should only be available at particular times of the day and I might require the user to be logged in but I won't do that for now I will not also do the scheduling of the form and since my settings are all done I can actually update my form and after saving my form I can go to the confirmations and we can edit the default confirmation which is say thank you and all of that I will leave that as that and it can either be a text it can be sending someone to a particular page maybe you have a sample page or you can send them to a survey page or you can actually redirect them to a URL that you feel like this needs to be the one so in the notifications you can have an admin notification whereby the administrator will receive a message saying email ABCD was sent to you so check to see what it's saying now in particular countries you have laws about personal data so you can stop picking up of the IP address you can trash the entries that are made you can delete them automatically you can also enable integration with WordPress tools so that you can export or erase personal data depending on particular things like emails and so on so you can do export these or erase them in this section where you have tools and then export so for now I will not allow that but I will prevent the tracking of IP addresses and I will hit save so after doing that this is the admin section where you're seeing the admin name here you see that how many cards and you see that email so those are the fields that we worked with in the original instance we know that this form is actually with the ID of two but that's not something that I need to keep in memory I'm going to go to my pages and I'm going to have a new page and this page is where we're going to have our suppliers I'll call it suppliers and in here we can click on this button and you see we have this gravity form showing up right here so I'll click on select form and I'll choose inquiries and we know that it allows us to have a title a description so I'll turn those off for now and hit publish so after publishing this I can actually go and view the page and when the form opens up you'll see that we have this form right here I'll add my techie press and say I want to ship in three new cards and then my email will be techiepress at techie.com and then I'll have to confirm this particular email also here so I'll hit submit and we'll get our response right there so if I go into forms and then I just go to entries you'll be able to see that we have this showing up here now we want to be able to get this information that will be coming in and sending it to a particular API and I'm going to use an automation tool that is called Integromat that you can actually pay to use or it's actually free so I'm going to go back to our WordPress in here I'll develop a new plugin trap gravity and then I'll create in here a new file which I'll just call also trap gravity .php I'll hit enter and then we can start writing our php here so in here I'll use my snippet to start my plugin which is that plugin and then I can say trap gravity forms and then I'll change the author link techiepress I'll say this one collect gravity forms to webhook and then in here I'll have a gpl license gpl2 and then I'll just call this trap gravity I'll save this and then I'll come back to my WordPress in the admin section I'll go to plugins I'll activate this so the first thing that I'll do in my code is to add some security stuff and say let's look for whether the abs path has actually been used and we're basically saying if someone tries to use this particular php file without using WordPress the normal way then nothing should happen so I'll say if it's dying I'll say no entry so in here we're going to use a hook that comes from gravity forms and the hook that we're going to use is actually called the gform after submission when you come down the documentation you'll see that actually you have how these hooks can be used now if you want to trap all the particular forms you have on your site and you want to do something with them you can use this gform after submission but in the event that you want to use a particular form you need to know its id and in our case we know we want to deal with form id too so we're going to change this part into a tool so for now I'm going to copy this right here and not use all my forms in my site and then I'll come back here and I'll paste it and we're going to use the form 2 right here now I'll add take a press right at the beginning underscore to make sure that my function that I have here or my callback is actually going to be unique then I'll come down here and I'll say function with a function name here we'll add our brackets and then inside here is where we're going to add our running code so for now this 10 stands for priority and we are saying when the form is submitted at the priority of 10 let us run this function and this function is actually going to get two arguments passed to which right in here now those two arguments if we go back to the documentation actually entry and we also have the form so I'm going to come back to my code and I'm going to add the entry and then I'm also going to get the form now in here I'm just going to error log this and inside my error I'm going to add a print r and this is something that I use all the time to help me see the data that I'm actually getting before I manipulate it or do with it with anything and since print r expects this to be a string we're going to come here and add a comma and then we type in a boolean of true now this error log function will only work if in your wp config you've actually added this rule and what it's going to do is that it's going to add a new file inside your wp content right here and you'll see debug.log or you can actually shift it to another place if you don't want it to be in your wp content folder so I really don't have a preference over that so I'm going to just serve this with my wp debug log as true I'm going to come back to my front end I'll click my suppliers page hit enter here to reload it and I'm going to add a new name and say I am John Doe I'll be shipping two cars and then I'll be John one at John.com and then I'll need to do the same thing at John.com right here and then I'll hit submit of course I'll get my message thanking me and when I come back to entries here and reload you'll see we have John Doe with two and then the email is this but when I come back to my editor I'm going to go right here and I'll reload my files and you'll see that we have a new debug.log right here and when I click on it you'll see we have our ID of seven that is generated by the form we have all this information but we have an entry of one two and three and these are the names that we need so I'm going to copy this and I'm going to come back to our editor right here inside our development and I'll paste this here so that I can quickly reference what we need and then I can also just use the form ID to make sure that I'm working with the exact form that I want so I'll copy this and then put it here we'll use the form ID and then we'll validate the information that we have here so I'm going to just comment this out as well and this is what I'm going to say the first thing that I'll do is say if we're actually using the right form so we'll say if our entry and then we shall say let's use the information we have here if our entry is actually getting a form ID that is equal to two and I need to have two equal signs right here to say that is two I'm not assigning this to be equal to two I'm verifying is it true that it is equal to two yes if it is equal to two then we shall do the following information in here meaning we're getting the right form and it's going to send the right data so if we are on the right form right here so we're going to say this is our info it's actually going to equal to an array so I'll use the square brackets for now and I'll say let's get this information right here I'll say the name that we have we're going to map it to our entry and we are looking for item one I'll put a comma at the end I'll duplicate this thrice so that we can be able to say number three is going to be our number of shipping items and then this will be our email and I would say this is going to be two so I'll just push this over so that they look a little bit neater and I can actually take this away because I'm done using it for now and after getting our info right here the next thing that we're going to do is we're going to use the wp remote post which takes in a url and it takes in a couple of arguments like our headers our body so whenever you're doing an http post or you're sending information to another api you need to have all this information in so I will set my url right here and say it's going to equal to these quotations and I'll come back to my browser and I'm going to open up an automation tool inside integromat.com that will allow us to pick information and we can do whatever we want with it so for now I'm going to go to create a new scenario and I'm going to be getting a webhook because that's what I want to have I'll click continue and then I'll choose a webhook right here and I'll say this is going to be a custom webhook that's receiving information and we're going to add a webhook name to it and I'll say gravity entries and I'll not restrict the ip that it's coming from and I'll hit save and you'll see that we now get a new url showing up here which I'll copy and then we're going to click this little button which says it wants to determine what kind of data is actually going to come in into our integromat so I'll go back to my code here and I'll paste this link right here in our url and we know that we are going to be sending information so we also need to add a method here and we'll say this method is actually going to be a post method because WordPress sends all remote posts with a method of get so we need to be explicit here by saying we're going to be posting data so I'll save this here we'll go back to our browser this is still waiting so I'm going to go to the suppliers here and I'll say let's send John Doe and then we'll say John Doe is sending focus we'll say John at one.com I'll add the other email and then I'll hit submit and you'll see that here once the webhook receives the data it says it's successfully determined and now we can click okay right here now I'll add an extra module here that's going to convert our data that is received and just aggregate it as a JSON so a module of JSON and this will aggregate to JSON so I'll add it here and so it's going to pick its data from this webhook so it automatically detects the webhook that is here and adds it as a source module because of this little link that we've added now we need to add a data structure and I'll say let's call this our JSON data array and then I'll click add an item because we'll expect a name which will be text and we'll say that's required we'll add also another one which will be the number and that's going to be a number type and that's also required and then I'll add the final one which is the email now say that's a text it's required and add it as well so I'll hit save here and you'll see that this automatically loads up for us these fields so that we can populate them with the information that's coming from this webhook so I can safely add all of this without doing any kind of coding or whatsoever so at this end after aggregating this to JSON you can actually add other modules like HTTP and so on or send this information to your email or to your google sheets and all those modules are available for you or you can even send them to your marketing tool or CRM whatever it is so for now we are set we are ready to receive data coming in from our particular suppliers so I'll hit suppliers here and I need to hit this to run so we shall come back to our suppliers here I'll hit enter on this and then we shall send in Ethan Ethan is going to send focus and then this will be his email and then I'll hit submit here and when we look here you will see that we have a new item that has been added and that's the information coming in from our spring from our suppliers form here so that's how you actually work with gravity forms with this little hook to capture all the form data add the id to the form right here and send your data to wherever you want to send that particular data remember if you want to purchase gravity forms or intergrammat you can pick from the links that I've shared inside the description and that will allow me to get a little bit of a tip from you on your purchase you won't be paying any extra from the usual but the particular businesses will allow me to get a little tip from that so if you enjoyed this video don't forget to give it a thumbs up leave me a comment letting me know how you found it how you're going to apply it or if you have any challenges and you can share this with all your friends who are learning about sending data from gravity forms or if they need to use a form and send it to their particular API otherwise enjoy whatever you're coding and goodbye


I'm excited for it. I just wanna go fishing. Do you have a ghost pepper doughnut? Um, I do, actually. Let's get a ghost pepper doughnut. Yo, what's poppin', people. Welcome back to another video. Hope you guys are having an amazing morning. I'm actually going to get a test this morning.  I actually feel a lot better today. I just, I woke up nasally and it's kind of funny because the last couple of days, my allergies have been perfect. Like, I haven't been stuffed up at all and it's been like two months since my allergies have felt this good. But then this morning I woke up because I forgot to take my allergy medicine last night and now I'm all stuffy. Rather than that, I feel phenomenal. I feel very loopy and tired, but rather than that, I'm feeling pretty good. So, we're hoping that test is gonna say negative today. If it says negative, we're gonna go fishing. So, let's go ahead and hop in my car. Nice. By the way, if you guys want to check out the Big Bass Energy Lanyards, I'll drop the link down below. Just dropped them on the website last night. If you guys do caught the lanyard, be sure to mention me on Instagram. Boys and girls, ladies and gents. Every time you get some Big Bass Energy merch, tag me on Instagram. I love seeing that stuff and I will repost you guys on my page, but let's hop on the road. It's honestly been so long since I've logged. I feel like almost every single video is like pure fishing video, like just having a good time going out there catching fish, which I enjoy and like that's what my channel is about for the most part, but it does feel good to kind of pick up the vlog camera for a minute and just kind of chat with you guys and have more like real conversations and tell you guys about my life because in the fishing videos, I don't really get to talk about that much. Like it's all about catching fish and this, this and that, but you know, I kind of want to get to know you guys a little bit more, especially since I haven't logged over the last few years a lot. So, we're gonna start doing it a little bit more if you guys enjoy it. By the way, look at that pimple. It's hot, isn't it? Just woke up this morning, pimple on my face. I don't have pimple on my face since probably freshman year of college. I don't know, it's a little pimple. But we got about a 15 minute drive before we get to the test and I am so thirsty. I really want to stop by the gas station, maybe get a little water, maybe get an energy drink, but I guess we're half the way till after. Yo, yo. Yo. What's up? Nothing much.  Cool, cool, I'm a, so I'm going to take my test right now. I'm kind of vlogging and my navigation keeps saying the roads that I'm on. So, give me a sec. Hi, you're vlogging your kind of business? Yeah, I'm just, I haven't been vlogging so long, bro. I'm like, I'm gonna vlog. Oh my gosh, there's a calf. There's a calf. All the cops are cool though. All the cops love my videos. Are you getting tested ever near you? Yeah, it's like 20 minutes from my house, like 15 minutes from my house. So I'm driving over there right now and my appointment's at 10.30 and I should have my results back by 10.45, hopefully. How do you know if you've got a good results head on over, we'll vlog out some films. Alrighty, I will keep you updated. I'll give you a call back in a little bit. Word, all the sudden I know. All right, see you buddy. So this is the deal. This is the deal that me and Fletcher made. That's Fletcher on the phone right there. If I test negative today, I can go fishing with him. If I test positive, no one's gonna be locked up in jail for a couple weeks and I don't wanna do that. I've actually been stuck in my house like four days since I've been sick so I'm already, I haven't seen a soul. But yeah, I don't know, I feel fine. I don't, it's weird. I'll catch you guys at the place. Let's hop around. We have made it to the place.  I'm excited for it. Touch my brain or something. I'll catch you guys in a moment. I don't even know if I'm gonna be able to film in here. I might film, might not. But let's just pray that your boy doesn't have the runes. I'll be back. 12 seconds later. So I'm actually already back in the car.  She's like, you look perfectly fine. She said, you're fine. Everything's good.  So she said to go back in the car and they're gonna give me a call in about a couple minutes and then I'm gonna give them the payment. It's like $150 I think for this test, which is just crazy to me. 150 bucks for me to take a test that might not be 100% accurate. Let's just pray that this is negative. If it's positive, I'm gonna be a little mad because one, I can't go fishing today. And two, I just really don't want this test to be positive. I really don't want COVID.  They feel a lot better now. And then my grandma last night actually called me and my mom and she wasn't feeling the best. So I'm hoping I'm praying that she's okay and she's not sick. She was just like really tired. Nothing other than that, but just like she felt like overly tired. So let's pray for that as well. But yeah, so I'm just gonna be waiting. Guess I'm gonna give them 150 bucks. By the way, if you guys haven't hit the subscribe button, what are you doing, bro? Very hit that subscribe button, hit the notification bell. Also hit the like button if you guys have been enjoying the content. If you guys wanna see more vlogs, hit the like button because I actually enjoy doing this a lot. I love vlogging and I don't do it anymore.  Like just let me know and like we'll make it happen. Even if you guys wanna see me talk about like different baits or like certain little things in the vlogs, like I'd love to do that. We'll be adding some giveaways too. That would be legit. And I wanna have a bunch of cool ideas, but let me know if your vlog ideas drop them down below. I wanna vlog some more of this winter and we're gonna have fun with it. So it's gonna be cool. It's fantastic, it's... Does it know? This is Mr. Nell, right? Yes, ma'am. Okay, yes sir. So I'm just calling to collect for the 150 test today. All right. Are you paying cash or card? I'm paying card. The rapid test that we're doing and nothing else. Yeah, just the rapid test. And how long does that usually take? The results takes about 15 to 20 minutes since we do it in-house is pretty quick and we will text you with your results as well. Perfect. So the clinic is gonna call you in a minute to get you to move, drive your car to the right spot where they can come out and do your test. Oh, cool. All righty, thank you. Appreciate it. All right. No problem, have a good day. You too, bye. Yo, that is actually really cool. So they're gonna do it in the car. I thought I was going in there so we can definitely film this. Woo! The whole time I was like, I'm gonna have to go in here. Why am I putting my seatbelt? I'm gonna have to go in here and I'm not gonna be able to film this, but I guess I'm gonna drive it around somewhere.  Just set 15 to 20 minutes and then text us. Then we'll know. My mouth is very dry right now. I'm dehydrated. Hey, there's a note.  All right, sounds good. And take it right? Yep. All righty. Thank you, I appreciate it. Thank you. Bye. Car spot number four. Let's go. Grab the camera. I don't want this to fall. We're gonna be filming this. I'm so glad we're doing this in my car. I really didn't wanna go in there either.  I feel like I would get sick. I'm back in. Can't be pulling in at this monster truck. One, two, three, four. That is me. Give me a second. I'm gonna put the camera down. Oh my God. I just hit the cone behind me with my hitch. All right, now we wait. I guess we're gonna see how this goes. Fingers crossed, boys and girls. Ladies and gents. I just wanna go fishing. Haven't gone in a couple of weeks. Just wanna catch an old big fat. How are you? Good. I'm gonna go at both nostrils, okay? All righty.  All righty, thank you. I appreciate it. Let me just go up your nose for a minute and that's it. That was literally, yeah, that was $150 right there. That was the best $150 I've ever spent. That was not bad. It didn't touch my brain. I thought she was gonna go way up there. I thought she was gonna be poking my nerves or something.  Okay, miss. All right, well she'll call me in 20 minutes. I guess I'll catch up with you guys. I might run to, let's go get some coffee. I think we're gonna get some coffee and they might have it. All right, there's this ghost pepper donut at Dunkin Donuts and I've wanted to try it because I'm just a spicy food fanatic. I love it and I think we're gonna go by Dunkin Donuts and get a coffee and if they have the ghost pepper donut, we're gonna get it and we're gonna test it out right here on the channel and yeah, let's go. And then we're gonna wait on our results. All right, I gotta grab this camera so I was just thinking like yesterday I tried to get this test and they said it was gonna take like a five hour wait time. Like I called so many places. I called like three or four, three or four. I called like four or five places and then none of them could do it and like the one that could, it was like a couple out like five hour long wait and I was not about the wait like five hours. So I was like, you know what? We're gonna schedule an appointment for today but knowing how quickly they did that, I don't understand why there would be a five hour wait time. I mean, there's two other cars out there. They could literally do so many people in one day as fast as quick as it is.  I don't know. I just thought that was kind of ridiculous knowing that yesterday I could not get an appointment anywhere. Truck is so loud. Thanks so much for choosing to look in. What can I get started for you?  What do you need to help? Do you have the ghost pepper doughnut? Um, I do actually. Let's get a ghost pepper doughnut and also a turkey sausage, egg and cheese croissant. All right, will that complete your order? Yes it will. 8.63. Thank you so much. Yeah, boys and girls. I was so afraid I was gonna come up here. I'm like, I missed it. Every time they do like a little exclusive thing I just miss it every single time. How you doing? What's that? Do you want to know that? Do you want to just do it? Ghost pepper doughnut. Thank you. Oh my God, this is the call. Thank you so much. This is Noah. Hey Noah, this is Alex. I'm negative. Yep. Thank you so much. You're welcome. All right, bye. Yo, we got a ghost pepper doughnut and I'm negative. Yo. We got a ghost pepper doughnut and I'm negative. Yo, we going fishing. Yo, let's go boys. Oh my gosh, I'm so happy. I had a feeling I was negative. Thank you, you too. Wait actually, I had a croissant as well. Yeah.  Thank you. You have a good one. Okay, I feel like a new man. We're gonna park. All right, what am I doing here? Alrighty. This is the new Dunkin' Donuts over here by my house too. Let's go. We're negative man. I swore I was gonna have to title this video I tested positive. I swore I was gonna have to do it. I just, man, at the same time there was like something in the back of my head I was like, oh man, I don't think I'm negative. Thank the Lord, man. I'm just worried because like my parents, my dad, he has asthma and he was sick too and it didn't affect his breathing problem so it just seemed a little weird. And then my grandma started to feel bad but we haven't seen my grandma so that still concerns me. But my mom, she feels good today. And we have a ghost pepper donut to top it off. I'm excited about that. All right, let's do it. So we got a medium iced coffee. It didn't really stir it up too well. Almost forgot my straw. That would have been amazing with all that nasty stuff in the bottom. Stir this girl up real quick. We've never thought I'd become a food tasting channel but maybe it's happening today. That is way too much milk but it's freaking coffee everywhere. Nah, dude, that's perfect. Man, that's a little sweet. It's tasting good. Here is the ghost pepper donut. I already got it on my finger. I don't think this is gonna be spicy. I don't know. That chip though, that chip caught me by surprise. If you guys haven't seen that video, go check it out. Yo, look at this, man. Yeah. All right, here we go. I don't know if I've ever eaten anything on my channel. Yes, I have ate the chip. Watch this, man. You ready? I'm nervous. It's amazing. Dude, I just went for a fish and then he was eating dough. It's actually kind of good. It's not spicy. I don't know why they would even call it the ghost. It's all marketing. You know, nowadays everything's marketing. They got my butt. I'm gonna tell you, I love spicy food. They got me. So this is how I can describe it. So I can eat just about anything, guys. Like when it comes to spicy, I can eat anything. It doesn't really affect me. So this might be spicier to somebody else, but what I notice is you take a bite. You still get that like sweetness of a doughnut in the icing on top, but it has like a weird throat kick in the back of your throat. It's just like right back there.  And then it's done. That's why I made like a weird phase. It's just like randomly just jup. And then it was done. Nothing more in a long burn. Let's take another bite, man. Take a little hint. You want to take a bite? Yeah. Get some of that. Yeah. All right. I like this or not. It has a weird peppery taste on that bite. Oh, I got it all over me. I think I was a fan right there. Thank you for the support. If you guys see me in public, man, honk your horns at me, wave at me. Man, I love seeing you guys, man.  Man, that's like the best thing. I love meeting you guys. If there's anything out of this whole filming thing, like yeah, I'm very blessed. I love getting to go fishing all the time and do this for a full-time job. It's a blessing. It really is. But one, I want to be here without you guys and I do mean that. And two, my most favorite thing ever rather than probably over the fishing is just meeting you guys. Like, that's so awesome to me. It's cool to go out and just get to see the people who support the brand, support the channel. And it means more than you guys know. And to know that I've been doing this almost nine years, which is just insane, almost a decade. We've almost been making videos for a decade. This is just crazy to me. And then to go back to the vlogs like today, this was a blast. It was the most fun I've had making a video in a long time just to let you guys know. So I hope that you guys enjoy it. We'll start making some more entertaining vlogs coming up very soon. But there's one more thing that we got to do. I don't even know if I want to finish this doughnut. I might take a couple more bites, but. Sure, I'm negative. The heck was that? All right, we got to do one more thing. We got a call flusher because we're about to go fishing. You guys are about to see a ton of fishing content. I'm excited about it. All right, here we go. Let our boy know. I told you guys. Yo, what's up, bro? I'm positive, man. What's up? Guess there's no fishing for us. Yeah. Nah, I'm kidding, bro. I'm negative. No, what's up, what's up? I'm negative. I told the camera, I was like, I want to play with you. No, I'm actually negative. Hell yeah. Which I feel hurt, dude. I feel like a new man today. My allergies were killing me at the beginning of my video, but I feel good now. But um. Sweet. Yeah, dude. So I'm good. You want to do some fishing today? Is that? Let's get it, man. What you doing right now? I'm good with Susan and my dad. Oh, did she come down? Yeah, she's down here with me right now, so she'll probably fish for the best. Oh, that's cool. That is awesome. Well, let me go home and get all my stuff, and I'll give you a call when I'm on my way. Work, sounds good. All right, see you, brother. All right, peace. Well, he seems so, he's like, oh man, he's positive. Well guys, if you enjoyed this vlog, you know what to do. Smash that like button. I want you guys to break the like button. Get this thing with 5,000 likes. I know we can do it. We have the best fan base on YouTube, and I mean that you guys freaking rock, especially the guys that have been around for almost a decade.  I love you guys so much. Hit that subscribe button if you guys are new to the channel. We got bangers coming out every single week. It looks like we're gonna have some fire fishing content coming out this week. Post as much as I can because I only posted like twice last week. And it's gonna be good, guys. I love you so much. Thank you so much for the support. Drop blog ideas down below. Check out the new Big Bass Energy Lanyards on the website, support your boy, support the nation, and I'll catch you guys in the next video.


So let me welcome you into our tools behind rolling release distro meetup. My name is Christina Straitava. I work at SUSE as a team lead of the packaging team. What is a team that is handling, I would say, thousands of packages in SUSE Linux Enterprise and in our Open SUSE distributions, Open SUSE Deep and Open SUSE Tumbleweed. And Tumbleweed is the rolling distribution we will today talk about. So in this meetup, we would like to discuss tools that we use for building and for testing Tumbleweed. And it's OBS, it's Open Build Service, which is our build tool where we build basically everything. And then it's OpenQA, which is a framework for automated testing and it helps us to provide as stable as possible Tumbleweed snapshots. Because we know that probably we can have like mixed audience here. So we will try to cover both parts. Like if you've never heard about those tools, we will try to give you some short introduction what it is, why it's important and so on. But then we can also discuss your thoughts, your ideas, your questions, your problems. So feel free to ask questions. If you have any, you can do it directly via microphone, just ask for sharing your microphone or you can put your questions to the chat and I will try to monitor the chat and bring questions to our speakers. So when I'm talking about speakers, so we have currently here Martin Puskal who is a QA person of an open source enthusiast. He works also at SUSE. And we have also Chris Divan here who is a free software enthusiast working an OpenQA and they also work for SUSE. We have also a few other people in the audience here who have something in common with OpenQA or OBS or they at least work with that. So I think that Dan Cermak should be here. He works at SUSE as a software engineer in development tools. He's QA enthusiast and links distribution contributor. We have, who else is here? Probably Luboszko Cotsman, he's here. He's release manager for Open SUSE Lee. And so he is also ex-release engineer for HAL 6 and HAL 7. So he has a lot of experience with various ecosystems. I'm not sure if, yeah, also Varen Kashbetsova is here. So she's a QA engineer. So she has a hands-on experience with OpenQA. So she can discuss how it is using OpenQA every day. So regarding the agenda, we split the whole session to three parts. So in the first part, we will start with rolling this through topic. So what it is, if you've never used rolling distribution, so we will try to cover that for you. What are the biggest challenges? What is our workflow and so on? Then we move to OpenQA where Chris will describe what it is, why it's essential for us and what are our development plans for it, for example. And the last topic will be OBS. So we will go back to Martin Puskal there and he will describe how it works and how we built basically everything there. So during the whole session, feel free to ask. And I think that we can start. So I will hand it over to Martin Puskal. So hello, I'm Martin. I'm working as a QA person in SUSE and I'm also a long-term contributor to Open SUSE, not only in the packaging, but also in some other areas like membership committee and so on. So I actually see some of the people here whose membership I approved, so it's nice. And so what we are here to talk about is rolling release distributions. What are rolling release distributions? I would say I would start with a story of my background, how I got into rolling release distributions, how my edition for the rolling release distribution started. Many, many years ago, I was just a junior Linux user and I was using things like Debian and I wanted the latest and coolest stuff and it was not really that compatible with using Debian. So I started to try to build some stuff on my own, but it was also not very convenient to rebuild everything and reinstall everything. And I was hitting more and more obstacles in the old tool chain on the stable release of Debian back then like 15, 20 years ago. So that's how I got into using of the Gen2 Linux, which was pretty popular back then and you build everything on your own and you have the latest, coolest stuff and you could just customize everything, how you liked it and so on, which was pretty cool. And this is something that I kept doing or using for many years until I joined SUSE and I figured out that I don't have to rebuild everything that I can instead just install open SUSE Tumbleweed at the cost of some level of loss of customizability. Obviously, if you are building everything from scratch, you can really fine tune what you are building, how you are building, you can choose the optimization level for your hardware and so on. But on the other hand, it actually saved me a lot of electricity and a lot of time spent building packages. And I figured out that if I don't like something in open SUSE, I can just easily change it to the way that it works for me and hopefully for others as well. So that's how I got to open SUSE Tumbleweed and up to now, I'm still using the rolling release open SUSE Tumbleweed for things like some of my workstations, some of my server-like machines and I'm quite happy with that. It's worked so far pretty fine for me and it's been several years since I'm doing it, like six or seven, actually, I would say. And this brings me to what is the advantage of rolling release? Why would someone be interested in having a rolling release distribution on their workstation Raspberry Pi or server or whatever? That's, as I mentioned very often and nowadays it's, I would say getting more and more pressing that you sometimes really need the latest tool chain to have the latest cool software running. You need latest compilers, you need latest libraries and so on and trying to make things work on stable long-term supported distributions. It can be very tricky. Like I would say that some of the companies that are behind this event and even behind my employment are making a lot of money from supporting old long-term releases. However, it's still, I'm very aware that we are all aware that it can be very tricky to have latest stuff running on old releases and that's why you can, as an alternative you can switch to some rolling release when everything will be latest and coolest. It of course brings some issues on its own. Like some of the stuff is not really following the development. So if there is a new compiler and you will encounter some new more strict checks, you have to deal with it somehow. Well, not you as a user, but usually someone who is behind the distribution. And of course it can happen that some of the software will not really work, but that's again, in the long run, it's an advantage that you can actually report bugs early to the upstream developers and ask them to fix them before the other distributions hit the same issue. Which also brings me to some, like basically a story, a friend of mine is working at a company that is streaming videos, something like Netflix, but not Netflix. And he was dealing with the issue that they were encoding some of the content on some high performance workers and they were running them again on some stable Debian. I'm sorry to Debian users here. I don't want to bash Debian, but it's like a good example of a conservative distribution. And of course they were interested in encoding it with latest FFM pack and they preferably wanted to have the FFM pack as much optimized for the hardware they were using as possible. And it was a pretty tricky with the old Debian. So they ended up having to rebuild GCC to build their customized FFM pack binary for their specific payload. And when we were talking, I was asking why are you not using something that is not like 10 years old? Like, wouldn't it be easier? And I think that they upgraded to later Debian, they still haven't switched to rolling release, but they are on their way to using something like this because for example, in this case, in this scenario when you are anyways doing a lot of development on your own, I think the latest environment and it's quite a big advantage. And you are also not in a position of like a conservative company with a relatively limited manpower that just wants to pay someone for the support and don't deal with it. You have plenty of people in-house that are able to deal with issues, but just don't want to be, you don't want to have your hands tied behind your back by using old stuff. So that would be one example when using of a rolling release can be beneficial not only to the end user enthusiast who wants to use bleeding edge, but who wants to really have latest stuff because they really need it. That being said, what is specific about open to set humble wheat from other rolling releases? Obviously, I would assume that plenty of you know or have some experience with Arch Linux and maybe even with Gen2. And there are other rolling releases. What is specific for open to set is that we are kind of proud of our quality assurance that is done via means of open QA, which will be discussed later by Chris and even it has a special talk even later by Dan who is here in the audience as well. And we are building everything in our own build system open build service which I will also cover a bit later. However, what is important about this is the quality. As I've said, I'm using open to set humble wheat in a lot of spaces. What I can say is that it's happened to me like once a year that I had some issues that I had to manually solve and like search for what to do with them. And I think that in most cases it was like some hardware driver specific things that may be where if I recall the last thing it was something with GPU and the easiest solution was to just roll back to the previous or just boot using the previous kernel. So that's like not like something and most of my colleagues even at work are using open to set humble wheat nowadays and they are able to work like 99 1.9% of the times. If they are delayed they are not delayed because they are using humble wheat but because of something else. So that's just a very brief and generic introduction to what a rolling release is and what is open to set humble wheat. But what I would like to do now is to ask our audience if they want to share something or if they have some comments about rolling releases some experience is positive, negative or if they just have some questions and whatever just please, please speak up. If somebody's I'm not so comfortable speaking up you can use the Q and A we can read it. Or just the chat like Luna did and that's actually four computers. Wow, you have a, you have either a lot of time or you're very good with Arch Linux. I used to run Arch back in the day and boy it broke every few months. So I stopped. But as I also wrote in the chat you tend to learn a lot from Arch Linux. So one thing that's definitely superb about that destroys the documentation. Yeah, Jan has one concern, right? Who wants to respond? This is very common complain. I don't think it's a concern. It's a concern. It doesn't look like that. That's not a concern. The updates are gigantic. I hear it on every meeting guys, right? Yeah, he even confirmed it himself. So I mean, yeah, the updates are gigantic but they never crash. And that's partially also thanks to OpenQA because broken snapshots aren't published. If something breaks, the installer breaks the distro it never reaches you. Which kind of is the point of a gating pipeline? That's why we are not rolling as just pushing the packages as they are uploaded but we are more like releasing snapshots but pretty often. So in the snapshots when they are released they're always tested by OpenQA so they really should work in at least basic scenarios but we can later look at the OpenQA coverage as well. And that's interesting. Sometimes OpenQA release is like a huge, huge updates that are often caused by triggered rebuilds and they are usually triggered sometimes not even automatically but sometimes manually because of huge tool changes like G-Lib C-Onc or compiler that it's considered to be better safe and just rebuild everything. People are sometimes a bit surprised that they need to update 2,000 packages once the snapshot is released but it's usually not a problem unless you have a very bad network connection. So we have one comment from Luna about OpenQA. OpenQA is awesome, even the other registers are using it like Fedora and maybe even Debian. So I think that maybe we can jump into OpenQA part. So if Chris is ready, so we can start. Yeah, so you could probably consider that a bit of a spoiler. I was prepared to mention a few examples of OpenQA which is known and also Debian are some more recent additions to the family but let me start from what is OpenQA? So for those of you who don't know anything about it I'm going to give you a little metaphor to work with. So it is a testing framework, right? But think of a human tester. What a human would do to find out if, for example, if the distro works, if soft ground it works, what would a human do? Human would go and install, for example, using a USB stick or some other means and run the installer and start typing things and selecting things on the screen and going through the installation process until they managed to install the system and then run their own applications. And now imagine OpenQA doing that in much the same way except it's synthesized. So any of the input is, of course, sent through the backends and mouse clicks and such are synthesized as well. And there's, in fact, the video stream that's running that tells the job what it's actually running. So rather than somebody looking at the screen, you can see that, see as in record the video and find out if what's expected is actually going on or maybe something else is happening that you weren't expecting. And I'm going to show you on my screen. Let's see if screen sharing works still. So I think you should be able to see the OpenQA web app. Yep. And I'm not going to go massively into technical detail. I'm going to keep it at the base overview. Of course, if you have particular questions, feel free to ask at any time. And yeah, so the web app is probably one of the main ways that people interact with OpenQA. So what you can see here is an overview of the groups which are certain distress of OpenQA that are set up in this instance. And you can get an overview of how many jobs passed or failed, for example, or you can see in some instance what's still running. Because of course, depending on the amount of hardware, you cannot run everything at the same time. So this is where the scheduling feature of OpenQA comes in as well. And let's maybe take a look at an example build. So you can already see there's some failures. So imagine as a test reviewer, you'd be checking this to find out, the current state of it or all of the test passing or if not what might be the problems that are currently there and need to be verified manually. So for example, this is the job that passed. So this is of course the best case, the jobs run through and you can see what's called the different test modules, such as for example, boot to desktop. This is a very simple example of you booting up the system. So imagine again, from the user perspective, you have your system installed and you're hitting the power button and you're looking at grub for instance, and you can see that it offers you to run up into the tumbleweed. And the test records this screenshot, or more specifically it's called a needle in OpenQA, which tells us that this is working correctly. Because if this weren't showing up, it would suggest something is going wrong. And yeah, maybe to go a bit further, you can see there's a few other tests going on. There's also some command line based tests, but maybe let's have a look at something more graphical. I see there's some questions in the chat. Maybe we should check that out. Yeah, we had one question from sleepwalker, but it's more like general question. So we can go back to it later. All right. Yeah, so I'm going to look for an example of some, maybe some GNOME examples. And yeah, GNOME shell being the default when you install up into the tumbleweed. Here for instance, you can see in the test that this is going through the full installation process as part of the test. So this is also a case that's used a lot. And I'm just going to go by example, the steps to show how it generally works. So you can see the screens you would go through. As a user, you can see the installation process. And at every step, you can verify that the process works as you would expect from what a user would do as well. And you can even see the lovely, oh, this is open to the welcome screen. Meaning of course that you successfully installed the system. However, let's also take a look at something that didn't work well because, you know, this is ultimately where QA comes in. You need to be prepared that something doesn't work. Eventually things fail. So let's take an example. So here you can see that a LibreOffice test failed. And it failed opening a file apparently. So if we're looking at the test, you can see that there's a file picker there. And the test is sending the commands to open a file in LibreOffice. And if we go through it, you can see this is the current state of LibreOffice as it's being used there. I'm just using my key work, by the way, to go through the sections, which is very nice. I think it's quite nice to use with different input methods as well. Yeah, and now what happens? It seems LibreOffice is gone, right? And in this instance, it's a symptom of a failure. And I'd say this is a, I'm not gonna do it specifically why this happens, but this is a common case, something happened and something causes the application to crash. So you would notice in the test that the next screens are not showing up that you would have expected to show up in the test. And yeah, maybe as another example, since OpenQA can also test command line applications, here's an example of something that is not graphical at all. Let's see if, just open some, no. Unfortunately, it's a bit delayed now. Yeah, if there's any questions in the meantime, feel free to ask. Actually, we have one question here in Q&A section. So Jan-Maras is asking, so with that screenshot as something to check against in the test, similar test could probably recognize resolution issues on some non-standard layouts, for example, white screens. Resolution issues. That's actually a rather tough one to crack, unfortunately. So OpenQA is by, so the common way to run OpenQA is in a VM. And it's, as far as I know, it's usually expecting to run in a 1280 times 768 or something, or 1024 resolution. And if you do it something else, it tends to break, which for instance, the cubes OS developers recently ran into. So resolution detection isn't actually, as far as I know, working that well. You could test it, but this is a little bit of a pain point. Yeah, so I'm not aware of specific cases for this sort of scenario. I would be interested though, like if you have a case, something you want to test, I'd be interested to look into how to make that work. Yeah, so this is an example in the meanwhile of a test that is not graphical at all. So while OpenQA is especially good at doing things that require user input, this lovely example of a Rust test. So what this does is actually it provides the running system that say a developer might be using to set up a new project and call commands to install Rust packages using cargo and such. If you don't know anything about Rust, that's not too important here, but this is just an example of something where you have the base system running and you have for instance, proper networks access provided and you're able to run a command line application like you would expect. And yeah, you can see in this instance that these are just the console outputs here. I don't know, well, you'd be able to read it through screen sharing, but you would see that it's actually typing cargo new for instance and showing the output from that. Yeah, another thing I'd like to show is since reviewing failures is quite important. We have some really good features in OpenQA and this has been improved a lot over the last year to investigate failures and it's aptly called the investigation tab. It's unfortunately a little bit slow at the moment. Yeah, I'm gonna tell you anyway some of the basics it does. So you have a few means of for instance, comparing if previous runs failed in similar ways and maybe passed to identify what kind of failure you're looking at or if there's a new failure or maybe there have been some changes to the test setup or for instance, depending on the hardware you run tests on. So OpenQA can run tests on a lot of different types of devices. The very common case is of course QEMU. So there's a lot of virtual machines running. There's also bare metal. So you might have ARM servers or you might have Spark or PowerPC or whatever you need to test in particular. Might even just be a Raspberry Pi. So if you were looking to set up OpenQA, the baseline is actually quite low and it could be as simple as installing OpenQA on your computer that you use for development. And what you need then is just one host which runs the web app, the scheduler and the database which is what you're looking at here and one worker as it's called. So this is the part that runs the actual job and does the heavy lifting and that later on reports back to the web UI what the result of the job run was. Just checking the clock. I guess we have another five minutes for this lot. Yeah, maybe since you mentioned the Raspberry Pi, if you are really quick, you can take a look. There should be bare metal tests running on a real Raspberry Pi somewhere in Guillaume Garde's closet or desk. I don't know where he has his set up currently lying around but on Tumbleweed AR64, if you go to that job group. Yeah, exactly. There should be, I think the juice, I think the juice tests, there are some actual bare metal tests. These ones I guess? Ooh, they're right. Yikes. Oh, maybe let's take a look at a passing one. See this one? Yeah, I mean, it should be visible via the variable so it will not look any different because the actual, the only difference is that it really runs on a real Pi but the connection is still via VNC so there's no actual video recording in there. That's what the cubes guys are currently investigating. So I think if you check the test settings, you should be able to, there should be some general hardware settings or so if those are in there, then, oh yeah, it's a general, that's running on bare metal then. On a Pi 4. Oh, very nice. Yeah, so yeah, okay. Looks totally unimpressive, unfortunately, but this is running on real hardware. So this is, in my opinion, this is one of the big things that OpenQA can really do because it's not running in QEMU, this is running on a real Pi. If you have some incompatible U-boot or whatever you nowadays use to boot something of a Pi, if there's some incompatible change, you're good luck finding that with QEMU. It's possible, but it's ugly. But if you test it on real hardware, if it breaks, it very likely breaks for everyone else as well. So plus one for gating. Okay, so I don't see any questions in QA or in chat. So is there anybody who has some question would like to share or some faults or anything? Because if not, we can move to the next part, which is short introduction and discussion about OBS. I have a question. Can OpenQA test other operating systems, not only in all distributions? Oh, yes. That's a great question. OpenQA can test a lot of stuff. So you can even test Windows on it, if you're so inclined. And there's actually Windows tests that are run in... This is for Lubos. Exactly. We actually do test WSL. And our opens is a leap images in it, and it has to be tested in the Windows 10 VM, or 11 nowadays. So yes, we do that. And it works. Thank you. Let me maybe take this one from the audience, whether OpenQA can test mobile Linux, like the PinePhone, the LibreM5. So yes, in theory, you could test your PinePhone with that. I've looked a teeny tiny bit into that, but it gets a little bit tricky. So one of the things is OpenQA wants to run... First, you want to run inputs into your device. And with a PinePhone, it would be really great if you could actually type on it, which that gets really hairy.  So that's not going to be too easy.   With a PC or a Raspberry Pi, you have a rather simple way, and it's connected and you do that one. This has a battery, so you're going to wait for a few hours. And so you could make it run. And I'd say if there's a distribution that's really committed to producing high quality to continuously test it, you can do it. So you can, for instance, unscrew something like this, connect a USB, connect an SD card multiplexer, boot off the image and solder a few cables in there that you can really unplug the power supply. It's possible, but it's a ton of work. I would have comment on this as well. In most cases, you actually don't need physical hardware. I am aware that as one of our OpenQA developers was actually sort of cheating in some Android game by running Android image in QCOW and just playing the game via means of OpenQA. So as long as you can run whatever you want to test on the physical device in some QCOW, you can test it actually pretty easily, I would say. Or actually cheat in the Android game or whatever you want to do. We have one question in chat here. How does the needle matching work? How precise is it? Can two broken pixels break the whole test? So I'd say the answer is no. Yeah, see, Dan's also commenting on the, yeah, actually, if Santa is here, feel free to chime in. Otherwise, I'll try to answer this. So, we have something. Bad news, Santi. I can't hear you. Not sure about address. No. No, no, it's like super quiet. It's not the volume. It's the probably incorrect device. Just go to sound settings.  I could be. How about now? No, yes, okay, cool. So long story short. I throw in a needle in case you want the visualization. Amazing. Thank you. So because OpenQA, so it's basically a program that is only taking a look at whatever is on the screen. The backend is using OpenCV. So there is an algorithm that is going to take a look at the image and is doing some normalization operations. Then it takes a look at our reference. So this is basically a JSON file with XY coordinates. And then there can be multiple areas of something that we want to look at, something where we don't want to look at. And then there are multiple operations that can be done over those areas. So what OpenQA is going to do is, it's going to look at the VNC, take a screenshot and run it over save algorithm in the backend. When this is happening, it's taking out the difference. So it's going to look in that new screenshot, the reference and then it says, okay, so here in this very small amount, there is the button and let's say that we want too much hello and everything is black and white. So there, because we have only black and white, you have the problem of what happens if somebody adds one pixel. And this is where it becomes tricky. So we have a much percentage. So when the image is basically kind of normalized, you get a certain value that is then converted to from zero to a hundred percent. And you can define at the moment of the creation of the needle, how big the pixel difference can be from what you get in the screenshot to the reference. And from their own OpenQA will tell you, yeah, this looks like more or less something similar. So let's say somebody decides to change black and white and inserts a gray, then if you have a low tolerance then OpenQA will say, yeah, this looks okay. But if you are having a higher score, so you want to have at least 90% of match, OpenQA will tell you like, these are two different patterns. It happens very often, for instance, that we are having text that is being changed from bold to normal, to not bold, basically. And depending on this matching level, we will have more tests failing than in other cases. But if you- So you want to make OpenQA hate you, then change the default font. Yeah. Or wallpaper as we plan to, right? All that. So we are slowly running out of time. So if you don't mind, I would switch to the last part of this meetup. And that's OBS. So Martin, if you can start just some short intro to OBS and then we can go back to the last part if you can start just some short intro to OBS and then we can have discussion. Thanks. So basically what we are using at SUSE and Open SUSE and some other projects as well is that we are doing is using OpenBuildService as a tool to build our packages and other things, not only packages, but various container images, ISO images for KVM and so on. It's in a very brief description. And let me share you, share screen and show you what actually, what you can build as in, if you are just interested in building packages in OpenBuildService. That's actually a nice example is the OpenBuildService is accessed via either web UI or command line client or API. And the command line itself is somehow built in project in OBS. Project is something that is like, imagine it as a directory containing packages. So project is Open SUSE tools and package is OSC, Open SUSE client. And this project is quite a nice example of what all we can build in OpenBuildService. It has basically enabled every possible Linux distribution as a built target that it can build. So apart from RPM-based distributions, which are built from OSC spec file for, then we have, we are building for Debian-based distribution. We are building for arch package management based distributions and we are also building for some up images and we can also do some flatbacks and so on. And upbacks for Windows as well. Yeah, that's, I did not know that actually. That's how I learned. But let's just quickly scroll because it's the list is too big to discuss everything. Like CentOS 6, well, CentOS 6 is failing. Debian, Debian, Debian 6, well, it's already unresolvable because it's some new stuff, but there is a plenty of distribution built targets here available and plenty of them have a lot of targets enabled. Like for Magia 8, we are building for 32-bit Intel, 64-bit Intel, RV7L and AR64. So a lot of Raspbian as well as a built target. I always learn about existence of absolutely obscure distributions from here because I still don't know some of them. Like Exubuntu, I think it's not the longer relevant, but yeah, but there are like weird strange distribution open Euler 20.03, I have no idea what this is, but I'm not sure if I want to know what it is actually. What we can build in open build service is not only the images and containers, but we are building like ISO images for distribution. Like when open Sousa Tumbleweed rolling release is created, it's also like from packages, the ISO image is created. The ISO image is usually the thing that is passed to OpenQA for testing. So OpenQA usually works with an ISO image and it just goes through some installation or there are some other scenarios, but for the sake of time, let's assume that this is more advanced topic. So yeah, but we can build like ISO images, KVM images, open container images, lots of stuff. We have like JOS, this is like just enough OS image which should be building just the KVM images for various arm flavors. Like yeah, it just creates a raw image which is supposed to be copied to the boot media and so on. So we can do a plenty of things in open build service. Apart from building for various distribution, as you could have already seen, is we can also build for various architectures by default or by the most common use case is that for various architectures, we actually have a physical workers that are doing the building. So like for X86, 64, obviously we have an Intel machine for PowerPC 64 little and then we have a PowerPC 64 little and then for ARM, we have ARM workers. And in most common scenario on these workers is that we are running built inside of the KVM environment. The open build service can also work with system D and spawn. I think that there was some experimental support for Docker. It can also run in change route environment. It can also run built in a KVEMO environment. So you can actually build for other architectures that you physically don't have access to which is pretty good for adding support for a new distribution or new architectures to your distribution. Like we have some experimental building for RISC-5 in open build service as well. We also had some experimental support but it was more like a pet project of one of our colleagues that we were building open to set umbilveed or attempt to build open to set umbilveed for M68K. I hope I'm pronouncing the architecture correctly but this is the old RISC architecture that Mac computers used to run 25 years ago. And it's, the hardware is still manufactured but it's not really powerful. And usually people don't run a generic Linux distribution on it but you can find it. And so this is something that we, all of this can be done in open build service. If you would be interested in deploying open build service, the open build service actually has a fairly, fairly good documentation. It has its own project pages, open build service. And if you want to have just a very trivial setup, you can just download the installer for the appliance. Obviously it will not create you the huge build environment like we have in the build open to set.org but if you want to play with build service, you can do it via this way. We have also extensive documentation for the build service available as well HTML and you can learn how to add support for support build receipts and package formats, what is supported, how to set up various things in the environment and so on. Or if you don't want to install open build service and go through the configuration and setup and importing the packages to bootstrap and build target and so on, you can just simply use the publicly available open to set one like the one I've been showing to you, the build open to set org. Let me share it again. Where everybody is free to create an account and create your own project and set up your own build targets. There is, as you can see in the OSC example, there is a plenty of available targets. If you would want to build for some distribution that is not yet available, but it's some build kind or type that is supported in general by open build service, you can just ask the build service developers or maintainers to just import the distribution for you as well, it's something that can be done as well. And you can just create your own project or ask for a project to be created and you will get something like working directory or workspace where you can play with your software. So we have like here for GNU Health, which is a set of packages for basically monitoring of health things. It's like something that you can see at your doctors when they are entering your diagnosis into computer. We have like special projects here set up that are subprojects that contain all the necessary packages and they are maintained there. Sometimes the upstream developers are using actually public build open source org to verify or to build the packages for them, for the things that they are creating. So if you are interested in any of this, you can just go to buildopensource.org and try it in some environment that you just create for yourself. Let's see, there is like a arch core, but it's import. Let's see if there is some nice cloud development. There is some interesting example, this continue distributions. And basically when the distribution as a build target is imported, it appears as one of the projects in build service. There is not much magic behind it. Some KDE test projects for KDE testing and so on. Martin, can I mention one thing? Yeah, for more minutes, maybe you've said it because I had to reconnect and because of bad connection, but imagine that you just want to rebuild your own tweak of the image. So it's super easy to fork the package or the entire project and you can just do small modification and rebuild the image by yourself, which is pretty cool. Takes just few clicks. Yeah, and there are actually people that are doing this. There are some derivatives of open-source being created in build service. That's right. Yeah, and there is also, there was some person that was creating, it was like Hacker's son's frontiers and he was creating some custom images of open-source at Humbleweed for that contains some stuff that was basically like privacy-oriented and somehow to be, so basically it was for people in the countries that are not so fortunate as our country is, or the country that I am that have to connect to the Wikipedia through Tor and stuff like this, so that can be done there as well. And I think that as a starting point, anybody who wants to do it is just look at the open-source at Humbleweed and start with the key descriptions there and just tweak them according to their needs. And yeah, it's actually, I have to admit that I've never tried it because I never felt the need to do this, but it should not be that difficult. It's really quite straightforward. Good example is you receive some obscure hardware like a new ARM-based laptop that may not work out of the box and you want to play with the latest kernel and do some out of three patches that's exactly perfect for this. Yeah, so basically that's for the basic introduction of the open-source service. There is plenty of things that we haven't covered yet, of course due to time constraints, but if you have some questions, comments, ideas, complaints, feel free to use remaining a couple of minutes and ask them. Q&A has a question from Jan Maraz, but I feel like this was maybe answered. Can you double-check? Yes, yes. So we have only one minute, so maybe we can just, if you have any questions, feel free to join us in a work adventure instance. We will be there and we can answer your questions. Keep in mind that there is a limit of four people, so we have to, maybe we should stand a little bit further from each other and, you know, so we can actually ask. Okay, sure. Okay, so I think that we can move to work adventure, so thank you everybody for sharing your wisdom here and for all questions. And that's all from us, so thank you and have a nice day. Bye. Bye-bye. Thank you, bye-bye. Bye. Okay, thank you. Thank you to all speakers, all the people participating.