Size: 3272
Comment: initial version
|
← Revision 8 as of 2017-12-30 01:29:59 ⇥
Size: 4756
Comment: converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
The #kernelnewbies irc channel gets visited regularly by people who would like to get a job as a kernel hacker, but are not sure how to get such a job. There are a number of things to keep in mind and a number of things you can do to give yourself the skills you need to be more likely to get such a job. The most important thing to remember is that you need experience - but unlike other job experience, you can train yourself in your spare time. In fact, most kernel hackers started out working on the kernel as a hobby, and only later became professionals. | The #kernelnewbies irc channel gets visited regularly by people who would like to get a job as a kernel hacker, but are not sure how to get such a job. There are entry-level kernel jobs, but most often you need some experience working with Linux. |
Line 3: | Line 3: |
* Play around with Linux, try configuring new and exciting drivers, maybe get a job as a system administrator. Many of the current Linux kernel hackers have once made their living as a system administrator. In that job, you get to fix problems by trying out new software, finding and fixing bugs and trying out new features (eg. LVM) when they become available. This makes you familiar with many aspects of the Linux kernel and other parts of the Linux system. More important still, it gives you some of the problem solving skills, and patience, needed to be a kernel hacker. | First, make sure you actually want to have a job as a Linux kernel developer. Read [[KernelDevViewpoint|this page]] to get an idea of what it's like to be a kernel developer. |
Line 5: | Line 5: |
* Read the [http://lkml.org linux-kernel mailing list] and stay aware of what is going on in the Linux kernel development community. | = Linux experience = |
Line 7: | Line 7: |
* Run the very latest kernel on one of your systems. Try to compile the latest kernel snapshot and reports bugs with it to the linux-kernel mailing list. When a bugfix is created, apply the bugfix patch to your system and confirm that the bug is indeed fixed. If you really get into this game, you will find a number of fun patches on the linux-kernel mailing list and apply those to your kernel. Working out the patch conflicts between multiple patches gives you the experience needed to move on. Once you have a handful of patches in your own patch set, to carry around from kernel to kernel, you could publish your own kernel patchset and try to fix bugs in it that other people find. | To get a job in Linux, you'll need to be experienced in using Linux. Try out a Linux distribution on your home machine(s) and just play around with it. If you're a student, use Linux machines at your university, or help out with maintaining the university Linux/Unix labs. Knowing command line basics will help you get a job. Most importantly, you'll need to know how to [[KernelBuild|build and install]] your own kernel. |
Line 9: | Line 9: |
* Help the [http://kerneljanitors.org/ Kernel janitors] project, making easy modifications and cleanups to the Linux kernel source code, together with people who can explain you why those changes are needed. This helps you get familiar with the Linux kernel source code, and at the same time you do something useful for the Linux community. | It can help (but isn't necessary) to have background as a Linux system admin. In that job, you get to fix problems by trying out new software, finding and fixing bugs and trying out new features (eg. LVM) when they become available. This makes you familiar with many aspects of the Linux kernel and other parts of the Linux system. More important still, it gives you some of the problem solving skills, and patience, needed to be a kernel hacker. |
Line 11: | Line 11: |
* Find bug reports on the linux-kernel mailing list or the [http://bugzilla.kernel.org/ Kernel Bug Tracker] and help fix them. In the beginning you may be restricted to helping reproduce the bug and tracking down what is roughly the cause of a bug, but after a while you will become familiar with the source code and will be able to fix bugs yourself. | = Debugging experience = |
Line 13: | Line 13: |
* Once you are a proficient bug fixer, chances are you have become familiar with one or more of the Linux kernel subsystems. You will be able to help with new developments in this kernel subsystem and people will start recognizing your name. This would be a good time to start applying for that kernel hacker job, since people are already running your source code. | It's also helpful if you can show you have experience reporting Linux kernel bugs and testing fixes. One way to help out is to [[KernelBuild|build]] the latest kernel, test it, and [[FoundBug|report any issues]]. That way, you'll get a feel for how kernel developers triage bugs, along with what sort of information they need to debug the system. |
Line 15: | Line 15: |
Don't be disappointed by the fact that this process can take several years - all the steps involved with getting the needed experience are fun and useful, and you may even run into an even more fun career choice along the way! | Try to stay objective about what the cause of the bug is when you report a bug. Report all information and debugging you did first, without trying to attribute what the cause is. Then state what you think the problem is, and possibly post a patch. That way you won't bias the maintainer from seeing what the real root cause of the bug is. = Kernel development experience = When applying for entry-level Linux kernel jobs, you will get major bonus points if one of your patches has been accepted into the mainline kernel. However, note that simply getting spelling fix patches in the kernel isn't enough. Your potential employer will be looking at the Linux kernel git history, and they will be able to tell if your submitted patches have any meat to them. The best way to get a job in kernel development is to spend some spare time (or get a professor to give you credit/grants for) hacking on the Linux kernel. If you'd like to try that, see the [[StartKernelHacking|getting started in kernel hacking]] page. = Network = The best way to get a job as a Linux kernel developer is to network with other Linux professionals. Try attending your local open source user groups, even if they aren't Linux specific. Go to Linux and open source conferences, and stay after talks to ask the presenters questions. This gives you an opportunity to talk to developers as you walk out of the room, and meet any of their co-workers in the hallway after wards. Once you learn about a particular open source project or kernel subsystem, start giving talks about it, first at local user or student groups, and then at open source conferences. Being a presenter allows you to more easily network with other presenters, and builds up your credibility. = Work on other open source projects = It's useful to work on other open source projects in your spare time. If you feel you can't contribute to the kernel yet, you can still work on personal projects and publish them on github or sourceforge. That way, future employers can see your coding style, how meticuluous your code is, and how you debug and fix bugs. It also shows incentive on your part to dive into a new area you're unfamiliar with. If you're a student, ask your professors if they have Linux or open source projects you can work on. You may be able to get paid for working on those projects, or get course credit. Those projects give you something to put on your resume when you apply for jobs. Applying to [[https://developers.google.com/open-source/soc/|Google Summer of Code]] is also a good idea, even if it's not for a Linux kernel project. = Get a degree = Unfortunately, many of the top Linux employers will not hire you unless you have a four-year degree. It's most helpful to have a degree in Computer Science or Computer Engineering, but other engineering fields may also be accepted. You may be able to get consulting jobs, or a part-time job without a degree, but it's very hard to get a full-time Linux kernel job without a degree. |
The #kernelnewbies irc channel gets visited regularly by people who would like to get a job as a kernel hacker, but are not sure how to get such a job. There are entry-level kernel jobs, but most often you need some experience working with Linux.
First, make sure you actually want to have a job as a Linux kernel developer. Read this page to get an idea of what it's like to be a kernel developer.
Linux experience
To get a job in Linux, you'll need to be experienced in using Linux. Try out a Linux distribution on your home machine(s) and just play around with it. If you're a student, use Linux machines at your university, or help out with maintaining the university Linux/Unix labs. Knowing command line basics will help you get a job. Most importantly, you'll need to know how to build and install your own kernel.
It can help (but isn't necessary) to have background as a Linux system admin. In that job, you get to fix problems by trying out new software, finding and fixing bugs and trying out new features (eg. LVM) when they become available. This makes you familiar with many aspects of the Linux kernel and other parts of the Linux system. More important still, it gives you some of the problem solving skills, and patience, needed to be a kernel hacker.
Debugging experience
It's also helpful if you can show you have experience reporting Linux kernel bugs and testing fixes. One way to help out is to build the latest kernel, test it, and report any issues. That way, you'll get a feel for how kernel developers triage bugs, along with what sort of information they need to debug the system.
Try to stay objective about what the cause of the bug is when you report a bug. Report all information and debugging you did first, without trying to attribute what the cause is. Then state what you think the problem is, and possibly post a patch. That way you won't bias the maintainer from seeing what the real root cause of the bug is.
Kernel development experience
When applying for entry-level Linux kernel jobs, you will get major bonus points if one of your patches has been accepted into the mainline kernel. However, note that simply getting spelling fix patches in the kernel isn't enough. Your potential employer will be looking at the Linux kernel git history, and they will be able to tell if your submitted patches have any meat to them.
The best way to get a job in kernel development is to spend some spare time (or get a professor to give you credit/grants for) hacking on the Linux kernel. If you'd like to try that, see the getting started in kernel hacking page.
Network
The best way to get a job as a Linux kernel developer is to network with other Linux professionals. Try attending your local open source user groups, even if they aren't Linux specific. Go to Linux and open source conferences, and stay after talks to ask the presenters questions. This gives you an opportunity to talk to developers as you walk out of the room, and meet any of their co-workers in the hallway after wards.
Once you learn about a particular open source project or kernel subsystem, start giving talks about it, first at local user or student groups, and then at open source conferences. Being a presenter allows you to more easily network with other presenters, and builds up your credibility.
Work on other open source projects
It's useful to work on other open source projects in your spare time. If you feel you can't contribute to the kernel yet, you can still work on personal projects and publish them on github or sourceforge. That way, future employers can see your coding style, how meticuluous your code is, and how you debug and fix bugs. It also shows incentive on your part to dive into a new area you're unfamiliar with.
If you're a student, ask your professors if they have Linux or open source projects you can work on. You may be able to get paid for working on those projects, or get course credit. Those projects give you something to put on your resume when you apply for jobs. Applying to Google Summer of Code is also a good idea, even if it's not for a Linux kernel project.
Get a degree
Unfortunately, many of the top Linux employers will not hire you unless you have a four-year degree. It's most helpful to have a degree in Computer Science or Computer Engineering, but other engineering fields may also be accepted. You may be able to get consulting jobs, or a part-time job without a degree, but it's very hard to get a full-time Linux kernel job without a degree.