Submind YouTube summaries
Thumbnail for LF Live Maintainer Session: My Life as a Linux Kernel Developer and Maintainer with Mark Brown

LF Live Maintainer Session: My Life as a Linux Kernel Developer and Maintainer with Mark Brown

Watch on YouTube

Video summary

Mark Brown shares his two-decade journey as a Linux kernel developer and maintainer, tracing his path from Debian development to full-time roles at Wilson Microelectronics, Linaro, and ARM. His career highlights include fixing critical hardware errata for network controllers by uploading internal patches upstream and managing diverse responsibilities such as maintaining the Linux-next integration tree and ensuring self-tests run in embedded environments. He balances these duties by tackling small "bite-sized" tasks during breaks from larger projects while prioritizing responsiveness to community requests, noting that his success stems from employers at Linaro and ARM who explicitly support upstream-focused development despite the stress of deadlines and time constraints. Beyond technical contributions, Brown chairs the organizing committee for the Linux Plumbers Conference (LPC), a role he describes as largely administrative rather than technically demanding. He addresses the growing impact of Artificial Intelligence on kernel development, observing that while Large Language Models generate unpredictable patches that increase review workloads compared to deterministic tools like Coccinelle, AI-based reviewers can help spot issues human maintainers might miss. Regarding Rust's integration into the kernel, he confirms its increasing traction with new graphics drivers written entirely in the language and predicts it may become essential for future display functionality, thereby attracting a fresh wave of low-level developers. For aspiring contributors, Brown advises starting with specific goals or problems to solve rather than aiming immediately for maintainer status, emphasizing that landing a "dream job" is not possible but can be built by progressing from available support roles through consistent contributions. He stresses the importance of understanding code personally before submission and double-checking all changes, cautioning against relying on AI for emails or large features due to trust issues while acknowledging its utility for small tasks like bug finding. Becoming a maintainer requires years of earning trust through stages such as maintaining drivers and submitting subsystem patches, though writing an entire new subsystem from scratch can serve as a shortcut if a niche exists, even though many developers choose not to pursue maintenance roles due to the associated burdens. New entrants are encouraged to prioritize regression bugs over new features and seek entry-level positions in embedded hardware companies where kernel work is part of broader device integration tasks. Brown recommends engaging directly with community members despite slow email response times that can span three to four months from patch submission to release, and suggests utilizing resources like kernelnewbies.org and the LF Live Mentorship Series for guidance. Ultimately, he notes that while more people likely use AI for reviewing patches than generating them, this activity is harder to detect directly compared to automated code generation, highlighting a complex shift in how development workflows are evolving under technological influence.
Read the full video transcript
Like that. >> Thank you, Candace. Uh it's my pleasure to welcome you, Mark, to speak with me about your uh developer experience and maintainer experience and everything else you do. Uh would you like to introduce yourself before we get started? >> Um sure, I guess I can. Uh so um I'm Mark Brown. Uh I've uh been working on Linux for um a couple of decades now. Um So, which is uh terrifying thing, but uh in various capacities. Uh originally, I got involved in Linux uh as a uh Debian developer, um but then at work, I started you working on the upstream kernel um as part of uh developing some embedded products we were working on, um after which I moved to um full-time kernel development at um at Wilson Microelectronics, which was a chip manufacturer, before moving to uh Linaro and now ARM, uh always uh with an upstream focus. >> And embedded also, I think you uh logically, is that good for >> Yeah, yeah, like like uh yeah, so like like I said, the original thing was we were a product that used Linux, an embedded product that used Linux. Uh so, we we needed some changes to some of the upstream drivers. >> Right. And Mark, today's webinar, you can find it on the LF Live Mentorship Series. You'll find the debugging embedded and and also. So, yes, um uh So, what was what what was it like when you first uh started contributing to the kernel in terms of what was your first contribution? Do you remember? I mean, after 20 years, it's hard to remember after so many patches. >> Yeah, I want to say I think it's the only thing I've ever put into the networking stack, so it's um fairly remember, but yeah, it it was there was um uh an erratum for basically a hardware bug for the network controller that we are using on the um the board we had. Fortunately, somebody Harold Welte had already developed a fix for it but he had not up streamed it and it needed a bit of work to get up streamed. So I um grabbed the patches from him and up streamed them. Um yeah, that was and also introduced a work around for a um Actually no, sorry. Harold had developed something to improve performance and then I I I developed an erratum fix for the horrible erratum that the chip had and I up streamed them both. So yeah, actually I can't quite remember this the great length of time. >> Well, half the work is it seems like always getting the code first round of code getting it to work and refine it and then get it to in a place where we can up stream. That's that is the part, right? So up stream >> Yeah. Yeah, yeah and in this case the the other half of the battle was deciding that the hardware was in fact buggy and that it wasn't the driver doing something dumb that we needed to fix. >> Right. Right. We can yeah, sometimes we tend to blame blame something we don't Our first thing is to blame. Okay, maybe software isn't doing something right. >> Yeah. >> Go to hardware and then then firmware and then >> Yeah, it's a lot easier to blame the thing you can control. >> That's true. That's true, absolutely. So um So how do you you you do lots of things. I know you do you have gotten involved in the Linux next working working with the Steven Rothwell and also you have been active in embedded space it to more so than um I see you getting involved in large areas. Like you contribute to Alsa, you contribute to anything that you see something is wrong and you contribute to self-test, and you make sure self-test big thing is you make sure all of the self-tests are running in embedded environment um and all of those things. How do you do all of those things? And how do you manage your time or balance your time in various activities you are involved in? >> Yeah, so that that um that can be tricky. I mean I find for a lot of the things I do like the the self-test for for example, um there's a lot of small um bite-size tasks um that you that are um that don't take too long. And I find um so if I I find those are often good to slot in around bigger development. Uh cuz so sometimes when you're working on a a complicated thing, you need to take a break to um to refresh your refresh your mind, let let the problem percolate a bit. Uh and so picking up one of those um smaller things like looking to make sure that it see if the self-tests are working, trying to work out how to uh fixing them. Uh that that sort of thing is good to um fill in those gaps where you need to take a break. Um you don't necessarily want to uh completely step away. Um and laterally with Linux next, um it there's a very clear priority. With Linux next, it's um something that I have to or somebody has to get done every day. So um it's very it's very easy to um look at what's going with Linux next. Um like in fact it's running on a screen over to to my right there. Um it's very easy. You just look at the look see if it's doing anything. If it's doing anything interesting, then you have to stop and work on it. Um, otherwise get back to something else. Uh, and again that that's the thing that's really easy to slot um, other more smaller tasks around. Uh, cuz I I if I'm if I've got Linux next going, then I don't know when it's going to there's going to be some error that I need to step in and do something about. Um, so having a smaller thing that I don't need to concentrate on for as quite so long uh, and I can just drop easily. Uh, it is really great for getting that done. Um, in a sort of in a timely fashion. Um, the the the other thing I find with prioritization is I always try and think about um, when other people are waiting for me. Mhm. And I try um, so I try to um, um, I try I try to make sure that I always carve out some time in my day to be responsive to people as much as I can. I'm not always terribly successful at it. Uh, but that that's generally the goal is, you know, first thing I do look through my inbox see if there's anything that I really need to look at. Um, take a look at the ongoing reviews that I've got. Um, see if there's anything I need to move forward or can move forward. Uh, and things like that to so to try and make sure that um, um, that that I'm not the blocker for other people as much as I have I can manage to do that. >> Right. But yeah, that is the tricky part, right? With the With a lot of I struggle with that too. I try to um, but um, but yes, with the volume of emails we get, um, that is definitely the tricky part of trying to figure out, okay, somebody is waiting for us. >> Yeah, uh, yeah. Uh, and sometimes those things are you know, sometimes the emails are really hard to respond to and you you it does it's going it's going to take a while, but sometimes they're quick, you know, it's so some of it's about looking at them and dealing with the ones you can deal with quickly quickly. >> Right. So, it looks like you employ a similar strategy as I do. If the some emails takes like 30 min 30 seconds or 1 minute, I just respond. And others that take longer go on a on a different pile, but getting to that pile is something that you have to get to. So, that's uh yes. >> Right. Right. And uh you are right about that though that um um Linux-next it you never know if everything goes smoothly or you have to go uh do something about it. Similar to stable release testing or release testing. Some days stable release testing just goes smoothly and you don't even have to worry about it. On a on occasion it comes sense like, "Okay, something isn't working on my system or some patch is not working." Then you have to go figure that out. Right. >> Yes. Yeah. Yeah. Yes. With Linux-next I felt the first day I took over Linux-next after Stephen retired. Um I actually uh it it runs so smoothly that I actually stopped and spent um more time making sure that this um these scripts had actually worked properly um and they hadn't just uh abort you aborted and given up on me uh then I did then uh I did actually do anything with them. Uh but equally well, there's an interlock in that Stephen put in the Linux-next script scripts that tell that tells you to go to bed if it's after 4:00 a.m. >> Oh, I see. >> So, [laughter] um you know. >> The the natural sleep cycle for Linux-next. That's that's important. >> Yeah. Well, that's actually it worked for me as well, but yes, partly. That was that was Stephen's thing. >> So, for people in the audience that don't know Stephen, Stephen Rothwell, um back when I think 20 some years ago, started Linux-next as the integration tree, uh which is a lifesaver for a lot of us maintainers uh to go find integration merge problems, conflicts, and so on. And then when uh Stephen sends us something wrong with the Linux next, we usually jump on it right away and try to fix it as quickly as possible. So, anything to add about Stephen, uh Mark? Um you worked with him long probably closely. >> Uh yeah, there's Stephen like um doing Linux next uh like he did that he came up with the idea um and he did it for uh mostly single-handed for um I think uh 15 years, something like that. Uh and like do it do it uh especially doing it now every single day, I like I was filling in for him when he was on vacation, but um it's uh now it's other people filling in for me. It it really brings home um how much of an effort uh it is to to manage that. >> Right. And not only that, you also have to Mark, you also have to keep uh track of well, who's the new maintainer coming in and um hey, do you want to add your tree to Linux next? You know, even all of those kinds of things as well to take care >> Yeah, fortunately as you say because as you say it's quite important to a lot of people, uh fortunately that bit of things is usually um somebody el- the first I hear about is somebody else has already prodded somebody to do something. Uh so, you know, various core maintainers will say, "Oh, you need to get this into Linux next before I will start pulling it." for example. >> All right, that's good. Yes, that's good. One last thing for you today. >> Yeah, yeah, exactly. Delegation's always great. >> Right. So, um so, you know, on top of Linux next, um you're the maintainer for several subsystems and then you can you're an active contributor for various things. And um so, the other part of we talked about a lot about how you manage your upstream responsibilities, but how do you manage your responsibilities that come through work? You work for Linaro, Arm, and Wilson Electronics, I think. Yeah, you mentioned that. All of these things, how do you bring that? >> Yeah, so I I I've been very fortunate that for the most part my work has been upstream focused. So um that that makes life a lot easier. So for example, when I run Linux Next, that's something that Arm, my employer, I do as part of my job. It's not something I do on the side. Um so that makes the the balancing easier because it's already factored into the um the project management and so on. Um Uh but but it it it is it is tricky and I I think uh you know, it's been like previously I used to do a lot of onsite support for customers at previous jobs, uh which obviously interferes with the amount of time you've got to um to work on upstream. Um I think the only thing that's worked for me consistently is time boxing and saying, you know, I I've got at least 1 hour or whatever it it is at the time to that I'm going to spend focused on upstream activities. And then the rest of time um I work you know, I work on the the things more employer focused. Uh but you like like I say, I've been very fortunate in that my jobs have always allowed for um allowed for the upstream part. It's not been something I've had to do completely on the side without any support from my work environment. >> That is great. So you you found a way to um bring have a good balance of both that you whatever you are doing for upstream is also benefiting for your your employer and vice versa. So that always makes it easier to it's a great situation to be in Mark sometimes struggle with being able to do that effectively. >> Yep. No, I'm I'm super fortunate most maintainers aren't as lucky as me in that regard. >> So that's great. I mean what that means is that they align for you. Your interest and you're able to find a way to say, "Okay, this is what I'm doing, but this also benefits both your upstream and and employer." And in a lot of activities we do do benefit both. In some cases it's like being able to connect them and say, "Hey, this is how you are benefiting from my activity." >> Yes. >> to to tell your employer the same thing. >> Yes. Yeah, no, definitely. >> Sometimes it's hard to see especially with upstream. It's a very it is hard to say sometimes, you know, the how it's benefiting. >> Yes. Yeah, it can Yes, some areas it's easier like some for example some of the enterprise distros really do want to take in code that isn't upstream already. So that if you're working on their their things it's a bit easier than if you're working on an embedded thing where people just want to get their product out the door and they don't really care about where the code came from. >> Right. Absolutely. Yeah. That is that is that is the reason why I think it's it's great that you're able to do that. So now that is a good segue into managing stress and in terms of what is what is the thing that really stresses you out. We all have different stresses stresses when we talk think about our work day. So any stress factors that and how do you manage them? >> Um I mean I think the I I think the main thing is usually when it's a deadline and I've got limited amount of time to to do things. That that that I find is typically um that that that's typically what stresses me out. Um Or you know or or when I can't see how the the the available work is going to fit it into the available time. Um and um I I'm not sure anybody should be looking to me for advice on how to deal with that if uh in a sensible fashion. I mean I I think to a certain to a certain extent um it's as it's as straightforward as just not worrying about it or learning to just not worry about it or not worry about it excessively. Um but that's much much much easier said than done. Um >> Yes, especially when when you know that somebody could be waiting and you don't even know that they are waiting in because you you just forgot you didn't manage to see the email. Those are the things that but you're right that you just have to learn to manage that meaning we have to worry about it and at the same we don't want to excessively worry about like you said. >> Yeah. >> And >> Yes. Yeah and also from that point of view especially with the maintainership stuff some of it's um can be about um well maybe sometimes I'll do a merge in Linux next where I'll apply a patch and I'm not sure that I've done the right thing and that it worked. Um but I also I you know, I have to It's something you have to accept that maybe there'll be a problem, but as long as you're responsible in fixing it um then things should be fine. Um So it it So yeah, there there is there is an element of that as well, you know, trying to um make sure you've got a a realistic box on the um the severity of of the problems and make sure you um you know, if you're if you're letting things slip, know know that you have a recovery strategy and that um how to um you know, things are going to go wrong, how are you um um how are you going to deal with that or is there a good story on dealing with that? >> Right. Right. And I mean, um yes, that's strategy of how do you how do you get well? I mean, we're all human, we make mistakes and >> Yeah. >> um and and that accepting that we are not superhuman, we and saying that we should never make mistakes or set those bars high. Just set them Okay, I'm going to make mistakes sometimes and then you know, just say, "Hey, I made a mistake." and um and then I know how to fix it or I know how to go about fixing it. >> Yeah. >> That's kind of what you're saying, I think. Um and and that um don't come down on yourself if you made a mistake. >> Yes. >> That adds adds to more stress, right? You know, on top of the mistake, you you're now you're dealing with oh, how did I do that? How could I do that? Yeah. >> Yes. Yeah. Yeah, and and if you're overloaded, sometimes it it's it's okay to just low you know, lower the bar a little a bit if you're So long as you're doing it in a way that you understand and where you're um confident. And so like we we have a long process between applying a patch and it going out in a release. So, you know, how how confident are you that they if there is a problem somebody will tell you about it and it can get fixed before it get ends up in an end user's hands. >> Right. Yes. Yes. Especially for embedded and in some cases in this like some of the hardware you deal with there will be fewer people that might find the problem. So, you'll have to go about finding them yourself and >> Yes. >> [snorts] >> Yes, no, I I remember surprising one it was one colleague somebody was working on one of my subsystems but I explained to him I didn't really care if his driver actually worked or not because it was for hardware that I was never going to have access to. I cared about whether it was me like I was I was looking for problems when I was reviewing it but um you know, I I wasn't if it was a bug bug in the register right sequence or whatever I would not be able to tell and it wouldn't affect me anyway. >> Right. >> He so he it changed his perspective on what we were looking at. He was quite surprised. >> Right. And I think I think that a lot of people it's hard for a lot of people to understand the scale of the footprint of Linux and spans from really really small IoT devices to all the way to supercomputers and then multiple variations of the same chip or same driver that affects things. So So, we rely we rely heavily on sometimes we do our best and we do find problems and we reviews and multiple reviews that we go through and each patch could go through several people's reviews but there is always sometimes something slips and then we are responsive. So that's it. >> Yes. >> That's right. So that is the that is the hard part. Being able to stressing out about oh okay, what's getting into the users' hands and that is that is the >> the main line. Yeah. Absolutely. Um oh, yeah. So you do Linux next, of course, um is is larger than your work that you do for the community and I can I look at it as Linux next even though it's a part of the code and you're still handling all of those things. It's bigger than bigger scoped. And then what are the other things that you do um uh for the kernel besides code. Like for example, you're sitting with me talking to me. This is this is like mission, right? And then mentorship series and so on. >> Yeah. Um So there's not the I think the um the the biggest thing right now uh or I say the big is is certainly a big impact for the community. I don't know about my contribution, but it's something that you're involved in as well as the Linux Plumbers Conference. Um so um I'm the uh current chair for the organizing committee which mostly just means I have to run the meetings and remind people to do the things that they said they were going to do. Um So other people are are actually doing the you know, actually doing the heavy lifting there um including um people from the Linux Foundation who uh do an awful lot of the event organization. Um Yeah, I think I think that is at the minute that's the main um non-code thing that I'm doing directly with the the kernel is the uh is try trying to get Plumbers uh out this year. Make sure it's a good event that everybody enjoys. Hopefully it will be. Um it's in Prague. Um tickets are available now. You should all come. >> Yep. Yep. Yes, that is the first time chair. Um it is uh it it's always hard when I mean because you are getting other people and we are all volunteers. So, that's we are all carving out time from our everything else we do. So, yeah. So, but uh but hey, you're doing a great job. >> Yeah. Yeah, and and a lot of it really is just reminding people to do things. It's um um you know, making sure that making sure that we've uh the schedule. I see the the link to the event has been uh dropped in the the chat for people. Uh thanks, Candice. Um yeah, but a lot of it really is just reminding people of the you know, the conference is in uh quite a way out still. Uh but we still we we're at the point where we need to start getting we've got deadlines for getting things done. So, it's just um keeping it the top of people's minds when it's not the most immediate thing. >> Right. Absolutely. And then also asking them, "Hey, you you have to register or you have a speaker code sitting in your inbox. Come and get it." >> Yeah. >> stuff, too. Um but uh it's inside I don't What's your experience? I mean, I have attended before I got involved in the program committee. I attended lots of Plumbers Conferences. I really didn't think much of the how much work goes into it. What's your takeaway on that how the the work that goes behind the scenes happens? Did Did that Yeah. How did you >> Um so, it didn't surprise me so much because I'd been peripherally involved in running the um uh the Debian Conference when that was in Edinburgh, Scotland where I live. Um so, I I'd seen conference organization from the inside before and uh just to how much work it can be to put on a big event. Um but yeah, as an attendee to an event, you you never see um all the effort that goes into securing venues, making sure the venues are suitable, um working out the program for the event, um coordinating travel um for for people who need travel support, um sponsorships, uh this uh um and then just on the day just ma- making sure everything's going smoothly, um you know, having people in all the conference rooms, making sure making sure that the uh these these light projectors are working, that everyone's on schedule, that sort of thing. Um there's a huge amount that goes on behind the scenes, and it's not really it really shouldn't be obvious to anybody who's not actually taking part in the organization. Um the whole point is to put on a good event for people, not to uh worry them about what's going on. >> Absolutely. Absolutely. So, you have been in the community for 20-plus years, and >> Yeah. >> you are you're very active in the community in various aspects um of upstream development. And what keeps you here? Uh what keeps you uh get up every day and do what you do? >> Um so I mean, obviously some of that is that it is my job um and um that always that that always helps. I mean, that that that uh especially, you know, the it stops um it ensures I've always got some level of involvement, even if life's being very hectic at any given time. Uh it's a pull back, but um really a lot of it is the it's a combination of the technical challenges and um trying to make something that does the best possible job for people, uh and also the people we're working with is uh just a key part of it. Um I mean my my personal experience has been the community is for the most part really great. I mean it's a huge community, so there's always going to be um things that are difficult. Um and there's a lot of um difficult problems, which you again makes uh can make things difficult. Uh but yeah, it the it's um it's a people thing as much as it is a um uh as much as it is anything else. It That's um Yeah, that that I think that that that is probably at least as probably more many ways important than the uh technical challenges. Cuz I mean there are technical challenges in many fields. Um the kernel, you know, the kernel has some interesting things going, but so yeah, so do applications, so do web services. Um So do embedded devices. You know, there there um there's a huge number of other places you can put your effort. Um but the the community with around Linux is what makes it really special for me. >> Absolutely. Yeah. Cuz we um the community as a whole um yes, there are people that um um people are when whenever you people technology is easy, right? In some cases. And then when you people get people and people are all committed to the shared goal of making making Linux work for everybody. And they're also working to see, "Hey, does it run on my laptop properly, too? Does it help my uh users?" Uh kind of thing. And we're all coming with the same goal. Sometimes we don't agree on how to go about it, but we find a consensus. So that is the that is the thing I find um fascinating and great about our community. You know, I that's what keeps me here, too. So, because of the >> Yes. Yeah, yeah, definitely. >> Right. So, um so, what advice would you give to new developers when they are coming in um and to, you know, dipping their toes and trying to understand the community and stay here? >> Um So, um I think um it really helps to have um some goal you're trying to achieve. Uh and we which is usually it's not the sort of thing you would usually um turn up to just for the sake of it. So, I I think that's um that's usually the case for for most people. But, um you know, often you see people with things like, you know, um my laptop's audio uh audio doesn't work. Um I'd like to fix that. Or um or or, you know, I I've got this um uh project I want to do with an embedded device. Uh you know, I've got a Raspberry Pi and a hat for it and I want to uh make it into a display for my um my family calendar or something. I I don't know. Um But, yeah, it it it helps to have a um a thing you want to do. Uh like a a clear goal. Uh and then I think the the main things are probably um just talk to people. Um you know, if you've uh changed something, you send a patch. Maybe it's the wrong patch, but that that's that's fine. You can um it's it's a good way of triggering a discussion. Uh yeah, um talk to people and um don't get discouraged. You know, sometimes people are it's um people find it difficult because um in many areas of the kernel uh email response times are not good. Um uh and and and and sometimes that's uh simply a matter of just leaving time for other people to comment. Uh like if you if a discussion goes past uh by too fast, then uh it gets in the way of um other people getting involved. Um so if you're not seeing a response um uh then a bit of persistence and a bit uh maybe a bit of chasing um can help a lot. But, you know, try try not to get get discouraged by that. I think that's one of the biggest barriers people run into is um not is um is is seeing the uh or is getting a feel for the time scales uh on which you uh things will happen. Um and like and like with the like even if you you land a patch, um it it will generally be about 3 months uh to 4 months before um it turns up in a release. Uh which can be discouraging for people, but um if people are aware of what's going on, I um you uh you know, understand that there uh there is some latency um and have their expectations set well, I think that um that helps a lot. But, yeah, um talking to one one of the best ways to think about uh to find out about stuff like that is through talking to people. And I think that really is the key is um just um discussing things. Uh you know, put putting code out there um you know, replying to uh you know, if somebody replies to your email, uh listen to what they say and engage thoughtfully with it. And um Yeah. Uh kind of generic advice, but ultimately I don't think um Linux is that special in in this way. I think it's it's just it's a big project, but it's just software. Um it's easy to get um to or it it it's easy to get the idea that it everything about it is super deep and really some things are some things are really really really complicated and hard to understand. Um but a lot of things are very straightforward to understand. Um >> Right. It's a large project, too. So, there are a lot of things to do keep us engaged, and we don't get bored. So, that is the thing. >> Um yes. >> Boredom is not something that uh you would would associate with the Linux. >> Yeah. Yeah, so yeah, so if you really want to work on Linux, you will uh you will find something to do, absolutely. >> Okay. So, um I guess it's you know, this is like a we cannot um s- end the conversation without talking about AI. So, how it how did what how did it change did it touch your life and how did it touch your maintainer or developer life and uh what how what how it's been role being in your day-to-day life these days? >> So, I think there's there's two um big um impacts that I'm s- seeing from uh the LLM-based AI stuff uh with the kernel. Um as a uh both as a maintainer um one thing is that I'm seeing um a lot more patches coming in uh fixing um mostly fairly small issues. Uh and it is it's quite interesting the and many of these are fairly clearly generated with LLMs or some involvement from LLMs either um just from a sense I have that that's what's going on or because the submitter actually says this was you know I used an LLM while I was doing this. Um they're quite interesting like the have uh frequently got um new tools coming in um that make uh that result in large numbers of patches being generated. Um you know new linters that spot problems in code or um things like Coccinelle which make it really easy to make do widespread uh code transformations to uh clean up issues but those are all are all deterministic and regular and they they produce patches that all look um very similar to each other. So you might see a lot of patches from somebody but they'll tend to be roughly the same patch just done in a different place uh fixing a similar issue in a um in in a huge pile of drivers for example. Uh but with with LLMs um they're a lot less predictable. So they will um you'll see somebody who's clearly cleaning things up with LLMs but um but they you um you have to review each individual patch in a bit more uh detail because it's um either they just will be different fixes that the LLM happened to have helped them spot. Um or um the LLM is doing things in a way that's not quite so predictable and doesn't necessarily have everything joined up so you need to uh you can't have a um you can't have quite the same sense that yes, I trust this tool. This tool will probably do the right thing. This person said they they did X, they probably did X, and that's fine, which is what you can get to with a lot of tools. So, it makes the um review load um a lot higher. Uh there's just a huge numbers of patches coming in compared to what there would have been. And when the volume goes up, the um at least for me, maybe other people have a different experience, but at least for me, the um the things that would usually make um the the yeah, that would usually make it easier to deal with a big pile of patches from one source one underlying tool um don't really apply to LLMs in quite the same way. So, it's um it makes it uh tricky from that point of view. Um the other big thing um is um there's a tool uh called Sushiko, uh which is at uh sushiko.dev. Um I think hopefully Candace can put that in the uh the chat for people. Um so, that um grabs patches from the mailing list and does uh a code review using um LLM. I I think it's using Google's LLM cuz I think it's a Google project at the minute, but um And that's um that's helping in the other direction. So, that that that um that will um Thanks, Candace. Uh so, that that will um it's quite good at spotting that there is an issue in the code, uh which can save you time in analyzing it. And my experience has been that they tend to spot different issues to the ones um I might spot. It's going to get more into the weeds of details of drivers and things in a way that I wouldn't. Um although it can be a bit confusing at times because it will also highlight uh pre-existing issues in the code that aren't necessarily relevant to the immediate thing you're reviewing. Um but that does help quite a bit with the review uh workload. Um because it will um it will It's not going to spot everything. It's in no way a substitute for actually reviewing the code yourself. Um but it will um help point out areas of the code that need attention even if the um specific things it's saying are not great. It's usually um what the pattern matching is usually resulting in it um highlighting something that needs to be highlighted and does deserve some attention. Um so I I think I've I think There's a There's some balance between the two. I think the people sending patches are currently more than the um than the um help with the review. Um but it it it there um Yeah, I give if they are take it away take it away. >> Right. So, you are you are right. I think I I heard uh recently looking at the numbers uh 7.0 release had about 490 new developers or 400 and odd the new developers suggest from We usually see about 200. And then 7.1 I believe had like uh 390 developers. So, the new developers is clearly tracking the LLM use, I think, in this case. And you are right about Coccinelle that the kind of things we have done Automating stuff is not new to us. We have automated things in the past. Uh we had homegrown AI tools to find um CVEs and patches that go into fixes that go into mainline and they're going into stable. So, we're not new to it and we have kernel bots that go and pull the patches and compiled and found problems and tested them and all of that. Shishio is great cuz it also finds adjacent things and we had Smatch before that that did similar things. So, but you are right that we have new new people coming in. Shishio is good that it also finds adjacent problems cuz it gets us thinking. But, that also confuses new developers because so do I I keep getting questions like do I want do you want that fixed? Do you want it fixed in a different patch or this patch? So, it's like more traffic on the mailing list. >> Yeah yeah and sometimes the pre-existing issues it's pointing out are just um like they're they're they're often really like some sometimes they're false positives but often there there really is some issue there. Uh but sometimes it would be completely disproportionate to ask somebody to um you you somebody's fixed a type doing something level of fixed a typo and it notices that there's a structural problem with the whole driver or the whole subsystem. It would be completely disproportionate to expect the typo fixed to um wait for the um the bigger structural fixed. But, um yeah it's not very often not very clear to submitters um what the distinction is. I mean personally I tend to not push submitters to look at Shishio directly unless I I know who they are and I'm I know they're able to make that sort of judgment themselves and because I do find that it's it's often um it's a good source of things to work on but it can be confusing to newer developers. I just trying to understand what's a what's an urgent problem and what's a oh yes, we should really fix that problem. And what's a that is urgent, but it's it's a very big problem. >> Okay. And in general, we don't expect them to combine or even work on the adjacent problems and combine them with this patch. They are they're going to be totally separate anyway. Um they find an adjacent problem uh that they would send a separate patch depending on the situation. >> Yeah, yeah, usually uh usually it's some yeah, it should be something completely separate and it shouldn't um get in the way of doing whatever small uh improvement or fix. Um or even larger improvement or like it it's just off topic for whatever is being done. >> Right. >> Um So it it should be dealt dealt with separately. >> Yeah. Absolutely. So um I guess it's time to look at the questions um and see what what people are asking us. Let's see. We have about I think five open questions. Um would you like to just take them in the order you want to take them? >> Um sure. Um So I I think Wilbur um asked about how we start um building and developing. Um and I think we we sort of cover covered the getting involved um and advice for new developers uh a bit earlier. >> Mhm. >> Um but I I think my um my big um advice would be it would be find something you want to solve and uh then work from there. Um in in terms of like the mechanics of it, that's uh hugely dependent on what you're doing. So um I that most of my work has been either with um simulators uh for my current stuff on the arm architecture or with embedded hardware. So, the way you deploy software onto those is um especially embedded hardware is quite different to the way you deploy software onto say a virtual machine or your actual laptop. Um so you You know, the the very concrete first steps are going to be dependent on what you're doing. Um There are some good resources out there. I think kernelnewbies.org is still quite good. Um Be finding people interested in the sort of problem you're interested in and then finding resources from them is probably the good first step for how you start building things and working on them. >> And yeah, you could also look at the love live maintainer no mentorship series that offers a lot of good tutorials and 90-minute sessions with all of the developers. >> Okay. >> So, go and see if there is a match for that area. Mark has done one or two and there's a lot of a lot of maintainers have done that. So, take a look at that as well. >> Yeah. Yes, I should have remembered that having done some >> And we do have a lot of resources, I think. Yeah, like Matt Mark has mentioned. >> Um Yes. Um And um David Harris asked a similar question about um getting involved with security that I um don't know much concretely about the security um area, so I I'm not really qualified to provide uh specific advice on that at all, I'm afraid. Um other than the generic find the security people and look at what they're doing and um try to work with that. Um I think one thing that the I would say there is that the um testing side of things for security um is maybe interesting. Um the the making um it's all very well having features, but making sure that they they work properly. Um I don't know if there's gaps there, but um just thinking about what I see when I look at the testing stuff, security never pops up uh that much, which either means that the the testing is very good and the quality is very good, or it means that there's a lot of stuff that could be um be worked on. Uh and if there is stuff that can be worked on, then um that's often a good way into developing things. If you find a problem, then obviously you can uh you can try and fix them. Uh so yeah, hopefully that was useful. I would like to say I'm I'm afraid it's a bit generic because I'm it's it's kind of out of my area. Um And we have a question from uh Jeff and Philip um about um how I treat uh regression patches. Um So I think you have to give priority. Like if if something was working for people and then it stops working, then you have to give priority to that, obviously. Um So I will tend to f- um if it's something I can work on, I might look at it myself um directly if if um that's appropriate, but uh I'll tend to be prodding the developers who introduced the problem or who are responsible if it's not obvious who introduced the problem who are responsible for that area to respond quickly and ideally also working with these submitter if you know if they if you can gather any information about um about the problem that would help narrow it down while waiting for the the people to who knew about this specific area to get back to me. But yeah, I would always try and fast track anything that looks like a regression. And try you know try try and make sure that the appropriate people are paying the appropriate level of attention to to the issue. >> I just put in a link to Colonel Self-Protection Project that has a overlap with security and you will be connected with the security minded people in the maintainers and such in the community. >> Yes, and that's they're speaking of community earlier they're also a great group of people. So if you look Yeah, there there's They definitely have a big to-do list. So yes, that's that's a great idea. Thank you Shera. >> Of course. >> So Jerry Coolstra, sorry if I'm mangling everybody's names by the way. I'm I'm guessing a little here. Um He asks about finding entry-level jobs. So, um I'm again maybe not the most qualified person to ask answer that question. Um I mean I know the from the work recruitment I've been involved in what worked for me more years ago than I care to think about. Um the there are entry-level jobs out there. I think um um a lot of them are there's a lot of opportunity in the embedded space. There's a lot of smaller companies making small run hardware devices that need software engineers who are not necessarily just kernel engineers. Um but who will have to work on the kernel as part of putting the device together. Um so that's if you can find those sort of companies nearby. Um they're often a um a good place to look. Um and the other I think Yeah, otherwise it it's um support type junior developer type roles in uh the big companies. But um everybody knows who the big companies are. So, those can be quite competitive unfortunately. So, it's it's a bit tricky. Um The the other thing is obviously if you um become known for contributing to something uh it becomes a lot easier to get hired. Um but that that's you know there's unfortunate blockers for uh there you know you have to have the time to contribute. Um which is a big ask for some people uh for many people. Um but it it does I mean it it does work. Uh whether it's fair or not is a separate question. I should you I know you were involved with the um Linux Foundation mentorship programs as well. >> And yeah, you is one of my graduates that was submitted to us. So yes, this Mark you are right on. That's what I tell my mentees as well that um making contributions and staying with the company staying with upstream that shows speaks for itself in in terms of contributions and then people will find you. It's but it is a long road. Like we have we have done it too. Like we don't get our dream jobs. There is no concept of landing your dream job. You have to make a job your dream job or and you will have to work through the process of building a career, right? So yes, you have to start somewhere and even if it is like a support role that you're doing and part of it is kernel and part of it is user space you have to kind of work towards where you want to go, where you want to take your career to. >> Yeah. Frankly, some of those user space kernel space interface issues can be some of the more interesting ones. >> I find them very interesting. That's why that's why I kind of straddle between self tests and K units and then all of the other tools. But yes, absolutely. I think you do the same Mark. We >> Yeah, I'll I'll I'll >> Yeah, we are in some of the similar area. >> Yeah, I tend to stick to the top of the kernel or on the bottom of user space. But yeah, it's kind of similar. Um So David who says Perez asked about using AI without um compromising any of learning good quality or trust. Um I think I think the main thing I would say is there's two things I'd say. One is like for the the code um make sure you understand what's being sent and have double-checked it yourself. Um The other um If if things are wrong, it's not the end of the world. That that happen that happens all the time. Um but you know, try to have some make sure you have some understanding of what's being sent. Cuz I think the the biggest um the biggest issue I see with in terms of um the AI um or the the people using AI, it's it's not so much um it's it's not so much um to do with the code so much. Or at least the people using AI for smaller things. I've not so much experience of people using AI for large large features. I know there's been some big problems with that. So yeah, I would recommend sticking with smaller changes that are easy to comprehend in and of themselves. Um But yeah, the the biggest issue I've seen is when people are using AI to write emails. Uh because it it tends to be very very obvious that they've done that. And um a lot of people really really don't like seeing that. Um and get kind of frustrated talking to the LLM. So yeah, I I would recommend small bits of code or manageable bits of code that you can understand well yourself um before you send them out. And um don't use it for the emails. Or you know, if yeah, yeah, make sure you you actually write your own emails. Um also can can sometimes be I know some people report good experiences having it help them prompt find bugs. Uh like Coccinelle is kind of in that ballpark. So, that's yeah, that's another thing to look at. >> But this is actually a great question, if I may. If you are thinking along the lines of how can I learn from use AI as an accelerator and not compromising learning and code quality, you are way ahead. Because um that's really AI is a great accelerator. It's a huge It takes off a lot out of a huge learning curve. But you have to use it correctly because you want to use it to learn, not to just generate quick patches to that you want to get into the kernel. I think that's >> Yeah. Yeah, and and you you have to have a skepticism about what it's doing and a concern about the and yeah, you know, is you're right, it is a very great question. So, we have one more question from Jeff and Philip, which is a I I think I can answer quickly before we run out of time, which is just how long it took me to become a maintainer. Um and that was I I don't know several years, I think. Um then it it depends there there's different there's different stages to that as well. So, there's um I initially started working on drivers for for well, so now I was sort of was maintaining those. Um then I started sending changes for uh for for the subsystem and then I took over that. And that that took maybe another year or so. And then over time I also took over other subs existing subsystems for various reasons. Uh and I also wrote one new subsystem completely from scratch cuz it fit a niche for me and I just became the maintainer of that one by default. Um cuz I wrote the thing. Um but yeah I would say it was a period of years although there was the shortcut with the that one that I am I wrote myself. That's that's a bit of a a lift though to find an area that needs a whole subsystem. There are there are maintainers of drivers, there are maintainers of subsystems, there are maintainers of core subs. You know, there's maintainers of nearly every thing. >> Mhm. The road road is different for different people and also it does take time because you are building trust in Nobody gives you a maintainer ship maintainer role. You earn it. So. >> Yeah. And it's something that not you don't necessarily want to do either. Like a lot of people are highly respected developers who just want to develop and don't want to deal with all the review and patch management and process management stuff that comes along with being a maintainer and are very happy doing that. So it's not Yeah. It's not necessarily something that would be fun for everybody. >> It's a mixed bag. >> Yeah. >> Uh we have two more questions. Mark, we can just go ahead and take them. It's not a problem. I think we a little bit over not a problem. >> Um Yep. Sure. Yes, I've got time. So yes, so Paul Van Dam asks says Rust programming the kernel is getting more traction and there's increasing demand. Yes, I absolutely. Rust is like there there are several new drivers have been written um entirely in Rust and are just completely relying on it especially in the the graphics subsystem I think is the main one. I know other subsystems are experimenting with it as well. Um so yeah it's um it's really becoming a lot more important. Um they're going to be systems you buy in a few years where you're not going to have a display if you don't have Rust running in your kernel. So um um there um Yeah it's becoming more important and I I think there it's attracting some new developers as well who want to work on really low-level stuff in Rust. Um so the fact that the kernel has um is now somewhere where you can work on Rust is um is drawing them into working with us. >> Right. Tune in to some of the LPC Rust talks. We do we have virtual coming up in September in Prague. We have a few good like three or four good talks and Rust and C as well if you want to. >> And they're also like the Rust developers are also great friendly bunch of people. So if you're looking for introductory stuff to work on there's definitely a lot of open ground with Rust. Um so um Yeah it's if you're looking for ways to get involved and you're interested in Rust I highly recommend looking at that. Um and the the last question is um anonymous um so which is basically asking what the balance is between uh people using AI to patch or people using AI to review. Um I would say the I can see more people doing AI patching. I don't know how I it it's a lot harder to tell if somebody's using AI to review though. Um because they might be using AI to prompt them to look at something and then um understanding you know, understanding if it's actually if they all I'm actually told them uh something that makes sense or not. Uh so that their emails will come through and it'll just be something written by a person and you won't be able to tell that they used an AI uh an LLM for that. So I don't um I would expect that there is a lot more AI review going on than I am actually um directly aware of. Like I can see the patches. Um I won't necessarily see the review um and I I mean I know I'm seeing people uh respinning their patches um having fixed issues and they'll say I saw this from Sashiko. Um so I know people are looking at it. But I don't I don't know I I just don't have a sense of what the answer to that question is. Um I suspect more people are using it for review than patching. But I can't I I can't see that so I couldn't swear to it. >> So in Yeah, that's all we have in the questions wise. Any closing thoughts before we part? >> Not really for me. No, I I I think your your your questions covered everything and I would have brought up. Um you get you know, together with the questions from the attendees. So yeah, I No. >> Thank you so much, Mark. >> I I thank you for the opportunity. >> Back to you, Candace. >> Thank you, Mark and Shuah for your time today. And thank you, everyone for joining us. As a reminder, this recording will be on the Linux Foundation's YouTube page later today. We hope you join us for future maintainer sessions. Have a wonderful day.