Tech Over Tea - The Future Of Linux Core Utils Is Rust | Sylvestre Ledru

Episode Date: August 28, 2026

Today we have the developer of the Rust Coreutils Uutils on the show to talk about the state of the project, how we got to where we are and where things are going in to the future.==========Support Th...e Channel==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson==========Guest Links==========Github: https://github.com/uutils/coreutilsWebsite: https://uutils.org/==========Support The Show==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson=========Video Platforms==========🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg=========Audio Release=========🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw==🎵 Anchor: https://anchor.fm/tech-over-tea==========Social Media==========🎤 Discord:https://discord.gg/PkMRVn9🐦 Twitter: https://twitter.com/TechOverTeaShow📷 Instagram: https://www.instagram.com/techovertea/🌐 Mastodon:https://mastodon.social/web/accounts/1093345==========Credits==========🎨 Channel Art:All my art has was created by Supercozmanhttps://twitter.com/Supercozmanhttps://www.instagram.com/supercozman_draws/DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.

Transcript
Discussion (0)
Starting point is 00:00:00 Good morning, good day, and good evening. I'm as always your host, Brodie Robertson. And today, we have, I guess, do you call yourself the lead maintainer? What do you call your position in the project? It's a good question. It's a lead of your utilities in general or the benevolent dictator for life. How it is called in other project? So yeah, we have the BDFL, the lead maintainer.
Starting point is 00:00:30 whatever term you happen to pick of this day of the UUTils project. I feel like a lot of people probably have heard of the project, but how about you give a brief introduction of yourself, who you are, and sort of what the project is, and we can go from there. Sure. My name is Sylveth. I've been working at Mozia for 12 years, and it is important because Mozia is a company that created rest.
Starting point is 00:00:55 And I used to share an office with one of the lead, of rest and we have been discussing over lunch for years about rest and when COVID happened, I was like, oh yeah, it's a good opportunity to learn rest. So I started looking at project. You know, I'm not a student anymore as you can see on my face and I don't want to do a project that is going to disappear. So before that I worked on Kling for Debian, so using the Kling compiler instead of GCC. And I found Korytiles and I was always interesting to learn how it works. And I saw that it was full of assembly. And of course, it's not, it's C.
Starting point is 00:01:33 So I found a project that was abandoned, and then we started it. So first we worked on the core utilities, but now we are trying to implement all the core tools of Linux. Right, that's an important distinction. A lot of people consider UUTILs as just a core UTILs re-implementation. But at this point, I just hovered over the project section on the website, and there's a lot of things on the list now. And some of these are, like, Find U-TILs is obviously a collection
Starting point is 00:02:04 of a bunch of other U-TILs. At this point, how many things would you say are included in this re-implementation? Well, I think we have 10 or 15 projects. Of course, the main one is for Scoroteers because we are not shipping on Ubuntu,
Starting point is 00:02:21 Microsoft is now proposing it for Windows, so it's the most mature project. But, uh, Microsoft contributed grep, the implementation of grep. They contributed some patches to find. So many of those projects are now mature and us to be used in production. Some others are not at all, for example. The re-implementation of Oaks, I don't recommend you start using it.
Starting point is 00:02:42 So it really depends, but we are playing the long game here. It's not something. There is no rush. We don't have any time frame. We have plenty of contributors. So it will take the time that it needs. I'm from the deviant community. We like to ship stuff when it's. It is really.
Starting point is 00:02:58 Right, right. It's the same here. That's how many projects it was. Do you know how many actual individual tools that breaks down into? So Currie Tools is like 70, 75, something like that. Find is 6, 5 or 6. So for example, for fine, you have XR, you have locate and update DB. You have obviously fine.
Starting point is 00:03:24 For Shadow, which is a group. group and user management is probably 15 tools. All can prep are only one, for example. Said is also only one. So it depends. But we have been trying to avoid duplication of code. So in CoreTales, we have a common crate. So a library in the rest ecosystems called UUKR
Starting point is 00:03:47 and UUQA and use where we share some of the common coding. So for example, passing some output of some common for so we are trying to avoid duplication of code. Right, right. Things like input parsing and stuff like that. Like that would be fairly standard across all of the different tools. Yeah, open file in the safe way, those kind of things. Right, right.
Starting point is 00:04:10 Okay. So, I guess, how did all of this get started? You said you learned Rust during COVID, and did you just jump right into doing this, or was there something else you did? and did you ever expect this to get the sort of attention it's gotten? When I worked on we compiling Debian using Kling, I quickly realized that a lot of people were excited by that kind of project for competition.
Starting point is 00:04:41 So when you look at Klang and the history of Klan, you can GCC. Now GCC is much better than it was before Klan. So I think competition is always good. And you can see that also in the new Coriteers re-implementation. When you look at the number of commit and the activity, you can see that the project in the Gnu Coritius, we started because of the work. Like competition is always valuable with LC and professional, like it is in those two examples. So it's always great to have competition. But I was surprised by the number of contributions.
Starting point is 00:05:13 Like, for example, the latest release that we have done, we had 75 contributors and 15 new contributor. Now in total, we have 800 contributors just to. contributor just to the various core deals. And when you have Mark Shuttleworth or the CEO of Microsoft presenting your side project on stage at the Microsoft conference, yeah, I was not expecting that really. Yeah, it's funny to see the interest of companies and individual and hackers. Yeah, it's very happy to see the success of that project. Around how long into the project did you start seeing, obviously, you would have gotten
Starting point is 00:05:52 some of that like developer interest early on. I'm sure, you know, especially back then, there was a lot of, especially a lot of hype around Russ, sort of, it'd been around for a while, but it had now started to like really get developer attention. It was starting to get to a point where people could actually make a career doing Russ. So there's definitely a lot more excitement around the language at that point. But when did you start seeing that more, I guess, adoption kind of interest? Well, it took me basically a year to be able to boot a devian and to install most of the packages.
Starting point is 00:06:28 Right. To make sure that all the blocking bug were fixed. So what I've done, I had two goals at the point, three goals at the beginning of your utilities. The first one is you need to start devian, but with system D, most of the things are not bash anymore. So you are not testing the script too much. The second goal was to install the first four, or 100 most popular packages in Devian. Those ones have a bunch of postscripts,
Starting point is 00:06:55 so they are leveraging a lot of courteels. And last but not least was to build Firefox because it's my job and I'm part of the build team at Medea. I'm a director, but I'm managing the build team. So I know that we are using a lot, some of those tools. So that was really those three goals. And every time I was finding a blocking bug, I was going to fix it.
Starting point is 00:07:15 And after a year, I wrote a blog post and the popularity of the projects Cairo team. Do you recall the name of that? Where can I find that post? It was in 2011, I think. It was one year. Oh yeah. I'm talking with someone from Australia, so you know everything about lockdown and being isolated from the rest of the planet. So it was during that time, it was during COVID. I think it was in, where was it? It was in 2021 or 2022. I will share the link with you. Yeah, if you can find it. Yeah, it's March, I will.
Starting point is 00:07:56 It was March 9. Okay, March, March 9. Search engine, find something, you know, I'm not going to find it right. It's not, it's not, it's not super fun. I just wanted to show it if we could immediately get it up. But if it's, if it's, uh, be hard to find. I think, uh, Forenix, Michael wrote an article right after. Ah, okay, okay, yeah, yeah.
Starting point is 00:08:28 Um, yeah, I'd probably be able to find it if I'd look for it then. Util's 2021. Uh, okay, now it's funny. So I love search engines, but I look up 2021 and it's like 0.0.21 release. Like, no, that's not actually what I search. for. Doesn't matter. We'll move on for that. So that blog post in 2021, that's where the project sort of first started getting its initial bit of attention. Actually, I literally just found the Frontex post. Okay, here we go. Thank you. So, I went, I found the link and the post is
Starting point is 00:09:11 not loading on your blog. That's great. Okay, whatever. Not important. We're moving past that. Rasted too much time in this blog post already. So, where do things go from there? Because obviously, like, the big thing that people talk about now was obviously the adoption in Ubuntu. But what happened between the blog post and that point? And when... I don't actually remember when the Ubuntu thing happened.
Starting point is 00:09:42 So when I published the blog pod, I had plenty of contribution. If you look at the number of commit, you can clearly see the blog post. Then I did a presentation at first time also. I had plenty of people excited by that project. So those things really kicked off the popularity of the project. I think Ubuntu, they reached out to me like a year ago. So it took three years to be in Ubuntu. But many people have been running it in production for years.
Starting point is 00:10:10 I'd like also to mention that, you know, the Snap, the company, they are making glasses, connected glasses. They contributed a bunch of changes because they used that in their classes. And I purchased also the Linux version for embedded devices like cars, for example, they use also our implementation for years. So we had early right from the start. Because for them, for example, they can control what it is going to code. So if you use CP, for example, you know as a company building car or classes,
Starting point is 00:10:48 you know that you are going to use CP with those arguments, with SIM link or hardling, so you can control the user of those command, unlike Canonical or Microsoft, where the user are going to do some crazy shit all day long, so they can find some weird bugs. So the level of expectation is clearly not the same. Okay, I actually had no idea about that. So this adoption in the more general... more general purpose operating systems, that's a far more recent thing.
Starting point is 00:11:20 Yeah, mainstream is started only one year ago. People have been contributing, well, people have been packaging U-Utills, core-utils for a long time. You can find NICS version or Ark and so on for a very long time. But as you know, it's hard to have telemetry, so you don't know if you have five user or 5,000 or 10,000.
Starting point is 00:11:44 So it's always hard. So when you have people telling you we are shipping with your software, with our glasses, on our glasses, you know that it is more popular, and you know that you have actual user. And you can see with bug report, some of the bug report now are obviously written by LLM, but a few years ago you need user to give you BUD report. No, the computer science like a year ago,
Starting point is 00:12:08 when it was completely different without LLM, it was at that time. So you can see the popularity by looking at the data number of bug reports that you get and the quality of the report or the PR and so. And yeah, you have a good problem. Like when I opening good first bug, it's very common that it gets fixed within a few hours. Okay, wow. But fascinating. I guess a little bit of a, I kind of want to follow one of those threads.
Starting point is 00:12:35 You did mention LLM bug reports. I'm just kind of curious. I don't know if you ever, like, given a take on sort of like your stance on like, all of this AI stuff going on, whether you have a different stance when it comes to like AI bug reports versus code generation. I'm just kind of curious with a project that obviously has the level of option it has and is trying to be at the scale it's at. Like, what is your general stance here? Well, in my day work, I have been involved in Firefox security in the
Starting point is 00:13:14 security scope and the security space for for quite a while and I have seen what anthropic mythos can do Firefox was the first one to test it and yeah and I have seen that hundred now probably a thousand bug report security fixes for security issue and then fixes identified by those tools so you cannot say in what is it today in August 26, that they are useless. They find a lot of things. If you do the same analysis on Chrome, on Windows,
Starting point is 00:13:53 you will see that they're also fixing thousands of bugs. So they are extremely valuable for fixing security issue. And I also see that with the worst correct deal. We have security issue. Most of them are timing attacks or incorrect behavior in some cases where, for example, backup file or those kind of things. So we do have security issues. Some of them are not a big deal.
Starting point is 00:14:16 Some other, like, timing attacks on system with multiple users can be more painful. But I can see that often the reporters are going to use an LLM. So you can see it by the quality of the bug report, or you can see it because it is closed at the end. And you can really see the quality of those bug report and how deep they go in the analysis in terms of security. When do you think... Obviously, it sounds like you think these tools are useful for bug reports.
Starting point is 00:14:47 Maybe, I don't know, we'll get to code generation a bit. At what point do you think it got to that point? Because obviously the very early tools, you know, we can all remember what things were like five or so years ago. They weren't exactly that great. Maybe you could get you a recipe or something. But when do you think we got to a point where for security analysis, these tools actually became useful? At least from your experience. Well, with Firefox and Modia in general, we are the state of the art.
Starting point is 00:15:17 So it might be working. I can really see things changing. It started basically in February, March this year, where we saw a clear jump in terms of quality in the book report. First, the quality of the model, but also the quality of what we call the harness. So I think the industry, the specialists, they have learned that a model is one thing, but you need also to have a way to verify that the bug is actually happening for real. Like you don't want to the AI slope, you don't want that.
Starting point is 00:15:49 So you are trying to design your test case so that you can verify it. So for example, for the risk core deals, you want to verify that if you are doing a timing attack, if you run it, if you run the script 2,000 times, you are going to trigger it once or twice a security issue. And you can do that now with AI because you have, you write a good hardness or you write a docker plus three or five scripts that are going to execute that. So I think the industry is learning, but also the model I've been improving a lot over the last few. Okay, that does seem to align with what I'm hearing from, like coming out of the Linux kernel, right? I don't know if you've seen the recent posts about the network stack, the network team are just like flooded with reports right now.
Starting point is 00:16:34 And yeah, that makes sense. what about when it comes to as a development tool development system the sort of code generation side of things? So there's definitely usage and it's useful on the bug report side but what about the other side of things? So I can see a lot of
Starting point is 00:16:55 PR coming. You know, I will share a Twitch that some people know there is a dash, the regular dash that you get with your keyboard and there is a special dash with UTF8 and this one is hard to dive and it's very easy to spot those ones so I can see in the code
Starting point is 00:17:12 or you can see also the 10 lines comment on top of a function it's rare that a human is writing long comments or you can see the comment zero well with the exception of someone who is just coming out of university because I don't know
Starting point is 00:17:28 maybe maybe education was different for you but I remember when I went through my self-engineer education they really hammered in like really detailed comments. It faded away very quickly after that because it's annoying to do. Well, yeah, yeah. Maybe sometimes I'm being harsh with people saying, right, shorter comment, because sometimes it's not valuable to have a comment explaining everything. Right, right. But I don't see, like, six months ago, I could tell that it was crappy code,
Starting point is 00:17:59 but now the model are so good that the quality of the code is very good. So I don't pay attention if it is written by a human or not anymore. What I really care about is, is it maintainable? Like, can I understand the code? Is it passing the test suite? Is it improving the code coverage? And is it keeping the same level of performances? And does it has any potential security issue?
Starting point is 00:18:26 And now I can see that the model I've been improving the tools like codex or code code code or the other I've been also improving a lot. And so I don't mind myself because what I want is I want to be able to maintain the code. Like sometimes you have contributors who are going to stay in the community for a few years and they write two or 300 patches. Some of them are just there to have their name in the kit log, which is completely fine. But I have in that case to think about the fact that I'm going to be the maintainer of the code and the PR that they just pushed.
Starting point is 00:19:00 And if the code is fine, I'm fine. Also, there is one thing that is great with Rust. Well, several things that are great with Rust, but Rust and LLM. First, the ecosystem with Rust is pretty new. So we don't have all the legacy that the LLM have been trained on. And in general, the code quality of Rust code is very good, and we have plenty of tools. So when you, and of course, the type system of Rust helps a lot. So if you compile, you are almost certain that it's going to work and run the way you want to.
Starting point is 00:19:34 If you do that with CNC plus, good luck. And the LLM for that are really good because they can test. And if you write some rules like a pre-commit hooks, you run the coding styles, the linters and so on. You can be confident that the code is going to do what you think is going to do. Right. So there's one more thing I wanted to get to if we'll move past the LLM topic.
Starting point is 00:20:03 Obviously, you're a very established engineer. You've been doing this for quite a while, as we can tell from the, there's some greys in your bid. You've been doing this. Yeah, yeah, yeah. Not 25 anymore. So the point of getting out here is,
Starting point is 00:20:17 a concern a lot of people have is with more younger developers adopting the use of these tools, you might see a lot of, of the sort of knowledge and skills that were standard with prior generations of programmers. The sort of counter-argument against that is there was a time when people would examine the assembly output of their compilers. That's not something anyone really does anymore. The compilers would are a point where they are good enough where nobody even questions the output. So do you
Starting point is 00:20:52 have any concerns there with like up-and-coming junior developers? I have colleagues who are still watching the assembly code, but they are really the exception because they worked in a very specific area of the code base. I think nobody knows, to be honest, the answer to the question. As you nicely mentioned, I'm not that young anymore, and I have a lot of scars. I wasted days and weeks of my life on weird bugs and sometimes miscompilation. So I built my expertise with all the pain and suffering. And I feel that we are skipping that step for the new generation.
Starting point is 00:21:31 And the question that we are all asking ourselves in leadership in big tech is how do we do that right now? Like, how do we mentor newcomers? You cannot, if everybody is using Argentic and an Argentic works well, you cannot say to the intern or to the junior engineer, you cannot use that tool that you have been using at university. and all your peers are using. So you have to, you need to make sure that they get access to that tool.
Starting point is 00:22:01 But as you said, you want also the quality of the code to be there and the maintenance. So mentorship is a key, is really the key here. It is just finding the right balance between learning and being productive and doing good quality work and so on. It's difficult. I'm really wondering how, as an industry,
Starting point is 00:22:20 we are going to be able to train new generation. Yeah, programming is one of those ones where the, it's obviously a knowledge field where the output of the LLM is also the output of what you as a person would do, right? It's different to a field like music where if you're using, obviously it can generate music, but an LLM cannot play a guitar. it can teach you how to play a guitar it can generate guitar itself but that's kind of a different thing like that live performance kind of aspect
Starting point is 00:23:02 is separate it's a thing in the physical world where programming doesn't really have it to that same extent so there's yeah I don't know where it's going to go either I think anyone who's saying they know where it's going to go you should probably be concerned of those
Starting point is 00:23:17 I think just having concerns is a reasonable thing where we are right now, especially with how, like, I would say be just as worried as someone who has zero concerns whatsoever because, like, you know, these tools are at a point now where they are good,
Starting point is 00:23:38 and we don't really know what that ceiling is. Yeah. Yeah. I think it's also important to teach the best practices in terms of code engineering, like having a bug tracker, having pull request, having a good CI with a good test coverage and those things. Those things are still valuable even in imagine in a full LLM world. You still need those things because at the end you are producing the software that is going to be used by human. They might also be used by LM, but Corrie Thiel most of the time is used by human.
Starting point is 00:24:18 So you need to have someone who can understand what is this supposed to do for the users. Same for a web browser and email client and so on. So you still need at the end to have an outcome and you need to make sure that you understand it and you can maintain it long term. Like as I was saying at the beginning, we are playing the long game here. We are doing software that are going to live for 10, 20 years, 30 years. And those things need to be understood and maintainable. and it's part of the difficulty. And the skills that we have built over the years
Starting point is 00:24:52 are very valuable in that space. What is good good, what is maintenance, and CI coverage performances. So near the start, you mentioned that your initial goals with the project was basically get a functional Debian. Yep. What were you using as sort of your, I guess, guide towards that? just test suite completion?
Starting point is 00:25:19 Was it, like, when you started with a blank project, like, where did you start from there? So, so some people already contributed, it was abandoned, but I started a project that was started. So I already had the skeleton before.
Starting point is 00:25:34 Okay, what state was that in when you started it? Well, some program we're working okay, some other were not implemented, some option were not implemented. So everything related to localization and internationalization were not there. Performance were terrible.
Starting point is 00:25:54 Low CI, poor code coverage. And so, you know, the projects that people drop in the middle of the... Right, it's probably a project someone else picked up to loan rust and then just bring up to something else. Yeah, yeah, exactly. And I've been in touch with the initial maintainer. We have been exchanging email for the last few years. So the first thing that I have done with others was really new Corritils.
Starting point is 00:26:22 So you have to take a step back, we have plenty of Corrilles implementation. The first one, and you can see the source code, and it was written in assembly, is the one from Dennis and Kerrigan in 71, where Zerode Unix was on board. But you can see, you can find the assembly code online easily. I can share it with you later if you want. But if you see how it worked, it was working the same way. So for example, C.HO or C.HBod, it was using the same argument back then, so more than 50 years ago. So those tools have been around for a long time. You have other implementation.
Starting point is 00:27:04 So you have one on Apple, which is a BST one. You had some weird things by Microsoft. And then there is a gold standard of Gnu. And because everybody uses that one on Linux, I started by saying, okay, we want to have a 100% compatibility with them. And we are going to take our Roscode and run it against our test rate. So that was really the goal. And then discussing with some friends that Madias, it told me you should do a graph of that. So it has been what the press has been using every time we do a new release, they take that graph because it shows the evolution of our time of the competitive.
Starting point is 00:27:42 Some of the changes were one line, well, more because you want to write test, but some of the changes were only one space in one file, and some other required months of work and refactor and so on. So it has been really the way we started, so having a full drop-in compatibility. And then we have been noticing that for many programs we have 100% compatibility with a test suite. test suite but we have a report sometimes of people telling us in that program in which you have 100% compatibility you have that different behavior so every time those things happen we forward the upstream so we write test and we are going to send them to uh to the new project and they are quickly accepted because it's improve everyone's uh project so it is what we have been doing a lot lately So I would assume it's a mix of undocumented assumptions and bugs that people rely on.
Starting point is 00:28:44 Yeah. And sometimes it is, if you use that argument, that argument with that kind of file, you are going to get that different behavior. So you have so many options with CP, LS, LN and so on. Everything related also to internalization. So as soon as you start touching with in French with action, with accent, German, with umlaut, and then you start moving to Arabic, Japanese, Chinese. You need to be able to handle those.
Starting point is 00:29:13 And then you have also all the incorrect encoding. Sometimes you have, Gnu is going to behave in a weird way with some incorrect encoding. So you have to replicate that because you never know what can happen in the wild. So you do that. You have also a funny way to do it. It's one of the things that I learned at Maze
Starting point is 00:29:34 working with fusing is that you can do differential fusing. So fuzzing basically a technique where you send correct and incorrect data into a program. So that can be a function, but that can be also a program. And the differential fuzzing is that you generate plenty of weird commands and you verify with a new implementation and then how else that they give the same STD out, STDR and the same error code. And then if you have a different behavior, you can trigger an error and break XOCI because the fuzzling is going to find differences.
Starting point is 00:30:08 So one good example is the date command is a nightmare on the system because you have so many options, you have so many times on it's really impossible to get it right. It takes forever. So we have been doing differential fuzzing and sometimes the fuzzle is going to find some things that you didn't know and like, oh yeah, it's a military time zone in that place, in that moment. You know, in some countries, they have 30 minutes time zone also, those kind of things. Yeah, I know. That's why. So, you have to manage all those things and it's so difficult sometimes. I assume, I don't know if you are aware. There is an unofficial, is it 40, give me a second,
Starting point is 00:30:55 Australia, 45 minute time, yeah, there is an, yeah, UTC plus 845. Where is it in Australia? That's along a highway in Western Australia. It sits between Western Australia and South Australia, and they just split the difference. Weak consensus. So yeah, you have to manage all those things, and then you have also some weird calendar.
Starting point is 00:31:29 So I think Newer only recently started supporting it, like in Iran and Thailand. they have different calendar so they don't, they are using two kind of calendar with different year start. So you cannot make the assumptions on a Linux, everybody's in 2026. So you have to manage those things. Fortunately, the rest ecosystem is very major so you can rely on some crates who have been doing already the work before. Actually, on the topic of crates, like what is what is sort of the policy with crate usage
Starting point is 00:32:04 in core utils there's obviously going to be a lot of crates to do a lot of different things out there do you just adopt crates like whenever are you very particular about them like what is how do you sort of handle that
Starting point is 00:32:21 good question so now the ecosystem when we started that work the exe exploit didn't exist. So I always been concerned about supply chain attack, but it was not very concrete now that it is. I'm way more careful than I was before. I always been careful because you don't want to depend on a crate
Starting point is 00:32:48 that is not going to be maintained. And you want to depend on a crate that as users. If you are the only user of a crate, it sucks. So you really don't want that. So when someone is opening a PR and say, I want to add this crate, we are going to monitor the impact on term of file size. We are going to look if it is well-maintained upstream. So basically how many, how often PR are stuck? How is it to get a PR merge upstream?
Starting point is 00:33:21 Who is a maintainer? Is a maintainer anonymous or not? And then we are also going to look at the number of people who are relying on a crate. So for example, if you know that Chrome or Firefox, it depends on it, you can be sure that if some maintainer disappears, you will have some other people who are going to take care of that. If you are the only one who rely on a crate and the person disappears, it's not a great experience.
Starting point is 00:33:50 So you have to, you need to contact the maintainer and say, can you give it to me? That happened a few times. So for example, we maintain a crate called NUM prime. That is going to evaluate if a number is a prime number or not and give you, I don't know how to say it in English, but just the number to read that prime number, the multiplication, and that stuff was maintained. So I reached out to the maintainer, and the maintainer was like, oh yeah, fine, you can get it. And so you can reach out to the maintainer to get it at the end, but it's very work.
Starting point is 00:34:25 You became the maintainer or something that you didn't want to maintain, but you are doing the right thing for the community. And again, if you rest, it's quite easy to maintain as a maintainer because of the quality of the compiler. You can trust the code that you get. But sometimes it can be hard. You have to be careful. So what are the kinds of things that you look at when you're considering crates? Like what sort of problems are worth getting a crate for versus just doing it yourself? Well, I'm lazy.
Starting point is 00:35:06 So if there is a good crate, I'm going to use it. I think it is one of the main difference that we have with the CNC plus ecosystem world. It's very easy to add a new crate. Like if you have done any cross-platform development with CNC++, I like to have to people like think about you want to do a program that depend on an XML parser and so you can do it on Linux like you are going to use C-MEC, you know okay one Mac is going to probably work fine. And then if you want to support it to a Windows or Android or free BSD and now it is a time where you start crying because you don't know how to declare the dependency against the C and C++
Starting point is 00:35:47 library where are the their file what you need to do, use and so on. Sometimes you don't even have a C compiler by default. So how do you do those things? And it's terribly hard in CNC plus plus to do that. So that's why you see a lot of programs shipping all the third particle directly inside. For us with the Rust ecosystem, it's very easy to add a new dependency and to and to make it cross-platform. Like writing cross-platform code with Rust is super easy.
Starting point is 00:36:18 It is one of the strengths. So if there is a crate and it's well maintained, I'm going to use. use it. Like we don't want to duplicate the work. And in many cases, we, we work with upstream to fix some bugs or provide PRs and so on. So it's benefits to everyone. Let's get into the topic of Russ then. Obviously, you know, we could just end the conversation that you're involved with Mozilla, therefore Rust. But like, what was it about Rust that made it seem like the language to go with for something like this. For the West Coritals?
Starting point is 00:36:56 Yeah. Well, it's, so to take a step back, but they are created Rust because C++, because of two main reason. C++ is very hard to write it safe. Like, it's very easy to write security issue in Rust, in a C++. It's very easy when you look at all the bugs that Mito's and the new LLM has been finding. Most of the time it's a memory management issue. Like one of my former colleague Alex Gennor wrote some paper about the number of security issues that you see in C&C++. It's 60% of the time it's memory management.
Starting point is 00:37:34 Seeing that the language should protect you from by default, like with OCaml or Ada, or those modern languages. So that was the first reason why Moodya created it. And the second one was parallelism, writing parallel code in CNC++. It's extremely difficult. You really have people who are going to say, I can do it. And at Mozia, we decided that we cannot do it. And maybe we are not good at us. But we decided that we prefer to create a new language to make that better and safer for all those two reasons.
Starting point is 00:38:11 Well, you can definitely deal it, but you contribute to the 60%. Yeah, yeah, yeah, exactly. Especially when you get into barrels. You're really going to start having some fun problems there. Exactly. And so when you think about first at the end, it is going to write binary with LLVM, like to go into more technical aspect. So when you compile some OS code, it's going to call LLVM,
Starting point is 00:38:37 and it's going to generate assembly code with that one. And if you look at Kling, the compilers that everybody uses to build browser, now, Kling is doing the same. It's going through LLVM and chenering binary. So when you think about it, you're like, yeah, it's the same. You're taking some input and you're generating thing assembly. And I knew from my time at Mozilla and the work that I'm doing over there, that Rost is very good in terms of performances and security.
Starting point is 00:39:06 For example, when we looked at the stats that we have with the fuzzing, we know that running a further on ROS code is not going to find that many security. And like if we write a further and it's targeting some C&C++ code, it's going to find plenty of security issue in general. So of course, the Gnu Coritiels have been extremely safe. Like there is no security issue in general with reverse Coritiels. But really what I found interesting is thinking about our industry and where it is moving. moving and I feel that you were talking earlier about the new generation. And the new generations, they don't want to write C.
Starting point is 00:39:51 Just like me when I started my career, I didn't want to write cobalt or Fortran. I wanted to write C++ or Java because it was a high or Python. Java seemed like the language around about that time. Yeah, exactly. So I wanted to learn those languages and I'm sure that the new generations, they don't want to learn C's. They don't want to be paid to write C and C++. They want to be paid to write Swift, Cotlin, or Rust. And you have to think about where we want to leave the state of computer science to the next generation.
Starting point is 00:40:28 And I feel that C and C++ is going to be less and less relevant for the future because of those reasons. It's way more exciting to write Rust than it is to write C, in my opinion. I'm sure that some people will disagree and that's fine. But it's very funny to write worse because you really have a good understanding of what it is doing. And the code is very nice to write and so on. When I write C and I've been writing C my whole career, I still write C plus person time to time at work. I know that I don't understand everything that the compiler is going to do. And I need my colleagues to tell me you fucked up here.
Starting point is 00:41:07 You are going to introduce security issue if you do those things. of course we have tools that we have developed or used to to analyze those mistakes but with Russ you don't make those mistakes when you write God
Starting point is 00:41:22 so I think this is why I think Russ is very relevant for the future like it allows a new generation to contribute to those projects I think that's one of these things I've been talking about I feel like I was I was sounding the alarm
Starting point is 00:41:39 for this before anyone was even remotely discussing the idea that whenever I said I've been talking about the idea that like C is going to slowly fade out with the next generation of programmers I reckon I was talking about like six years ago before anybody else even want to acknowledge the problem
Starting point is 00:41:55 and I've been proven right now right like every obviously C is still a massive language but what I have been seeing is a lot of people who are really established C developers C++ developers who end up doing something in Rust,
Starting point is 00:42:15 they realize how dumb it was to have to worry about a lot of the problems that they were worrying about. Hang out with anyone in the Linux kernel graphics stack and they'll tell you how much C, sorry, how much Rust is massively improving what they're doing and they don't, what, they, they, they, They maintain the sea because it's there, but they don't want to start any new drivers in sea.
Starting point is 00:42:46 Everything new. It makes sense. Rust is just going to be what they do. When you are a reviewer, you don't have to worry about memory safety. When you see a reverse code, you have to worry about certain classes of problems, but you don't have to think about garbage collection,
Starting point is 00:43:04 manual, rave counting, and all the things that are managed by the language for you. for parallelism you have. The language is protecting you. So it makes me easier. So let's get into some of the sort of, okay, let me get into some of the arguments that people make against Russ,
Starting point is 00:43:24 and I just want to, I just want to like, I'm going to play devil's advocate here just to have some fun. So let's talk about unsafe. Because I feel like there's a lot of complete misunderstanding of what unsafe in Rust actually means. They hear people talk about memory,
Starting point is 00:43:43 safety, rust is safe, and they see big blocks of code in unsafe, and that just blows up their brain. So unsafe basically means that it's a way to tell to the compiler. I know what I'm doing. Don't worry about it. It doesn't mean that it is unsafe. It is just to tell to the compiler. I might be doing some weird shit. Don't be surprised if I do that. So for example, we have a lot of unsafe. when we need to call system libraries. So let's say that you want to change the permission on a file with SEDinux. You are going to do an unsafe, either in your code if you directly call the library or through the crates that you are relying on.
Starting point is 00:44:29 So you are just those operations are unsafe. Another example is, you know, the environment variables that you have. Like, we have plenty of those. The function to set an environment variable is consider as unsafe in rest. So you need to put the unsafe because if it is running in a parallel way, it might do some weird mismatch or you don't know exactly what's going to be the value. So it's just a way to tell to the compiler it is, it might be unsafe.
Starting point is 00:45:01 So let us let me under that the way I want. But at the counter argument, like you know you if you look at all the LLM bug report that the industry had had. If it was really a source of security issue, you would know by then because all the LLM would have found it. Like Meadows would have found tons of bugs related to unsafe. And it doesn't be the case. Like when I looked at all the security report
Starting point is 00:45:29 that MAD has been publishing on Firefox, and I'm sure that the Chrome Steam is going to share the same thing. There is nothing in Rust related to unsafe. Like you might have some timing attack, like you create. file and then you use it and in the middle you can do some weird action but nothing is related to unsafe like I haven't seen any maybe I'm wrong and if someone sees that please send me an email I'm going to be curious but unsafe doesn't doesn't mean unsafe in in the way we are
Starting point is 00:46:00 talking about memory safety in that case it basically just means let me do something stupid I know what I'm doing don't worry about it it's not even stupid this let me know let me some things that I know that I have to do it this way. Right. Like, yeah, as I said, linking with a library, a native library, sometimes you have to do that to do some CISC call and in that case it is unsafe. And if people are into security, like just try to run it on the best core deal on the end of and save part of the code.
Starting point is 00:46:33 I don't think you are going to find anything, but I would be curious if someone can challenge me on that one. I guess it also acts as a sort of self-documenting block, right? Like, if you in C, the entire code base is effectively considered unsafe, whereas
Starting point is 00:46:52 like, you don't, if you're just looking at the code, you don't know without examining what the code's actually doing, if you're handling things in a memory safe way, but with Rust, if you did something wrong, you know it is in
Starting point is 00:47:08 that block. Yeah. Well, uh, we we try not to do memory management ourselves. In some cases, you have to do it for when you need to send some data to some Windows API. So you need to do it, whether it's memory safety or timing stuff, whatever it may be. Yeah. Well, it's the timing attack, they are not, they have not been in a unsafe. They were more core issue in the rest of STL.
Starting point is 00:47:34 Because, you know, it's a... So compiler cannot guess that you are going to create a file and then change the the permission so you cannot do that at the at the rest level so you need domain expertise to know that there is a potential timing attack and it was it's quite far the biggest class of security issues that we had in service courteals so and those things you cannot they have not been in unsafe part of the cut they have been in the rest itself and but it's just the nature of the work that we are doing working with files it's dumb but it is what we are doing you have that in every language it's not specific to rest thing that often comes up is people will often say if the code compiles you know the code is obviously not perfect
Starting point is 00:48:24 but you know the code is good you know the code is correct I'm not sure the word is there but you'll often hear this and I think a lot of people sort of misinterpret this idea as if the code compiles there are no problems what
Starting point is 00:48:42 whatsoever. So what are the kinds of problems that Rust doesn't try to solve? Well, the way I phrase it is logic error. Like, Russ cannot know, the language cannot know if you are making a logic error. It's going to help you with programming mistakes, like memory management and variables copying and, you know, the power checker and all those weird thing in Rust. that makes REST unique. So they are going to prevent you from making those mistakes. But then when you are implementing the core of your business,
Starting point is 00:49:19 so what you want to do actually with your software, Ross cannot know about those things. So if you are making, let's say, if you are working on an accounting software, and instead of a multiplication, you use a plus an addition, the compiler cannot know those things. And it is you as a human that are supposed to know
Starting point is 00:49:38 what you want to do as a software developer. So those things cannot be prevented by any language. Maybe now with LLM, the LLM is going to tell you here. You meant to do an addition and not a multiplication, but we are not there yet. And the language obviously cannot know what you are trying to achieve. So it's really that. It's the logic errors.
Starting point is 00:49:59 And another big one that comes up is regarding platform support of Rust. Now, I know this is a dumb one. one. Anyone who looked at the platform support list of Russ knows this is a dumb one. I just, I had to bring it up though. So, obviously, when we
Starting point is 00:50:22 look at Rust, it does not support every single platform that C has supported over the years. But is there anywhere where there are gaps that really matter for Rust? Yeah.
Starting point is 00:50:38 Yeah, good question. I think it is one of the advantage of having the Linus kernel using Rust is that if people really care about porting Rust to some weird architecture, they are going to do it. I didn't say that, yeah. It has not been an issue for me because my initial target was Linux Distro, and they are also supporting LLVM. Basically, if you want to port Rust to an architecture,
Starting point is 00:51:05 you basically need to port LLVM to that target. And you can also do cross-compulation. So sometimes you don't even need to compile on the actual hardware. You can do cross-compilation. So that works very well with Rust. It's super easy to do cross-compulation with Rust. So it is one of the advantage of the language also. You cannot run it, but you can compile it.
Starting point is 00:51:27 And at least you did a good trunk of the work by doing that. But yeah, I think the ecosystem is moving towards us. So it's just a matter of time for all. for some architecture to be supported. I don't think it's a big deal now. It was one of the first counter-argument when the Russ community tried to get Rustes into the Linux kernel. I do remember this.
Starting point is 00:51:50 What about my real architecture and that the last CPU that has been produced for that architecture was 10 years ago, but I still wanted it. And that might be a problem, but it's part of the evolution in our industry. I do get it. I do get it right because the kernel does have a lot of weird platforms
Starting point is 00:52:11 I remember I think it was like maybe a month or two or three months ago Afronix put out an article about new drivers for the Sega Dreamcast being up like I firstly who's
Starting point is 00:52:25 I didn't even know you could do Sega Dreamcast Linux apparently you can who's working on that like somebody has just decided that's going to be the thing that they spend their time on and that's cool That's cool. I love there's somebody out there doing that,
Starting point is 00:52:40 but what are you doing with your time? Yeah, yeah, yeah. Well, I'm re-implementing a core piece of Linux with my time that works well already, so I'm not going to blame that individual. Sure, sure. Well, I guess that's another sort of one. Moving away from Russ, like sort of directly related to this project, why bother, right?
Starting point is 00:53:05 because we have this version of core utilities that's been around for a long time. It seems to be solid enough. Yeah. Yeah, it works away. Yeah, I love it. Like, why bother? Well, the first and correction for you is, why not? It's a...
Starting point is 00:53:23 Yeah. First, I wanted to learn how the operating system works. Like, I know a bit about compiler and web browser, and I didn't know much about that part of it. of the operating system. It's a great way to understand all the weird stuff that you can do with those tools. And there are plenty of weird behavior that comes back to the beginning of computer science or the modern Unix, well, modern, 72 world.
Starting point is 00:53:53 So it is quite interesting in that space. It's also fun to be working with plenty of smart people, plenty of people coming from all the planet. But as we were discussing earlier, one of the key thing is a contribution. Like you you want people to be able to maintain it and to publish new version after I'm gone and it's probably going to be better in RAS than it is we see. It's easier. And last but not least, performances, like you can really see performance improvement by rewriting that in Rust because you are going to rely on some creates that have been easily optimistic
Starting point is 00:54:35 optimize or some creates that are or some rest feature from the language that are directly connected to the last feature of the Linux kernel, like Splice, for example, some very advanced way to do some file operation or to do some math or SAC optimization for some algorithms. So you can realize that. So you can get some much better performances for many, many of the Corriteers program. We are much faster than the new implementation, not because they are doing a poor job. It's because it's easier for us because we can leverage the ecosystem. It's easier. We don't have to maintain some weird operating system with only a few megabyte of RAM. So we can, we are, we have some advantage of them.
Starting point is 00:55:31 Okay. Okay. I was trying to think of a way to segue off of that. I guess we can jump back a little bit to test suites. So where, like, okay, so right now the test suite pass rate is, according to the graph, 93.2%. Yep. I assume at this point most of the low-hanging fruit stuff is kind of dealt with. What is, like, what sort of.
Starting point is 00:56:06 makes up that last couple of percent and I guess also there are these points on the graph where the fail rate did go back up a little bit I guess if you could explain what those were as well sure yeah that'd be cool so the why is a fail rate increase is because upstream uh push some new test or sometimes I push test myself that I know that are going to fail with my implementation So in some cases, in many cases, I'm going to add a new test to the new test suite. While I know that my implementation is not working properly, and sometimes I fix the issue before the publish a new release. Sometimes I don't fix them.
Starting point is 00:56:52 So that's why it's just, how do you say, a self-inflicted wound that I do. But at the end, I don't care. I know what is the state. And what is remaining, some people might say it's the art stuff. It's not the art stuff, it's just a boring stuff that we make. One of the example is what should be the behavior of a command that shows something to the terminal when the output is full. So basically if you do a LS and you redirect to a deaf full, we are often panic. Panic is a nice word in rest.
Starting point is 00:57:31 It is just that the program is going to fail by design and nothing that can happen in that case. And because it's happening at the STL, so the standard library level of rust. And it's a good thing, but we have to handle that case properly and to generate the same error, and we have to fix those things. There are also some weird stuff with some encoding or some corner cases with some program with cut when you use the specific UTI to local, the sort is not going to be exactly the same. So it is those kind of things that are still happening. There are also some stuff like if you limit the number of file open on the system
Starting point is 00:58:14 and you run the command, what should be the behavior of the command? Like should it fail gracefully or should it explode? And it is those kind of things that never really happens in real life, but the new core details have tests. And there is also another one that I love is date dash dash dash dash debug where the date command is going to tell you why it decided that it is a time and date where you are because you know in australia you have some weird time zone and uh and sometimes the the tool is going to tell you it's because you are in australia and you are in daylight saving
Starting point is 00:58:53 plus something and there is a take debug option and we have not implemented that one because it's it's it's super fun to do and it's not very valuable. So there are cases where we didn't do the work to implement it or some stuff that we don't care like all the operating system. So to me we are to me it's going to be like feature complete at 95 something like that. We still have a five or six test that I'd like to fix. So rest I don't really care and when I see people on various website thing that we need to reach 100% I disagree because there are really color cases that really happens in real life. I think as a sort of similar comparison point to that, GPU drivers and Vulcan conformance, a lot of drivers
Starting point is 00:59:49 that people rely on don't necessarily have a hundred percent conformance because there are some real weird, I don't remember how many tests Vulcan has it, some stupid number. Or like browser web test conformance. None of the browsers have 100% conformance. Literally not a single one of them. Because there are some real weird cases out there over 30 years of weird browser development we've had.
Starting point is 01:00:21 Yeah. But the main case, not even just the main cases, but the path of like 99.99% of usage, I guess. Yeah. It's good enough. Yeah. And at the end,
Starting point is 01:00:38 like you know, when canonical ships the first version of Ubuntu with our implementation, I must have been that I was scared. And because I were like, what did I break? And we had, we had regression for sure. Some of them,
Starting point is 01:00:53 a few of them, a couple were quite painful. But at the end, you can see that we didn't have that many bug report because of different behavior. Like, I was expecting some more insert online, and I only had a few. So that's pretty good. That shows that it works for the vast majority of the case.
Starting point is 01:01:16 Like, we are not fully compatible, but we are still way more compatible than the Apple implementation or the BSD one. So we are still very close to the gold standard. And we are also making the gold standard better. Look, I haven't mentioned Microsoft. To be fair, BSD isn't trying to make a new compliance. I'll let them off the hook. They're trying, they're happy with POSIX compliance.
Starting point is 01:01:42 Yeah. Yeah. So, I actually don't want to get into the Ubuntu adoption because that has led to some, I guess, how would I, what's the best way to put it? Some very public problems, right? like there will be a like some issue that gets noted like I think there was an issue with like building the ISO a while back
Starting point is 01:02:07 some other things and this becomes like a very like big topic so I guess how do you sort of navigate that and I guess also were those just like one-off things because a lot of people sort of then assume they they sort of expand from that point that there is this problem therefore project in its entirety
Starting point is 01:02:34 is broken like this is doomed to fail kind of thing well i i have been a devian developer for almost 20 years and i always care about ubuntu because ubuntu is derivative of debian so all my work in debian is going to reach ubuntu so i do care a lot about that that is true right and uh so what i've I have seen, I think, three cases of big bugs. One was an unentered in upgrade. So when you want to upgrade your system, we had a bug in date. We had the one that you mentioned. Of course it's date.
Starting point is 01:03:10 The one you mentioned was a problem. Yeah, of course. And the last one was we were generating a slightly different output. And one of the Linux kernels test was passing it, we're trying to pass the output. and because we were giving a slightly different output, the test didn't work. So that really is the three cases that I have seen that were quite popular in turn negative, but many people are running.
Starting point is 01:03:41 It's probably the most popular Linux distro in the world, and if it was failing everywhere, you would have known by now. So I'm sure that some cis admin are reverting to GNU, and that's great. But at the end, if you want to test the story, software, at some point you have to go live and to detect those things. And those regression have been identified. And in many cases, maybe not for those three, but in many cases, the regression that we have identified are now part of the Gnu test suite.
Starting point is 01:04:13 So it's also benefiting from the Gondotest suite. And at the end, canonical also when they made that change, it was also for the same argument that we need to think about contribution and new generation. And using C for the next 10 year might work, but we have to think long term and versus is clearly the way for all the base component of our operating system to go. I believe they're also experimenting with pseudo-RS as well, I believe. And that's for, pseudo has notoriously had a lot of privilege escalation problems, and notably because of memory issues in the majority of cases.
Starting point is 01:04:57 and like obviously Sudo is a great project but like I can see why they would want to sort of a try different approach to this especially for something like that and for how important Ubuntu is and how many businesses rely on it. Yeah. Well Sudo is a good project. I think they took a different approach
Starting point is 01:05:21 than the one that we are taking with the utility is that they are more aggressive in this. enabling features from upstream, but it's the same approach at the end. You want to give the same interface to the user as much as possible with a safer way. I think the fact that there hasn't been more problems with the U-U-U-Tils is sort of a testament, right? If it's being there since 25.10, it's not blown up in people's faces. people haven't just abandoned Ubuntu because it's like unusable now. Like it's for the most part, besides those very notable cases,
Starting point is 01:06:06 it seems to have been a mostly transparent adoption. Yeah. Yeah. I have plenty of colleagues that are using Ubuntu at Madia and they would have contacted me if it was really terrible. I have some friends who can tell me one of the ones. I'm doing things wrong and they didn't tell me. So I'm good.
Starting point is 01:06:28 I'm giving that. So let's talk about the license. I assume that when you took over the project, it was already MIT licensed. Yeah. So I guess with it being MIT licensed, you could have reliccences it to something else if you wanted to. Yeah.
Starting point is 01:06:48 Why did you stick with MIT? And I guess to extend upon that, there's also concerns people have around moving a core part of Linux assuming other distros adopt it who knows what happens there moving it away from a GPL license project to something that is permissively licensed
Starting point is 01:07:11 with the MIT license well first I don't care that much about licenses so that's why I didn't I didn't change it because what I want is that stuff to be open source. Like I want people to be able to access to the source code and then modify it. I don't mind when people are taking it to do proprietary stuff. Like it's not, I don't care.
Starting point is 01:07:36 I prefer that people use my software and have fun with that and not using it. So that was one of the first reason. The other one is who cares about the rest of course. Like there is no money to be made in that space. So Microsoft is not going to fork it. And to make money like it's not a selling argument. So it's not something that a company is going to fork and sell it. So and so the size of the communities that we have now is a testament to that. Like there is no point because at the end you want people who are maintaining the code and who can make it leave and it is really where the value is and it's not in the last. So that I do understand why people feel emotional about that. I know that you did a great video about the subject in Devian and how people perceive it and the threat talks for like 20 emails or 100 email about the license of
Starting point is 01:08:35 oh that one yes yes sorry no no no no no no it's not the MIT versus GPL debate yes yes yes yes at the end is uh nobody is going to 40 them to make a proprietary version of that like it's not interesting it's not challenging and uh it's There is no money to be made in that space. It's not a competitive advantage for anyone also. I think the argument definitely could have been made in the 90s, in the early 2000,
Starting point is 01:09:06 when there was definitely was a lot of measurable hostility from companies like Microsoft. Like, we can go back and look at the Halloween documents. Like, everyone knows what Microsoft was like back then, like actively on record wanted to ruin Linux. But I think a lot of companies have realized that there is, I think Google played a big part of this with Chromium, realize there's a lot of value in having the code be open.
Starting point is 01:09:38 Even just for the, like, you look at it in the most, like, boring, like, money-focused way, the fact that you don't have to pay these developers to work on the project for you. Like, I think a lot of, even just that by itself, I think a lot of companies have realized there's value in that. Plus, you get the benefit of some, if something is open, more people are willing to also do security analysis and bug reports and actually, like, generally just improve it. Yeah. Well, you can see that also in the LLVM and the Kling ecosystem. Like, now it was started by Apple.
Starting point is 01:10:22 clang by chris latner back in the day but now everybody uses that and everybody contribute to that project and you can really see that happening with rest also the programming language it's just to be a mozia project now it's a foundation and uh every big tech is contributing to that project for for you till i can see people from canonical or meta or snap or Microsoft contributing to it because it's again as you said it's not a competitive advantage for that them and this is a value of having other company contributing to that, to share the load. And also to have compatibility, I think it's also one of the advantage is if you have those tools shipped on Windows and Canonicals, that makes supporting support to that new platform way easier.
Starting point is 01:11:14 And the same with LLBM and Klang or rest itself. If everybody uses those tools, that makes the port. portability much faster and much easier. Yeah, okay, fair enough. I have rational argument about those things. No, no, I... Not dogmatic. No, I...
Starting point is 01:11:39 You know, every time I... Every time the topic of MIT comes up and this topic especially comes up, you always get the... I'll probably have comments on this mentioning like AAA, and various other things. Like, I get the concern, but I also, I think,
Starting point is 01:11:58 with a case like this, I do sort of align with what you're saying. I don't really think there's. Like, yes, like, Microsoft could make a internal fork and release it and call it as your utiles, like, okay. But, like, why? And also, if they did, why, like, it, like, why, firstly, why would they do it?
Starting point is 01:12:22 Secondly, what reason is there to use it? It's not like, if Microsoft wanted to make a competitor to core utilities, like they could, right? Yeah. Like, they, yeah. Like, that's, I sort of get why you're kind of like very, very lax on this. It's not really super important to you. Yeah.
Starting point is 01:12:46 Well, at the end, if Microsoft wants to for kids, they could, but they would have to put resources on it. and engineers are expensive. At Microsoft, they are very well paid. So, as I said earlier, we had 75 different contributors on the last version of Coritiers. Microsoft would not allocate that many people on it. They would allocate one or two or three percent max.
Starting point is 01:13:10 And what's the point? At the end, they diverge. They would diverge compared to upstream and compatibility problem and so on. So there is no point. Like we, in 2026, we are not in the same world, as you said, that we were 10 years ago. Now, it makes no sense. There is one concern the license does raise, and that is the actual process of doing the implementation. Because the Gnucal users are obviously GPL, is it V3 or later?
Starting point is 01:13:41 3. Yeah, V3. Okay. I'll be it. I'll be sure if it was V3 or later or just V3. there's obviously you can't just like take you couldn't just like take the code
Starting point is 01:13:54 and then just convert it to Rust and then just be good like that's how do you sort of approach this problem like would how do you navigate this issue I only look at
Starting point is 01:14:09 the new C code when I want to fix a bug and if anyone wants to have a look if you look at the C implementation and the rest implementation, they are nothing like, they are very, very different just because of the nature of the programming language. And the fact that the new implementation relies on Gnui,
Starting point is 01:14:30 and that's it, they have a few other dependency, but they are mostly self-contained. And there is also a lot of C code just to do some C stuff, like memory management and those things. So the code is very different. So, but I had the case this morning, someone who clearly took, we used an LLM and clearly asked the LLM to look at this implementation. And it was too similar to the original one.
Starting point is 01:15:02 One of the GNU upstream developer told me that, which had to me, and I closed the PR. And I finally added an agent.md at the root of my repo saying, Don't look to the LLM, don't look at this implementation. Don't use that. So yeah, yeah, it's, we are not going to, to look at their implementation. And also it makes no sense because it's very different. And at the end, you want to replicate the behavior of the program.
Starting point is 01:15:32 So you just have to call the program to see what should be the behavior, like to use a date comment one more time. If you use an environment variable plus argument, you want to look at the output, the implementation doesn't really matter at the end that much. You really want to focus on the output. Okay, fair enough. A lot of what we've talked about is getting it in line with the GNU implementation. However, you've also been sort of discussing the idea of doing things better,
Starting point is 01:16:07 improving upon what was there. you did send me a PR in emails before if you want to sort of get into not just being Ganoe so we have things that Gnu has been refusing to do for years and I think they will change their mind but for example
Starting point is 01:16:26 the dash dash progress option on CP and MV like everybody who touch your unique operating system did the CP of a big directory and you have you have no way with CP itself to know if you did the 5% or 85 and that's a pain. So you have to start a new terminal and then you do a DU to know what has been copied or not.
Starting point is 01:16:48 So we added that option to our implementation. We are very careful when we add what we call extension to our implementation because we know that, especially that now we ship by default on Ubuntu, that we don't want to cause problem to others distrault that are not using our implementation. So we don't want people to rely on our option. The thing that you were referring to is it was an idea by one of the maintainer of our re-implementation of Hoke. And he had the idea of providing better error messages to the user. Because some of the comment can be very cryptic, the error message.
Starting point is 01:17:33 So I stole his idea and I'm like, oh, I'm going to do that with the knowledge of it. So the PR that I sent to you is for CHMOD. So the command to change the file permission. So the format is cryptic and sometimes you get some dumb error messages. So now we want to improve the life of the user who are using the command. Another one that I want to do next is test. So the command that you use all the time when you are doing BAScript. It's a pain to write.
Starting point is 01:18:06 Like for example, if you want to compare a string, or number, you are using a different way to do those things. And that even for experience developer, it can be a pain because you never remember which one you are supposed to use. So I want to give proper messages. Like, for example, if you want to compare the number with another number, and if you use equal equal, for example, you say, no, it's not the way to do it. It's a dash EQ. And you want to pinpoint, you want to point exactly to the exact character. to the user of that.
Starting point is 01:18:41 It is the kind of thing that we can do to improve. And one of the tricks that I've been using is only if it's from a terminal. Like if you are in a script, you are still going to get the ugly old error message. But if you are running it in a terminal, you get the fancy 2026 error message. And if you look at the PR, it's leveraging a crate that already exists. I don't know how to pronounce it, but it's called. are you at needy or something like that. And it's providing everything for you.
Starting point is 01:19:17 So you don't have to be implemented yourself. You already have a crate. The Diff is probably a few hundred, it's 100 line. It's way less without the test. But that makes it very easy to understand and to maintain. So it's one of the advantage of leveraging the rust ecosystem. I don't think it is nice to be able to like sort of I guess
Starting point is 01:19:39 pushed the other project to get better, right? I don't know if you've already thought about it like this, but it's, I would hope it to become a relationship like exists between the NeoVim and the VIM project, where for a long time,
Starting point is 01:19:56 VIM was very, very conservative on merging anything. But NeoVim brought in things like parallel plug-in parallel plug-in support, they brought in like
Starting point is 01:20:13 Lua configuration, like all of these other, obviously these are like way bigger changes than you probably do for something like this, but there's still improvements that you can make that sort of improve the experience without necessarily fundamentally changing
Starting point is 01:20:29 the core of what it means to be using it. These are things that improve a user's experience. with it, but don't necessarily change fundamental workflows. Yeah, the issue is that you don't want to break the script that people have been doing, so that you have to be careful. But there's some time we forward bugs to upstream also, to the new project, so that they can fix some bugs. And I know that they have been looking at our bug tracker, so sometimes they see what we, what we do, and all the kind of bugs that we have and the right test also.
Starting point is 01:21:06 So we, yeah, and I know that we have been discussing, like, there is all those weird checksum command on Linux, and we have been collaborating on those things. I didn't follow that closely, but I have some of my peer and new utilities who have been collaborating with upstream to deprecate some of the BHA together. So it is for the best. And I have plenty of email exchange with upstream, with Zugnu project, and they are very nice, and we collaborate. You don't like the MIT license, but that's a different subject. So, as this project continues on, what is your ultimate goal? Like, I don't know, five years,
Starting point is 01:21:53 assuming you're still working on it 10 years from now, whether you'd even want to work it 10 years from now. What is, like, do you have some, like, far-out goal you want to reach with it? One of my goal, I've been talking with some friends about it, is to make sure that it is not my project. If I die tomorrow, someone else can maintain it and the project doesn't die with me. So this is one of the things that I've been trying, like the governance of the project. I started some conversation with some friends that what would be the best host and so on. Now in terms of technical level, I could like all the major comment on Linux to be
Starting point is 01:22:36 to be in rest and potentially to be under our umbrella so that we can short code and best practices. So I mentioned Oakset, grab, fine and so on. So having all those tools. So basically having a Linux deviant that can start with most of the thing being written in rest. So it is really my goals and then I can retire because it's still 20 years of work. But it's fun, as we were discussing earlier, like, you can improve the error messages, and it goes a long way to make the life of the new generation easier. I'm, honestly, I'm, I've not really messed around with it outside a little bit of
Starting point is 01:23:26 used Ubuntu in, like, the latest releases. But I, I'm really, I'm happy that somebody is trying to do something different here, right? I think there's definitely a lot of... How would I say it? There is this idea in the Foss world that everybody can fork something, but how dare you go and do something on your own? There's this idea where people don't like...
Starting point is 01:23:54 Some people don't like the idea of not contributing to the main thing. But at the same time, we'll then talk about, like, you could just go fork anything you want, and that's the power of Foss. So, I don't know, I... I'm happy that someone is like addressing these problems that do exist and trying to create a better project. It's not like the GNU implementation is bad per se. It's just there are problems that are sort of natural to the fact that it is a project written in C.
Starting point is 01:24:35 So I'm, I'm, I will be keeping an eye on the project for me. many, many years to come. Who knows where it's going to go? Because obviously, Ubuntu's adopted it now. I don't imagine Ubuntu's got any plans to leave it behind. So if that's the case, I don't know if, I don't know if, like, Fedora would consider experimenting with or anything else would consider experimenting with it.
Starting point is 01:25:01 I think it's... We're in for some interesting times, that's for sure. I'm waiting for your PR for your contribution. I have done a little bit of rust. Maybe I'll do some more rust and we'll find a best, what is it, good first issue, that's it. Yeah, well, I can send you plenty if you want. Plenty of things to improve.
Starting point is 01:25:25 I also like to arrive that it is not my work, it's a lot of people, like a lot of people who are much better developers than myself. What do you say? Texas Village. I do hope that any sort of transition we do have here It goes smoother than some of the previous Linux transitions That have taken place, you know, like System D or Pulse Audio and then pipewire
Starting point is 01:25:50 Now, Wayland, obviously, is another big one Even though most people have adopted all of the latest thing There's been a lot of, there's a lot of turmoil along the way, that's for sure. Yeah, well, I'm sure that's the same. It has been smoother in Wuntu, but I'm sure in Delian is not going to be smooth rider I think with anything like Debian though like Debian's just been
Starting point is 01:26:14 Debian's just been around for so long right it's second wait so which came first Devin or Slackware? Slackware I think Okay second oldest longest long second longest running distro
Starting point is 01:26:30 yeah that's what I'm saying so any sort of change there is going to there's going to be maintainers who've probably been around for almost that entire life so it's always going to be some long discussions that have to be had in any district like that. Well I think
Starting point is 01:26:47 the approach that I'm going to take in Debian is not to say that we are going to replace one by the other but having the two being installable like what they did in Ubuntu being able to switch between one
Starting point is 01:27:03 implementation to the other even if it is a core piece of the software. This is what you can do also with the compiler. For example, it's very easy to use Kling. Even if TCC is the primary compiler, you have ways to very quickly use Kling on your system if you want to.
Starting point is 01:27:20 So you mentioned a little bit about some of the other places, like some of the companies that have adopted your utils. I guess if you can expand upon any of that, like what are some of the places that
Starting point is 01:27:34 people may not even know they were using it where they can already find it that you at least know of well the the snap glasses and i don't know where a purchase is the name of the linux distra that is designed for cars but i don't know who uses it so i cannot answer i don't know i'm sorry i'm sorry it's like it is one of the of the of the cool and frustrating thing with open source is that you don't know who you uses your stuff. Until they decide to contribute something upstream, you don't really have any idea that like, oh, here's this random product that happens to be using this. Yeah.
Starting point is 01:28:17 Yeah, sometimes you see some people working at company X or company Y and you always wonder, oh, what is using it for? Why is that person is contributing? Maybe it is on their free time. Maybe it's for work. You never know. I think we've pretty much covered everything I wanted to cover. by the looks of it.
Starting point is 01:28:37 Actually, one last big thing. Like, what is the... I actually kind of catched it before when we talked about like the ultimate goal, but like, what is the scope of the project? Like, obviously you have the core utils, you have the fine utils, sad, great, all these different things. Is there
Starting point is 01:28:57 like a point where you want to stop? Is the rust going to spread forever? Uh... My initial goal was to focus on the package that was part of the default devian installation, the minimal one. That was that one, my goal. There are things that are going to be difficult to implement, but I don't want to implement system if it is your question. Fair enough.
Starting point is 01:29:23 It's not that fun. But no, those comments that you use in your terminal all day long, those ones, like all great, said, those cool comments. If people want to contribute some new project and start it, be my guess. I'm happy to take more projects under the umbrella of your utilities. It's just if they need to be relevant and they need to have users when there is no point implementing a tool that nobody uses. They need to be really popular and used by on Linux distra for real. So if System D wants to go and re-implement in Rust, you give him a thumbs up.
Starting point is 01:30:04 that you're not getting involved with that. No, it's true. Maybe a patch here and there if you find something you want to fix, but it's not going to be your project. No, not at all. Well, yeah, I think we've pretty much touched on everything. We could obviously keep going, but I think we've pretty much hit on everything I wanted to hit on.
Starting point is 01:30:25 Is there anything that sort of you wanted to get to that we hadn't yet? No, people, I feel free to contribute. We always have a good first bug. Fixing the last compatibility issue would be nice, but also improving the performances, documentation. This suite, it's always welcome. And also, yeah, plenty of good things to do in Oakh, grab and set, while the rest core details are fully compliant,
Starting point is 01:30:58 or almost fully compliant. Those projects, we still have plenty of good first bug and full feature that we could add. So if you want to get involved on like the ground floor, like Ork is a good place to get involved right now. Yeah,
Starting point is 01:31:10 we just started that project. So you have great maintenance also on that project, good first bag, implementation and plenty of corner cases to manage. Yeah, it's a cool project.
Starting point is 01:31:23 So I learned plenty of things. I'm sure there's going to be some problem that happens when a distra decides to adopt it and then it becomes a, that's going to be the news for the week when some core thing breaks because there's some weird case the orc is doing that has not been
Starting point is 01:31:39 implemented yet yeah yeah that will happen or is like some weird performance issue where if you try to do something with two billion lines of code then it breaks in some weird way of course but at the end if you don't have bugs or if you don't have people complaining about your software it's probably that you don't have users at the end so it's always a pleasure like you know when you have people complaining about your software it's like oh that means that i did i did something that people care about even if it is sometimes negative like i are talking about my cool side projects that i did during covid and uh that's still uh that's still interesting and yeah i prefer that than doing a project without any user of course nobody complains if uh if you are
Starting point is 01:32:26 doing a project without any user it's uh it's always exciting to see that what's a look at it i guess Yeah, yeah. Okay. If people want to keep track of the project, if people want to get involved, where can they head to? So, Utel.org, and we are on Mastodont and on Twitter and on Discord. And again, we have plenty of good first bugs. So just go on GitHub and look for good first issues, I think it is called. And we try to add plenty of those.
Starting point is 01:33:07 Many of them are pretty easy to fix. Okay. Oh, yeah, I see. You do have a tag for that. Sweet, yeah, check those ones out. What's a random one we have here? Sort opens too many files. Oh, yeah.
Starting point is 01:33:20 This one is not easy. Okay, that's the first one I clicked. Okay, maybe not that one. No. Now you have someone full. What is this? Sec 1, this is already closed, SEC 1e minus 922337-2-037-2036-8-5-4.
Starting point is 01:33:44 What is, is that a number that should be important? I don't know. It's probably close to the limit. Oh, okay, okay. You know, when you do an overflow or something like that in Rustin can panic. So, you know, it's all those scenarios that you have to match. If you use argument, X, and this one is close to the max size of U-32, what should be the behavior, should you fail. In that case, you look at what Gnu is doing and you repeat it the behavior.
Starting point is 01:34:20 In some cases, we can extend the precision and we can under bigger numbers than them because it's easier for us. You see that kind of thing. So we have plenty of those weird thing. I click that one trying to find like another good first issue the comment under it says this is not a good first issue as it requires internal as a second big decimal
Starting point is 01:34:40 as a second big decimal there are probably good first issues in there I'm just clicking the ones that happen to not be check out the repo anything else or do you mention all the links that people can go to do you mention the website GitHub Discord? I think we are
Starting point is 01:34:58 easy to find online I just take one for you and you're a good first issue Okay Okay Cool So I guess I do my intro and then we'll sign off Cool
Starting point is 01:35:15 Thanks Okay My main channel is Brody Robertson I do Linux videos there six-ish days a week Sometimes I stream as well I've got the gaming channel Brutio and games Right now I'll be playing
Starting point is 01:35:25 Actually maybe I'm done with MetalGa Solid 3 So I might be on the next MetalGersolid game Check it out. Also, Yakuza, like a dragon. And if you're watching the video version, this, you can find the audio version of basically every podcast, every, every podcast platform at Tech Over T. The video is also on Spotify as well.
Starting point is 01:35:44 Audio, everywhere you can find podcasts, you will find it. How do you want to sign us off? What do you want to say? Thanks for your time. That was great. Absolutely pleasure. I think he's a good first book for you. Oh, oh, you just, uh. It was a fun one for you. Okay.
Starting point is 01:36:01 It, where we're going to, there we go. Um, I opened it in the wrong window. Of course it did, but why didn't it do that? Yeah, if you do a printer with a very large negative number, you get a panic. Which is a nice way to forward to... Okay. I'm waiting for your PR. Okay.
Starting point is 01:36:22 Don't forget to write a test, please. We'll see you're sure. Well, I'm going to go to bed. That's a later problem. Well, to more mornings then. Well, that's good. I guess I'm going to stop the recording now. Because we kind of slip past the outro, but I'm not doing another one, so I'm just going to end like that.
Starting point is 01:36:41 Bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.