The NetBSD Foundation Press Release: NetBSD and the Google "Summer of Code" Summary

October 16, 2005  The NetBSD Project is pleased to announce the results of its participation in Google's Open Source program, the Summer of Code. 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 suggested projects. 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.

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.

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.

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.


  1. Project bpg: BSD licensed privacy guard (pgp)

    Developing student: Manuel Freire
    Mentoring NetBSD developer: Alistair G. Crooks
    Mentoring NetBSD developer: Curt Sampson
    Summary and Goals:

    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:

    • A set of libraries for signing and encrypting data, allowing the integration of OpenPGP features in other applications.
    • A modular 'PGP cryptography toolkit' that allow users to chose their own encryption and signing algorithms, key management structure, and so on.
    • A scriptable and well thought command-line interface built over the libraries. This standalone application will be a suitable replacement for GnuPG or PGP.

    The emphasis on being a toolkit and providing PGP facilities to other applications were what makes this project different from others.

    Results:

    • very good work, mature code
    • detailed documentation available (see http://NetBSD-soc.sourceforge.net/projects/bpg/doc/)
    • student was pro-active, responsive
    • result still under development on Sourceforge
    • discussions on import into NetBSD source tree are ongoing
    • expect a summary article in Dr. Dobb's Journal
    • all goals set were achieved

  2. Project HFS+: Apple Mac OS X compatible file system

    Developing student: Yevgeny Binder
    Mentoring NetBSD developer: Bill Studenmund
    Summary and Goals:

    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.

    Results:

    • deliverables adjusted earlier on as the project was found slightly too ambitious
    • student did not have much of a NetBSD background, so some time was spent on getting into NetBSD
    • basic HFS+ filesystem completed in time
    • import into NetBSD source tree: not quite ready yet

  3. Project ndis: Using binary NDIS network drivers

    Developing student: Alan Ritter
    Mentoring NetBSD developer: Phil Nelson
    Summary and Goals:

    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.

    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.

    Results:

    • Intel EtherExpress Pro/100: works
    • Broadcom wireless card: works
    • student continued/continues work after official end of SoC
    • mentor will review code before feature freeze for NetBSD 4.0

  4. Project tmpfs: Efficient memory file-system

    Developing student: Julio Merino
    Mentoring NetBSD developer: Luke Mewburn
    Mentoring NetBSD developer: Bill Studenmund
    Summary and Goals:

    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.

    The visible goals of the project were:

    • An implementation of this efficient memory file-system under NetBSD
    • Documentation about tmpfs in detail, describing its data structures, algorithms used and the rationales that lead to the decisions taken.
    • 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.

    Results:

    • all goals met
    • student's work rated top-notch
    • tmpfs already imported into NetBSD-current
    • comparisons with mfs(8) have shown tmpfs to be
      • more memory-efficient
      • more accurate in reporting memory usage
      • faster
    • student learned enough about filesystems to already have found and fixed some serious bugs in our NFS code
    • expect an article on tmpfs on OnLamp

  5. Project userfs: Userspace file system hooks

    Developing student: Antti Kantee
    Mentoring NetBSD developer: Bill Studenmund
    Summary and Goals:

    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.

    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.

    Results:

    • still bare-bones
    • simple filesystem with some hardcoded files (which are modifiable) written
    • The framework coughs but manages to avoid complete and utter defeat.
    • code not yet imported
    • all SoC goals met

  6. Project wcurses: Wide Character Support for Curses

    Developing student: Ruibiao Qiu
    Mentoring NetBSD developer: Julian Coleman
    Mentoring NetBSD developer: Brett Lymn
    Summary and Goals:

    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.

    Results:

    • all goals met
    • code will be imported into NetBSD source Real Soon Now

  7. Project zeroconf: Stateless autoconfiguration for IPv4

    Developing student: Silvio Valenti
    Mentoring NetBSD developer: Christos Zoulas
    Mentoring NetBSD developer: David Young
    Mentoring NetBSD developer: Jason Thorpe
    Mentoring NetBSD developer: Ignatios Souvatzis
    Summary and Goals:

    Add zeroconf 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.

    Results:

    • zeroconfd implemented
    • responderd implemented
    • both working, but need more work
    • import into NetBSD CVS: not yet
    • too many mentors
    • nevertheless: all goals met


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.

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!

-Jan Schaumann

The NetBSD Foundation


Back to  the NetBSD Foundation Inc. page