Working on existing kernels.
WHAT KERNEL CODE IS LIKE
C, with strict conventions No standard library No floating point, generally Extremely careful about memory and concurrency
WHY CONCURRENCY MATTERS SO MUCH
The kernel is interrupted and runs on many processors simultaneously.
WHAT THAT REQUIRES
Correct locking, everywhere Understanding which contexts may sleep Awareness of interrupt context restrictions
WHAT HAPPENS WHEN IT IS WRONG
Deadlocks, corruption, and faults that appear randomly.
WHAT MODULES PROVIDE
Code loaded into a running kernel, typically drivers.
WHAT THAT ENABLES
Development without rebuilding and rebooting constantly.
WHAT TO LEARN FIRST
Building the kernel The coding style, which is enforced The development and review process How to read existing subsystem code
WHAT CONTRIBUTION REQUIRES
Patches in the expected format Submission to the correct maintainers Response to review, which is direct
WHAT TO START WITH
Something small in a subsystem you use.
WHAT TO TEST ON
A virtual machine, never a machine you need.
WHAT TO EXPECT
Thorough review, and rejection of anything not meeting the standard.