 Hello everyone. Let's talk about getting into Linux kernel after 30 years. So everyone must know that it has been 31st or second anniversary of the Linux kernel. So even if it is so old software, so it is still relevant and everyone is still using it. That's why we are all here. So I'm Usama and I work for Collabra. So today I will enlist some resources which can be used to become a Linux kernel developer, and anyone can use those in any order to get even a job. So I will even show some examples. Let's get started. So if we look at the evolution of the Linux, so it started from only one developer, and today it has 25,000 developers, so which have contributed to the upstream. There are still a lot of downstream developers, and they just keep on adding it. From 2008, we have jumped from 9 million lines of code to 34 million lines of code. So it shows how fast it's still going on. The development is still continuing, and there's still room, and there are a lot of jobs which are still vacant just because people don't have the skills to work on it, and they have no expertise at all. Even the people want to get into it but they are afraid. So it must be very difficult because even the software is more difficult, and also the development because it is all open source, so people think that it may be a very difficult task, but let me explain a bit. So if we look at who develops Linux kernel, so there are a lot of people, so there are some categories. For example, first of all, some companies develop it. For example, vendors like Intel, Samsung have their hardware, so they need to support Linux on that just because Linux is the best operating system out there right now, and even it runs on everything from smaller devices to the supercomputers and satellites. So, and there are some other users as well, like Google and other, a lot of tons of companies who use this to create some cloud or something and earn a lot of money from it because anybody can use it. And there are a lot of consultancy companies as well, like Colabra, so they help them to get some upstreaming or they need some help with anything, so those consultancies help others as well. And not just the companies, there are a lot of research institutes as well. For example, someone wants to develop some new algorithms, someone wants to study the history that how algorithms would evolve. So they would select Linux because it is all open source, you can do whatever you want and then you can even get some support from others as well. And it is quite a nice codebase where you can develop your algorithms and it can help not only you but others as well. And finally, there are Hobbys who just get some hardware from somewhere and it doesn't work at all. So they try to just make it work on Linux and they submit their work as well. And what are the main difficulties of this codebase? So the first problem is that there is very few documentation out there and even if there is some documentation, it gets outdated very soon because it keeps on getting evolving, people submit patches all the time and if we look at the patch submission rate or even application rate, so it is about more than 10 changes per hour. So that's a lot. So that's why even if someone documents something, so it will get outdated very soon. So, and even some components are very old because like block devices were designed 20 years ago, there were only hard drives and now there are tons of different kind of storage devices. So it keeps, we need to kept it alive and we need to keep updating our code. Okay, let's start. So this is the best course out there. So everyone should do it. So it is very easy to do as well. So this is a free course from Linux Foundation. So it is a beginner's guide to Linux kernel development. So it is not difficult at all. So you start from zero and it tells you all about the development processes, how release happens, how you need to submit patches and even it asks you to build the kernel and then install instance system. So it's up to you how you want to do it but it's the most easiest way and anybody can do it. And it's also, at least some other resources which you can use. So anybody who is even somewhat interested, so this course is a way to go. And there are other courses as well. So these are also free courses from Linux Foundation but these are for the ones who really don't know anything at all. So you can select which course you want to take but they are not necessary. It depends upon your experience. If you want to take, you should. Then Linux Foundation has some paid instructor-led trainings. So these are also very good. So, but they are paid and they're kind of expensive. So that's why for those who cannot pay, so there is a scholarship which is Shubhaka Linux Foundation Training Scholarship. So you can take, if you get selected, definitely you can select one course and you can do it. So this is the best way to even get a paid course. So this is all thanks to Linux Foundation. And moving on. So there is this Linux Kernel mentorship program. So in this program, there are a bunch of different programs. For example, there may be a bug fixing program where you will only be working on the bug fixes and there may be a program about some specific component where you will develop something. Maybe there is some recently added API which you need to improve further or maybe something else. So and there are, the application process is also very interactive. So it's like you will fill in your details and there will be a list of the tasks so which you need to do. So these tasks will range from installing the kernel and then submitting some patches. So they also, they have some guide on it how to submit the patches, but the first course will really help you here as well. So you need to submit them and then it is a process by which you apply and then if you get selected, so you get a training mentorship for three months and usually the mentors are very experienced. So you already know that, oh, so you are working with that guy. So this really helps. And in that three months, those will be the most golden months I would consider. So you will be working with the community and a guy who's a very well-versed will be helping you. So this is the best program out there, but there is only one take is that so they accept only a few, I would say. So maybe they should increase their intake as well. And then there is out-reaching internship as well. So that internship is for more, it is geared toward more under-depressed people in tech and they have also very interactive kind of application phase and then you work with a mentor. And but this is the, it is only a full-time program. So Linux mentorship program was, it can be taken in full-time or part-time, but this one is only for full-time people. Then there is an ancient resource. It used to call a Dupla Challenge. So it has 20 challenges which you can solve them by sending emails and there is some bot or maybe some guy who replies to you. If your answer is correct or wrong, so it has some very good challenges from it starts from creating some modules and it helps you through as well. So but unfortunately it is not accepting application right now, but you can find the questions online and try to do it by yourself and definitely it would help you a lot because it is like a ladder. So you start climbing the ladder from one end, so definitely you will reach somewhere above. And if you are bored and you don't know what to do, you're stuck somewhere, there are IRC channels and mailing list as well. So this is specifically for beginners and UBs so that they can ask anything and a lot of people are there and they definitely will give some pointer so that pointer will really help you and you will not get discouraged at all. And this kernelUBs.org has tons of different several blogs for newbies. So the most, the best blog on their website is this first kernel patch and patch philosophy blog. So you must read it. So it is very good and it will really help you out. And secondly, and the most, the thing by at which you should be brave is that you should join the links kernel mailing list just when you start your journey so that you know what's going on there, what people are talking about, how, what kind of things happen there. So you should start and at least start reading some of the emails so that you know how a community works. And sometimes the conversations are heated up there so just don't get afraid from there and be polite and don't ever take things personally. Then there are some, a lot of different websites like LWN is the best out there. It gives you news about tons of different things. For example, what is happening, what kind of components, what kind of, how the merge window has gone. So if you don't know what the merge window is, so you, so it is, if you will study the process in the first course, you will know that merge window is how the maintainer send code to the liners to add it to the next release. So this following it is also good. So you, that you have some overview that what's going on, what phase of the development is it and how, and that will give you some information as well. And then there are a lot of different developers who have maintained their own blog. So this planet.kernel.org has a list of people. So you can start reading the blog. So those blogs range from how to debug some issues, how you can be good at some blogging, debugging and so on. And if you are working on something like you don't know about the component at all, so you can also search for any presentation like this one or there are other conferences as well, Linux plumbers. So those presentations are very helpful in giving you the initial overview which can help you a bit in the start and then you can just go from there. And the best thing for beginners is this LF live mentorship series. So it is a very recent initiative by a Linux foundation again. So it holds some virtual mentoring series and it which provides some extra knowledge and discussion over Zoom to people. So they call the superly amazing people there. So they are very well versed and even they had developed some of the same components. So that's why they know everything there. So they share their experience from beginners perspective. So they start from zero and they tell you that from where you should start, where you should study and how you can take things from there. And the most amazing talks I've shared here like there was a session from Greg and on how to submit patches. There is Miguel's sessions there, how to get started in Rust. And there was a session which I really enjoyed. It was an introduction to Linux, tracing and its concepts by Elena and so on. So this resource will really help you understanding things from the beginners perspective because sometimes even if there is some documentation so that documentation is very evolved version of the original design. So even if we study it, you will never understand what's going on. So if you have some perspective from beginners that how, what was the initial feature and how it got developed. So that makes things very easier. So there are tons of talks about it, I guess more than 10 or 15. So those are very helpful. So those should be attending. And finally after doing all this, there may be sometimes there are some sometimes when you don't even find anything, there is no presentation video or anything at all. But there is some documentation. And so you should start again from there that maybe some documentation is in Kernel's tree or maybe some maintainer has written a blog. So that should be helpful. And there is a very good book from some Jonathan. So it is LDD3, so it's version is three, but it was again written very several years ago. So it was written on version 2.6 and now version 6.0 is going to be released very soon. But this book will give you, this book was written when features were very simplified. So this book will give you overview of how the Linux was designed for. So this book can be skimmed if someone wants to write twice drivers. So it will give you some simplified version of what we have today in the Linux. And there are some other good books as well, but that is based on the topic and your interest. So that can be found out from by just searching. And finally if you don't have anything at all, then you should just be brave and start reading the code. So even if it is C language or something, you will start to understand if you spend some time. And then if you are still interested, you should start writing the code to learn different drivers or something. So it is very easier to buy some embedded board or even you can install Linux on your own laptop in a VM or maybe natively. So that, and then you can develop some code there. So this will really help you in understanding things and you will start getting some experience. And finally, so once all the processes and everything, you should start finding the component of your interest. So it can range from anything. So there are tons of different components that start anywhere which interests you. And if you are still not confident enough, you don't know what to do or you don't know how to understand being component and you don't want to attempt that before getting more confidence, then there are some easier way to contribute to the Linux kernel which will make your interest grow. So the first thing is that there is a check batch script which you can run on Linux kernels, directories or some specific file to find some warnings there. So you should start, it is sometimes easier to fix the warnings, just find the warning and fix it. And there are some static analyzers which you can use to find the bug and then fix them as well. So this is also very interesting because it is good to start from there because you visit the code base several times, you build it several times just to see if bug has been fixed or not. So this gives start giving you confidence. So there are some static analyzers. For example, Sparse is the Linux kernel's on static analyzer. So it is very easier to run Sparse just by giving a flag to the make command. So it becomes very easier to just run it. And second static analyzer is SMATCH. So SMATCH is a separate tool, so you need to install it and then run it on your own laptop. So, but someone may say that, oh, so I cannot spend four, eight hours just on analyzing the code and then find the bug and fix it. So there is another one. So Quarity is the last one, is the third one from many others. So it is, although it is a proprietary, so it has a web interface and even sends you the emails of the probable bugs if it has found in the recent code. So you can just go through all the possible things which it has mentioned and then try to fix things. So one thing to keep in mind is that static analyzers report a lot of things which are not even bugs at all. So you should be very careful in finding which is the false positive and which is the false negative. So, but just don't worry. If you think it is a bug, then probably it would be. So just try to send and people will let you know that it is not a bug and just be don't be shy at all. So I will just remember that how I submitted my first patch. So it was a false negative. It was not a bug at all. And I submitted it and I felt, oh, so what I have done. But that was the barrier, right? So once that was broken, then I was more open and I felt more confident there. So it is okay to make some mistake, but just be polite. If someone says that no, it is not a bug. So just don't be sad about it. Okay, so there are some difficult bugs as well. For example, Google has this SysWat. It is a system called fuzzer. So it just files off tons of different syscalls and ioctals and it finds some crash. If there is some crash, it will try to reproduce it and it will generate an email that maybe these syscalls were executed and this bug got hit, so it cannot get crashed. So it will just generate a report. Sometimes it has a reproducer as well. Sometimes the reproducer is not there. So you just run that, find that mail and try to debug the code from there. And it takes, as compared to the static analyzer bug, so it takes quite some time to see what's going on because the code is running. You need to check all the different loops. So, but this also gives you good practice about how you can debug the kernel and how kernel runs as well. Now, I'm just at the end of the talk and I want to share some examples. Okay, so these are some examples by which you can be a Linux kernel full-time developer. So if you just start contributing upstream, so it is the most easiest way and I would say the difficult one because so you can get a full-time job. So this would usually happen. In the last, I would say all the 30 years, this is the most common way to become a developer. And, but now this is modern times and people, they are easier way. For example, you can get some internship. For example, it can be outreachy or maybe mentorship program. And then it becomes very easier to get the job after that internship. And then there are some people who have some close-soul experience and then they want to switch to the Linux kernel. So they just start learning just like I have told you from the courses, from the LF mentorship series and then there's some analyzers, fixing some analyzer bugs. And then finally, they get a job, right? So there are several examples where people have got into Collabra, Intel, Canonical and several other companies which I don't even know. So you just start doing something and you will reach there. And definitely we are hiring. So once you get somewhere, so you should definitely try applying to us and hopefully you will be one of our collaborators someday. And thank you. If anybody has any questions, so you can ask now or maybe catch me later. Definitely you can, if you have some skills, so you can get hired without any degree. So nobody looks at your degree when you have something to show that you have the skills and you have been contributed. So making some contributions before applying, that is the best thing to do. So that would make your chances higher. So it's up to you. Just start doing now and you will get the job. I guess Collabra has several people who have not even completed their degrees or maybe they are working even before completing their degrees. So it's up to you or your contributions. There's also a virtual question. Could you talk about the mentorship program, please? I'm really interested. Is it virtual? Okay. So they have a website, LFX Mentorship by Linux Foundation, and that has all the details. So I'm not sure, I've not checked recently if they have some open mentorship applications process right now, but you should start checking it and then just try to apply. So the process is very simple and they also have some wiki with all the smaller details. And the most important thing is that so mentorship can be your shortcut and you can just complete that, learn a lot of different things at a very high pace. But even if you don't get there, just start doing things like I have explained, other things. For example, start from that initial course, then watch LF Live, and then start contributing. So mentorship is just a kind of a shortcut. It's my personal thinking. Is there any other question? Okay. Thank you very much. Thank you.