 So we are here at the Linaro Connect and who are you? My name is Shwakan, I am a kernel maintainer. Linux kernel maintainer, I maintain kernel self-test and USB or IP driver and I kind of play in various areas of my interest. So what does it mean to be a kernel maintainer? What it means to be a kernel maintainer is that you are responsible for the content that is going to go into the kernel. So it is, I find that it's an immense responsibility because we are the gatekeepers of what gets in and we want to make sure, we have the responsibility to make sure that the features that are going into the kernel are valuable, generic value and so on. And also we are almost on the hook 24-7. We have to be responsive to the new developers, we have to make sure at the same time be able to say no. So it is a very challenging responsibility and it's not for everybody. So how many kernel maintainers are there? And how do you split up the responsibilities among you? We have subsystem specific maintainers, we also have sub-maintenors. I really do not know the number of the top of our head, probably we probably have more than 200, 300 of us and then there are 6 to 7,000 developers and sometimes it can be up to 10,000 all across the globe. So some subsystems maintain as a team, ES86 is an example of that, but my subsystem I just maintain myself and then the driver I maintain is a USB IP driver so I actually send patches up to the main maintainer. So that's kind of a sub-maintenor, maintainer model works. So USB IP driver you said? Yes. You were talking about test? What do you call it? Kernel self-test is what I maintain. Is that USB IP or something else? No, kernel self-test is a subsystem that I maintain and then USB or IP is another driver I maintain. Two things at the same time. So what is a self-test? Self-test is like a kernel test that is part of the kernel source tree that gets run. So it's like checking self-running a test of the kernel for developers write unit tests and regression tests and then the kernel developers will be running that mainly. And then also it gets run during stable release cycles and then mainline release cycles that we make sure that when we put the bits out, some sanity checks run. I mean sanity checks pass. So I guess there's a lot of testing going on in the kernel, right? Yes. Is it a big deal that every kernel developers need to use this tool? I wouldn't say that. I mean all kernel developers do use it because what happens is kernel developers focus in a kernel is large. So we have various subsystems. So if a small area in the memory management changed, you don't necessarily have to run the entire self-test. It would be good to do that, but you probably want to run more targeted memory management tests that are under self-test. But during the release process though, we do want to run all of that and that we do. We have a continuous integration model in the kernel. We continue to release this come out once a week. And then as releases come out, we go and test them. It's like developers and users and testers. They all go test the new patches, the new bits that come out. And when I use my cloud computer, I always like to use a USB over IP to do my webcam remotely and stuff like that. Is that what it is? USB over IP? USB over IP. So any kind of plug-in hard drive and it just works over the IP like it's local? Yes. What USB over IP does is it will make the USB storage and USB other devices, IO devices as well over IP to another client. And if you have a client sitting from a different area from the server, you can import devices that server is exporting. And then you can control the same thing. I mean, you can access it just like you would a local USB file system or a device. So your job is fun? Yeah. Yeah, I like it. Every day is busy or too busy or you can have a holiday when you want or hers work. So I do make sure that I am available during merge windows and then generally responsive to the patches. And it is busy. It keeps me very busy. And there are times that sometimes I end up working on a weekend like for example this Sunday because I needed to send a full request out. I'm in and out and I was traveling. And so it is a lot of fun. And it's a different mindset. I like it that lots of people, I mean, 6,000 to 7,000 developers, not all of them at the same time, but a large number of developers look at the work we do. And it is also not racking sometimes, right? Something you send out and the patch, no guarantee that the code will get in, but at the same time it's being looked at by your peers. And it's very rewarding to be working in this environment if you have the right mindset. That means you must be one of the best in the world then because you have to be able to have code that everybody say, yeah, that's great. Or what? Well, I mean, it gets pretty nice. Yes. The way you code is super clean and the structure and everything, you can't be doing messy stuff, right? Right, right. We do look at the quality closely and I can't say I'm the best. There are, we have, it's a talented group of individuals and I'm glad to be part of that. Are you a lot involved with the community here at Leonardo? Are they doing a lot of stuff with you? Right. Leonardo, a test group, is doing a lot of work in the TK self-test space and then they all participate. Leonardo TestForm is used for testing stable releases and as stable releases and each release, even mainline releases come out, they immediately test them and then run self-tests and then send reports up and some of the developers are doing a lot of improvements into the framework. Do they call it LPKF or is it retits-related? It's the Leonardo TestForm, the LTF is what they call it. TestForm is a group of systems that they don't test on and then they are continuously making improvements and suggestions for improvements and they keep an eye out for any breakages and tests and so on. So it has been... I rely on them to find problems sometimes. So that's a community. It's a part of the extended community that they helped me out. But this Linux kernel is for every architecture, right? This Xcd6, ARM, everything, right? Right. There are... No, we support, like, two-fifteen architectures. Yes. So that is part of the challenge, too. When you make a change to the general career, you don't want to break an architecture, any architecture. So that's part of the challenge, so... And on your business part, it says you are with Samsung? Correct. So how does that work? Samsung works a lot in open source, so they... somehow you've got to do this? Right. So in Samsung, we use Linux in a lot of our products chain. I am part of the Samsung's open source group. What I do with open sources, my full-time job is doing open source work, open source project work. And then what I do is I am contributing back. We are contributing back from Samsung because we want to... we are taking and we want to give as well. So that's part of the contribution. And then also look at... there are some features I do for Samsung. If Samsung wants a specific feature for the product, I'll upstream that feature and then work with the community to make sure that it is useful to the community at large, not just Samsung's business. But does that mean you have staff that you can delegate a bunch of work to or do you have to do everything by yourself? I work by myself. We are individual contributors in our team and each one handles their part of the project. For example, I maintain kernels, self-test and then I help spread open source knowledge across Samsung. Some product teams want to know more about open source, educate them internally about open source. So yeah, I don't have any staff. I'm an independent individual contributor. And we're here in Vancouver, which looks pretty cool. You are based in... I work out of my home office in Denver area. In Colorado. And so you can just work online. That's how it works. So Linux developers, right? You just need an internet connection. You travel, for example, you can work at the airport. I can work at the airport. I can work from the hotel. Practically anywhere I have data available. Do you travel a lot then? I travel some mainly for open source conferences, Linux conferences, and like this Leonardo conferences, I'm here to network and then that's the only time we have face-to-face kernel developers. So we come together at these conferences and discuss issues and, you know, discuss designs, discuss features. So this is our time to work face-to-face. And for people that I guess a lot of the guys women in in the narrow, they have families and it's a great job to have when there's family, right? Because you can be flexible and... Absolutely, absolutely. And you can work whenever you want, right? Right, absolutely flexible. In my case I have, I work my schedule around dropping my children off and their events and so it is great. And it comes with this challenges, it comes with this rewards. It's very rewarding professionally and flexible. And I get to meet a lot of people like I'm meeting you now. So it's like it's fun to be doing that. It's very nice to meet you. But you have to force yourself to do the work or there's so much that shows up in your mailbox I guess that you kind of quickly get a lot of work to be doing, right? So that is another thing. Once you are a maintainer, being able to balance taking care of your maintainer responsibilities and also do the fun stuff that I want to do. Develop a new development. So yeah, I can't say I have to look for work. Meaning I have always something to do. There's always a whole bunch of to-do lists for you. But it's okay. That's the fun of it, right? That's the fun of it. I enjoy that. It's nice to not have to worry about hey, what am I doing next? I always know what I'll be doing.