When I was a teenager, around 15-16 years old, I started to learn C programming by reading the source code for the Linux kernel. Mind you, the kernel was quite a bit smaller then and quite easy to understand. For any software over 25 years old, I think it's remarkable how legible and understandable the kernel still is.
But there's no denying the kernel is somewhat more complex today. With limited programming experience, the kernel wouldn't be your first choice of code to make sense of. The discussions are on a higher level and the threshold to contribute is much higher than it once was.
Children growing up today won't learn C programming by reading the Linux kernel source code. As technology evolve, the challenges which are at a suitable level for budding programmers move around to new and different areas, at other levels of complexity.
If you don't have any way to make two computers at point A and point B talk to each other, you'd be inclined to start with establishing a physical layer for communication: get some cables and wire them up to the computers. Once you have that, the problem is largely solved. Sure, you can always improve, but by and large you have a working physical connection between the computers.
Your children will thank you for it, and move on to figuring out how to use that physical layer to actually make some data flow back and forth between the nodes. Once you have that, you move on to the next challenge, and so forth.
There will always be some for whom fixing a broken device driver in the Linux kernel is attractive enough that they get involved with contributing to it, and learn in the process. But by and large, the challenges suitable for young programmers are elsewhere to be found.
To meet that new generation of developers, we can't rely on finding them where we once were. We need to look towards what children today find as challenges. That is where we need to be, to help them meet those challenges with open tools.
And we need to adapt our thinking accordingly: we don't need free and open source software and copyleft so that the next generation can hack the Linux kernel; we need it so they can hack a flying car.
0 comments:
Post a Comment