Today I start my Outreachy internship, I feel both excited and nervous as to what to expect. I originally heard about Outreachy 2 months ago and I decided this would be my next mission, to become an Outreachy intern. After a long 2 months I was accepted into the may 2019 Outreachy round as an intern for the Linux Kernel. I’ll be working with the maintainers for the Microsoft Hyper-V drivers in the Linux kernel. I think it’ll be a great opportunity to learn not just about the kernel drivers, but also how a team of developers work together to improve and implement new features to an open source project.
The project that I will be working on will help to improve the quality of the Hyper-V drivers in the Linux kernel. The work includes adding a minor new feature to the Hyper-V SCSI driver, with the main focus being to implement a Virtual Machine Bus “tap” infrastructure that injects failures into the VMBUS messages, to enhance fuzz testing in Hyper-V drivers.
I’ve actually been in contact with my mentor for about a month and a half and I think this was crucial in my selection as an intern. I remember being very nervous before I sent the initial email, but I figured what’s the worse that can happen? So After building the courage I sent an email asking for more information about the project. On the project page it was said that the mentor preferred someone one with C programming experience at the level of either, someone who has taken a class on it in school or who has some experience with it. For me this was one of the main reasons I gravitated towards it, as I had just finished reading through the book The C Programming Language written by Brian Kernighan and Dennis Ritchie.
After a while the mentor got back to me and described the project and what they wanted to accomplished. This was great as it gave me a starting point in figuring out what the project was really about. They then advised me to read the code for one of the Hyper-V drivers and it was after this that I made a 2 page PDF on my thoughts. I also made a high level design for what I believed the structure of the driver/communication would be like. I think this went a long way in showing my interest and enthusiasm about the project and most importantly the mentor liked it.
I should say that during this time, I had already began submitting kernel patches, however these patches were very simple patches e.g.
if (res != NULL) // *Not OK* changing this comparison to "NULL" if (res) // *OK* to compare to the actual value, to // match the Linux Kernel coding style.
I learned the basics of submitting kernel patches using these guides https://kernelnewbies.org/FirstKernelPatch https://kernelnewbies.org/OutreachyfirstpatchSetup
Both of these websites are everything you need in order to get yourself up and running to submit your first patch. I highly recommend reading through them if you want to know how to submit a Linux Kernel patch. The only way to submit a patch is through email but it can be incredibly nerve wrecking when submitting your first patch, as you have to send it to a public mailing list. This means that everyone who is subscribed to it will see it and can criticize it or say good job. The good thing about submitting kernel patches is that the maintainers only care about the code, and they’ll let you know what can be improved and what was OK. This sense of “we’re all in this together” is what strikes me the most (in a good way) about open source projects. Everyone just wants the best for the project which also means they want you to submit good patches and to keep submitting them with the help/tips they provide for improvement. Once your patch is accepted you feel relieved and it motivates you to want to learn more about the project and to contribute more to it.
As for my past experience in coding, I took a couple Linux and operating systems classes in community college a few years ago, but I don’t have a software development background. So these are my first steps outside of personal projects, and into the world of open source development! Hopefully I come out the other end with a successful project and an even greater appreciation for open source development.
until next time…