452 lines
20 KiB
Text
452 lines
20 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.49 2006/05/02 00:55:52 murray Exp $">
|
|
<!ENTITY title "FreeBSD Summer Projects">
|
|
<!ENTITY % navincludes SYSTEM "../includes.navdevelopers.sgml"> %navincludes;
|
|
<!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
|
|
2006</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>
|
|
<li><a href="#proposals">Proposal Guidelines</a></li>
|
|
<li><a href="#infrastructure">Infrastructure Provided to Students</a></li>
|
|
<li><a href="#faq">Frequently Asked Questions</a></li>
|
|
</ul>
|
|
|
|
<a name="ideas"></a>
|
|
<h2>Example Proposal Ideas</h2>
|
|
|
|
<p>In addition to the student project ideas listed below, the FreeBSD
|
|
Project maintains a list of general projects looking for volunteers <a
|
|
href="&base;/projects/ideas/index.html">here</a>.</p>
|
|
|
|
<a name="p-userland"></a>
|
|
<h3>Userland / Installation Tools</h3>
|
|
|
|
<ul>
|
|
<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>, <a
|
|
href="mailto:harti@FreeBSD.org">&a.harti;</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. Please coordinate with
|
|
<a href="mailto:kmacy@FreeBSD.org">&a.kmacy;</a> who has done work
|
|
in this area.</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 interesting results and display them. Solving the whole
|
|
problems is probably beyond the scope of one summer's work, but an
|
|
interesting subset should be manageable. <a
|
|
href="mailto:brooks@FreeBSD.org">&a.brooks;</a> is the coordinator.</li>
|
|
|
|
<li><strong>Improvements to FreeBSD's userland profiling</strong>:
|
|
There are a number of enhancements possible to FreeBSD profiling
|
|
infrastructure: (a) allowing the profiling clock used by executables
|
|
compiled for profiling to be driven by hardware performance monitoring
|
|
counters, (b) enhancing gprof(1) to profile dynamically linked executables,
|
|
and (c) making gprof(1) and moncontrol(3) to be architecture independent.
|
|
<a href="mailto:jkoshy@FreeBSD.org">&a.jkoshy;</a> is the coordinator.</li>
|
|
|
|
<li><strong>A GUI front end for hwpmc(4)</strong>: Create a GUI
|
|
tool that can collect performance data using hwpmc(4) and display
|
|
it visually. In brief such a tool would offer: live and offline
|
|
analysis of a hwpmc(4) data stream, visual indication of hotspots
|
|
in executables and shared libraries with the ability to drill down
|
|
to an annotated source or machine code listing, system-wide as well
|
|
as process-specific analyses, visual representations of callgraphs.
|
|
<a href="mailto:jkoshy@FreeBSD.org">&a.jkoshy;</a> is the coordinator.</li>
|
|
|
|
<li><strong>BSD licensed API compatible version of GNU
|
|
readline</strong>: Create a cleanroom implementation that is API
|
|
compatible with GNU readline but which is not encumbered by the
|
|
GPL. <a href="mailto:jkh@FreeBSD.org">&a.jkh;</a> is the
|
|
coordinator.</li>
|
|
</ul>
|
|
|
|
<a name="p-filesystem"></a>
|
|
<h3>Filesystem</h3>
|
|
|
|
<ul>
|
|
<li><strong>inode versioning</strong>: Introduce an inode version
|
|
number into UFS, so we can store inodes in different formats. As
|
|
an example of how to use this, introduce a new inode format that
|
|
has a 32 bit link count field. <a
|
|
href="mailto:dwmalone@freebsd.org">&a.dwmalone;</a> is the
|
|
coordinator.</li>
|
|
|
|
<li><strong>Autofs</strong>: Create the autofs filesystem from a
|
|
specification. Candidates should have some filesystem knowledge
|
|
and network filesystem knowledge. 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>IPv6 stack vulnerabilities</strong>: Review the last few
|
|
years worth of IP stack vulnerabilities. Check that these have been
|
|
fixed in the IPv6 stack too. Fix ones that haven't been fixed. <a
|
|
href="mailto:dwmalone@freebsd.org">&a.dwmalone;</a> is the
|
|
coordinator.</li>
|
|
|
|
<li><strong>IPv6 feature parity</strong>: Review new features that
|
|
have been added to the IP stack (hostcache, TCP MD5 checksums,
|
|
...). Check if these include IPv6 support. Implement if it
|
|
hasn't. <a href="mailto:dwmalone@freebsd.org">&a.dwmalone;</a> is
|
|
the coordinator.</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>
|
|
|
|
</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 and should be prepared to investigate the new
|
|
comprehensive audit system in FreeBSD. This system will shortly have
|
|
a framework for writing intrusion detection modules. <a
|
|
href="mailto:alfred@FreeBSD.org">&a.alfred;</a> and <a
|
|
href="mailto:rwatson@FreeBSD.org">&a.rwatson;</a> are
|
|
coordinating.</li>
|
|
|
|
<li><strong>SEBSD</strong>: SEBSD is a port of NSA's SELinux FLASK/TE
|
|
security model to the FreeBSD operating system using the TrustedBSD MAC
|
|
Framework. Right now the system is highly experimental, and a great
|
|
project would be for one or more students to spend the summer taking it
|
|
from an experimental prototype to something that can be actually used.
|
|
This might include the development of policy, integration of SEBSD into
|
|
the installer components, adaptation of userland components, sample
|
|
deployments, documentation, and so on. Candidates will want some
|
|
background in access control technology, especially mandatory access
|
|
control; experience with alternative security models would be a plus, as
|
|
would a background in OS development. However, there's room for a
|
|
range of work here, and all proposals will be considered! <a
|
|
href="mailto:rwatson@FreeBSD.org">&a.rwatson;</a> is coordinating.</li>
|
|
|
|
<li><strong>Audit</strong>: Audit is a fine-grained security event log
|
|
mechanism present in FreeBSD (and other operating systems). FreeBSD's
|
|
audit implementation is based on Sun's published BSM API and file
|
|
format, and will appear in FreeBSD 6.2-RELEASE. A variety of student
|
|
projects are available to work on, including tasks such as working on
|
|
XML output support and database integration, a graphical audit review
|
|
tool, distributed audit log management support, and intrusion detection
|
|
work. Students are encouraged to contact <a
|
|
href="mailto:rwatson@FreeBSD.org">&a.rwatson;</a> who is coordinating.</li>
|
|
|
|
</ul>
|
|
|
|
<a name="p-kernel"></a>
|
|
<h3>Kernel</h3>
|
|
|
|
<ul>
|
|
|
|
<li><strong>Generic Input Device Subsystem</strong>: Some work has
|
|
been done in Perforce that begins to replace the ancient
|
|
psm->moused->syscons codepath into something more pleasant.
|
|
There's still a lot of duplication between psm and moused, however
|
|
and even more work is necessary to get syscons to be happy with
|
|
the new world order. <a
|
|
href="mailto:philip@FreeBSD.org">&a.philip;</a> is coordinating.</li>
|
|
|
|
<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>
|
|
|
|
<li><strong>Suspend to disk</strong>: Implement a suspend/resume
|
|
from disk mechanism. Possibly use the dump functions to dump
|
|
pages to disk, then use ACPI to put the system in S4 or power-off.
|
|
Resume would require changes to the loader to load the memory
|
|
image directly and then begin executing again. This project
|
|
requires good knowledge of C, an understanding of the
|
|
hardware/software interface, a laptop that works with ACPI, and
|
|
kernel awareness. <a href="mailto:njl@FreeBSD.org">&a.njl;</a>
|
|
and <a href="mailto:bruno@FreeBSD.org">&a.bruno;</a> are
|
|
coordinating.</li>
|
|
|
|
<li><strong>Implement and profile various algorithms for
|
|
powerd(8)</strong>: Implement a range of predictive algorithms
|
|
(and perhaps design your own) and profile them for power usage and
|
|
performance loss. The best algorithm will save the most power
|
|
while losing the least performance. Requires basic C knowledge,
|
|
laptop supported by cpufreq(4) (suggest newer Pentium-M CPU), and
|
|
some statistics. <a href="mailto:njl@FreeBSD.org">&a.njl;</a>
|
|
and <a href="mailto:bruno@FreeBSD.org">&a.bruno;</a> are
|
|
coordinating.</li>
|
|
|
|
<li><strong>Kernel meta-language</strong>: Develop a dialect of the
|
|
C language that simplifies the task of writing kernel code.
|
|
It should include language extensions that make it
|
|
possible to write kernel code more cleanly and with less bugs. An
|
|
example of this would have language support for linked lists,
|
|
to obviate the need for messy MACROs. <a
|
|
href="mailto:gnn@FreeBSD.org">&a.gnn;</a> and <a
|
|
href="mailto:phk@FreeBSD.org">&a.phk;</a> are coordinating. A Wiki
|
|
with more information is available <a
|
|
href="http://wikitest.freebsd.org/moin.cgi/K">here</a>.</li>
|
|
|
|
<li><strong>The Arbitrary Interpreter Hack</strong>: Allow FreeBSD
|
|
binaries for non-native CPU architectures to be emulated by
|
|
having these 'interpreted' by an instruction set emulator. This
|
|
work would allow FreeBSD/{ARM,MIPS,PowerPC} executables to run
|
|
on a FreeBSD/i386 or FreeBSD/amd64 host. This project requires
|
|
an in-depth study of machine ABIs and of Unix semantics. It
|
|
has a small kernel component and also involves effort in making
|
|
the instruction set emulator robust. <a
|
|
href="mailto:jkoshy@FreeBSD.org">&a.jkoshy;</a> is the
|
|
coordinator.</li>
|
|
|
|
<li><strong>Cheap Syscalls</strong>: Add a page shared between every
|
|
process and the kernel to do things like gettimeofday() without doing
|
|
a real syscall. Can also be used to enable the use of SYSENTER to do
|
|
other syscalls, on i386, when the hardware supports it. Similar to
|
|
Linux's vsyscall page. Requires good knowledge of C, memory management
|
|
on modern operating systems, and run-time linking. <a
|
|
href="mailto:ssouhlal@FreeBSD.org">&a.ssouhlal;</a> is the
|
|
coordinator.</li>
|
|
|
|
<li><strong>Boot-time Kernel Patching</strong>: Design and implement an
|
|
API to patch kernel code based on hardware features detected at
|
|
boot. This will, for example, enable the use of PREFETCH instructions
|
|
when 3DNow! support is detected on the CPU.
|
|
Requires good knowledge of C, and basic knowledge of i386 assembly. <a
|
|
href="mailto:ssouhlal@FreeBSD.org">&a.ssouhlal;</a> is the
|
|
coordinator.</li>
|
|
|
|
<li><strong>NMI Watchdog</strong>: Use the performance counters feature
|
|
of i386/amd64 processors to periodically send an NMI to every
|
|
processor, and make sure the kernel is still running correctly.
|
|
Requires good knowledge of the i386 architecture and C. <a
|
|
href="mailto:ssouhlal@FreeBSD.org">&a.ssouhlal;</a> is the
|
|
coordinator.</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>
|
|
|
|
<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:gnn@FreeBSD.org">&a.gnn;</a>,
|
|
<a href="mailto:brooks@FreeBSD.org">&a.brooks;</a>, and
|
|
<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>, <a
|
|
href="mailto:ssouhlal@FreeBSD.org">&a.ssouhlal;</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>
|
|
<li><strong>ACPI</strong>: <a href="mailto:njl@FreeBSD.org">&a.njl;</a>
|
|
and <a href="mailto:bruno@FreeBSD.org">&a.bruno;</a>.</li>
|
|
<li><strong>Sound</strong>: <a
|
|
href="mailto:matk@FreeBSD.org">&a.matk;</a>.</li>
|
|
<li><strong>Virtual Memory</strong>: <a
|
|
href="mailto:ssouhlal@FreeBSD.org">&a.ssouhlal;</a>.</li>
|
|
<li><strong>Performance Monitoring</strong>: <a
|
|
href="mailto:jkoshy@FreeBSD.org">&a.jkoshy;</a>.</li>
|
|
<li><strong>Ports Collection</strong>: <a
|
|
href="mailto:erwin@FreeBSD.org">&a.erwin;</a>.</li>
|
|
</ul>
|
|
|
|
<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:proposals@FreeBSD.org">proposals@FreeBSD.org</a>.</p>
|
|
|
|
<a name="proposals"></a>
|
|
<h2>Proposal Guidelines</h2>
|
|
|
|
<p>Students are responsible for writing a proposal and submitting it
|
|
to Google before the application deadline. The following outline
|
|
was adapted from the Perl Foundation <a
|
|
href="http://www.perlfoundation.org/gc/grants/proposals.html">open
|
|
source proposal HOWTO</a>. A strong proposal will include:</p>
|
|
|
|
|
|
<ul>
|
|
<li><strong>Name</strong></li>
|
|
|
|
<li><strong>Email</strong></li>
|
|
|
|
<li><strong>Project Title</strong></li>
|
|
|
|
<li><strong>Possible Mentor</strong> <em>(optional)</em></li>
|
|
|
|
<li><strong>Benefits to the FreeBSD Community</strong> - a good
|
|
project will not just be fun to work on, but also generally
|
|
useful to others.</li>
|
|
|
|
<li><strong>Deliverables</strong> - It is very important to list
|
|
quantifiable results here e.g.
|
|
<ul>
|
|
<li>"Improve X modules in ways Y and Z."</li>
|
|
<li>"Write 3 new man pages for the new interfaces."</li>
|
|
<li>"Improve test coverage by writing X more unit/regression
|
|
tests."</li>
|
|
<li>"Improve performance in FOO by X%."</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li><strong>Project Schedule</strong> - How long will the project
|
|
take? When can you begin work?</li>
|
|
|
|
<li><strong>Availability</strong> - How many hours per week can
|
|
you spend working on this? What other obligations do you have
|
|
this summer?</li>
|
|
|
|
<li><strong>Bio</strong> - Who are you? What makes you the best
|
|
person to work on this project?</li>
|
|
</ul>
|
|
|
|
<a name="infrastructure"></a>
|
|
<h2>Infrastructure Provided to Students</h2>
|
|
|
|
<p>In 2005, the FreeBSD Project provided access to the FreeBSD
|
|
Perforce revision control infrastructure in order to facilitate
|
|
student collaboration, provide public access and archiving for the
|
|
on-going student projects, and to help mentors and the community
|
|
monitor on-going work. It is expected that students participating in
|
|
the 2006 program will be offered the same facilities, and that unless
|
|
there is a strong argument otherwise, that those facilities will be
|
|
used for 2006 projects. Students will also be asked to maintain wiki
|
|
pages on their on-going projects. In the past, e-mail, IRC, and
|
|
instant messaging have proven popular among students and mentors, and
|
|
students participating in the FreeBSD summer program are encouraged to
|
|
use these and other electronic communication mechanisms to become
|
|
active in the community.</p>
|
|
|
|
<a name="faq"></a>
|
|
<h2>Frequently Asked Questions</h2>
|
|
|
|
<ul>
|
|
<li><p><strong>Am I eligible?</strong></p>
|
|
|
|
<p>Please see the Google <a
|
|
href="http://code.google.com/soc/studentfaq.html">Student FAQ</a>
|
|
for all questions about eligibility.</p></li>
|
|
|
|
<li><p><strong>When is the proposal deadline?</strong></p>
|
|
|
|
<p><strong>May 8, 2006 17:00 Pacific Daylight Time</strong>.
|
|
Proposals must be submitted through the Google web site, not
|
|
directly to the FreeBSD Project.</p></li>
|
|
|
|
<li><p><strong>Where do I send my proposal?</strong></p>
|
|
|
|
<p>Propopsals must be sent to Google's <a
|
|
href="http://code.google.com/soc/student_step1.html">student
|
|
signup page</a>.</p>
|
|
|
|
<li><p><strong>What projects were completed successfully by students
|
|
last summer?</strong></p>
|
|
|
|
<p>Please see the <a href="summerofcode-2005.html">2005 FreeBSD
|
|
Summer of Code</a> page for a list of the completed projects
|
|
from last year.</p></li>
|
|
</ul>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|