Slashdot Mirror


Becoming a Linux Kernel Programmer?

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?"

11 of 52 comments (clear)

  1. start for free by gmhowell · · Score: 4, Insightful

    Start for free. Sure, it sounds odd, but you have to get your foot in two doors. First, the linux kernel proper. Second, a company or position that will pay you for the privilege.

    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:)

    --
    Jesus was all right but his disciples were thick and ordinary. -John Lennon
    1. Re:start for free by soloport · · Score: 4, Informative

      Finding an employer who will pay you...

      You make it sound so impossible. However...

      Today's Going Pay Rate for a Kernel Developer:
      * Excellent
      * $110K
      * Market
      * Open
      * $110K-$125K
      * Competetive
      * Open
      * Competetive
      * Market
      * $80K-$95K

      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?

  2. Have you considered checking by leviramsey · · Score: 5, Informative

    KernelNewbies?

    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).

  3. Kernel Development by kzadot · · Score: 5, Informative
    Well its a strange question to ask, normally one becomes a Kernel Developer, by having a need, usually unsupported hardware, and they write a driver for it.

    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 and Linux Device Drivers, 2nd Edition

    Of course you should also be on the linux kernel mailing list

    And the rest is dependant on exactly you want to add to the kernel.

  4. Here's a way... by Anonymous Coward · · Score: 5, Insightful

    the easiest way would be
    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.

  5. getting acquanted by bmac · · Score: 5, Interesting

    Your best bet (not that I have done this or have any inclination to do so) may be to be a part of documenting the code area(s) you are interested in working on. This will thoroughly acquaint you with the code and provide a much-needed service that may get your foot in the door.

    Just a thought,
    bmac

    Peace be with you all.
    Manual .sig generator v.1.0.

  6. LKJP by meowsqueak · · Score: 4, Informative

    The Linux Kernel Janitor Project might be a good place to start.

    http://sourceforge.net/projects/kernel-janitor

  7. Re:A word of advice by Anonymous Coward · · Score: 4, Interesting

    Nevertheless - the parent post does have a point. Kernel developing isn't going to be very lucrative. One of my friends had his contributed code accepted into the Linux kernel - for a little bit of fame, glory and geek points. I think the only mainstream OS developers that get any money these days are at Microsoft and Apple (or behind closed doors at IBM, Sun, etc).

    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.

  8. I'd go for hardware companies by snowtigger · · Score: 4, Interesting

    Assuming you want to get paid, I think there are two "easy" ways of getting to do kernel programming.

    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 ...) Companies making computer hardware need drivers for them and somebody has to code them.

    Good luck !
    ---
    If you're not living on the edge, you're taking up space in the middle

  9. Exactly like any other open source project by movement · · Score: 4, Informative
    There's nothing unique or special in Linux kernel programming as compared to hacking on, say, Mono, or KDE.

    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 and suggested I had a crack at it.

    --
    -- Remove the trailing '\0' to email me.
  10. Start with drivers by mnmn · · Score: 4, Informative

    Find a network card that is ill-supported in Linux and start working on it. See if you can find the card in used computer places and start tweaking the code.

    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.

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky