I wouldn't recommend playing with the code to ubuntu users that barely know what a terminal is. For "absolute beginners" and "novice enthusiasts" I usually recommend to start by installing Gentoo following its handbook. The Gentoo handbook is a very good learning source for beginners and it guides you through a bit of everything. And because you have to configure most of the system and compile (almost) everything from scratch, you start to get a feeling of the system as a whole. This should take a few weeks for absolute beginners. If they survive the Gentoo battle, then the dumb drivers from LDD are good next steps, because now the hacker enthusiast have some experience with (re-)compiling the kernel and with using the command line to figure out how to find causes of his problems.
On Tue, Sep 3, 2013 at 5:37 PM, Arlie Stephens <arlie@xxxxxxxxxxxx> wrote:
On Sep 03 2013, Robert P. J. Day wrote:
> i'm going to jump in here since i see this question annoyingly
> frequently -- "i'm new to the kernel and i want to get involved and
> write code; how do i start?" to be blunt, if that's your starting
> point, you're not ready to write code for the kernel. period.
It seems to me there are a lot of reasons to ask this question, and
it's not a great idea for the kernel (in the long run) to discourage
newbies to the extent that "new blood" never comes in.
> as vladis quite correctly points out, gone are the days when there
> was piles of simple coding to be done. most of the kernel is well
> established, solid and stable, and ongoing development is *very*
> advanced. in other words, there's less and less room for enthusiastic
> beginners. but there's more.
I think you can expect it will be a while before you write anything
that's remotely worth upstreaming, except possibly drivers for obscure
hardware or possibly minor bug fixes, for bug(s) that happen to
replicate on your own system.
That doesn't mean you can't learn. In fact, it's even possible to get
paid to learn. At the moment, I'm working in a shop that ships appliances
that include linux. My job is to investigate whatever goes squirrely
at the kernel level, and make the system play nicely with our latest
hardware. Since we're running an older version of linux, the most
common result of these investigations is to find and merge an upstream
patch. Another common result is to find a bug in one of our own kernel
modules. Next most likely is a configuration issue. If none of these
apply, we get to write the patch ourselves. If the problem affects
recent kernels, we'll also submit it to LKML etc. I haven't personally
had cause to submit anything yet.
> it's somewhat absurd to say you want to get involved in kernel
> development, then ask *others* where you should start. it's like
> saying, "i really want to write a book, but i have no idea what i
> should write about. can you give me some ideas for a plot? and
> characters? and possibly an ending?" yes, it's that silly.
I tend to take this as a request for suggestions for learning
exercises, or even simply where to start learning. It's a big and
complex system, with layers and layers of details to deal with. I
doubt "where do I start" is really a variant of "what should I
develop?" (The right answer to that is pretty simple - whatever you
want to have available, that isn't available ;-))
>
> if you're a beginner, then the obvious starting point is to start
> reading. and read. and read. and when you're done reading, read some
> more. and slowly, you'll figure out what interests you most. and
> that's where you then spend your time.
Personally, I'd suggest playing with the code. Don't expect to produce
something upstreamable. My latest ludicrous activity was reinventing
part of "ftrace" ;-) I didn't mean to do that, I was just trying to
get a record of [..things ftrace could have gotten me..] on a repeatedly
failing system. Net result - I learnt more than I would have if I'd
just used ftrace, and my coworkers are being patient about the time
it's taking me to solve the original crash. (Fortunately I found a
problem with the kernel configuration we were using for that
appliance, as a side effect of my experiments, so the effort wasn't
completely wasted ;-) And now I know about ftrace, and have ideas
about extending it to do the next batch of things I want.)
>
> rday
>
--
Arlie
(Arlie Stephens arlie@xxxxxxxxxxxx)
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Henrique Rodrigues
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies