r/kernel • u/Adventurous-Oil1749 • 6d ago
[Stupid Question] How do I start contributing ?
What I know:
1. How TLB's work and ways of handling TLB misses
2. Paging and faults and demands
3. Swap
4. NICs and how ether buffers are loaded into kernel.
So, How do I find what do I work on. I am fairly good at C and Rust.
Do I look at syzbot and pick some easy issues from there ? Also I am particularly interested in the memory management subsystem, because alot of commits I see are from people working in arm etc working on their hardware integrations.
I do have set the email and the git workflow.
Thank You. And sorry if this question has been asked multiple times(which I know it probably is).
6
u/invisibleeagle0 6d ago
Usually people start by contributing something which affects them and is important to them. You'll be unlikely to get anywhere by just picking at some random subsystem.
1
u/groot_user 6d ago
I have heard 3rd party drivers are way to get started but you may need hardware. Hope I find bandwidth some day
2
u/marjinal1st 5d ago
Start with staging drivers. Do a few cleanups (typos, renamings, basic checkpatch issues etc.), send patches, get replies, send revisions => get comfortable with the technical bureaucracy of the LKML. Trust me, this is not trivial and also it's more important than people think.
Also read mail lists, observe what gets merged, what does not, how maintainers interact with people. Each subsystem is maintained differently, some welcomes newbies, basic patches, some does not.
To decide what to work on: it depends. If you are a security researcher, you may look/browse for issues, detected by AI/automation platforms (coverity, sashiko, etc), or manual tool based scans.
If not: pick a driver, get obsessed with it. Read old patches, new unmerged patches, try to find issues. Compare the driver with a similar driver, then get comfortable with that class of drivers. (e.g. you pick e1000 NIC to study, then e1000e, then r8169) Also it would be best to work on a driver which you have hardware for.
10
u/spatulari 6d ago
If you mean contribute to the kernel, well, I doubt that you should immediately try to improve paging, because it isnt just hard, but many people (no offense) better than you with decades of experience have already optimized it a lot. Id try to tackle some good first issues. If you literally meant how to contribute then fork it, clone the fork, make sure you have everything needed and that it compiles and then start writing code. Id suggest studying it at first since its a massive codebase