 First of all, to put stuff into context, why are we even here and why are we doing presentation about some random firm? Well, it's because Ugand and Canada here is our client. So we are doing a lot of stuff on EasyBuild and on Ugand actually. So that's just to clear things up. Yeah, so what I'm going to talk about today is... So first of all, I would like to introduce you to our firm, what we do and what we could eventually help you with. Secondly, what we've already done for EasyBuild project and thirdly, we're going to present our latest developments in documentations and explain why it's cool that these new docs are coming and what we can do with them. So first of all, who's in it? So we are a company, we are over in, we have eight offices in four countries, so that's Czech Republic, Poland, Ukraine and of course Belgium. Over 180 employees and what's important in our, in our culture, in our development is that we really like to use open source technologies and we call ourselves open source innovators because of that. So these are three types of services that we provide. So for technology solutions, we are using, we specialize in obviously CICD, so for that we use stuff like Jenkins, GitLab, CICD and so on. Then for infrastructure as a code, we use Traform, Uncivil, Puppet. For good logs and metrics and traces, we use Grafana and Isinga. And for container orchestrations, we use Kubernetes in case, yeah, yeah, yeah. Okay, so for business solutions, these are things that we have experienced with. So about digital asset management that's, for example, when you want to store a lot of pictures, a lot of texts in online, that's what we did. We helped with a particular library to get them online and to be able for them to provide their services online as well. Then point of sale, there's a specific gym provider or gym chain in Belgium for whom we've helped to set up their memberships, their payments and so on. So what do we do on EasyBuild specifically? So first of all, we, or only again, well, first of all, we love the idea that we are contributing to open source and getting paid for it. It's always nice. Thank you, Kenneth. So what exactly it is we do, like day to day, is that we mostly write easy configs. And why is it important that people, or that you and our source is it, if you ever wrote a single easy config, you probably know, but the thing is that, and I'm going to generalize a little bit here, but oftentimes it's true that scientists just create a, create a software and they, because it's going to solve a specific problem, but they, and they published their papers and whatnot. But then they don't really care about how to package that software and how to make it distributable and repeatable the process of installation and so on. And of course that's where that's where we come in and we're trying to get rid of this works on my machine approach. So this is a great example of one of many softwares that we've had recently. I don't know if you can see it very well but this software called finder this is a patch for that software that I created and it was, it was written in a way that it was only able to run in Docker or in or inside a singularity containers which is, you know, if we're talking about how things work on on you again the least. And so I even had to, if you see I even had to add the option that you can run this software. It's called bear option. So you just run the stuff you don't need any setting up of container and so on. And so, even here you can see that the developer of this of the software didn't expect that somebody would be willing or able to take care of dependencies themselves which obviously we want to do. And of course there's another issue of bundle dependencies bundle binaries which is something we, we aim to get rid of. So these are some, some nice numbers. So we've already up today, we've contributed to 400 461 easy conflicts, it is blocks and we even laid foundations for the easy stack development in the in the framework repository. So typically what happens is that cannot get an installation request for for for their HPC clusters. They, they, that a researcher wants to have some software supported and then obviously we have to first install it and go through it and create easy config out of it, and then it supported so that's that's what we help with. Let's go to the documentations part so we've realized, and we've talked about this that there is a certain problem quite recently. And that is that easy build and you can is getting quite a lot of love from its users and what is what this means is that we're getting or and it is getting and we are getting as well. A lot of requests for supportive software which is great. But at the same time, it can make, if one, if for example, one software is quite difficult and it can mean that there is a big log of other software pieces, which we don't have, which we don't really have time to work on and and care about for for a couple of months even. And that's not what we want. We don't nobody wants, you know, their customers to wait months until something is ready to be used. And so we've created a solution, which is, we're going to make a really good dogs, which will be aimed mostly but not only for the more simple kinds of installations of easy of creating easy config so these dogs will guide people through creating easy conflicts. It's going to be for it's going to be focused on different easy blocks such as, you know, Python packages see make make so on. And it's going to be really step by step. And we're going to have an example at the end but so it's going to walk you through what you need to do before you create the easy easy config including where to look for the dependencies what what to include in your easy config like sanity of sanity pitch again so on. And yeah so we we are hoping, and obviously this might not be the one other benefit is that and isn't this might not be applicable for for administrators HPC administrators. But if there's a user who wants to support some sort of software there's a chance that they already know something about the software and they already know how, maybe even how to install it or how to install it with the works on my machine approach, at least. And so we want to quite we quite want to utilize that fact and even us as as system administrators could potentially ask their users if they are able to look into creating the easy config because there's a great guide for that reason but there will be soon. Yeah, so all that combined. We think that we can streamline the process and speed it up a bit. And so we win, because we will have more time to think about potential improvements on the framework or adding easy blocks. So one you win the viewing or their scientist research researcher wins because they will have their in ideal case of course they will have their, their easy config ready way quicker than if they had to wait for us. And then of course community wins because everybody can then reuse what you've done for that. Well, on their site and so on. So that's, that's the thing that we would like to propose here. And yet let's now look at the example of how to use easy configs, how to use our documentation to let you will to let it work you through the process of creating an easy config, simply. Hi. So, in this part, yeah, I'm sure, sorry. In this part, this will be kind of a tutorial for the end users who who are mostly asking the admins for creating easy configs. You might even point them to the recording of this of this talk and they can go through it. Hopefully they can learn something new for this one, not updating for some reason. There seems to be an error seems like it does. Oh boy. Because it disconnected from the zoom. Yeah, it's weird. What happened if you rely on wifi. Worked on my machine before. Yeah, of course it did. All right. I'm connected to the wifi, but I'm trying to get connected. Yeah, for something else. It's, it's online on the right. Yeah, sure. Yeah. I send it. I really think that there is a wifi problem. Do you have the link to the soul. I think I think Go to the speaker stand. Mm hmm. Oh, no. Oh, that's you. Right. So back to where we back to where back to where we've been. So, yeah, this is just a quick tutorial. We'll be looking at this package called multi QC, which we have the homepage. We know the name. So what we can we know the GitHub. So first thing that we can do go to the GitHub and look for the dependencies that it needs. We often look for them in in setup that pie or pie project that formal or some other like version of these, these config files. And here we can find it in the in setup in setup with pie. We can see all the all the dependencies that are needed with the versions. Those versions sometimes depends on the on the package can be too strict. So there's that's nothing simple set couldn't, couldn't fix just if there would be like two equal signs just switch one to the is greater sign and it should be good. Then we can look into into the that base of all the easy configs or at some stack and look whether there isn't all the version of the of the software or of the of the package that we want to install. Thankfully there is an older version of multi QC so we can use that. If there isn't, we can just write the we can say header of the of the easy config in this manner. Nothing too hard. Just if you're using the older one, you have to just push the version and the tool chain version. Just so they are up to date. Then you go to the dependencies and this might be tricky for some, but if we take a look at the first dependency, which is Python and then we try to search it in the in the stack of easy configs, we can see that Python actually isn't in the false version of 2022 a but it's in GCC core. There is in the docs, there's this table of common tool chains and here we can see that 2022 a is actually using GCC of version 11.3.0 so we just look for the version of Python that uses the same GCC and we pick that one and just edit the version on the Python. What we did here, we do for every package and extension there is extensions, we can look up on PyPy or wherever they're needed or wherever you can get them and once you do that, you're all done. Wait. Apparently, this is one of the one of the easy built errors that hopefully soon will be made prettier because this doesn't look good but what this says is basically by pushing the versions, updating the versions, introduced a new problem which is that a rich package or rich extension that we are using has new dependencies that we forgot to check and multi-QC has a new dependency from its older version so we can just add them and yeah, we're done. The important thing is to remove checksums if you want to test build it because then easy build will complain about checksums not being correct but after that, oh yeah, you should also add some sanity check paths which are the paths where easy build looks for existence of files or directories and you can add sanity check commands. Usually that's just the software printing the help or version or if there is some light example, just some quick test run, you can run that and yeah, after that, you can use easy build with the argument inject checksums which goes through the easy config and updates the checksums for you so you don't have to go one by one and check everything. Easy build does that for you and then the most important part, you can use the new PR of easy build which simplifies everything about pushing the easy config to the GitHub. This approach should be used even if you have a solution that works on your machine and you don't want to mess with it more because what that does is at least helps us to understand where the problem is, maybe add some errors that you can have to the pull request so someone can look through it and the work is much more easier than starting from scratch because you don't have to withhold all the progress you did just for yourself since this is open source but yeah, this was us in it. If you would have any questions, you can reach me, you can reach Dennis, you can use the email that's in here where we have a lot of things that we can offer. So yeah, I think that this is the end of the talk. There are any questions. So there's two things, the archiving we do is very different from totally removing them. They're still in view to some extent. If you use eb-dash-search and it finds an archived easy config, it's going to tell you and it has an option to also show the archived stuff. So it's like hiding it at a plain site but it's still there. You can do copy easy as well to easily copy that easy config and have something to start from. That's one thing. What you can also always do is just go straight on github in the easy config repository, drop in the software name in the search box and you'll find those old pull requests. So those are not hidden at all. Those are still in plain view. There's also a switch for the command to also search for the archived stuff. So if there's absolutely nothing more recent, then the archived stuff is better than nothing at all. It's going to be a bit more work to clean it up and stuff that's in deprecated and no longer supported, fine, but it's going to be still less work on starting from. Yes. But that's a good argument. I think we're doing pretty okay there ourselves. The archiving is done deliberately. The easy thing is just remove them and make it harder to find. Even then you can still find them just through github. But the archiving is a deliberate approach like a middle step. That's a good point. One other thing which wasn't discussed here, and that up until now has been a wild idea, but there is an open framework pull request to add a new feature to easy build to very easily create an easy config file. It's like you have new PR and new EC and you just throw stuff at it. You give it the home page, the link to the source star ball and it figures things out a lot by itself and it spits out a template easy config to start from. It has everything in the right order and it's actually quite easy to figure out if you just throw stuff at it like version with a little bit of logic, it can pretty easily figure out what it's what and just give you something decent to start with. We should finish that up and especially for new stuff where there are no easy configs yet, this can save you quite a bit of time. There's an open pull request framework for it, but it's not finished at all. That's something we should probably pick up again, maybe restart that effort. It's got a bit of lots of logic, right? There's lots of if-else and it's not like an AI which you throw a tarball at and it gives you back an easy config, it's nothing close to that, but it could still be very useful. It thinks it knows. There's a mention that JetGPT knows about easy config and easy build. Todd is advertising SPAC in the Zoom chat. He says they do have a SPAC new package kind of thing which basically gives you at least the starting point to that start. It's a similar idea. Yeah, there are some editors that have integration that they basically recognize the extension, let's say, and based on that they already pre-create some kind of template to start from. We do have a template easy config in the repository. That probably needs a bit of love and it needs a bit of updating, but if you copy that, at least you have all the fields to figure out and it does give you some guidance, that's all right. We do have stuff like that. So the comment is with this new EC idea, it could take an existing easy config in the starting point and you're just throwing stuff at it that it should change or modify. The current implementation doesn't do that, but that's something in the back of my head as well. I think if you want to restart that effort, if people think it's useful, we just make it the very minimal first implementation of that and then gradually step by step improve it, and then the other thing is that the easy config in the same direction have the easy result, just in your direction you will have it and that's that. So the comment is the try options that we currently have should allow you to just get that easy config file so you can play with it first before trying to install it. That's actually already possible. You can do eb, try, something, something, copy EC, but that's an option you can give to easy config. Yes. No, no, so the try things it will generate easy config file, if you add copy EC to that it will copy the easy config file to wherever you want and not to any installation. We can probably make that easier to do, but that's actually already possible. Oh yeah, so the idea of starting some template easy config, that same idea could be used to start a template easy block as well. To give you some starting point, like I won't give me an easy, there's a script for that I think somewhere. Give me an easy block that starts from Python package but arrives from that and then at least gives me the structure of what an easy book looks like. At some point we had a script for that, I'm not sure if it's still, okay. More questions? Yeah. Yeah. Yeah, so John is making the comment that easy update is a very useful tool for figuring out what the latest version is of extension. You'll mention this tomorrow in your talk, right? Tomorrow or today? Tomorrow? Yeah. One more thing about Inuits, they are sponsoring the social event tomorrow. We're still figuring out the practical thing there, but at least they put themselves to sponsor the social event. So the boat trip will do in the teams tomorrow and the dinner at Richard the first in the pub is going to be sponsored by Inuits. Thanks a lot for that. And one last thing that I forgot, this example that I was going through is actually step by step taken from the documentation that we're working on. We're currently finishing up on the Python package and Python bundle workflows and there will be hopefully more coming for CMakemake and others for the most common ones. So there will be literal step by step workflow tutorials how to create any easy config the users might need.