Google Summer of Code Project List

Note to prospective students: These project proposals are meant to be a first approximation; we're looking forward to your own suggestions (even for completely new directions) and will try to integrate your ideas to make the GSoC project more interesting to all parties. Even when a proposal is very specific about the goals that must be achieved and the path that should be taken, these are always negotiable. Keep in mind that we have tried to limit the proposals on this page to those that (based on our past experience) are appropriate for the GSoC program. This is by no means a comprehensive list, original ideas or proposals based on project ideas found on other pages are very welcome.

Note to everyone else: These proposals are by no means Summer of Code specific, anyone is welcome and encouraged to adopt any of these projects at any time (just please let us know, or make a note on this page).

Legend:

Project ideas

VFS Quota System

Meta information:


Implement i386 32-bit ABI for x86_64 64-bit kernel

The idea here is to support the execution of 32 bit DragonFly binaries in 64 bit DragonFly environments, something numerous other operating systems have done. Several things must be done to support this. First, the appropriate control bits must be set to execute in 32-bit compatibility mode while in usermode instead of 64-bit mode. Second, when a system call is made from 32-bit mode a translation layer is needed to translate the system call into the 64-bit requivalent within the kernel. Third, the signal handler and trampoline code needs to operate on the 32-bit signal frame. Fourth, the 32 and 64 bit ELF loaders both have to be in the kernel at the same time, which may require some messing around with procedure names and include files since originally the source was designed to be one or the other.

There are several hundred system calls which translates to a great deal of 'grunt work' when it comes time to actually do all the translations.

Meta information:


Implement ARC algorithm extension for the vnode free list

Meta information:


Make DragonFly NUMA-aware

Meta information:


Port valgrind to DragonFlyBSD

Valgrind is a very useful tool on a system like DragonFly that's under heavy development. Since valgrind is very target specific, a student doing the port will have to get acquainted with many low level details of the system libraries and the user<->kernel interface (system calls, signal delivery, threading...). This is a project that should appeal to aspiring systems programmers. Ideally, we would want the port to be usable with vkernel processes, thus enabling complex checking of the core kernel code.

The goal of this project is to port valgrind to the DragonFlyBSD platform so that at least the memcheck tool runs sufficiently well to be useful. This is in itself a challenging task. If time remains, the student should try to get at least a trivial valgrind tool to work on a vkernel process.

Meta information:


Adapt pkgsrc to create a package system with dependency independence.

Meta information:


Implement virtio drivers on DragonFly to speed up DragonFly as a KVM guest

As virtualization is coming more and more and KVM will be a strong player in that field, we want DragonFly to have top-notch support for this virtualization platform. For this purpose, we'd like to have a virtio-based implementation of a paravirtualized disk and network driver. virtio is an abstraction to a ring buffer that is shared between the host and the guest. On top of this abstraction, one can build a variety of paravirtualized devices, as specified in virtio-spec.

The goal of this project is to create a virtio-ring implementation and then to implement drivers for the network and block devices described in the specification linked to above. This is a great project for a student who wants to get experience writing (real-world, high-performance) device drivers without having to deal with the quirks of real hardware.

Meta information:


Port PUFFS from FreeBSD/NetBSD

Meta information:


Make vkernels checkpointable

Meta information:


HAMMER compression

Doing compression would require flagging the data record as being compressed and also require double-buffering since the buffer cache buffer associated with the uncompressed data might have holes in it and otherwise referenced by user programs and cannot serve as a buffer for in-place compression or decompression.

The direct read / direct write mechanic would almost certainly have to be disabled for compressed buffers and the small-data zone would probably have to be used (the large-data zone is designed only for use with 16K or 64K buffers).

Meta information:


Port usb4bsd

Meta information:


Userland System V Shared Memory / Semaphore / Message Queue implementation

Meta information:


Update our interrupt routing and PCI code

Meta information:


DragonFly history access for Gnome/KDE

Meta information:


Create a Samba VFS plugin to expose Hammer history

Meta information:


Port Hyper-V Linux Integration components to DragonFly

Meta information:


Implement more dm targets

Meta information:


Implement a new unionfs

Meta information:


Improve compatibility of libdevattr with Linux' libudev

Meta information:


Implement further dsched disk scheduling policies

Meta information:


Implement hardware nested page table support for vkernels

Meta information:


ATA TRIM and filesystem/swap support

Access to ktr(4) buffers via shared memory

Our event tracing system, ktr(4), records interesting events in per-cpu buffers that are printed out with ktrdump(8). Currently, ktrdump uses libkvm to access these buffers, which is suboptimal. One can allow a sufficiently-privileged userspace process to map those buffers read-only and access them directly. For bonus points, design an extensible, discoverable (think reflection) mechanism that provides fast access via shared memory to data structures that the kernel chooses to expose to userland.

Meta information:


(please add)