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.
Project bpg: BSD licensed privacy guard (pgp)
Developing student: Manuel Freire <droggo@gmail.com>
Mentoring NetBSD developer: Alistair G. Crooks <agc@NetBSD.org>
Mentoring NetBSD developer: Curt Sampson <cjs@NetBSD.org>
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:
The emphasis on being a toolkit and providing PGP facilities to other applications were what makes this project different from others.
Results:
Project HFS+: Apple MacOS X compatible file system
Developing student: Yevgeny Binder <yevbee@comcast.net>
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
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:
Project ndis: Using binary NDIS network drivers
Developing student: Alan Ritter <rittera@cc.wwu.edu>
Mentoring NetBSD developer: Phil Nelson <phil@NetBSD.org>
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:
Project tmpfs: Efficient memory file-system
Developing student: Julio M. Merino Vidal <jmmv84@gmail.com>
Mentoring NetBSD developer: Luke Mewburn <lukem@NetBSD.org>
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
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:
Results:
Project userfs: Userspace file system hooks
Developing student: Antti Kantee <antti.kantee@hut.fi>
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
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:
Project wcurses: Wide Character Support for Curses
Developing student: Ruibiao Qiu <ruibiao@arl.wustl.edu>
Mentoring NetBSD developer: Julian Coleman <jdc@NetBSD.org>
Mentoring NetBSD developer: Brett Lymn <blymn@NetBSD.org>
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:
Project zeroconf: Stateless autoconfiguration for IPv4
Developing student: Silvio Valenti <silvio.valenti@gmail.com>
Mentoring NetBSD developer: Christos Zoulas <christos@NetBSD.org>
Mentoring NetBSD developer: David Young <dyoung@NetBSD.org>
Mentoring NetBSD developer: Jason Thorpe <thorpej@NetBSD.org>
Mentoring NetBSD developer: Ignatios Souvatzis <is@NetBSD.org>
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:
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