<?xml version="1.0"?>
<!DOCTYPE webpage
  PUBLIC "-//NetBSD//DTD Website-based NetBSD Extension//EN"
        "http://www.NetBSD.org/XML/htdocs/lang/share/xml/website-netbsd.dtd">

<webpage id="foundation-press-soc-summary">
<config param="desc" value="The NetBSD Foundation Press Release:
NetBSD and the Google &quot;Summer of Code&quot; Summary"/>
<config param="cvstag" value="$NetBSD: soc-summary.xml,v 1.2 2007/06/09 12:33:46 dsieger Exp $"/>
<config param="rcsdate" value="$Date: 2007/06/09 12:33:46 $"/>
<head>
<title>The NetBSD Foundation Press Release: NetBSD and the Google "Summer of Code" Summary</title>
</head>

<sect1 id="google-soc-summary">

  <para>
    <emphasis>October 16, 2005</emphasis>&nbsp;
    The NetBSD Project is pleased to announce the results of its
    participation in Google's Open Source program, the <quote><ulink
    url="http://code.google.com/summerofcode.html">Summer of Code</ulink></quote>.
    After Google announced this program to introduce students to the
    world of open source software development at the beginning of June,
    the NetBSD Project was happy to join the approximately 40 other
    Open Source groups as a mentoring organization and compiled a list
    of <ulink url="http://www.NetBSD.org/contrib/projects.html">suggested
    projects</ulink>.  Over a period of two weeks, students researched
    the list of possible projects and discussed their proposals on the
    public mailing lists and in private with developers and other users
    alike.
  </para>

  <para>
    After evaluating over 100 distinct applications, the NetBSD Project ranked
    the applications based on (among other considerations) the possibility of
    completion within the given timeframe, the availability of mentoring
    developers who could guide the student and of course general interest of
    the result to NetBSD's users and developers.  The final ranking of
    projects was submitted back to Google, and in the end a total of eight
    projects were awarded to the NetBSD Project -- however, unfortunately one
    student had had to withdraw early on during the contest, leaving the total
    of positions within NetBSD at seven.
  </para>

  <para>
    This list of accepted contestants was varied and international, reflecting
    the general NetBSD developer genepool, ranging from people with detailed
    knowledge of the different areas of NetBSD they applied for within their
    project to people who at first needed a bit of an introduction into the
    internals of NetBSD.
  </para>

  <para>
    After several weeks of hard work, the due date for the deliverables of
    each project came on September 1st, 2005.  The code finished at that time
    served as the basis of the mentors' evaluation, and the NetBSD Project is
    now proud to announce that all seven remaining projects completed in time
    and according to the set goals and have subsequently been rated a success
    by their respective mentors.  The details of each project are given in
    alphabetical order below.
  </para>

  <html:hr/>

  <para>
    <orderedlist>
      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/bpg/">Project
            bpg: BSD licensed privacy guard (pgp)</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> Manuel Freire <email>droggo@gmail.com</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.agc; <email>agc@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.cjs; <email>cjs@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          BPG, the BSD Privacy Guard, is a BSD-licensed program that
          performs authentication and encryption using the OpenPGP standard
          (RFC 2440).  The BPG project's goals were to produce:
        </para>
        <para>
          <itemizedlist>
          <listitem>A set of libraries for signing and encrypting data, allowing the
            integration of OpenPGP features in other
            applications.</listitem>
          <listitem>A modular 'PGP cryptography toolkit' that allow users to chose
            their own encryption and signing algorithms, key management
            structure, and so on.</listitem>
          <listitem>A scriptable and well thought command-line interface built over
            the libraries. This standalone application will be a suitable
            replacement for GnuPG or PGP.</listitem>
          </itemizedlist>
        </para>
            <para>
          The emphasis on being a toolkit and providing PGP facilities to
          other applications were what makes this project different from
          others.
        </para>
            <para>
          <emphasis>Results:</emphasis>
          <itemizedlist>
            <listitem>very good work, mature code</listitem>
            <listitem>detailed documentation available (see <ulink url="http://NetBSD-soc.sourceforge.net/projects/bpg/doc/"/>)</listitem>
            <listitem>student was pro-active, responsive</listitem>
            <listitem>result still under development on
              Sourceforge</listitem>
            <listitem>discussions on import into NetBSD source tree are <ulink url="http://mail-index.NetBSD.org/tech-security/2005/10/04/0000.html">ongoing</ulink></listitem>
            <listitem>expect a summary article in <quote>Dr. Dobb's Journal</quote></listitem>
            <listitem>all goals set were achieved</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
              <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/hfs/">Project
            HFS+: Apple Mac OS X compatible file system</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> Yevgeny Binder <email>yevbee@comcast.net</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.wrstuden; <email>wrstuden@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          Create a BSD-licensed implementation of the HFS+ filesystem
          for NetBSD. It will allow users to natively mount and read data
          from an HFS+ volume on any disk, initially only supporting
          read-access.
        </para>
        <para>
          <emphasis>Results:</emphasis> 
        </para>
        <para>
          <itemizedlist>
            <listitem>deliverables adjusted earlier on as the project was
              found slightly too ambitious</listitem>
            <listitem>student did not have much of a NetBSD background, so some
              time was spent on getting into NetBSD</listitem>
            <listitem>basic HFS+ filesystem completed in time</listitem>
            <listitem>import into NetBSD source tree: not quite ready
              yet</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/ndis/">Project
            ndis: Using binary NDIS network drivers</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> Alan Ritter <email>rittera@cc.wwu.edu</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.phil; <email>phil@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          Windows network drivers use the Network Device Interface
          Specification (NDIS) which is a standard API allowing a single
          Network Interface Card (NIC) to support multiple network
          protocols. After implementing NDIS on an OS other than Windows,
          it is possible to run a binary version of a Windows driver that
          thinks it's still talking to Windows.
        </para>
        <para>
          This has already been done for Linux (NdisWrapper) and for
          FreeBSD. As FreeBSD and NetBSD are derived from the same code
          base (4.4 BSD) it seemed logical to port FreeBSD's NDIS
          implementation to NetBSD.
        </para>
        <para>
          <emphasis>Results:</emphasis>
        </para>
        <para>
          <itemizedlist>
            <listitem>Intel EtherExpress Pro/100: works</listitem>
            <listitem>Broadcom wireless card: works</listitem>
            <listitem>student continued/continues work after official end of SoC</listitem>
            <listitem>mentor will review code before feature freeze for NetBSD 4.0</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/tmpfs/">Project
            tmpfs: Efficient memory file-system</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> &a.jmmv; <email>jmmv84@gmail.com</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.lukem; <email>lukem@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.wrstuden; <email>wrstuden@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          The NetBSD operating system was in a need of an efficient
          memory file-system that uses its own data structures to manage
          the stored files. The main design goal is to make it use the
          correct amount of memory to work correctly and efficiently;
          no more, no less.
        </para>
        <para>
          The visible goals of the project were:
        </para>
        <para>
          <itemizedlist>
            <listitem>An implementation of this efficient memory file-system under
              NetBSD</listitem>
            <listitem>Documentation about tmpfs in detail, describing its data
              structures, algorithms used and the rationales that lead to
              the decisions taken.</listitem>
            <listitem>A "file-system how-to" document explaining how to write a
              file-system driver for NetBSD from scratch. This will be
              similar in spirit to the Device Driver Writing Guide and
              will be probably merged into it.</listitem>
          </itemizedlist>
        </para>
        <para>
          <emphasis>Results:</emphasis>
        </para>
        <para>
          <itemizedlist>
            <listitem>all goals met</listitem>
            <listitem>student's work rated <quote>top-notch</quote></listitem>
            <listitem>tmpfs already imported into
              NetBSD-current</listitem>
            <listitem>comparisons with &man.mfs.8; have shown tmpfs to be
    	  <itemizedlist>
                <listitem>more memory-efficient</listitem>
    	    <listitem>more accurate in reporting memory
                      usage</listitem>
    	    <listitem>faster</listitem>
    	  </itemizedlist></listitem>
            <listitem>student learned enough about filesystems to already have
              found and fixed some serious bugs in our NFS code</listitem>
            <listitem>expect an article on tmpfs on
                  OnLamp</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/userfs/">Project
            userfs: Userspace file system hooks</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> &a.pooka; <email>antti.kantee@hut.fi</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.wrstuden; <email>wrstuden@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          Create a general-purpose framework for attaching filesystems
          running in userspace. The framework can then be used for various
          applications such as writing new filesystems in userspace to
          test them or some ``novelty'' uses as having a filesystem for
          user account administration.
        </para>
        <para>
          On a more technical level, the work consists of writing a
          passthrough-layer which attaches to the current virtual filesystem
          layer in the kernel and creating a communication infrastructure
          so that the filesystem can receive commands from the kernel and
          respond to them once they have completed the task. In addition,
          some effort must be put into thinking about the interface to
          which userspace implementation will attach to. 
        </para>
        <para>
          <emphasis>Results:</emphasis> 
        </para>
        <para>
          <itemizedlist>
            <listitem>still bare-bones</listitem>
            <listitem>simple filesystem with some hardcoded files (which are modifiable)
               written</listitem>
            <listitem><quote>The framework coughs but manages to avoid complete and utter
               defeat.</quote></listitem>
            <listitem>code not yet imported</listitem>
            <listitem>all SoC goals met</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/wcurses/">Project
            wcurses: Wide Character Support for Curses</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> Ruibiao Qiu <email>ruibiao@arl.wustl.edu</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.jdc; <email>jdc@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.blymn; <email>blymn@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          The lack of support for wide characters in the NetBSD
          implementation of curses libraries limits the support for
          internationalized character sets, and thus limits the uses of
          NetBSD in countries using wide character sets.  Implement wide
          character support in the NetBSD curses libraries and provide
          the modified curses library, a test suit and updated
          documentation.
        </para>
        <para>
          <emphasis>Results:</emphasis> 
        </para>
        <para>
          <itemizedlist>
            <listitem>all goals met</listitem>
            <listitem>code will be imported into NetBSD source Real Soon Now</listitem>
          </itemizedlist>
        </para>
      </listitem>

      <listitem>
        <para>
          <emphasis role="bold"><ulink url="http://netbsd-soc.sourceforge.net/projects/zeroconf/">Project
             zeroconf: Stateless autoconfiguration for IPv4</ulink></emphasis>
        </para>
        <para>
          <emphasis>Developing student:</emphasis> Silvio Valenti <email>silvio.valenti@gmail.com</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.christos; <email>christos@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.dyoung; <email>dyoung@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.thorpej; <email>thorpej@NetBSD.org</email><html:br/>
          <emphasis>Mentoring NetBSD developer:</emphasis> &a.is; <email>is@NetBSD.org</email><html:br/>
          <emphasis>Summary and Goals:</emphasis> 
        </para>
        <para>
          Add <ulink url="http://www.zeroconf.org">zeroconf</ulink> support to
          NetBSD.  The project is divided in
          two parts: The first part consists in writing a daemon which
          autoconfigure IPv4 link-local address for a network interface,
          if there is no DHCP server and no manual configuration.  The
          second part is about developing a library for multicast DNS,
          which is used to resolve local network host name and discover
          available services in network where there is no DNS server.
        </para>
        <para>
          <emphasis>Results:</emphasis> 
        </para>
        <para>
          <itemizedlist>
            <listitem>zeroconfd implemented</listitem>
            <listitem>responderd implemented</listitem>
            <listitem>both working, but need more work</listitem>
            <listitem>import into NetBSD CVS: not yet</listitem>
            <listitem>too many mentors</listitem>
            <listitem>nevertheless: all goals met</listitem>
          </itemizedlist>
        </para>
      </listitem>
    </orderedlist>
  </para>

  <html:hr/>

  <para>
    We are looking forward to continuing development of each of these projects
    with the students and to work towards the goal of getting the code ready
    to be imported into the NetBSD source repository (if not done already).
    As regular open source projects, everybody who is interested in this work
    is now free to submit patches and continue the discussion on our mailing
    lists.
  </para>
  <para>
    The NetBSD Project would like to thank Google for the opportunity,
    Google's Chris diBona and Greg Stein for their exemplary organization and
    enthusiasm, all the NetBSD Project's mentors for taking new potential
    developers under their wings and guiding them and most importantly of
    course all students for their hard work, their interest in the project and
    their continued development!
  </para>
  <para>-&a.jschauma;</para>
  <para>The NetBSD Foundation</para>
</sect1>

<parentsec url="../" text="the NetBSD Foundation Inc. page"/>
</webpage>

