GSoC/GCI Archive
Google Summer of Code 2013

FreeBSD

Web Page: https://wiki.freebsd.org/IdeasPage

Mailing List: http://lists.freebsd.org/mailman/listinfo/freebsd-hackers

FreeBSD is an advanced operating system for modern server, desktop, and embedded computer platforms. The FreeBSD Project began 20 years ago in 1993, but is based on the work at Berkeley CSRG with open source revision history going back 35 years to 1978.  Over those thirty years the code base has gone through continuous development, improvement, and optimization. The FreeBSD Project is a large, mature, and yet relatively tightly knit organization, developed and maintained by a large team of individuals. FreeBSD provides advanced networking, impressive security features, and world class performance and is used by some of the world's busiest web sites and most pervasive embedded networking and storage devices. 

There are currently over 300 developers with write access to the main revision control system, and hundreds more with access to our Perforce servers for experimental and third party development (this is also where our summer of code students have worked in previous years). We have an active mentoring program to bring all new developers into our community, not just those that we introduce to FreeBSD through the GSoC. There are hundreds of mailing lists, forums, blogs, IRC channels, and user groups all detailed on our main website.  FreeBSD offers a complete operating system in which students can work, not just a kernel or specific userland stack. This allows for interesting work that spans the userland/kernel boundary.

In addition to producing an operating system, FreeBSD has incubated the development of key pieces of infrastructure which are used by other open source projects including bsnmp, jemalloc, libarchive, OpenBSM, and OpenPAM

Projects

  • AHCI device model in userspace for bhyve 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.
  • Intelligent Download manager service for the Ports Collection 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.
  • net80211 rate control API - 802.11n extensions 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 imrpoved.
  • packagekit backend for pkgng 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.
  • PkgNG pluggable solver framework 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 conflict 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
  • Port data compression services and video codecs to Capsicum During this project I will port some data compression services(bzip2,xz,zlib) and video codecs(libavcodec) to Capsicum.
  • Port GlusterFS to FreeBSD 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.
  • USB device passthrough support on BHyVe Support USB device passthrough on BHyVe, to make BHyVe more useful for users.
  • VirtualBox shared folder support for FreeBSD guests 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.
  • Write new features for Capsicum During this project I will write new features for Capsicum and I will also port fetch services to use Capsicum.