There are many ways for people to start out in Linux kernel development. One good place to start is the [http://www.kerneljanitors.org/ Kernel Janitors] project, where you can become familiar with the Linux kernel source tree and development style by making small cleanups and bug fixes all over the tree, together with the other kernel janitors. == For Kernel Hackers == Please add suitable projects here to help Computer Science students do something useful in the time they need to spend on projects anyway. Suitable projects: * Are relatively self contained, so the code could be merged into the kernel after the student is done with the project. * Have clearly defined functionality, so the student has goals and can determine whether (s)he achieved them. * Can be of various sizes. Students need projects anywhere from 6 weeks part-time to 6 months full-time effort. * If possible, are useful to the Linux kernel. Maybe something from your own TODO list that you did not get around to? == Small Linux features == A good next step is to implement small, relatively self contained, features that the Linux kernel needs but have not been implemented yet. When you "take" such a feature, please add your name in the "Developer" column and the date you decided to take the project in the "Date taken" column. ||Project ||Summary ||Contact ||Difficulty (1-10) ||Developer ||Date taken ||Merged in || ||[:KernelProjects/rlimit64:setrlimit64/getrlimit64] ||64 bit versions of set/getrlimit, see [http://bugzilla.kernel.org/show_bug.cgi?id=5042 bug 5042] ||Andrew Morton - akpm (at) linux-foundation.org ||6 ||Narendra Prasad (narendramind (at) gmail.com) ||26-Jan-2008 || || ||/dev/random statistics ||interface that shows the amount of entropy generated via the interfaces per second or so and also the amount consumed || ||1 || || || || ||/PowerSaving ||power saving tweaks ||[http://linuxpowertop.org/discuss.php Powertop mailing list] ||3 ||various || || || ||/SwapoutClustering ||swap out virtually contiguous pages together ||Rik van Riel - riel (at) redhat.com ||5 ||Peter Teoh (htmldeveloper (at) gmail.com) ||15 Oct 2007 04 Nov 2007 || || ||/Mac80211Suspend ||mac80211 suspend/resume support ||Johannes Berg - johannes (at) sipsolutions.net ||5 ||Jose Ignacio Naranjo (joseignacio.naranjo (at) gmail.com) ||10 Nov 2007 || || ||["/pfiles"] ||add reporting of socket information to [http://sources.redhat.com/systemtap/wiki/WSPfiles pfiles] !SystemTap script ||Eugene Teo - eteo (at) redhat.com ||3 ||Luís Henriques - lhenriques (at) netvisao.pt ||17 Oct 2007 ||19 Jan 2008, see [http://www.kernel.sg/blog/2008/01/20/fiddling-with-pfiles-to-gather-opened-socket-information/ here] || ||/FasterRebuild ||Increase speed for a build with no updates ||Sam Ravnborg - sam (at) ravnborg.org ||5 || || || || ||/FasterRebuild2 ||Increase speed for a build which updates a single file ||Sam Ravnborg - sam (at) ravnborg.org ||? || || || || ||/MenuConfig ||Update menuconfig to a modern ncurses look & feel ||Sam Ravnborg - sam (at) ravnborg.org ||5 || || || || ||/KconfigSelectRemoval ||Allow removal of select from Kconfig files ||Jörn Engel - joern (at) logfs.org ||4 || || || || ||/Raid1ReadBalancing ||Add read balancing to RAID 1 ||Rik van Riel - riel (at) redhat.com ||4 ||Konstantin Sharlaimov - konstantin.sharlaimov (at) gmail.com ,prajith - emailprajith@gmail.com ||17 Oct 2007 || || ||/AsynchronousSystemCalls ||Make all system calls asynchronous - or at least the ones that can stall || ||5 || || || || ||["/Mac80211w"] ||mac80211 802.11w support ||Johannes Berg - johannes (at) sipsolutions.net ||4 || || || || == Larger projects == Alternatively, there are some larger projects. Again, when you "take" such a project, please add your name in the "Developer" column and the date you decided to take the project in the "Date taken" column. ||Project ||Summary ||Contact ||Difficulty (1-10) ||Developer ||Date taken ||Merged in || ||/Mac80211TestDriver ||Test mac80211 without real hardware ||Johannes Berg - johannes (at) sipsolutions.net ||depends || || || || ||/VirtRootkitBlocker ||Block rootkits using virtualization (Xen) ||Rik van Riel - riel (at) redhat.com ||7 ||prabir - android_online (at) yahoo.com ||16 Oct 2007 || || ||/VirtRootkitBlocker ||Block rootkits using virtualization (KVM) ||Rik van Riel - riel (at) redhat.com ||7 || || || ||/ResourceControl ||Better resource control ||kalium (at) gmx.de ||7 || || || || ||/SelfOptimizingBlockDevice ||Self-optimizing read-write block devices ||kalium (at) gmx.de ||7 ||Micah Gruber - micah.gruber (at) gmail.com ||19 Oct 2007 || || ||/CorrectnessProofs ||Proof that caching/buffering/transactions/syncs are handled correctly. ||kalium (at) gmx.de ||10+ || || || || ||["/Impersonation"] ||Add impersonation feature to the kernel ||Alex (dot) Slesarev (at) gmail.com ||7 || || || || ||VMware image mounter ||Being able to map different types of virtual disk formats to appear as blockdevice or as real ide/scsi device. For example, being able to mount VMware .vmdk virtual disks or use them as blockdevice. replace ancient/unstable vmware-mount.pl. See http://communities.vmware.com/message/749768 . news on 12/26/07: Apparently, it looks vmware is adressing this. Latest beta for their hosted products has a fuse based replacement for vmware-mount.pl/vmware-loop which is able to map a virtual disk to a flat file. mapping that file to a blockdevice is easy then (losetup or device-mapper) . closed source, though. ||devzero (at) web.de ||? || || || || == Projects that could use more help == Another possibility is to get involved with an existing kernel project that needs some help. Since these projects need multiple people, there is no need to claim these. ||Project ||Summary || ||[http://code.google.com/p/compcache/ Compressed Caching] ||Compressed Caching is a new level in the virtual memory hierarchy, where pages are stored in some compressed format, decreasing the number of page faults that are serviced by slow hard disks. || ||[http://www.linux1394.org/ FireWire subsystem] ||The Linux1394 project has a seemingly ever-growing to-do list of bugs and other items, ranging from small cleanups to implementation of full drivers (e.g. IP over !FireWire). If you have !FireWire hardware, working on these drivers may be a good entry into kernel hacking because most !FireWire specs are open, some even gratis. See the Wiki at linux1394.org for the to-do list and links to specifications. || ||[http://michaelblizek.homelinux.net/projects/cor/index.html Connection Oriented Routing] ||This project addresses some shortcomings (fairness, performance, privacy) of the TCP/IP Stack in mesh networks with a new layer3/4 protocol. || ---- . CategoryKernelHacking CategoryKernelProjects