gsoc2013-freebsdGoogle has chosen the 15 FreeBSD related projects below for Google Summer of Code 2013 which will start this month.

You will notice that most of the work will be around package management (ports, pkgng) and virtualisation (Xen, BHyve, VirtualBox) and file systems (FUSE, GlusterFS).

I think these are very interesting projects and will add great value to FreeBSD (10) when completed. It is probably a much greater project than can be done over the summer, but I think it would be great to see DragonFly’s HAMMER filesystem ported to FreeBSD (if possible).
Intelligent Download manager service for the Ports Collection
Student: Ambarisha | Mentor: Xin LI

The current ports infrastructure uses fetch to get distfiles. There are some drawbacks to this approach like picking the target site, duplicate downloads etc. This new design overcomes these drawbacks. [link]


XEN HVM Guest Support
Student: Bei Guan | Mentor: Justin T. Gibbs

This project optimizes the I/O performance of FreeBSD as a Xen HVM DomU. It provides a USB front-end driver and a SCSI front-end driver to FreeBSD Xen HVM DomU. With these drivers, FreeBSD DomU can access the USB and SCSI devices provided by Xen instead of that emulated by QEMU. It improves the performance of reading and writing data to the devices. Besides, this project will provide the event channel based IPI and physical interrupt delivery. They also optimize the performance of IPI and PIRQ for FreeBSD Xen HVM DomU. [link]


net80211 rate control API – 802.11n extensions
Student: Chenchong Qin | Mentor: Adrian Chadd

There is a simplistic rate control API in net80211 of FreeBSD, which lack the support of 802.11n features. 802.11n brought a 10x maximum net data rate compared to its predecessor, but, unfortunately, the hard-won rate up can be easily wasted if rate control hasn’t been properly performed. This project will extend the net80211 rate control API of FreeBSD to be 802.11n aware and be able to support multiple rate attempts. With the extended API, wireless throughput can be further improved. [link]


Port data compression services and video codecs to Capsicum
Student: Daniel Peyrolon | Mentor: Brooks Davis

During this project I will port some data compression services (bzip2,xz,zlib) and video codecs(libavcodec) to Capsicum. [link]


Qt and GTK+ Front Ends for PKGNG
Student: Justin Edward Muniz | Mentor: Eitan Adler

This project aims to actualize a GUI for advanced binary package management in FreeBSD. The recently released PKGNG utility is the foundation for this project; PackageKit will provide a friendly and intuitive user interface. The package management interface will be easy to use and understand for new FreeBSD users, while offering powerful tools to novice and advanced users. Features of this approach include automatic updates, desktop notifications, and package management within jails. [link]


Unattended encrypted kernel crash dumps
Student: Konrad WitaszczykMentor: Ed Maste

I want to improve kernel and savecore(8) to support encrypted crash dumps. I plan to use pefs as a tool to access dumps. [link]


packagekit backend for pkgng
Student: Matt Windsor | Mentor: Julien Laffaye

My proposal is to develop, test and document a PackageKit backend for pkgng, ideally with the view of being able to use an existing PackageKit frontend such as Apper to install, remove and upgrade packages on a FreeBSD system. [link]


Port GlusterFS to FreeBSD
Student: Mike Ma | Mentor: Sean Bruno

GlusterFS is an open source distributed file system that uses FUSE. It has been used in many different scenarios such as cloud computing. The code of Glusterfs relies a lot on Linux semantics, and now it’s becoming usable on NetBSD since NetBSD 6.0. Right now, GlusterFS won’t compile on FreeBSD. In this project, I’ll port GlusterFS and make it fully work on FreeBSD. [link]


Student: Neeraj | Mentor: Pedro Giffuni

1. Implement the FIFO interface (VOP_MKNOD()) : implementing this function in library so that one could be able to create fifo file and other kind of file also (special file also) 2. Run the appropriate unit tests in libfuse to test functionality in (1) . If the unit tests don’t exist in libfuse, then write unit tests for it. 3. Implement DTrace provider for FUSE : i would implement DTrace probes as a debugger tool in FUSE. with this add on in FUSE , one could be able to debug easily what is going on in FUSE. 4. Test with fsx: Writing test cases and test FreeBSD kernel and any other file system fsx. 5. Implement the kernel functionality to upgrade FreeBSD fuse.


VirtualBox shared folder support for FreeBSD guests
Student: Oleksandr | Mentor: Bernhard Fröhlich

VirtualBox is very popular virtualization product which supports a large number of operating systems. And also has many other features, one of main is “share folders”. It is used to transfer files using only internal resources of the system, without network connection. FreeBSD does’t have support this features with guests OS,and it is uncomfortable when using VirtualBox, that’s why this project is very useful for users and interesting to develop for me. [link]


Write new features for Capsicum
Student: oshogbo | Mentor: Pawel Jakub Dawidek

During this project I will write new features for Capsicum and I will also port fetch services to use Capsicum. [link]


USB device passthrough support on BHyVe
Student: Takuya ASADA | Mentor: Edward Tomasz Napiera?a

Support USB device passthrough on BHyVe, to make BHyVe more useful for users. [link]


PkgNG pluggable solver framework
Student: Vsevolod Stakhov | Mentor: bapt

PkgNG is the novel package management system designed for using in *BSD systems in conjunction with FreeBSD ports. Currently pkgng uses its own solver, however, it misses important features, such as alternatives logic, advanced con?ict resolving and provide/require logic. Furthermore, there are numerous researches related to solver algorithms and pkgng should provide pluggable interface for such solvers and eventually select an optimal one. So the main goal of this project is to design and implement pluggable API for pkgng solver that allows to use experimental solvers with fallback to default solver if there are no external solvers. [link]


AHCI device model in userspace for bhyve
Student: Zhixiang Yu | Mentor: Alexander Motin

Currently bhyve only supports virtio disk for the guest’s block device. This project will add AHCI device emulation to bhyve so that we can emulate normal cdroms and disks. This project will benefit bhyve a lot. First of all, since AHCI is widely supported in various Operating Systems, bhyve can support other nonproprietary and proprietary guest OSs without the virtio disk driver in those OSs. Secondly, this project will make it possible to install a GENERIC system from a emulated cdrom device. [link]


BHyVe suspend/resume feature
Student: ?? ?? (Iori YONEJI) | Mentor: Neel Natu
suspend/resume, a feature to save a running virtual machine state and to restore the state to a virtual machine help many hypervisor users. Through this project, this feature will be added to BHyVe. [link]