400 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			400 lines
		
	
	
	
		
			19 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.30 2005/06/07 13:58:01 mux 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>
 | 
						|
  <li><a href="#faq">Frequently Asked Questions</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>, <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.</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.  More information on this
 | 
						|
    project is available <a href="http://mu.org/~mux/csup.html">here</a>.
 | 
						|
    <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 Journaling</strong>: Add transaction journaling 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>
 | 
						|
 | 
						|
  <li><strong>Magic Symlinks</strong>: Implement magic symlinks.
 | 
						|
    Candidates should have some filesystem knowledge. 
 | 
						|
    Experimental
 | 
						|
    <a href="http://www.freebsd.org/~jwd/magiclinks.tgz">patches</a>    
 | 
						|
    exist against 4-STABLE, though the DragonFly implementation using the
 | 
						|
    setvar utility should be examined.
 | 
						|
    <a href="mailto:jwd@FreeBSD.org">&a.jwd;</a> can coordinate.</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 use 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 interesting set of tuning and monitoring
 | 
						|
    patches for Linux which enable significantly 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 into 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>
 | 
						|
 | 
						|
  <li><p><strong>ipfw2 NAT support and libalias improvement</strong>: The
 | 
						|
    native FreeBSD firewall, ipfw2, does not currently have in-kernel
 | 
						|
    NAT support, though the architecture is extensible and the basic
 | 
						|
    mechanisms for dynamic rule creation and lookup are already
 | 
						|
    present in the kernel. At the same time, userland NAT is supported
 | 
						|
    by libalias, which has been recently made into a kernel module.
 | 
						|
    The project has the following two goals:
 | 
						|
    <ul>
 | 
						|
      <li>create hooks for ipfw2 to call LibAlias</li>
 | 
						|
      <li>revise LibAlias to improve its structures, specifically:<ul>
 | 
						|
        <li>instrument, evaluate and possibly optimize basic operations
 | 
						|
          (session creation, lookup and destruction; tcp flow
 | 
						|
          reassembly);</li>
 | 
						|
        <li>provide mechanisms to register/unregister protocol handlers
 | 
						|
          instead of having to manipulate the source code;</li>
 | 
						|
        <li>make a better match of the kernel and libalias data structure
 | 
						|
          to possibly reduce the number of copies.</li>
 | 
						|
        </ul>
 | 
						|
      </li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>The above should be applicable to 5.x and -current, and
 | 
						|
      possibly 4.x as well.  Applicants should be familiar with
 | 
						|
      networking issues related to NAT, and with the network stack in
 | 
						|
      the kernel.  <a href="mailto:rizzo@icir.org">Luigi Rizzo</a> is
 | 
						|
      the coordinator.</p></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>
 | 
						|
 | 
						|
  <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.  Candiates 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>
 | 
						|
</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>
 | 
						|
 | 
						|
  <li><strong>Implement passive cooling in ACPI thermal</strong>: The
 | 
						|
    cpufreq interface should be used to cool the processor, based on
 | 
						|
    the various _PSV settings.  Also, we need to implement variable
 | 
						|
    polling intervals for thermal zones based on both the passive
 | 
						|
    settings and polling explicitly specified in the ASL.  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.og">&a.bruno;</a> are
 | 
						|
    coordinating.</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.og">&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.og">&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>Pluggable Disk Schedulers</strong>: The project will
 | 
						|
    create hooks to implement pluggable disk schedulers, to replace
 | 
						|
    the standard elevator scheme used in FreeBSD, and then implement
 | 
						|
    at least one alternative mechanism (e.g. variants of proportional
 | 
						|
    share, etc.)  to demonstrate the effectiveness of the new
 | 
						|
    interface.  Applicants should be familiar with the disk scheduling
 | 
						|
    theory and, to some degree, with kernel programming.  <a
 | 
						|
    href="mailto:rizzo@icir.org">Luigi Rizzo</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: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></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.og">&a.bruno;</a>.</li>
 | 
						|
  <li><strong>Sound</strong>: <a
 | 
						|
    href="mailto:matk@FreeBSD.org">&a.matk;</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="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/summfaq.html">Participant FAQ</a>
 | 
						|
      for all questions about eligibility.</p></li>
 | 
						|
 | 
						|
  <li><p><strong>How do I write a proposal?</strong></p>
 | 
						|
 | 
						|
    <p>The Perl Foundation has a nice <a
 | 
						|
      href="http://www.perlfoundation.org/gc/grants/proposals.html">HOWTO</a>
 | 
						|
      that describes how to write an open source proposal.</p></li>
 | 
						|
 | 
						|
  <li><p><strong>When is the proposal deadline?</strong></p>
 | 
						|
 | 
						|
    <p>Proposals must be received by Google by June 14.</p></li>
 | 
						|
 | 
						|
</ul>
 | 
						|
 | 
						|
&footer;
 | 
						|
</body>
 | 
						|
</html>
 |