%includes;
 %developers;
]>
&header;
The FreeBSD Project is excited to take part in the Google Summer of Code
  2005.  This project endeavors to fund students to contribute to
  an open source project over the summer break.
Example Proposal Ideas
Userland / Installation Tools
  - Integrate BSD Installer : Prepare a prototype
    merge of the BSD
    Installer as a complete replacement for the venerable FreeBSD
    sysinstall program.  Enough of the groundwork has been laid out now
    that someone with a few months and some background could do a lot
    of good work here, especially with adequate mentoring by more
    senior FreeBSD developers.
- Bundled PXE Installer : It would be great to
    have a bundled PXE installer.  This would allow one to boot an
    install server from a FreeSBIE live CDROM on one box, set the BIOS
    on subsequent boxes to PXE boot, and then have the rest happen by
    magic.  This would be very helpful for installing cluster nodes,
    etc.
- Fully Integrated SNMP monitoring : Plugins for
    our BSNMP pieces to monitor elements of system state such as load,
    disk space, VM statistics, entropy, firewall rules and states,
    sendmail queues and accepts/rejects, and the like.  An SNMP client
    that could pull and centralize the data gathering, render it,
    etc.  &a.philip;, &a.glebius;, and &a.rwatson; are
    coordinating.
- Integrate Xen Support : Support for the Xen virtual
    machine monitor is coming into FreeBSD -CURRENT, so the
    installer could be updated to make it possible to setup a Xen
    system with several FreeBSD nodes, etc.
- Rewrite CVSup in C : CVSup is the CVS-Optimized
    General-Purpose Network File Distribution System.  It has been
    used heavily for nearly 10 years to distribute the FreeBSD CVS
    tree to mirrors around the world.  CVSup was written in Modula-3
    and a rewrite in C would encourage more users to improve it.
    CVSup is a multi-threaded application by design so the applicant
    should have at least some experience with pthreads.
    Additional requested features include understanding of Subversion
    fsfs repositories and Perforce depots.  Currently part of the work
    and research has already been completed. &a.mux; is the coordinator.
- Improve our regression testing system : Nik
    Clayton has written a regression test infrastructure using Perl.
    More of the regression tests should be made to work with libtap.
    There are two main parts to it.  First, many of the existing tests
    should be moved from using assert() to using ok() and friends from
    libtap.  Second, more regression tests should be written.
    Students familiar with scripting languages and software testing
    are encouraged to work on this.  &a.nik; is the coordinator.
Filesystem
  - UFS Journalling : Add transaction journalling and
    playback to the UFS filesystem.  The goal is to increase the reliability
    of the filesystem and greatly reduce the need for a full 'fsck' after
    a crash or power loss.  This is a project that deals with not only
    the filesystem internals, but also the VM and buffer/cache systems,
    so it is an excellent opportunity to learn about many fundamental
    aspects of an operating system.
 Work is already in progress on this task, but more help is always
    needed and welcome.  Candidates should have at least a cursory
    understanding of filesystem data structures (inodes, free lists,
    directories) and a strong desire to learn more about such systems.
    This project would be a major contribution to anyone's resume, but it
    is not for the faint of heart.  &a.scottl; is the coordinator.
- Autofs : Create the autofs filesystem from a
    specification.  Candidates should have some filesystem knowledge
    and network filesystem knowledge.  Most of this work is done,
    however kernel transport and interaction with the "amd"
    automounter needs to be completed. &a.alfred; is coordinating.
- Logical Volume Manager
Networking
  - Network Disk Device : Add the ability to
    remotely access devices from one system to another.  The goal is
    to allow remote access to resources such as disks, sound devices,
    and other miscellaneous pieces of hardware over the network.
    Prospective candidates should have an understanding or interest in
    remote procedure call systems, networking (TCP/IP), an interest to
    learn how Unix device drivers work as well as process management
    will be required.  This project would be a good resume builder,
    but is not for the faint of heart.  &a.alfred; is coordinating.
- NFS Lockd (improve semantics) : Improve the
    semantics of the NFS lockd in FreeBSD.  Apple has made certain
    enhancements that can be leveraged in our code base.  Implement
    state recovery in the lockd. Candidate would learn how to port
    code from one kernel to another as well as how to maintain state
    on the client side.  This would be a good resume addition. &a.alfred; is coordinating.
- NFS Lockd (kernel implementation) : Improve the
    semantics of the NFS lockd in FreeBSD.  Moving the lockd
    implementation into the kernel provides several key performance
    and semantic improvements.  Candidates should have a good
    understanding of NFS, locking, RPC and kernel networking.  This is
    a great resume addition, providing you want to be saddled with
    "knowing NFS" for the rest of your career, it is not for the faint
    of heart. &a.alfred; is
    coordinating.
Security
  - SecureMines : Add meta-data to the
    system in order to trap intruders and provide and audit log.  The
    goal of this project is to create several means of marking an
    event as a foreign act (such as opening a trap file) which halts
    the system and provides as much information as possible,
    possibilities include using extended attributes to tag such
    "mines".  Candidates should have an understanding of the Unix
    process model. &a.alfred; is coordinating.
Kernel
  - Update the Linuxulator : FreeBSD provides Linux
    binary compatibility through a Linux system call table that is
    invoked when Linux ELF binaries are executed.  This implementation
    should be compared with an up-to-date Linux Kernel so that
    important missing syscalls can be added to ensure that all
    mainstream applications continue to work on FreeBSD.  The student
    should be able to read and understand foreign C code, write C
    code, and have a good understanding of how to do a clean room
    implementation of GPLed code (no copy & paste!).
Mentors
If you are interested in working on a project not explicitly
  mentioned above, you may want to contact one of the potential
  mentors below about writing a proposal in one of the following broad
  categories.
Additional projects may be found by browsing the FreeBSD Development Projects page or by
  viewing some of the recent Developer
  Status Reports.
If your project is not selected for funding by Google, but you
  still think you have a feasible project proposal, then please email
  core@FreeBSD.org.
&footer;