Round 6 (June 2013) OPW Linux kernel projects
After being accepted into the program, OPW interns worked on real-world kernel projects, ranging from parallelizing the x86 boot process to updating TTY drivers that were created in 2005 and getting them merged into the staging tree. During the internship period, interns worked remotely, communicating with mentors via email, IRC, phone conversations, and Google hangout. Interns had to manage their own time efficiently and learn how to seek help from their mentors and the community when they got stuck. These skills will prove invaliable as interns move into jobs working with the global Linux kernel community.
Lidza Louina worked with Greg Kroah-Hartman on improving drivers in the staging tree. Lidza started out by doing driver cleanup, then went on to merge two TTY drivers into the staging tree that had been out-of-tree since 2005. That involved getting them to compile, updating the drivers to work with new kernel API, and cleaning them up to match kernel coding style. Lidza contributed 18 patches to the 3.11 kernel, and 62 patches to the 3.12 kernel (as of 3.12-rc2).
Lisa Nguyen worked with Konrad Wilk on the Xen block layer. The goal was to extend the Xen block drivers by implementing DIF/DIX, a protocol to add extra checksum information. Lisa will work beyond her kernel internship period to get the block layer code merged. Lisa contributed 23 patches for the 3.10 and 3.11 kernels.
Xenia Ragiadakou worked with Sarah Sharp on the USB 3.0 host controller driver (xHCI). The byte-sized initial project was to eliminate the compile-time option to turn on xHCI driver debugging and use dynamic debugging instead. Xenia moved on to create trace events to lower the runtime-overhead of collecting debugging information, and allow debuggers to filter information based on what they wanted to trace. Xenia created 9 separate trace events, with more on the way for 3.12. She also fixed 3 bugs, and moved on to contribute to both the USB core and the EHCI host controller driver. Xenia contributed 100 patches to the 3.11 kernel, and 26 patches for the 3.12 kernel (as of 3.12-rc2).
Old project descriptions
The Linux kernel ethernet drivers communicate with network hardware, to give you access to the Internet. Ethernet devices can be as simple as the 1 gigabit ethernet controllers in your laptop, to much faster ethernet controllers in servers.
Interns would work on the Intel 1 gigabit ethernet driver, igb and/or ethtool, the networking configuration userspace application that works with the drivers. Wired ethernet devices supported by igb are found in some laptops and most servers, but hardware will be provided if you don't have access to it. What will be required is a PCIe slot to put the any hardware you need into and at least one other system (laptop is fine, as long as it has an RJ45 network drop) to use as a link partner and a network cable to link them.
The Linux kernel includes a USB stack that communicates with the hardware behind your USB ports (USB host controller drivers), and includes USB device drivers that talk to your USB devices (USB device drivers).
Interns would work on the USB 3.0 host controller driver. The Linux kernel USB 3.0 host driver works 10 times faster than USB 2.0 host driver. The USB 3.0 driver still needs a lot of work, so there are plenty of small bug fixes that interns can tackle. If time permits, interns could also work on small to medium features.
Another project would be to on refactoring the USB core hub.c.
Mentor: Sarah Sharp (contact info)
This part of the kernel is usually considered one of the more complex areas of the operating system. However, with a bit of guidance, it's really fascinating to see how a computer begins the journey from powered off to a blinking cursor at your login prompt.
Interns would work alongside PJ on central boot code in the Linux kernel. Today, the kernel brings CPU's online one by one in a serial fashion. We can do better. Several stages of changes are planned to go from a completely serial approach to a fully parallel approach to bringing CPU's up. Interns would work on some of these planned changes.
Mentors: Peter Waskiewicz Jr (PJ) (contact info)
Xen subsystem in Linux
The Linux kernel interfaces with the Xen hypervisor via hypercalls and also with other kernels by backend and frontend drivers. Xen's architecture allows to seperate each guest completlty and they can communicate amongst each other using backend/frontend drivers. But as any software exists there are bugs and the need to improve, cleanup and in general make it better. And also help in writting documentation on how Linux and Xen interact.
Multiple design issues with the block protocol (https://docs.google.com/document/d/1Vh5T8Z3Tx3sUEhVB0DnNDKBNiqB_ZA8Z5YVqAsCIjuI/edit). Also there are bugs in the code.
Mentors: Konrad Rzeszutek Wilk (contact info)