3 ms·
It's not that getting started with Linux kernel is inherently hard. It's just what a lot of people want to have as "getting started with Linux kernel" (see moti
by andrey_utkin 10y ago
It's not that getting started with Linux kernel is inherently hard. It's just what a lot of people want to have as "getting started with Linux kernel" (see motivation part of this article) is hard, but that's not about Linux kernel itself. Some people get this wrong and start thinking that Linux kernel or its community itself is the problem (Maybe kerneldevs and Linus himself are aggressive picky bullies unfriendly to newcomers? Maybe you should ditch C and rewrite kernel in better language? Maybe Linux development process is wrong and they should change it? Maybe Linux maintenance organization structure is bad? Maybe ...)
There is also common frustration about friction at getting your patch accepted. But I believe in most cases maintainers are right and there are some issues to fix in any patch, so author has something to do on it more. Maintainers have reasons to care - they are who improve subsystems API and modify ALL drivers in the tree, so they'd better have all drivers as perfect as possible.
> Are you interested in knowing how operating systems work in general? Do you want to know how parts of Linux specifically work?
An undertaking which a lot of novices take for reasons unknown to me. I was always fine without this.
I follow #kernelnewbies IRC channel (good source of help, BTW) and see which questions are being asked. Surprisingly many novices decide to start with understanding kernel codebase in its entirety. Such people should just understand that their aim is inherently hard. Any large codebase has non-obvious and/or complex things, a lot of indirection, etc.
- I don't understand how this internal kernal mechanism works, please explain!
- It's complicated for outright explanation. If in trouble, read the code. And just trust that it works. What are you trying to achieve?
- I'm just studying how kernel works.
> Is your hardware broken?
Regarding device drivers, a lot of opportunities are missing because most of devices don't have datasheets good enough to allow third-side developer to make a driver. So you just have no way to know how to give commands to your piece of hardware. It's a shame, but this shame is not on Linux, it is on manufacturers. Even if you are stubborn enough to get in touch with manufacturer, you may end up with something like
- The development team was dismissed N years ago and people don't work here anymore, so nobody to ask, but if you want NNNNNNN pieces order, we can make new research team for this.
You can reverse-engineer something, of course, but as somebody having experience of reverse-engineering heavily obfuscated _sources_ of Linux v2.6 driver, I'd say the amount of wasted time and frustrations is tremendous.
> Do you just want to make an Open Source contribution? Do you want a high five?
Oh yeah, kernel is a fantastically reputable place to have open source contribution. Your bros will respect you as coolest guy ever, your girlfriend/boyfriend will praise you as superhero, hiring managers will want you. Because they don't know that contributing to kernel is not THAT hard.
- vonmoltke 10y ago>> Are you interested in knowing how operating systems work in general? Do you want to know how parts of Linux specifically work? > An undertaking which a lot of novices take for reasons unknown to me. I was always fine without this. I'm probably atypical, but my motivation for wanting to get involved is that many of the jobs I really want demand Linux kernel development experience. I have good systems-level experience at all levels except the kernel, and I want to fill that hole.
- andrey_utkin 10y agoGood luck, but in my opinion there's very little room for improvements in core code which could be found and undertaken by newcomer. It is more realistic to get first kernel-related experience by working on drivers - they tend to be much less perfect. For drivers work, all you need is usage of provided API and communication with maintainers and mentors. That's my point.