Becoming a Linux Kernel Programmer? 52
Young Grasshoopa asks: "In my 6 years of IT life, I've been a sys admin, perl programmer, and a config. mgmt. engineer. I've recently learned programming in C, and somehow ended up learning a bit of Linux Kernel programming as well. I now have developed a strong motivation to become a Linux kernel developer, but given my background, I am not sure how to approach companies or Open Source Project groups. I ask all those who were in a similar situation - how do you become a full-time kernel developer?"
start for free (Score:5, Insightful)
If your code isn't accepted into Linus' kernel, why should they pay you? I'm sure there's a lkml faq that has answers for the first step. Finding an employer who will pay you... I understand Red Hat will have an opening, now that AC is taking a sabbatical:)
Re:start for free (Score:1, Insightful)
why even try to be accepted!
why dont you just fork. if your patches and fixes are good, people will be comming to you. if they arn't then well you should'nt be getting a change to put them in anyways.
remember! kernel developers are not doing us a favour, they do what they like and what make them happy. you do the same! and you are a kernel developer.
that is the ~BEAUTY~ of OPEN SOURCE no controls!
Re:start for free (Score:5, Informative)
You make it sound so impossible. However...
Today's Going Pay Rate for a Kernel Developer:
* Excellent [dice.com]
* $110K [dice.com]
* Market
* Open [dice.com]
* $110K-$125K [dice.com]
* Competetive [dice.com]
* Open [dice.com]
* Competetive [dice.com]
* Market [dice.com]
* $80K-$95K [dice.com]
And that's just 10 of 56. And look at some of the salaries! And look at the fact that, it would seem, Linux is beginning to be used everywhere. Therefore, it would seem one might look forward to a long, lucrative career as a Kernel hack. No?
Re:start for free (Score:2)
Oh yea, they did.
Re:start for free (Score:2)
That's funny. So the job I just got from a Dice posting is just imaginary?
Hmmmm. The money I earn spends the same. Bankruptcy or not, Dice works for me!
Re:start for free (Score:1)
Doesn't sound odd to me. IANALKD (I am not a Linux kernel developer, since I just made up the acronym) but I spent many years as a sysprog on mainframe (non-Unix) operating systems. My point is that this kind of thing should be what you do for fun, and if someone wants to pay you for it then you are a very lucky individual.
The thing to do is to write the best code you can on a couple of projects, put them to one side for 3 months or so, then take another critical look at
Have you considered checking (Score:5, Informative)
KernelNewbies [kernelnewbies.org]?
If you have, you may want to consider starting out as a kernel janitor (basically doing assloads of grunt work to build a name for yourself).
Re:Have you considered checking (Score:2)
If you want to learn about the kernel, you're not alone. There are a few thousand people out there willing to learn about the kernel with you...
Re:Have you considered checking (Score:3, Insightful)
I am a coder for a MUD. I started out doing the same thing the parent post talks about. I did grunt work. Small bug fixes, small improvements, minor tweaking of here and there. I took any project that came up, even those that nobody wanted. I had the C skills, but had no name made for myself with them. As time went on, I took on bigger and bigger projects and got promoted up the ranks. Now I
Kernel Development (Score:5, Informative)
I would consider myself a kernel developer at this stage, even before my driver is included in the mainstream kernel versions.
It sounds like you are at this stage already, so are you actually asking "How do I get a driver included in the kernel as distributed?". Well I think the answer to that is to keep submitting it to the maintainer of the relevant kernel. Things like revelance, and especially quality are important factors too.
For anyone at an earlier stage, perhaps "normal" programmers who need to learn how it all works in the kernel, I have (reccomend is too strong a word, as I have only read these 2 books on the topic) read 2 OReilly books.
Understanding the Linux Kernel, 2nd Edition [oreilly.com] and Linux Device Drivers, 2nd Edition [oreilly.com]
Of course you should also be on the linux kernel mailing list [lkml.org]
And the rest is dependant on exactly you want to add to the kernel.
Re:Kernel Development (Score:4, Insightful)
To me it sounds like Young Grasshoopa wants to be a kernel developer because [s]he would like to be a kernel developer, not because they have a requirement for features no-one else is working on.
In which case I would think the first thing [s]he should do is get themselves a purpose. Or, as others have suggested, become a janitor or documentation writer.
Not that I know what I'm talking about as I'm not a kernel hacker, but I acknowledge that there would be a certain coolness about being one.
Motivation? (Score:4, Insightful)
At my POE, we are planning to rewrite a lot of stuff real soon now; when we do so, we intend to create a LOT of generic, reusable components a) for our own benefit, naturally and b) so we can contribute (the now not-so-proprietary) code back to the community, because essentially, without Free Software, we would not be able to operate (and trying to convince the boss to give money is futile
My point is, simply wanting to contribute back to the community that many of us have benefitted so much from is motivation enough; why would you suggest that someone only contribute when they have a personal need for a feature set? Isn't that sort of selfish? And so what if someone just wants to contribute for "geek points" or ego, or whatever; their code shouldn't make it into the kernel unless it is up to snuff, so to speak, so who the hell cares what their motivation is?
Re:Motivation? (Score:2)
Re:Motivation? (Score:2)
So give the guy a suggestion, if you have one, to channel his aimless enthusiasm into something more pragmatic.
That is really the question he was asking, sort of
Here's a way... (Score:5, Insightful)
to start as a part time kernel developer.
find something wrong.
fix it.
find who's in charge of that code.
send it to them.
if there's not anyone,
contact one of the high mucky-mucks,
and let em know.
maybe the maintainer will be you.
Re:Here's a way... (Score:2)
Clarification (Score:2)
Re:A word of advice (Score:3, Insightful)
Re:A word of advice (Score:4, Interesting)
OS design and IT work still solve technical problems - but the deeper ones such as OS design are a lot less visible to the pointy-haired-bosses than the "my printer doesn't work" ones. Therefore they're a lot harder to get $$$ for in general.
Having written an OS (as a toy back in '96), it's not that amazingly glamorous, there's a lot of painstakingly detailed work.
Re:A word of advice (Score:1)
Re:A word of advice (Score:1)
getting acquanted (Score:5, Interesting)
Just a thought,
bmac
Peace be with you all.
Manual
LKJP (Score:4, Informative)
http://sourceforge.net/projects/kernel-janitor
I'd go for hardware companies (Score:5, Interesting)
The first one being embedded systems. A few friends have already done that. There are lots of companies making their own hardware devices: firewalls, toasters, gadgets, etc. Linux is a popular OS for that market and you're likely to touch different parts of the kernel.
The other market is device drivers hardware (Printers, webcams, network cards, joysticks, etc
Good luck !
---
If you're not living on the edge, you're taking up space in the middle
Do something (Score:4, Interesting)
Kernel Hacking How-To (Score:2, Funny)
Now, I've never met or know any kernel hackers, so the points above are just wild guesses... ;)
Re: (Score:1)
Prove your sk33lz (Score:4, Informative)
Getting paid to develop low level kernel functions is probably the hardest thing to do. Partly because it's just very challanging programing. In fact a lot of it is less programing and more mathematics. If you haven't taken a class in Discrete Mathematics and done well, it's probably not for you. You may still be able to handle low level hardware interface issues, but forget about coming up with any brilliant new VM algorithms. It's also hard to get a job doing that because companies know that very few people on Earth can do it consistently well. Also, most companies don't see a direct benefit from it and therefor don't care since they can't see past their nose. They don't care that Linux will have 0(1) scheduling in two years if it doesn't increase sales tomorrow. This type of kernel development is typically bleeding edge and reserved for super-geniouses with a vision.
The easier way to get into kernel programming is probably driver development. There are a lot of companies that design computer hardware, and (hopefully) they'd all like to have Linux drivers for their products. Drivers are relatively easy to develop (once you know how), they all have a lot in common and there's a pretty good body of driver source code you can work from, and a large body of theory available in text books and whatnot. Writing everyday drivers typically isn't bleeding edge work and can be performed by your average sub-genious.
Either way, getting a job in the computer industry is hard right now. It never hurts to apply for jobs, but your odds of actually getting one will be a whole hell of a lot better if you have some kind of programming portfolio you can use to show off your stuff. Companies will be a lot more likely to hire a tried and true kernel programmer than a wet-behind-the-ears newb. So I recomend you get friendly with some of the kernel maintaners, reverse engineer some hardware, or pick a piece of the kernel and just do some work on it. Produce something good and then you can show it off when you get interviewed. You can't buy that kind of credential.
ESR's papers (Score:1)
-Nick
Exactly like any other open source project (Score:4, Informative)
You get into the projects in exactly the same way: start off doing some small useful things (docs, janitor work, UI design, whatever) and then sooner or later you'll inevitably find yourself maintaining a driver or whatever. Next thing you're making changes to sub system APIs, and you work from there.
There's no magic and there is no cabal.
If you're asking about specific organisations to help you on the way in, the other posters have already mentioned kernel janitors and kernel newbies, both of which are good.
I became a kernel hacker through a rather unusual route: my M.Sc. supervisor spotted missing functionality [sf.net] and suggested I had a crack at it.
Re:Exactly like any other open source project (Score:1)
You forgot to mention a couple stages:
Start with drivers (Score:5, Informative)
A while ago when I was trying out a new kernel version I saw that one of the cards I had did not compile well. I dug into the code and saw a function name change was all that was required. I had to tweak another kernel a little to get it to compile under a new gcc version. No it didnt run well but it did compile and boot.
Just exploring like this and reading the kernel hackers guide driver guide and other things will give you a good handle on the internals, at least from the drivers perspective. Several month of kernel tweaking later, the vm, scheduler and the other stuff will become clear as you gain interest. However the market will be biggest for kernel ports to new architectures and drivers for newer network adapters. Keep your skills sharp there, build a portfolio and surf dice.com regularly.
How to become a kernel programmer (Score:1, Funny)
Why do anything? (Score:4, Insightful)
If it's useful and stable enough to be of benefit to the linux users at large, perhaps you could then lobby to have it put in the base kernel. One trick would simply be to find out a new technology or popular device that is coming out and create a decent driver module for it...
Other kernels (Score:3, Interesting)
The official GNU/Hurd [gnu.org] page.
The help-hurd [gnu.org] mailing list archive.
Re:Other kernels (Score:3, Interesting)
If you don't want to muck about in the linux kernel you can also look at a lot of the application code that is floating around. Gnumeric, GIMP, perl, MySQL, apache etc. Once again find something that needs doing and star
Re:Other kernels (Score:2)
Hurd may have ideas that Linux and BSD don't but when will it be ready to use in a mission critical setting? The truth of the matter is that the developers who know kernels well are doing linux and BSD.