WEBVTT 00:00.000 --> 00:15.000 Thanks a lot for coming. Welcome to my talk about a potential path for the future. 00:15.000 --> 00:21.760 So I have too many slides, so let's get quickly over with. I'm Dan, I work for Sousa, 00:21.760 --> 00:25.600 I've done package maintenance, I've been doing it for a while. If you want to send me 00:25.600 --> 00:30.600 hate mail later on, you'll find it in the slides how to contact me, but please don't. 00:30.600 --> 00:38.600 At least not with hate mail. So what are we going to talk about? Mostly start out where we are. 00:38.600 --> 00:44.600 What kind of is the problem that I see in our in the way how we build distributions? 00:44.600 --> 00:51.600 And then we're going to take a quick look at a few notable examples that popped up in the last 00:51.600 --> 01:01.600 years and that successfully employed, let's say cloudy container technologies and attracted quite the user base. 01:01.600 --> 01:09.600 And then I am going to present a proposal what we could do and essentially you can just see that as an inspiration 01:09.600 --> 01:16.600 for what we could do or maybe won't. We'll see. So where are we? 01:16.600 --> 01:23.600 And essentially I'm please don't take this as an offense, but if I look around the room, 01:23.600 --> 01:30.600 unfortunately, it kind of confirms this a little bit. The open source. 01:30.600 --> 01:37.600 I'm getting older as well. We're all getting older and there's not that many young people trickling in. 01:37.600 --> 01:43.600 So tide lift made the survey that the open source community is getting grey and grey on. 01:43.600 --> 01:53.600 If you want to find this blog post, you'll have to go to archive.org because they got bought by so-and-a-type at some point and now it's down. 01:53.600 --> 02:00.600 But this thing looks kind of okay. People are getting older, but if you look at the data, it's like from 2021 to 2024, 02:00.600 --> 02:05.600 I wouldn't count that as so such tremendous evidence. 02:05.600 --> 02:14.600 So we went digging a little bit and if you're looking for developer surveys, that's the elephant in the room and that's the stack overflow developer survey. 02:14.600 --> 02:19.600 And so what you see here is I hope you can read it. 02:19.600 --> 02:29.600 It's essentially a graph from 2016 to 2025, how the developer age distribution evolved. 02:29.600 --> 02:38.600 And then you can also see an interesting pattern evolving by itself, which I must admit I do find it surprising, 02:38.600 --> 02:45.600 because you see that the majority used to be between 25 and 34. 02:45.600 --> 02:54.600 And that one shrunk in 10 years by about the same amount that's the 35 to 44 core group. 02:54.600 --> 03:06.600 So that part probably just aged. Fortunately, the part the developers between 18 and 24, they didn't shrink by as much. 03:06.600 --> 03:10.600 So there's younger people coming in. 03:10.600 --> 03:12.600 But what does this tell us about us? 03:12.600 --> 03:21.600 Literally nothing because what's the overlap between the distro builders and general developers? 03:21.600 --> 03:31.600 So let's look at a few other surveys. For instance, Linux Foundation ran a diversity and inclusion survey in 2021. 03:31.600 --> 03:37.600 I overlay the stack overflow survey data from 2021. 03:37.600 --> 03:45.600 And you can see well already the Linux Foundation, which is not just distribution adjacent people already there. 03:45.600 --> 03:51.600 We see a big overlap of older folks. 03:51.600 --> 04:00.600 Debian ran something like that. In 2016, sadly not since then, at least nothing with actual demographic data. 04:00.600 --> 04:14.600 That one is with data from 2016. Again, you see quite a shift towards older people, older developers. 04:14.600 --> 04:27.600 Now, from my side of the world, open-susa that definitely matches my perception of the open-susa community, which tends to be relatively old. 04:27.600 --> 04:31.600 This is a maintainer survey from 2021. 04:31.600 --> 04:38.600 I think it had only something like 220 respondents, so you've got to take it with a grain of salt. 04:38.600 --> 04:42.600 But you see a certain trend here. 04:42.600 --> 04:51.600 Sadly, I couldn't find really any distribution that did a demographic survey at one point at an later point, where you would see some kind of shift. 04:51.600 --> 04:54.600 But I hope you get my point. 04:54.600 --> 04:58.600 And then let's take a look at the heap new stuff, the CNCF. 04:59.600 --> 05:04.600 They ran a survey called the state-of-cloud native development in 2025. 05:04.600 --> 05:11.600 If you overlay the stack overflow survey from 10 to 25, you see it matches pretty much exactly except that best. 05:11.600 --> 05:15.600 More young people, a little bit fewer old people. 05:15.600 --> 05:22.600 But this shows you something, and that's essentially what do developers want. 05:22.600 --> 05:26.600 So let's look at the stack overflow developer survey. 05:26.600 --> 05:30.600 This is the most admired, most desired. 05:30.600 --> 05:33.600 That's the admired versus desired column. 05:33.600 --> 05:36.600 You see, admired desired darker. 05:36.600 --> 05:38.600 It's number one. 05:38.600 --> 05:43.600 Then at some point you get AWS Kubernetes, NPM. 05:43.600 --> 05:47.600 Well, the web is eating the world. 05:48.600 --> 05:54.600 And another thing that's also pretty, pretty jarring is code and documentation. 05:54.600 --> 05:59.600 Collaboration tools get up is by far number one. 05:59.600 --> 06:04.600 I have questions about point number four. 06:04.600 --> 06:06.600 I don't know why there's Gira. 06:06.600 --> 06:07.600 I don't know. 06:07.600 --> 06:14.600 Every time I have to use Gira, I think about debugging Pearl code because it's more fun and more enjoyable. 06:15.600 --> 06:17.600 So, but yeah, but you see Gira. 06:25.600 --> 06:27.600 I doubt that's going to change anything. 06:31.600 --> 06:39.600 Yeah, so anyway, now we have to ask ourselves why aren't we up there? 06:39.600 --> 06:41.600 Why aren't we desired? 06:42.600 --> 06:48.600 And I don't know how to formulate this nicely, but our tooling and our platforms. 06:48.600 --> 06:50.600 They aren't just cool anymore. 06:50.600 --> 06:52.600 We aren't cool hot shit. 06:52.600 --> 06:56.600 And I mean, well, I think most of us are developers. 06:56.600 --> 06:59.600 We like the cool new stuff. 06:59.600 --> 07:03.600 And sadly, we've been around for 20, 30 years. 07:03.600 --> 07:05.600 Stuff is established. 07:05.600 --> 07:09.600 And it's just not super exciting anymore. 07:09.600 --> 07:15.600 Also, to a certain extent, our values aren't that super exciting and that much respected anymore. 07:15.600 --> 07:19.600 If you're very much into software, into software freedom, 07:19.600 --> 07:23.600 people at least many developers tend to be more pragmatic. 07:23.600 --> 07:26.600 And just slap my T on it. 07:26.600 --> 07:31.600 Don't caff it's GPL or MIT or don't care. 07:31.600 --> 07:37.600 Something that might become a problem and that one I can at least tell you from the open suicide. 07:37.600 --> 07:40.600 The other lamps are not trained on our tools. 07:40.600 --> 07:43.600 They don't understand packaging formats very well. 07:43.600 --> 07:46.600 They guess wrong stuff. 07:46.600 --> 07:49.600 And that's going to also be a problem. 07:49.600 --> 07:56.600 So if I ask a cloud for a spec file, it will give me one for centers, not for open suicide leap. 07:56.600 --> 07:58.600 And then I have to do the work. 07:58.600 --> 08:01.600 And also building a distribution is very hard. 08:01.600 --> 08:05.600 If you just take a look at what all goals in there, 08:05.600 --> 08:07.600 you have to have to curate sources. 08:07.600 --> 08:09.600 You have to build packages, build repose. 08:09.600 --> 08:13.600 You have to do a lot of QA. You have to publish it somewhere. 08:13.600 --> 08:15.600 You have to hold a whole lot of infrastructure. 08:15.600 --> 08:18.600 And a bad part of that is also it's kind of soft. 08:18.600 --> 08:21.600 Because I think we all do a pretty good job of it. 08:21.600 --> 08:26.600 So why should you get in there as a new developer? 08:26.600 --> 08:30.600 Because it kind of works and I don't care. 08:31.600 --> 08:36.600 And for the average death, the whole pipeline in there looks pretty much like this. 08:36.600 --> 08:38.600 At some point there is upstream. 08:38.600 --> 08:42.600 And then I don't have a wizard head with me, but I take it. 08:42.600 --> 08:47.600 And then the deliverables fall out of it. 08:47.600 --> 08:51.600 So I don't want to spend more time complaining. 08:51.600 --> 08:57.600 Let's take a look at a few notable examples that became very popular in the recent years. 08:57.600 --> 09:00.600 I'm sorry I have to talk about Omar Chi. 09:00.600 --> 09:03.600 That's so if you haven't heard about it, 09:03.600 --> 09:08.600 that's a very opinionated arch Linux been with Hyperland. 09:08.600 --> 09:11.600 It's made by DHH. 09:11.600 --> 09:13.600 It got quite a lot of traction, 09:13.600 --> 09:21.600 surprising a lot from the typical Mac user that develops their Kubernetes app and runs it in AWS. 09:21.600 --> 09:26.600 But one thing that's interesting, it all runs on GitHub. 09:26.600 --> 09:30.600 They meet on Discord, they collaborate all over there. 09:30.600 --> 09:32.600 And if you look on their GitHub page, 09:32.600 --> 09:35.600 and you look at the language distributions what they use, 09:35.600 --> 09:37.600 it's mostly shell. 09:37.600 --> 09:39.600 So it's mostly shell scripts. 09:39.600 --> 09:42.600 I'm not saying we should replace everything with shell scripts. 09:42.600 --> 09:47.600 And Omar Chi is just, it's just lay at on top of Arch Linux. 09:47.600 --> 09:51.600 So it's not replacing for this distribution. 09:51.600 --> 09:55.600 There's also another great example that's the universal blue product. 09:55.600 --> 09:57.600 The universal blue project. 09:57.600 --> 10:02.600 So they have a very nice quote that they put on the web page. 10:02.600 --> 10:04.600 That describes the whole project. 10:04.600 --> 10:10.600 The universal blue is a tool that allows Cloud infrastructure people to use their skills to help the Linux desktop. 10:10.600 --> 10:13.600 Which, in my opinion, is a genius idea, 10:13.600 --> 10:19.600 because you saw all the new developers trickling into the Clouds into the Cloud ecosystem. 10:19.600 --> 10:21.600 And there's a lot of interest going there. 10:21.600 --> 10:27.600 And they have very few touching points to get into a distributing 10:27.600 --> 10:30.600 and universal blue tries to make that happen. 10:30.600 --> 10:32.600 And how did they do that? 10:32.600 --> 10:34.600 Essentially using boot C. 10:34.600 --> 10:37.600 So boot C for those who haven't heard, 10:37.600 --> 10:44.600 that's a project kind of adjacent to Podman and comes from the Red Hat side. 10:44.600 --> 10:50.600 And it's essentially a way how you can deploy a container image that's been built 10:50.600 --> 10:53.600 on your bare metal OS. 10:53.600 --> 10:58.600 I mean, yes, it is kind of the wrong format for the job. 10:58.600 --> 11:04.600 I do agree with that, but the damn thing is extremely successful. 11:04.600 --> 11:09.600 And for completeness, they, everything is on GitHub. 11:09.600 --> 11:12.600 The CIS on GitHub actions. 11:12.600 --> 11:16.600 They talk on Discord, Discord, but as I said, 11:16.600 --> 11:22.600 they've been very successful of recruiting new contributors, 11:22.600 --> 11:26.600 because every new developer knows how to write a Docker file. 11:26.600 --> 11:28.600 Every single one of them knows that. 11:28.600 --> 11:31.600 And that's just a huge enabler. 11:31.600 --> 11:36.600 Yes, what falls out of it is terrible to deploy on their metal. 11:36.600 --> 11:40.600 I think no one from the boot C team would disagree, 11:40.600 --> 11:45.600 but you just get, you just enable so many poor people to contribute. 11:45.600 --> 11:49.600 So take away what do developers like? 11:49.600 --> 11:50.600 They like GitHub. 11:50.600 --> 11:53.600 I don't think we should switch to GitHub. 11:53.600 --> 11:55.600 I think that's a terrible idea. 11:55.600 --> 11:56.600 They like this score. 11:56.600 --> 12:00.600 Most distros are already there because matrix bridges are cool. 12:00.600 --> 12:04.600 They like opinionated distributions. 12:04.600 --> 12:10.600 Yeah, I think many, there's many opinionated spins of open source of Fedora. 12:10.600 --> 12:14.600 I think there's also variations of BB and Ubuntu, 12:14.600 --> 12:17.600 but I'm not that familiar with that side of the world, 12:17.600 --> 12:20.600 but I think we have some in that regard. 12:20.600 --> 12:24.600 But they like to use their tooling, 12:24.600 --> 12:27.600 and that's where we are lacking. 12:27.600 --> 12:30.600 And so I would like to raise something with you, 12:30.600 --> 12:36.600 and that's can we embrace container-based tooling more? 12:36.600 --> 12:40.600 Maybe not because it's the best tool for the job, 12:40.600 --> 12:45.600 but it's because it's the tool that will help us attract the next generation. 12:45.600 --> 12:48.600 Because otherwise it's going to be the same guys in 20 years, 12:48.600 --> 12:50.600 and eventually we're going to start retiring, 12:50.600 --> 12:53.600 and I don't want that to happen. 12:53.600 --> 12:57.600 So let's take a look at the base of the distribution. 12:57.600 --> 13:01.600 So far we only look at spins that are built on top of all our packages, 13:01.600 --> 13:05.600 but what's really the building block, that's the package itself. 13:05.600 --> 13:08.600 So I come from the RPM side of the world, 13:08.600 --> 13:12.600 and we built RPM packages from spec files. 13:12.600 --> 13:18.600 I threw in one of the packages that I happened to co-maintain, 13:18.600 --> 13:21.600 and essentially it's countdown, so it's not so long, 13:21.600 --> 13:27.600 but essentially a package you have some metadata that tells you bits about your package. 13:27.600 --> 13:30.600 You can add licenses, sources, 13:30.600 --> 13:34.600 define built dependencies, more metadata, 13:34.600 --> 13:36.600 and then you go into the actual building. 13:36.600 --> 13:40.600 So this is RPM everything that starts with a percentage sign as a macro, 13:40.600 --> 13:45.600 that does things kind of either variable or a conditional, 13:45.600 --> 13:50.600 or it could be a shell script or it could be a section. 13:50.600 --> 13:54.600 So let's ignore the exact details for now, 13:54.600 --> 13:57.600 but this one would essentially first you unpack the package, 13:57.600 --> 14:00.600 and you actually build it, 14:00.600 --> 14:05.600 and you should test it if you can, you should, but sometimes you don't. 14:05.600 --> 14:10.600 And you install the whole thing into some destination, 14:10.600 --> 14:12.600 and at some point you have the final package, 14:12.600 --> 14:15.600 you define what goes into the package, 14:15.600 --> 14:18.600 and then my most unfavorite part is the change log, 14:18.600 --> 14:23.600 which fedora fortunately now automated to just take from git. 14:23.600 --> 14:27.600 And honestly, this looks all pretty arcane, 14:27.600 --> 14:32.600 but let's take a leap of faith. 14:32.600 --> 14:35.600 Is it really much different to this? 14:35.600 --> 14:39.600 Where you define your build route, 14:39.600 --> 14:41.600 you copy over your sources, 14:41.600 --> 14:44.600 you install your build dependencies, 14:44.600 --> 14:46.600 you build the damn thing, 14:46.600 --> 14:48.600 you install it somewhere, 14:48.600 --> 14:50.600 and you create another stage, 14:50.600 --> 14:53.600 where you from which you assemble the RPM, 14:53.600 --> 14:55.600 you add some metadata into that, 14:55.600 --> 14:59.600 and then you copy over your binaries. 14:59.600 --> 15:02.600 I think it's kind of similar, 15:02.600 --> 15:04.600 and essentially at the end of this, 15:04.600 --> 15:09.600 you would have a container image with a base layer, 15:09.600 --> 15:11.600 that is your distro, 15:11.600 --> 15:14.600 and the layer above is your package, 15:14.600 --> 15:16.600 and then you just have to take this layer, 15:16.600 --> 15:18.600 and convert it into an RPM. 15:18.600 --> 15:20.600 And because I know how you really love 15:20.600 --> 15:22.600 just theoretical stuff, 15:22.600 --> 15:24.600 I tried it, 15:24.600 --> 15:25.600 I made a tool, 15:25.600 --> 15:27.600 I gave it a terrible name called Rosie, 15:27.600 --> 15:29.600 it's very hacky, 15:29.600 --> 15:31.600 but it kind of works, 15:31.600 --> 15:33.600 and it essentially does exactly that. 15:33.600 --> 15:36.600 So it builds RPMs from these stalker files. 15:36.600 --> 15:39.600 And you just have to shift concepts a little bit. 15:39.600 --> 15:42.600 You convert sections become stages in a stalker file. 15:42.600 --> 15:45.600 Your file section essentially becomes copying files 15:46.600 --> 15:50.600 from your boot stage into the final stage. 15:50.600 --> 15:52.600 Macros. 15:52.600 --> 15:54.600 I'll come to them later. 15:54.600 --> 15:56.600 You have work around, 15:56.600 --> 16:00.600 but I think we could also rethink things here. 16:00.600 --> 16:03.600 The preamble where you redefine all the metadata 16:03.600 --> 16:07.600 that becomes unfortunately also a config file, 16:07.600 --> 16:10.600 because some things you just can't put into labels. 16:11.600 --> 16:13.600 Fuse RPMs scriptlets for those of you 16:13.600 --> 16:14.600 don't know them, 16:14.600 --> 16:15.600 consider yourself fortunate. 16:15.600 --> 16:17.600 We have to put them in another file. 16:17.600 --> 16:20.600 But I think what's also a very nice thing is 16:20.600 --> 16:23.600 currently every distro has some kind of isolation 16:23.600 --> 16:26.600 to build their RPMs, 16:26.600 --> 16:29.600 and for that we can just use container tooling, 16:29.600 --> 16:32.600 because it can already do isolation. 16:32.600 --> 16:34.600 Okay, 16:34.600 --> 16:36.600 bigger issues. 16:36.600 --> 16:39.600 RPMs has automatic dependency, 16:40.600 --> 16:41.600 dependency generation, 16:41.600 --> 16:43.600 so if you build something, 16:43.600 --> 16:46.600 and it needs a shared library or something else, 16:46.600 --> 16:48.600 RPMs will figure out for yourself, 16:48.600 --> 16:50.600 and you don't want to lose that, 16:50.600 --> 16:54.600 because that would be a horrible, horrible regression losing it. 16:54.600 --> 16:56.600 But it's possible, 16:56.600 --> 16:58.600 because RPMs have some tools for that. 16:58.600 --> 17:00.600 Reproducible builds. 17:00.600 --> 17:02.600 About that one, 17:02.600 --> 17:05.600 I hope setting source state epoch will be enough, 17:05.600 --> 17:07.600 but I haven't tested it yet. 17:08.600 --> 17:11.600 Debug info is kind of, 17:11.600 --> 17:13.600 I think that should be possible, 17:13.600 --> 17:16.600 but that one I didn't get to, 17:16.600 --> 17:18.600 so unfortunately, 17:18.600 --> 17:20.600 unfortunately wasn't sick enough long, 17:20.600 --> 17:22.600 over Christmas, 17:22.600 --> 17:25.600 so I didn't get to work on this long enough. 17:25.600 --> 17:27.600 I haven't looked into change logs, 17:27.600 --> 17:29.600 because I hope we can just get rid of them, 17:29.600 --> 17:30.600 because I hate them, 17:30.600 --> 17:33.600 and I don't think they provide a lot of value. 17:33.600 --> 17:36.600 Macros and filest, 17:36.600 --> 17:39.600 well, let's see if we get to them actually. 17:39.600 --> 17:41.600 So how does this really work? 17:41.600 --> 17:45.600 I try to make a pretty graph that kind of explains this. 17:45.600 --> 17:49.600 So at initially you throw in your Docker file, 17:49.600 --> 17:52.600 you launch the first build stage, 17:52.600 --> 17:54.600 which I just called Build requires, 17:54.600 --> 17:56.600 where you copy in the sources, 17:56.600 --> 17:57.600 you install dependencies, 17:57.600 --> 18:00.600 and that one runs with network access, 18:00.600 --> 18:04.600 and then you would go into the actual build stage, 18:04.600 --> 18:08.600 which is really just another stage in a Docker file, 18:08.600 --> 18:10.600 and that one runs without network isolation, 18:10.600 --> 18:12.600 there you build your package, 18:12.600 --> 18:14.600 you create a new container image, 18:14.600 --> 18:19.600 and then you run the install stage, 18:19.600 --> 18:24.600 where you just copy files from the build into the final image, 18:24.600 --> 18:28.600 and that one you base again on your distro build route. 18:28.600 --> 18:30.600 Then as a last step, 18:30.600 --> 18:32.600 Rosy really does the heavy lifting, 18:32.600 --> 18:36.600 and that's assembling from this stage, 18:36.600 --> 18:38.600 it assembles the RPM. 18:38.600 --> 18:40.600 It runs, so fortunately, 18:40.600 --> 18:43.600 RPM has a binary called RPM Deps, 18:43.600 --> 18:46.600 which runs all these dependency generators. 18:46.600 --> 18:48.600 It's no longer being used for that, 18:48.600 --> 18:49.600 but it still works, 18:49.600 --> 18:51.600 and you can parse its output, 18:51.600 --> 18:53.600 generate the dependencies from that, 18:53.600 --> 18:56.600 and then there's also a YAMO config file, 18:56.600 --> 19:00.600 I know some people hate YAMO, but cloud people like YAMO, 19:00.600 --> 19:08.600 so that is used to really assemble the full RPM. 19:08.600 --> 19:12.600 Yeah, and that's, it kind of works, 19:12.600 --> 19:15.600 not yet completely, but it kind of works. 19:15.600 --> 19:18.600 A few things about macros, 19:18.600 --> 19:21.600 since I know that I'm running relatively short on time, 19:21.600 --> 19:24.600 let's just breeze through this a little bit, 19:24.600 --> 19:27.600 so the RPM macro language is, 19:27.600 --> 19:30.600 it's M4 and CPP inspired, 19:30.600 --> 19:32.600 and to make matters worse, 19:32.600 --> 19:35.600 it also has a lower interpreter, 19:35.600 --> 19:38.600 and it supports shell expansion and security-wise, 19:38.600 --> 19:41.600 on a developer machine, it's actually very, very horrible. 19:41.600 --> 19:43.600 But it's, 19:43.600 --> 19:45.600 there's main usage, 19:45.600 --> 19:48.600 like you can use it just for variables, 19:48.600 --> 19:51.600 you can use shell variables for that. 19:51.600 --> 19:54.600 The shell has conditionals too. 19:54.600 --> 19:57.600 It supports something like functions. 19:57.600 --> 20:00.600 That could be replaced by shell scripts, 20:00.600 --> 20:03.600 the sections, as I said, these become stages. 20:03.600 --> 20:07.600 The real big problem is new fancy RPM features, 20:07.600 --> 20:11.600 like declarative builds and spec parts. 20:11.600 --> 20:14.600 That one, 20:14.600 --> 20:18.600 so honestly, I don't think we will get rid of RPM or that we should, 20:18.600 --> 20:21.600 but maybe we can, 20:21.600 --> 20:25.600 maybe we can just use parts of this to make, 20:25.600 --> 20:28.600 to make the developer workflow nicer. 20:28.600 --> 20:32.600 And the second part is file lists, 20:32.600 --> 20:34.600 and that's, 20:34.600 --> 20:35.600 so I must confess, 20:35.600 --> 20:36.600 I don't know how, for instance, 20:36.600 --> 20:38.600 RH or DB and do this, 20:38.600 --> 20:40.600 but in RPM it's conventional, 20:40.600 --> 20:41.600 at the end of the package, 20:41.600 --> 20:43.600 you declare what you put in there, 20:43.600 --> 20:44.600 and if you copy something, 20:44.600 --> 20:46.600 and if you put something into the build route, 20:46.600 --> 20:47.600 that's not in this list, 20:47.600 --> 20:49.600 it barfs at you. 20:49.600 --> 20:51.600 If you do it from a Docker file, 20:51.600 --> 20:52.600 you do explicit copies, 20:52.600 --> 20:53.600 so it's kind of, 20:53.600 --> 20:56.600 so you have to be explicit about it as well. 20:56.600 --> 20:59.600 The problem is really these additional, 20:59.600 --> 21:02.600 these additional macros in front of that, 21:02.600 --> 21:03.600 like config and config, 21:03.600 --> 21:05.600 no replace for that. 21:05.600 --> 21:07.600 I think to a certain extent, 21:07.600 --> 21:09.600 we could go by convention, 21:09.600 --> 21:11.600 so that if you put something at sea, 21:11.600 --> 21:13.600 it's most likely a config file. 21:14.600 --> 21:16.600 And if that doesn't work, 21:16.600 --> 21:18.600 then probably, 21:18.600 --> 21:20.600 then maybe use labels or something, 21:20.600 --> 21:21.600 but this part, 21:21.600 --> 21:23.600 I haven't yet solved. 21:23.600 --> 21:25.600 So, and since this, 21:25.600 --> 21:27.600 since I'm running short on time, 21:27.600 --> 21:29.600 and this is actually more of a 21:29.600 --> 21:31.600 45 minute talk, 21:31.600 --> 21:35.600 I'm going to do one to skip a few, 21:35.600 --> 21:38.600 and go to the call to action, 21:38.600 --> 21:41.600 and I don't want you to take the pitchforks 21:41.600 --> 21:42.600 and tell me that I'm full of shit, 21:42.600 --> 21:44.600 and that this is a terrible idea. 21:44.600 --> 21:46.600 I want you to take this as an inspiration 21:46.600 --> 21:48.600 and as an example, 21:48.600 --> 21:50.600 how we can rethink our tooling. 21:50.600 --> 21:51.600 What we can change, 21:51.600 --> 21:53.600 to get in new people, 21:53.600 --> 21:56.600 and to ensure that we don't die out, 21:56.600 --> 21:59.600 because I would really not like that to happen. 21:59.600 --> 22:01.600 And if you want to take a look, 22:01.600 --> 22:02.600 there's a link to RoC, 22:02.600 --> 22:04.600 there's a link to the slides, 22:04.600 --> 22:07.600 and I think we might have time for a question or two, 22:07.600 --> 22:09.600 so thanks a lot for your attention. 22:09.600 --> 22:22.600 Yeah. 22:22.600 --> 22:25.600 Fantastic talking very much. 22:25.600 --> 22:29.600 And how do you think we can make this decision 22:29.600 --> 22:30.600 effectively? 22:30.600 --> 22:32.600 Because we, 22:32.600 --> 22:34.600 we think so much for a tool, right? 22:34.600 --> 22:36.600 You took us a lot of them for a lot of years 22:36.600 --> 22:37.600 to build the current, 22:37.600 --> 22:38.600 and it's only a slide. 22:38.600 --> 22:41.600 It's very complex, very sophisticated, 22:41.600 --> 22:44.600 and we're able to take this for something that is simpler, 22:44.600 --> 22:46.600 and I'm always the right tool for you, 22:46.600 --> 22:49.600 but it's widely available in slide, 22:49.600 --> 22:51.600 and one of the businessmen. 22:51.600 --> 22:53.600 So how do we make this decision? 22:53.600 --> 22:54.600 So for the stream, 22:54.600 --> 22:57.600 the question is essentially how do we transition 22:57.600 --> 23:00.600 from the current tooling to new tooling. 23:00.600 --> 23:02.600 I think with this, 23:02.600 --> 23:05.600 it's actually it could kind of coexist. 23:05.600 --> 23:08.600 So that's of course a maintenance burden, 23:08.600 --> 23:14.600 but so RoC doesn't work without RPM. 23:14.600 --> 23:17.600 So it's not really a full replacement, 23:17.600 --> 23:19.600 and I don't think that we can make a full replacement 23:19.600 --> 23:22.600 in one go, that's not realistic. 23:22.600 --> 23:25.600 So this would be just a step. 23:25.600 --> 23:28.600 So I think we have to do things step by step, 23:28.600 --> 23:31.600 because if you take a giant leap, 23:31.600 --> 23:34.600 and re, and throw everything under the bus, 23:34.600 --> 23:38.600 then I think 90% of the people in this room I just can say, 23:38.600 --> 23:39.600 I'm out. 23:39.600 --> 23:40.600 See ya. 23:40.600 --> 23:41.600 This is crap.