 Pekiši držbord je projekta, ki se pošli pošli na 2,5 rovnih nekaj. Imam Pančin.local, imam pošli na vse. Junus Kladanko pošli na projekta. Lukaš Brabets je pošli na vse. Tako, Pekeži Džbord je začal z ideja Miral Hrančok v latih 2019. In se jih zelo pošličilo ideja, da pošliči Pekeži Džbord, da pošliči pošliči, da pošliči pošliči pošliči, da pošliči pošliči, da pošliči pošliči pošliči. To je, kako je prišločila. Gole, ko je začal z ideja Miral Hrančok, da pošliči pošliči pošliči, da pošliči pošliči, da pošliči pošliči pošliči, da pošliči pošliči pošliči pošliči našlič distribučiči. Bekant sejt je izgleda na flask in celorijlibrari. Flask je web development framework, web server in many, many more. And it's written in Python, obviously. And we are using celorij for massive parallelization of beckant tasks, because we are fetching lots of data and I'll get a little bit more to that in a moment. And the service back-end and both front-end is deployed in open chief cluster of federal infrastructure and front-end is written in React. Bunch of implementation details. We basically have two types of data. One, the first type is we are fetching all the data for all the packages and then we are processing them and parsing them and finally showing them to users. And the other type is a more complicated one. And that's the type that we are fetching only for some packages because fetching all the data will be too slow to handle because, for example, bugzilla, and I'll get a bit more to that in a minute, is very slow for fetching all the bugs for all the federal packages. So we are basically looking at who accessed the package dashboard in last 14 days and storing packages of the user and caching that from bugzilla, caching only that from bugzilla. And if somebody new opens the package dashboard, the first visit will take a little bit more time to load because it will show some data and the data that are already in cache and the data that are missing in cache because the user didn't visit package boot at all or didn't visit it in last 14 days, it will be fetched and dynamically loaded into his dashboard. I'd like to give some examples. This is the first thing that's new from last presentation about the package dashboard and these are the projects that are now using Oracle, which is a back end for package dashboard. If you open this git or a Pažor repository for some RPM package, you usually see the version table that shows up all the versions for all federal releases for open package and the data that you are seeing is fetched from Oracle. There are a bunch of fallback paths because some data aren't in cache blob. We are getting the data from repository metadata and combining them with body information. The other thing that's using Oracle is Federa Easy Karma, which is a tool if you don't know about it, if you have updates testing repository enabled, you can launch the tool and give karma to packages that you have from updates testing in a faster way than doing it manually from body. The fetching data from body was too slow and not robust enough, so our team that is developing the tool decided to use Oracle, which is caching all the data from body for all the packages. The other thing that's using package board and I'll get to API demo later is Test Cloud and it's using it for easily fetching all the federal releases. These are currently supported releases and are we in freeze or not, what is a raw hide version and so on. The last thing I would like to mention is we have a special meta user who is called Orphan and it's showing all the Orphan packages and not only direct Orphans, but also indirect Orphans, so if your package is affected by something Orphan, you will see dependency graph in package dashboard if you open Orphan user. And something that I would like to mention that were completed since last DevCon talk, both items are the ones that were completed since Nest talk, which happened in summer and I would like to focus only on those. As I've said, Buxilla is very complicated to use as a data source for vast number of packages, so we have implemented a hacky workaround, how to make it faster a bit, because even with our 64-celero workers, it wasn't fast enough and sync was getting behind and infra wouldn't give us thousands of pods in OpenShift cluster. So the workaround for that was that we are doing only partial refreshes for Buxilla data every hour and we are doing full refreshes once every 24 hours because the difference between partial and full refresh is that partial refresh includes only changes in bugs in interval from last sync and current time, and this data, unfortunately, doesn't include information about closed bugs in that interval. They are missing in report. So once bug gets closed, it might not appear immediately there. The other thing that was problematic is if some bug moved to other package and due to nature of Buxilla, which I don't have time to get too much into right now, we can't get that data in a faster sync manner. And the thing I would like to show you a bit later is the big new thing that we have completed in the last few months, and this is a custom dashboard builder, which you can use to create your own dashboards combined from packages, from multiple packages, or explicitly listed packages or package groups. I would like to show you mainly the new custom package dashboard builder and how it looks. And this is basically it. You can remove or add users to it, and it will use packages from these users, these groups, or you can explicitly list packages that you want to show. So also we have implemented autocomplete. You can get a bit slow for some packages like if you type in Python, and add myself. And you basically can save the changes and load your new customized dashboard. Or you can use convenience button to just share a link with your coworkers or other packages working on similar projects so you don't have to create a package group for anything. You can build your own package dashboard and share it with your team or colleagues. I would like to get to API demo. We have a bunch of API endpoints. We don't have API documentation ready yet, but you can experiment yourself just by typing in slash API to the package dashboard URL. But I would like to show you a bunch of endpoints that you might be interested in. Let me check what's there. Yeah. So this is the endpoint. Can you see the text there, or is it too small? This is the endpoint to easily and in a fast manner get package versions for all federal releases for a specified package. And you see I'm fetching versions for package Firefox. And the dashboard will return you, Jason, that you can use in your scripts and tools. And the API for all the examples I'm showing here is guaranteed to be stable, so that you can rely on that and it will return data for whatever you need or want. And you don't have to fight with the API or anything else. The other convenience API that we are using internally in Oracle Room, and we felt that there isn't such an easy way to fetch all federal releases that are currently supported, and so on. And we had requests to expose that API, too. So we can easily... And you will get Jason's response of all the federal releases that are currently supported. This will be a bit complicated with this revolution size, but this is actually the API endpoint for the package dashboard itself. And you can fetch all the data that the package dashboard is displaying you in a convenient manner. And this is the only thing that has recently changed and there is a point that API slash v1 and don't use that, it will be removed soon and there is API friendly error message that you should stop using that I'm showing you, the API slash v2 format. I see basically everything that package dashboard shows you and for the specified user. I've shown you for all types of bravets and you can combine, as in custom front-end, you can combine a bunch of users, groups and packages. So if I show you, for example, I can combine it like this and you can use the data. Yeah, it's not very readable. But it's JSON standardized format that we promise we won't break, famous last words. So this is the API demo. We are working on writing API documentation and we'll announce it on standard federal channels once it's completed. And finally, I want to talk about some of our plans for near future. We are still exploring options for downstream usage. We are working on FedMessageListener, which should help us with getting data in a faster manner. API documentation is something I've already mentioned. We are planning to rewrite or at least look into rewriting package vode tool if you have ever used that. It's a terminal CLI tool to fetch information about package from your terminal. And the tool is deprecated and it's no longer working. And we found out that our back-end, or RACLUM, is providing almost all the data that package vode tool used, or at least the most important ones. We are looking into supporting package review. Package review is a case for package dashboard, which is something that we've been asked to do, but this will require some rework of our back-end and rethink of a bunch of things and refactoring of stuff we are doing. And also we are finishing QE landing page deployment, which was the primary motivation for our back-end before we have worked with Miro Hrančok on package dashboard, which would be something like hub for testing Fedora, showing what's needed to be tested and so on. This is the link to Fedora package dashboard. If you would like to explore some testing stuff, you can add .stg before Fedora project. We are planning to deploy the custom dashboard feature early next week, and we'll announce it once it's done. Also, if you would have some requests, ideas and improvements, you can create tickets or pull requests at these URLs, or RACLUM is our back-end and package dashboard is our front-end. Do we have any questions? No, no, it will be in production. If it's the feature that you can add multiple packages or multiple persons, if it's already in production, and no, it's not yet, we are planning to deploy it early next week. We are still working out some issues and the front-end developer, Lukash Barber, especially asked me not to show a live demo and I did exactly that, nothing crashed. Wait for microphone. The question is, the release API endpoint you showed, how tightly is following the actual Fedora branching and releasing cycle? Sorry, can you try it louder? Yeah, so how tightly the release endpoint you showed, the API endpoint is actually following the Fedora branching things, like when Fedora is branched, does that endpoint immediately show that it's branched? Yeah, the endpoint, I can show a bit more after the talk here, the endpoint distinguishes if it's branched or not branched yet. I'll show you if you have time after the talk, how it looks. Thanks. Is there a plan for GitLab support? This is something we'll be looking into depending on how much men hours we will have to give to package dashboard, because this is something that would be interesting for now, just for downstream and plans for Fedora to move to GitLab aren't set in stone yet, but if it happens, we will obviously have to add support for that or if we will have time and resources to work on downstream, we'll also work on GitLab support.