Post

My Linux Kernel Mentorship Experience

a summary of my experience with the Linux Kernel Mentorship.

Hello! My name is Lee Beckermeyer, I’m an IT professional with 5 years of part/full-time experience. I recently had the opportunity to take part in the Linux Kernel Mentorship program. This is a blog post I wrote summarizing my experience within the program.

Why I picked the Linux Kernel

I had a couple of reasons behind why I wanted to get involved with the linux kernel, summarized below.

  1. The first reason was that I wanted to learn and grow myself.
  2. The second reason was to expand my technical skillset.
  3. The final reason was to improve my communication of hard-to-grasp technical concepts and boil them down into an easy-to-use format.

My Experience

Coming into this internship I had no experience with C, I had a minor amount of experience with C++ and had also looked into GO and Rust but have no expertise in any of those languages. I opted to dig into C with Linux as it gave me a semi-structured environment to expand my low-level programming skills. Focusing on one project enabled me to get out of the programming language debate. Instead focusing on what matters as a developer, building a great product.

I started by building out one of my personal servers as a Debian server for all of my development. Once that was done I then dug into HID devices, including learning about keymaps and how drivers are structured.

I then dug into KVM, trying to learn about how virtualization works at the low-level within Linux. This enabled me to tie in a lot of my experience as a admin/engineer to better understand the systems I work with normally.

Unfortunately, with all of this learning I forgot to actually focus on getting some commits into the code, due to time constraints in my personal life I wasn’t able to start actively digging into committing until late October.

Fortunately, around this time on discord I saw that Josef Bacik in btrfs was looking for people to help in btrfs so I opted to message him and see if I could help out. This turned out to be a great decision on my part as I wound up doing some work on a couple of red-black binary trees, specifically shortening some boilerplate, which got me all the commits I was required to do.

Now this took me a bit of time to fully figure out as I had absolutely no idea what I was doing so I wound up spinning my wheels and making a lot of really dumb mistakes, however, I persevered through it and was able to accomplish sending out the first 6 patches on the first week of December.

Finally, while working with Josef I was introduced to the idea of performance engineering, this was great as it led me to start digging into gdb, disassembling programs, and assembly as well as flamegraphs.

Next Steps

I thought this was a great opportunity as it allowed me to get into the nuts and bolts of how Linux works, it’s also useful as it enables me to practice C more, I’m currently working on part of the [ENOSPC rework] (https://github.com/btrfs/btrfs-todo/issues/5) and am planning to contribute to that pretty heavily before I fully consider myself done with this internship. Overall I really enjoyed my experience as the internship enabled me to jump into a new tech stack, learn a ton of new things, and overall improve my understanding of the ecosystem my career is in. It also is pretty great because I have a much better understanding of the fundamental systems I’m working on as well as what to do with stacktraces, coredumps, etc.

This post is licensed under CC BY 4.0 by the author.