269 lines
12 KiB
Text
269 lines
12 KiB
Text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" [
|
|
<!ENTITY base CDATA "..">
|
|
<!ENTITY date "$FreeBSD: www/en/projects/summerofcode.sgml,v 1.18 2005/06/02 18:47:45 brooks Exp $">
|
|
<!ENTITY title "FreeBSD Summer Projects">
|
|
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
|
<!ENTITY % developers SYSTEM "../developers.sgml"> %developers;
|
|
]>
|
|
|
|
<html>
|
|
&header;
|
|
|
|
<p>The FreeBSD Project is excited to take part in the Google <a
|
|
href="http://code.google.com/summerofcode.html">Summer of Code
|
|
2005</a>. This project endeavors to fund students to contribute to
|
|
an open source project over the summer break.</p>
|
|
|
|
<ul>
|
|
<li><a href="#ideas">Example Proposal Ideas</a>
|
|
<ul>
|
|
<li><a href="#p-userland">Userland / Installation Tools</a></li>
|
|
<li><a href="#p-filesystem">Filesystem</a></li>
|
|
<li><a href="#p-networking">Networking</a></li>
|
|
<li><a href="#p-security">Security</a></li>
|
|
<li><a href="#p-kernel">Kernel</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#mentors">Possible Mentors</a></li>
|
|
</ul>
|
|
|
|
<a name="ideas"></a>
|
|
<h2>Example Proposal Ideas</h2>
|
|
|
|
<a name="p-userland"></a>
|
|
<h3>Userland / Installation Tools</h3>
|
|
|
|
<ul>
|
|
<!-- <li><strong>FreeBSD website redesign</strong></li> -->
|
|
<li><strong>Integrate BSD Installer</strong>: Prepare a prototype
|
|
merge of the <a href="http://www.bsdinstaller.org/">BSD
|
|
Installer</a> 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.</li>
|
|
|
|
<li><strong>Bundled PXE Installer</strong>: 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.</li>
|
|
|
|
<li><strong>Fully Integrated SNMP monitoring</strong>: 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 href="mailto:philip@FreeBSD.org">&a.philip;</a>, <a
|
|
href="mailto:glebius@FreeBSD.org">&a.glebius;</a>, and <a
|
|
href="mailto:rwatson@FreeBSD.org">&a.rwatson;</a> are
|
|
coordinating.</li>
|
|
|
|
<li><strong>Integrate Xen Support</strong>: Support for the <a
|
|
href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/">Xen virtual
|
|
machine monitor</a> 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.</li>
|
|
|
|
<li><strong>Rewrite CVSup in C</strong>: <a
|
|
href="http://www.cvsup.org">CVSup</a> 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
|
|
href="mailto:mux@FreeBSD.org">&a.mux;</a> is the coordinator.</li>
|
|
|
|
<li><strong>Improve our regression testing system</strong>: 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
|
|
href="mailto:nik@FreeBSD.org">&a.nik;</a> is the coordinator.
|
|
</li>
|
|
|
|
<li><strong>Tracking performance over time</strong>: One of the major
|
|
issues in a project the size of FreeBSD is monitoring changes in
|
|
performance characteristics over time. Doing this requires several
|
|
things. Those include a suite of appropriate tests, hardware to run
|
|
the tests on, a database to store results in, and software to
|
|
extract intresting results and display them. Solving the whole
|
|
problems is probably beyond the scope of one summer's work, but an
|
|
intresting subset should be managable. <a
|
|
href="mailto:brooks@FreeBSD.org">&a.brooks;</a> is the coordinator.</li>
|
|
|
|
</ul>
|
|
|
|
<a name="p-filesystem"></a>
|
|
<h3>Filesystem</h3>
|
|
|
|
<ul>
|
|
<li><strong>UFS Journalling</strong>: 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.<br>
|
|
|
|
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
|
|
href="mailto:scottl@FreeBSD.org">&a.scottl;</a> is the coordinator.
|
|
|
|
<li><strong>Autofs</strong>: 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
|
|
href="mailto:alfred@FreeBSD.org">&a.alfred;</a> is coordinating.</li>
|
|
|
|
<li><strong>Logical Volume Manager</strong></li>
|
|
|
|
</ul>
|
|
|
|
<a name="p-networking"></a>
|
|
<h3>Networking</h3>
|
|
|
|
<ul>
|
|
<li><strong>Network Disk Device</strong>: 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
|
|
href="mailto:alfred@FreeBSD.org">&a.alfred;</a> is coordinating.</li>
|
|
|
|
<li><strong>NFS Lockd (improve semantics)</strong>: 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
|
|
href="mailto:alfred@FreeBSD.org">&a.alfred;</a> is coordinating.</li>
|
|
|
|
<li><strong>NFS Lockd (kernel implementation)</strong>: 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 href="mailto:alfred@FreeBSD.org">&a.alfred;</a> is
|
|
coordinating.</li>
|
|
|
|
<li><strong>Userland/kernel interface cleanups (net/if_var.h)</strong>:
|
|
Over <em>eight</em> years ago, the network interface headers
|
|
were split into net/if.h and net/if_var.h. The intent was for
|
|
net/if_var.h to be kernel only and net/if.h to contain public
|
|
interfaces. Today, the internal header, net/if_var.h is still
|
|
included in many userland applications. In some cases, this is
|
|
due to interfaces that are not in fact kernel internal. In other
|
|
cases, these structures are being used in conjunction with libkvm to
|
|
access kernel information directly. This project would correct both
|
|
classes of problems, primarily rewriting the netstat(1) command and
|
|
any other network related libkvm consumers to user alternate
|
|
interfaces, creating those interfaces if needed. Netstat's
|
|
coredump analysis features would likely be split into a separate
|
|
program. <a href="mailto:brooks@FreeBSD.org">&a.brooks;</a> is
|
|
coordinating.</li>
|
|
|
|
<li><strong>Web100 port to FreeBSD</strong>: The <a
|
|
href="http://www.web100.org/">Web100</a> project was created to
|
|
address the problems of TCP performance over long-fat network
|
|
pipes. They created an intresting set of tuning and monitoring
|
|
patches for Linux which enable signifcantly better performance
|
|
in this area. Integrating this work into FreeBSD could provide
|
|
significant benefits in terms of TCP performance in certain
|
|
environments. The features of Web100 need to be mapped into
|
|
appropriate FreeBSD abstractions and integrated in to the
|
|
system. The performance impact of these changes would have
|
|
to be quantified before the changes could be introduced. An
|
|
ideal canidate for this task would have some knowledge of the
|
|
operation of the TCP protocol and familiarity with kernel
|
|
interfaces. <a href="mailto:brooks@FreeBSD.org">&a.brooks;</a> is
|
|
coordinating.</li>
|
|
|
|
</ul>
|
|
|
|
<a name="p-security"></a>
|
|
<h3>Security</h3>
|
|
|
|
<ul>
|
|
<li><strong>SecureMines</strong>: Add meta-data to the
|
|
system in order to trap intruders and provide an 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
|
|
href="mailto:alfred@FreeBSD.org">&a.alfred;</a> is coordinating.</li>
|
|
|
|
</ul>
|
|
|
|
<a name="p-kernel"></a>
|
|
<h3>Kernel</h3>
|
|
|
|
<ul>
|
|
<li><strong>Update the Linuxulator</strong>: 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!).</li>
|
|
</ul>
|
|
|
|
<a name="mentors"></a>
|
|
<h2>Mentors</h2>
|
|
|
|
<p>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.</p>
|
|
|
|
<ul>
|
|
<li><strong>Networking</strong>:
|
|
<a href="mailto:alfred@FreeBSD.org">&a.alfred;</a>,
|
|
<a href="mailto:brooks@FreeBSD.org">&a.brooks;</a>,
|
|
<a href="mailto:sam@FreeBSD.org">&a.sam;</a></li>
|
|
<li><strong>Filesystems</strong>: <a
|
|
href="mailto:scottl@FreeBSD.org">&a.scottl;</a>, <a href="mailto:alfred@FreeBSD.org">&a.alfred;</a></li>
|
|
<li><strong>GEOM</strong>: <a
|
|
href="mailto:phk@FreeBSD.org">&a.phk;</a></li>
|
|
<li><strong>Release Engineering / Integration</strong>: <a
|
|
href="mailto:re@FreeBSD.org">re@FreeBSD.org</a></li>
|
|
<li><strong>TrustedBSD / Security</strong>: <a
|
|
href="mailto:rwatson@FreeBSD.org">&a.rwatson;</a></li>
|
|
<li><strong>Pluggable Disk Schedulers</strong>: <a href="mailto:luigi@FreeBSD.org">&a.luigi;</a>.</li>
|
|
</ul>
|
|
|
|
<p>Additional projects may be found by browsing the <a
|
|
href="index.html">FreeBSD Development Projects</a> page or by
|
|
viewing some of the recent <a href="&base;/news/status">Developer
|
|
Status Reports</a>.</p>
|
|
|
|
<p>If your project is not selected for funding by Google, but you
|
|
still think you have a feasible project proposal, then please email
|
|
<a href="mailto:core@FreeBSD.org">core@FreeBSD.org</a>.</p>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|