Subject: NetBSD and the Google "Summer of Code" Summary
To: None <netbsd-announce@netbsd.org>
From: Jan Schaumann <jschauma@netbsd.org>
List: netbsd-announce
Date: 10/16/2005 13:56:22
--Y7xTucakfITjPcLV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The NetBSD Project is pleased to announce the results of its participation
in Google's Open Source program, the ``Summer of Code''[0].  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[1].  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 <droggo@gmail.com>
Mentoring NetBSD developer: 	Alistair 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:

	* 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 references[2])
	* student was pro-active, responsive
	* result still under development on Sourceforge
	* discussion on import into NetBSD source tree are ongoing [3]
	* expect a summary article in ``Dr. Dobb's Journal''
	* all goals set were achieved


2. 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:
	* 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 <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:
	* 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 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:

	* 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(8) already imported into NetBSD-current
	* comparisons with mfs(8) have shown tmpfs(8) 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(8) on OnLamp


5. 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.=20

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 <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:
	* all goals met
	* code will be imported into NetBSD source Real Soon Now


7. 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 R. Thorpe <thorpej@NetBSD.org>
Mentoring NetBSD developer: 	Ignatios Souvatzis <is@NetBSD.org>
Summary and Goals:

	Add zeroconf[4] 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!


[0] http://code.google.com/summerofcode.html
[1] http://www.NetBSD.org/contrib/projects.html
[2] http://NetBSD-soc.sourceforge.net/projects/bpg/doc/
[3] http://mail-index.NetBSD.org/tech-security/2005/10/04/0000.html
[4] http://www.zeroconf.org

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (NetBSD)

iD8DBQFDUpHNfFtkr68iakwRAkSnAJ9TTqDRihCWvDy5GCgTHLCRJ2VGcQCg6d2c
CjLcQu5Mk+2wzN1R9yCf71s=3D
=3DxnAQ
-----END PGP SIGNATURE-----

--Y7xTucakfITjPcLV
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (NetBSD)

iD8DBQFDUpRFfFtkr68iakwRApE9AKCaQAy2zhSfP/+i5onN2TYca2CJBACg7rJk
Qf/wGuQCNiPN2ZLZ9jAlamg=
=EZCN
-----END PGP SIGNATURE-----

--Y7xTucakfITjPcLV--