Submind YouTube summaries
Thumbnail for Using Debusine to pre-test your unstable uploads

Using Debusine to pre-test your unstable uploads

Watch on YouTube

Video summary

Colin Watson introduces Debusine, a collaborative project developed by Frixian and Debian developers aimed at improving the quality assurance process before uploading packages to Debian Unstable. While the existing Salsa CI system provides essential distribution-wide testing, it is shared among thousands of developers, which can lead to coordination challenges when multiple people work on adjacent projects simultaneously. Debusine addresses these issues by offering a scalable infrastructure that allows developers to experiment with changes at a large scale without risking instability for others or incurring high setup costs. The tool is designed to facilitate thorough testing, including rebuilding reverse dependencies and analyzing regressions against a baseline, ensuring that only well-tested code is committed to the main archive. The system operates on a robust data model consisting of workspaces, artifacts, collections, and workflows to manage complex testing tasks efficiently. Workspaces provide isolated environments with specific access controls and expiry rules, allowing users to create ephemeral spaces for experimentation without cluttering shared resources. Artifacts are stored by hash in an object store to prevent duplication, while collections organize these items into logical groups like suites or archives. Workflows orchestrate various tasks, such as building packages, running auto package tests, and signing binaries, with the ability to handle bursty loads through cloud-based scaling of compute and storage resources. This architecture supports diverse hardware configurations and aims to avoid vendor lock-in by utilizing S3-compatible object storage and multiple cloud providers. Debusine integrates seamlessly with existing Debian tools like dput and offers advanced features such as secure boot signing and the ability to host personal or application repositories similar to PPAs in Ubuntu. Users can mirror repositories, access historical snapshots of data for testing past states, and even cancel uploads after tests fail without affecting the main archive. The project is open-source under the GPL license, with development work visible on Salsa, and it is already deployed on Debian Stable for production use. Future plans include enhancing regression analysis capabilities, expanding support for less common architectures, and potentially integrating directly with tools like tag to upload to create a unified workflow from initial source code to final binary release. The presentation concludes with a live demonstration showing how Debusine automatically generates a tree of work requests to test a package against its reverse dependencies, providing clear visibility into the testing progress and allowing users to abort workflows or sign packages as needed. The team emphasizes their commitment to making this an official Debian CI solution that simplifies the upload process while maintaining high standards of quality. By fostering collaboration among developers and offering flexible infrastructure, Debusine seeks to reduce the chaos often associated with simultaneous uploads and provide a more reliable environment for contributing to the Debian project.
Read the full video transcript
Hello everyone. Um, welcome to the next session of Debcon 25. Uh, I'm excited to introduce you Colin Watson Watson who is um, longtime Debian developer since 2001 and now he's collaborating with a company Frixian which is working very closely to Dian. And uh it's very interesting to uh hear uh one more talk about new tool uh for Debian which uh helps us to make the project better. So it's about debusine to protest your unstable uploads. Please welcome Ken. [applause] >> Thank you. Welcome. Uh, I'm going to tell you about a system we've been working on called Debucine and how you can use it to make your uploads better by doing more thorough quality assurance before you upload them. Uh, Debucine has more applications than QA as well. And I hope we can also spark some interest in those as we go along. Uh, I'm Colin Watson. Thank you, Anton, for the introduction. And, um, my colleagues Enrico, Raphael, and Stfano are also here. Uh, Carles has had to go home. Uh we're all collaborators at Freaksian which is uh which is a Debian services company that among other things is also responsible for organizing the long-term support init initiative for Debian. Uh so this is the usual best practice for doing cross package testing today. Uh it might also involve a trip through experimental if you're feeling extra cautious or depending on the freeze rules that are in force at the time. And of course, not everybody uses sali, but uh I think this is pretty much what the the the median developer, if you like, relies upon. Uh so could you put your hand up, please, if you've ever uploaded anything to Debian Unstable. Okay, good. Uh put keep your hands up. Keep your hands up. Uh put your hand down if you've ever uploaded anything to unstable that broke another package. Okay. Right. [laughter] Put your hand down. Okay. I was good. There are still a few people with their hands up. Uh, put your hand down if you've ever uploaded anything to Unstable without waiting for Salsa CI to finish first. Okay. So, there there are a few people who have impeccable practices and maybe I don't have anything to offer you, but the rest of you uh I hope you'll listen to the rest of this. Uh so we have uh distributionwide CI in unstable. It's great. Uh lots and lots of uh complicated systems that run over all our uploads and make sure they're uh as excellent as they can be before we put them into testing. But there's only one of it and it's shared between all of us. Not just of course not just all of us in this room, but the thousand odd Debian developers. And as a result, it's very possible to get into tangles when multiple people are working on uh somewhat adjacent things at the same time. And we only avoid uh complete chaos uh as much as we do by quite careful coordination with things like transition bugs coordinated via the release team. Experimental does help of course. Uh but again, there's only one of it and setting up another one is very far from trivial. uh there's a lot of complicated machinery involved. So uh what we want is a system where you can run experiments on possible changes that you might want to make to Debian. Maybe you haven't even decided whether it's the right thing to do yet. Maybe you're just trying things out. Uh but you want to experiment at a large scale without a high setup cost and without fear of uh breaking things for other people. Uh and then if it all works then you can actually commit to pushing the whole lot into Debian. Uh so this is where debut scene comes in and it's what originally got me excited about it. Uh when I talked to Raphael about maybe doing some work for Freakian and he pitched this to me. Uh we now have the we know we now have a slightly loftier goal of providing an integrated solution to build distribute and maintain a Debian based distribution. Uh that's because we realized that uh a lot of the things we were doing were useful for Freaksian's extended LTS project uh that funds developers to extend security support for old Debian releases for up to 10 years. Uh and uh we we think it might also be useful to other Debian develop Debian derivatives. It may also be useful for Debian itself to use. Uh though Debian's infrastructure teams do of course tend to be rightly very conservative about the critical pieces that we need to to make the distribution work. Uh but we'd very much like to work with anybody's interested on that front. Uh by the way, it took me an embarrassingly long time to realize this after I started working on the project, but uh us is a French word meaning factory. So deb usine undeb us is a factory for debs. Uh all right so all the people working on debucine are Debian developers. Uh we've got nearly a century of Debian de Debian experience between us which made me feel very old when I when I did those sums. Uh we're working on this because we want to make Debian better by making it easier for people to do effective CI at the distribution scale rather than everybody having to put together their own infrastructure. At the same time, uh, obviously we need to pay our bills and that sort of thing. So, this project's been generously funded by Frixian as well as by, uh, a grant from the Sovereign Tech Fund in, uh, in Germany, uh, that, uh, covered our work last year in 2024. Uh, collectively, we've put over 6,000 hours of work into it so far. Uh, we have an instance on debutcene.debient.net. Uh, this is intended purely for Debian's use. If you're a Debian developer or a Debian maintainer, you can sign into it via salsa. We also have an instance on debin.frxian.com. Uh this runs Frixian's work on extended LTS. Uh but we've also begun to make it available to customers who pay us to use it and to uh have some say in our development priorities. We'd very much like to make this a sustainable project over the long term. Uh [snorts] so if you work for an organization that might be interested uh please get in touch with us after this talk. Okay that's a sales pitch. Uh we started out then by building the nuts and bolts of a system that could run a variety of QA tasks within the same infrastructure. Uh to begin with this inevitably seemed a little bit like reinventing the wheel. So uh la last uh last autumn by the mini debcon in Tulus uh we had capabilities that were in the same sort of ballpark as salsa and so of course it was reasonable to ask why we'd bother because salsa already exists and is widely used but uh CI on a single repository is mainly about making sure that the contents of that repository are as high quality as possible. What we're trying to do is more about the middle entry in that uh motivation slide uh few minutes ago. Uh so we started adding things like a way to run auto package tests on all the packages that depend on your package. Uh of course that happens if you upload to unstable or experimental. But this way you don't have to worry about stepping on anybody else's toes. You can just work completely autonomously and uh play about. Uh we've also begun planning for a way to rebuild all of your reverse dependencies in in our system. Either single stage like the the RAT tool that stands for rebuild all the things or uh multi-stage like the sort of thing that you do if you're planning I don't know a Python version transition or a Haskell compiler change or one of those things that requires a a a stack of staged uploads uh step by step. Um, of course, once you do this start sort of thing, it starts becoming pretty hard work to analyze the results. They're probably not all going to be passes and the the previous state might not be completely clean either. Uh, so we're working on a system to uh track and report on regressions against a baseline. Uh, again, this is a bit like the system for migrating from unstable to testing, but [snorts] uh without committing to anything in the Debian archive first. If you're using dootngng, we have integration for that. Uh this saves you uh having to learn how to use our debut scene client for simple cases. Uh so this uploads all of the files in your uh source package with apologies to Ian uh and then uh starts a suitable workflow on them. Uh you can ask Debusine to do the upload to the target archive for you if it all works. Of course, you have to provide a signature to do that. Uh we've begun using this for contributors who are uploading to ELTS. In that case, Debcene also acts as the official build demon. Uh so developers sign the source package, Debc signs the binaries and then uh Debcene uploads the lot. Uh we have secure boot signing. Uh so we've got uh separate signing workers uh that can hold keys either uh with either for low value keys with uh software encryption at rest or for anything a bit more important in UBHSMS. Uh we needed this once Buster moved into ELTS uh because that in Buster already had support for signed bootloaders. So so to avoid regressing uh we had to have a way to issue security updates for those. Uh we've also begun working on hosting app repositories in Debusine. Uh so you you might call these PPAs if you wanted to. Uh we're we're thinking about better names that are a bit more uh clearly distinct from Ubuntu system. uh which I used to work on which uh so maybe something like I don't there there's a pad with a bunch of ideas for this uh PDAs for personal Debian archive or I quite like NDAs for not a Debian archive. Uh there's there's a few different options. Um we've been planning this for some time. We designed a lot of the core data structures here with with this in mind. Uh but we only really started on it properly a couple of months ago. Um, nevertheless, we're at the point where you can mirror a repository from somewhere else and republish it from debris scene with snapshot capabilities uh as long as we've got enough storage. I should say something about tag to upload uh because uh there's an obvious overlap uh in in some cases. Uh right now uh I I'll confess that debut scene doesn't really work with type to upload which makes me a little bit sad because I like both systems. uh you more or less have to choose whether you want debusine to help you with your distro wide CI or whether you want tag to upload to help you make the the source package and uh track the life cycle there. You can deput to debine cancel the upload to Debian after it's run all the tests and then use get dead push separately but that's that's quite a clunky experience. Um all the same type to upload seems like a very good thing for Debian. uh we'd like to figure out how to work how to support it in a way that feels idiomatic. Um uh and we we do have an open issue about this. We've been talking about it. It doesn't feel quite sensible to tag a release and then just upload it. Internet because CI might say you have something wrong. Um so we started thinking about some kind of counter signed conditional tag arrangements or something like that. Uh we'd also like to support support to support uploading to debutcene hosted repositories using tag to upload and at that point maybe we want to host the web hook receiver and run some part of tag to upload within debucine. Uh I'm not quite sure of exactly how that will end up looking. Uh but uh I expect we're going to figure out how to integrate this uh over time. Please get in touch with us if you have ideas. All right. uh if you're if you're doing uh auto package tests across the whole distribution and rebuilding piles of reverse dependencies and things then obviously you generate a lot of load very quickly in very bursty ways. Um Frixian has a dozen or so workers attached to each of our instances to to handle u the sort of thing that if you're running par sessions you talk about as best load. uh but uh we expect a lot of bursty load as well. Um people like uh I don't know if they're in the audience but people like Lucas Nusbal and Santiago Villa who do a lot of uh rebuild testing for Debian tend I believe to use some kind of cloud provider to do so whether that's uh the French grid 5000 system or AWS whatever uh that sort of thing makes makes a lot of sense here. Uh so we do have basic cloud uh uh scaling support for both compute and storage. In the compute case, this takes the form of pools of workers that can run tasks for us and that we can scale up or down depending on our task queue. Uh in the storage case, all our files were already content addressed with uh references in the DB and our local file store already looked a bit like an object storage system. So uh hooking up cloud-based object storage was pretty easy. uh we've we've tried to avoid depending on just one big tech provider here. We don't want to be dependent on Amazon working or Google working or whatever. Uh S3 compatibility is pretty widespread for object storage. Lots of providers implement something compatible, but uh cloud compute tends in practice to be a bit more provider specific. Uh so far we've implemented both Amazon EC2 and HNER cloud to give us at least minimal diversity. uh but there is support for plugging in others if we decide we need to do that. Uh we try to avoid lock in so the core service doesn't assume any cloud provision at all. Uh and we we have support for migrating files around between different object stores and that sort of thing if we need to. Uh that said on on our main instances on our main instance right now we only have about a terabyte of files. So it's actually cheaper at the moment for us to just self-host that. Uh as we as as more of you start to start to use Debine, uh we expect that this number will grow. Uh all of our development work is in the open on Salsa. Uh the project is straightforwardly GPL. There's no contributor license agreement or anything like that. Uh if you're a Python web developer, it's actually a pretty nice project to work on. Uh we have full type annotations across the whole project. Uh 100% test coverage uh or 100% unit test coverage uh uh across branches and uh lots of documentation. Uh we have some byte-size tasks in our issue tracker on salsa. Uh if you're if you have things you'd like to change, we're very happy to help you. Uh this is a project by Debian developers for Debian. So of course it's also in Debian. We deploy production on Debian stable from packages that are built from git by SalsaCI uh so that we can deploy fixes reasonably quickly but it's all the same packaging that goes into Debian. Uh when we aren't in a freeze we usually make a couple of uploads a month. Uh if you like you can install the whole system for yourself from these packages. uh our documentation covers how to do that, but most people will just need the Debc client package uh which lets you interact with an instance that's hosted on somebody else's computer. So, uh let's have a quick look at some of the basic pieces involved in Debine. As a user, you don't need to have a detailed knowledge of all of this, but it is helpful to have a quick vocabulary lesson. uh if you want to help us extend debut scene then you will need to know more about this and to start understanding more of the detailed design involved. Uh so uh workspaces are the first piece they're the uh they're where they're the container within which everything else lives. Uh they can be they can have various access control. Uh they have various expiry rules. Uh so you might perhaps have an ephemeral workspace that only lasts for uh two weeks after the last thing you did in it. Um on WC Debianet we have uh two sort of main workspaces that that you might need to see. Debian/base has all of our infrastructure like mirrors of the Debian archive so that you can build things against them. uh the uh rules for building the container and VM images that we use to launch all of our tasks. Uh and also the de Debian/developers workspace which is very roughly it's for things that that somebody is intending to enter Debian but it's not a it's not a one-toone correspondence with Debian because some of those uploads might uh might might break in CI in some way. uh workspaces can inherit from each other. So developers inherits from base. Uh if you try to look something up in developers and it's not there, we'll look in best instead. Uh and we have this we have an idea of experiment workspaces which are uh ephemeral workspaces based on another one. Uh the idea here is that if you are uh that if you're playing around with something, you can ask us for a workspace that uh is just owned by you. Uh you can do whatever you want in there. Uh and uh you can set things up in it like your own workflows, your own uh uh published archive, uh all that sort of thing. [snorts] Next major piece is artifacts. uh the these are the the lowest level uh storage abstraction in debus scene. So uh you have some data and a few files. Source package is probably the easiest thing to look at to understand this sort of thing. So for a source package you have a DSC and maybe something like a Debian Tartgyz and a and a Ridge TXZ something like that. Uh so you've got a few files that are very closely associated and that travel around together. Uh the there's also metadata extracted from those. So for for a source package, you normally want to know at least the the source package name and version and what architectures it wants to be built for. Uh there are uh a whole bunch of there there's a whole zoo of other uh artifacts uh implemented. uh Debian linten for instance is a a result from running linten but parsed in a way that you can uh uh search effectively across multiple artifacts uh and lots of things that are used for debcen's own purposes as well. Uh all of the files and artifacts uh live in an object store. Uh they're stored by hash. So if uh this same artifact uh sorry if multiple artifacts share the same files uh then uh we we won't duplicate storage for that. Uh collections live above artifacts. They're sets of items that form something more complicated. So a suite is the is the easiest example of this. A suite contains a whole bunch of source and binary packages. uh and you can look up uh uh packages within a suite by name and version and maybe architecture. Uh an archive contains multiple suites. Uh so you can have collections of collections. Um some uh some collections are just of basically blobs of data. So the results of QA tests don't necessarily involve any actual files. Sometimes they're really just small bits of uh parsed metadata. Uh collections can control the expiry of the things they contain. So uh if you uh if you have an artifact that that is in a suite, then it shouldn't expire until it's no longer active in that suite. Uh and uh in some cases, you might actually want a little bit of uh uh some kind of grace period there uh to make sure that things don't disappear immediately. uh and uh there's there's a quite a sophisticated lookup system for uh taking a collection and saying I want to find an object within that. Uh so uh once you once you've got all of those primitive operate primitive pieces uh you need some way to ask Debc to do things for you. uh work requests are the the lowest level system for this. Uh so uh when you create a work request, you give it a task name, you give it some task data, which is a a key value sort of thing. Uh and the task data would usually say uh here are my input artifacts, the things that uh I want to to uh build or test or sign or or whatever. uh and some options for how it's going to do that. This is very kind of arbitrary code execution engine, right? So, so you obviously want some kind of sandboxing to make sure that it doesn't immediately go horrible. Um we we execute most work requests on an external worker. Uh that's usually sandboxed in some way. Uh we we support at the moment uh unshare for uh for for sort of lightweight kinds of things. uh Incas containers, Incas virtual machines and QME virtual machines. Uh the instance administrator and the workspace owner between them can control what uh what levels of sandboxing are needed. Uh work requests usually produce some kind of artifact uh as output. It might just be the log but uh more usually it will be will also include some files like auto package test output or debs or something like that. and those will often be immediately added to a collection. Uh so yeah, some examples of work requests, s build, uh auto package test, uh package upload, all that sort of thing. Workflows are where things start to get pretty special because they let you tell Debusine to do many tasks with some ordering constraints and those can involve tasks across lots of different packages. So for example, we have the reverse dependencies auto package test workflow uh that finds all of the packages in a given suite from Debc's point of view that depend on or declare a test suite trigger on one of the binary packages that you pointed at uh and then runs all of their auto package tests against those binary packages by creating sub workflows. Um eventually we want to allow for custom workflows once we figure out a a suitable domain specific language to for for doing that sort of thing. But for the time being we have a number of built-in ones. Uh so for most people probably the most interesting one is uh the Debian pipeline workflow. Uh that's that's quite powerful. It stitches together a lot of other pieces. So it uh it builds the package. It does all of the usual uh single package CI tasks. Uh, but it then also runs all of the distributionwide CI that we've written so far and it has the option to upload your package to Debian at the end of it if you so desire. All right, so uh that's a a very quick tour. Uh we promised to show you how you can use these features to do QA work in Debian right now. Uh so here are a few live demos. Um [snorts] I hope everything is up and working for this. Uh these only really scratch the surface because Debuscene is really a feature a framework for running lots of different tests in a structured way. Uh and if you have have ideas, we hope you'll come to our uh debusine workflow buff after lunch to talk about what else we could build in this framework. So uh let me see what I can do here. this uh take we're going to take a source package with a few reverse dependencies and uh I've chosen uh zip zip.esting which I happen to maintain uh and uh sorry it's a little hard to type this way um and uh I've prepared a a very simple modification to that uh so I'm going to deput that to wc.debian.net that uh and uh it will uh as expected fail in the first step because uh normally it will work out which workflow to run based on the distribution in your changes file. But in this case there's no we don't have a workflow set up for unreleased. Uh so uh in in this case we're just testing. So, uh I'm going to override that. Uh and say upload this to unstable. Uh so that uh uploads all of the files uh to to debut scene. In principle, it's a bit like deeper. In practice, this is uh implemented behind the scenes using the Debcene client. uh and uh at at the end of it, I hope you can see that at the bottom of the screen, uh it uh it creates a workflow. So, uh I'm going to uh if I can grab this and uh open this in debut scene. Goodness, that's going to be a bit giant, but uh hope you can see what's going on. So it's uh it's created a big tree of uh uh of work requests. I deliberately chose one that had some reverse dependencies but not too many so that uh it would all complete reasonably quickly. Uh and uh you can see that uh these are organized into subworkflows each of which does a smaller chunk of the work. So, so this one as I said looks up which packages have predepends or depends or test triggers on the package on zip.esting uh or on Python 3 zip.esting rather and creates an auto package test workflow to each of those. Uh so if I click click through to one of these and look at its dependencies tab you can see that it's waiting for the the builds to finish first. Actually it's not because it finished quite quickly. Um otherwise tasks will start as soon as an appropriate worker is a is available for them. Uh so if you're curious you can uh you can click through and uh look at the list of workers down here and uh see what see what they're all doing. Uh oh maybe somebody else is using depine as well. Uh the so that will um that shows you all of that and uh I'll just reload this and we can see that a whole bunch of stuff has finished. Uh I'm not going to wait for all of this. Uh if I uh click through to the excuse me a moment. Uh if I uh look at the waiting for signature task here, if I can find where my mouse has gone. There we are. Uh then uh this has uh this has some instructions on what you want to do if you want to actually upload this thing. So run dep provide signature this thing. Uh you you might well want to say actually you know what I've changed my mind. I don't want to I don't want to do this. So you can abort that and uh that will if I go back uh cancel cancel the rest of the workflow. Uh so in this case obviously I don't want to actually upload this thing to to unstable. it would be rejected anyway. So, uh so I'm just going to cancel that. Uh but if if I had wanted to sign that, what it would do is uh do something very like debar sign essentially. Uh so maybe you want more control over what Debbie does or uh you want to do a set of uh throwaway tests that uh you don't intend to upload and you also don't want to litter a shared workspace with them. Uh so for this sort of thing it's useful to be able to create your own workspaces. Uh I mentioned experiment workspaces earlier. By default only you can write to an experiment workspace you create. Uh they come with an effect of them so you can add other people to them if you want. Uh once again, where is my mouse pointer? Uh right, let's see. Uh no, there we go. I'm just going to retype this. Sorry. Uh so I'll say uh create a workflow uh uh starting with the developers workspace. Uh and actually I'll show you this uh this example here. Uh so the this is some task data for workflow. It just says here's the name for my experiment. Uh I want it to expire after one day because it's very boring. Uh but of course that might be longer. So uh this is uh create this uh and what have I done wrong here? Uh I have forgotten to say create experiment. Uh so that will that will create uh the workspace for you. At the moment unfortunately this doesn't give give you a URL to the new workspace but if you go look at the front page of wc.dew internet you can find it. uh and uh way down at the bottom. So I'll open that and here we have a brand new workspace. Uh so within that uh I can uh create uh workflow templates. So I can say uh uh uh I'll show you the uh template again. Uh this is uh kind of similar to the one that's configured by default in the developers workspace, but the the main difference here is that it's not configured to upload to Debian at all. So you can't you can't make a mistake with it. uh the um uh you you might well for this sort of thing say actually I want to uh build uh build all of my packages against something else maybe against my private archive or I want to uh uh run all of the tests in virtual machines because they're they're crazy things that involve tearing down bits of network configuration or something uh and uh and so on. So, oops, what did I do? There we go. Uh, so I can create another workflow with that uh or create a workflow template with that. And I can upload that uh same package that I uploaded earlier here. Uh, and uh just using the force option because I already uploaded it a moment ago. Uh, but that will upload it to uh to my private workspace instead where it can do its own thing. You can see that the URL has zip. Demo in it. Uh so it's outside the scope of this demo, but you can also use the binary artifact uh binary artifacts that this produces as additional input to other workflows. Uh it's all a bit manual at the moment, but we're planning to hook things up soon so that you can tell a workflow like this to publish the output into a suite collection in Debine as an alternative to uploading to an upload queue. At that point, you've pretty much got the equivalent of a PPA. Speaking of which, uh let's have a quick look at where our app repository support is at the moment. Uh so uh this uh script here uh is just a a simple thing that uh creates some apt configuration uh and uh so a kind of private bit of apt configuration that I can uh use as an ordinary user. Uh and it this points it at deb.wc.frixian.com. frixian.com/frexianbase uh which is uh Debbie's mirror of all of the stuff in uh uh in Frixian ELTS uh specifically this points to our mirror of the the ELTS repository for Buster. So I can at this point run uh oops I can at this point run uh uh apt config equals point to the new thing apt update uh and that will just do an apt update from uh from debutc all works uh that's fetched the indexes so I can then go okay download uh this is a security update that I looked up that was published on the 1st of July. Um, so so far that's just kind of mirroring. Uh, but I can also ask it about older state. So we started mirroring indexes a couple of weeks ago. Uh, and that means we have uh, some older data as well. I can say I can tell apt to uh, use the snapshot from midnight on the 30th of uh, of June. Uh there's no specific uh uh we don't have like specific uh cut offs for the snapshots. You can you can pick any date you like and we'll just use whatever uh whatever was current at that point. Uh and uh once you once you do that we can then say uh okay pick whatever was current for that package uh at that date instead. And you can see that instead of picking uh -2 plus dev 10 U1, it picked 2.1-2 instead and got the older version. So you can use this sort of thing in the same way that you might use snapshot debian or to look at the state of a repository in the past and uh even run tests against it using something like debisect. At the moment we only retain older snapshots for ELTS and not for our current suites. That's partly to save on space costs and partly because well snapshot debian or is already doing that. Uh but once we have personal archives you should also be able to get snapshots of them for free. Uh so what's next? Uh a lot of our current work uh current road map involves finishing things we started. So we want to make debut scene more useful for LTS and ELTS contributors by finishing our work to support analyzing regressions. uh that's one of the biggest remaining gaps uh with respect to previous processes for for for LTS and DLTS contributors and it's going to be very useful in general in uh in the process of getting your head around uh the the output of complicated workflows. Uh I'm personally very excited to finish app repository support as well. I think that will make a big difference to to how Debian operates. Uh but after that we're really looking for people to embrace Debine to to help us decide on its future maybe even to help us build it. Uh we've had quite a few conversations already even just this week uh with people who have specific use cases. Uh and we as I said earlier we I hope we'll uh see some of you at the deputy scene workflow buff uh this afternoon to explore those further. Uh that's all I've got. I'm happy to take questions. >> [applause] >> Yeah, thanks Colin for uh for uh the introduction of this new very interesting tool and uh it's it's nice to see that in Debian we have more and more tools which help which makes our life easier. So let's go to questions. you uh showed us the like data model basically. Um you're expecting this question, right? I notice you didn't explain how git is git source code is stored in debine. That's correct. I didn't uh it's not currently, but I think it probably can quite easily be. So, uh my expectation is that uh we'll have some kind of new artifact type. Uh you saw me exploring the artifact model. uh it's very flexible uh so you you can have uh pretty extensible sets of artifacts at the moment we do just have Debian source package which is a trad source package but I don't think there's anything stopping us having like debine sorry Debian colon git source or something like that which uh I'm not sure whether we'd store a git bundle or whether we or git archive effectively or whether we'd h just store a pointer to uh to um something as hosted somewhere else. Uh but uh uh it's it's perfectly allowed for in the data model. The only reason we haven't done so yet is because we'd end up building source packages internally anyway. Uh so we because we're uh because most of the work uh that is done by our tasks is done by existing deb existing Debian tools. Most of those expect source packages and so we basically need one for internal purposes. But one thing I'd like to do is uh uh have a task that basically does the equivalent of the tag to upload builder uh that goes from uh a git archive that we stored in one artifact produces another one which is a compatibility source package and then we can feed everything else to that. Um happy to talk through the details of that. I think is very possible. Thank you. >> Okay. Thank you Colin for this interesting talk. I I sorry I I need to um uh correct myself. I raised my arm at the at the wrong place. I for sure I did uploaded something which break other things. And so uh >> haven't real. >> Yeah. I really like this deep interface because it was new to me because this this is really great but uh and and very simple and so but it triggers a question in me is usually I contact duck with deepot is deepen somehow doing a similar top job to duck at some point in time >> similarish so uh uh deeput has deepen g at least it's a bit more complicated With uh traditional deepoot, but with DUTNG, it's got uh a very flexible workflow or sorry uh hook and profile system. Um it's a little more complicated than it needs to be in some places. Uh I've made some fixes to get it to work for us. Uh but uh you can you can tell it instead of uploading to that upload queue, then upload to to this one instead. Or actually, you can tell it to execute basically its own code. That's >> I'm talking about the putng. >> Yeah. >> Right. So um really dutng doesn't interact directly with DAC anyway. It's it's interacting with an upload queue which uh traditionally in deb in Debian there's another piece of machinery that then transfers all of that over to DAC. Um we just substitute ourselves for an upload queue and uh uh and and do what we need to do there. Uh what we what we don't quite have is uh machinery for actually putting your upload into a suite collection which would then be the equivalent of uh DAC uh of of D install effectively. Uh but we're quite close to that. >> Really good. I would have a lot more question but I'll leave it to others now. Um, [clears throat] yeah. So, one of the pain points that I have with uh Debian and auto backage test in particular is running those on lesser common architectures. Is that something uh Deben can help me with? >> Uh yes, though maybe not immediately quite yet. Uh we have AMD 64 and ARM 64 workers right now. Both of those I guess you probably count as common. They're they're reasonably widespread. Um, but there's there's absolutely nothing to stop us hooking up uh uh others apart from just getting hold of the right hardware and putting it in the right places. Um, what what are you interested in particularly >> all the supported architecture? >> Right. Uh, we want to get there. It may take a little while to deal with procuring all of that. Uh, but uh, but we do want to get there. Yes. Okay. >> Yes. >> The the model um is very generic uh which I like. Um what are your future plans for um using that genericness to be able to build other things apart from debs? So could this be a future OBS type thing? As you can yeah as as you observe it is very generic. We've carefully namespaced all of the things that we think are very Debian specific with Debian colon at the start. Uh so that we we don't design ourselves out of that. Uh I think probably for the short term we would we would rather do a better job of fewer things rather than doing a bad job of everything. >> [snorts] >> Um but uh there's but there's plenty of room for it. If we had customers who wanted us to to build that then uh it's then we're totally open to that. Uh the current team doesn't have a lot of expertise with RPMs or uh arch packages or or whatever. Um just because we're we're mostly Debian specialists. But uh there's there's there's space for it. Okay, any more questions? It's not really a question because I'm [laughter] part of the team, but just to uh tell you that the the view that we have or that at least I have is that we want this to be something integrated. Obviously we're trying to integrate it with the current Debon situation which means well uh we have to start with source package and we have to upload them back to to Deon but we can only upload source package right now but obviously if we test binary package and we know they're good we would like them to be used directly instead of being rebuilt in a different environment. So one of the obvious and interesting next step uh for us is to help convince Ourelia and the other from the build team to uh consider rely on debin to uh build the debian package the official Debian package and uh yeah we really see that as a uh ultimately as the official Debian CI uh that uh you use automatically when you do your work uploads Don't know how many people uh are worried of this future or would like to see this future. Maybe we can have a raise of hands who would like to uh see an official workflow from scratch from the initial upload up to the upload to Debian maintained by a single unified architecture instead of many random tools. >> Okay, not too bad. >> Okay, promising. Thank you. >> Okay, please. Last question. Um, thanks for the talk. You you Yes. Um, you mentioned uh that it was um doing what salsa is already doing, but uh would it be imaginable to plug salsa to trigger debuts in jobs? >> It's definitely a possibility. I think one of my colleagues was doing a bit of early exploration of that uh at dev camp. Uh we I I think we need to work out what to what extent some of that is useful and to what extent it ends up being confusing uh because if you have uh I mean we have a lot of multi-layered systems in in Debian. Sometimes if you end up with all of them calling each other, it can be quite confusing to work out what does what. Uh but uh I'm not in principle opposed to the to the idea and we may end up with something like that. Yeah. >> But really lost. Okay. >> So this seems like a really really good tool to spend all the disk space in the world. >> Yes. um in addition to all the CPU of course uh except that which is being consumed by LLMs and scraping. [laughter] Uh so what kind of controls do you have or kind of reporting and and similar do you have for for managing that in a way where we don't end up with uh people accidentally or intentionally consuming like significant amounts of of uh capacity because >> if we are going to to adopt this for for Debian and make this more generally available I can very much see people consuming hundreds of terabytes of this space before we uh yeah >> indeed uh we have quite aggressive expiry really. Um in some cases a little more aggressive than I'm comfortable with. Uh although I a few weeks ago I discovered a bug where uh we were we had uh accidentally not expired two terabytes of data. So oops but uh so there's it's moderately aggressive right now. We don't currently have great reporting for workspace owners. So uh so most of our most of our reporting is more at the instance administrator level. Uh I would like to expand that to workspace owners because once we well from Freynium's point of view once we start having customers uh who are using this uh for their own purposes most likely they'll want to to see how much space they're using. uh but there is reporting at the uh uh at the instance administrator level where we can see what's being used by which uh uh which sort of scopes. Uh and uh I expect to expand that. Um most likely we'll we'll end up needing something where you can where you can see what is what is keeping artifacts non-expired. Uh so there are only a few reasons why artifacts can can be kept. Um there's like explicit expiry or being referenced by collection or being referenced by relations from other artifacts. Uh and uh uh all of those are quite easily data database introspectable from our point of view. So we can uh we can expose that a bit more publicly. >> Okay. Thanks Colin. uh one more time for your nice presentation, for your work uh on this tool and the whole Frexen team for doing this uh job. Please continue to do it and keep us updated with news from from this tool and I can only promise that I will try to use it for my personal needs. Thanks a lot. Please welcome uh this grid for one more time. [applause] Thank you.