Thursday, October 9, 2008
FreeBSD has participated as a mentoring organization in the Google Summer of Code™ each year since 2005. This year, FreeBSD mentored 21 students with a final success rate of 91%. Robert Watson and I have written a detailed summary of the FreeBSD 2008 Summer of Code experience. With the help of our mentors we've selected three successful projects to showcase here:
Edward Napierala successfully completed a complex project to implement NFSv4 ACLs in a similar way to how POSIX.1e ACLs are supported by extending user utilities (setfacl(1)/getfacl(1)), libc API, and adding necessary kernel hooks for ACL storage and enforcement on both UFS and ZFS. Regression tests were implemented to ensure correct operation. There is also a wrapper (distributed separately) that implements a SunOS-compatible acl(2)/facl(2) API to make porting applications like Samba easier. This project required balancing standards, portability, and implementation complexity, as well as backwards compatibility. This project was Edward's first significant foray into the kernel, and his focus on testing and completeness was outstanding. Needless to say, Edward was granted full commit access to the FreeBSD source repository before the program ended. Robert Watson mentored this project.
Nick Barkas, with the help of his mentor, David Malone, spent the summer modifying the dirhash code in UFS2 to use better dynamic memory allocation. The code is now able to free up memory used by older dirhashes when the VM system invokes vm_lowmem events. This will allow the default dirhash_maxmem value to be increased, improving performance on large directory lookups when there is memory to spare on they system. There are versions of the low memory event handling code for both -CURRENT and 7-STABLE. A number of tests have been run showing the new event handler seems to work properly. Additional testing and benchmarking is ongoing to tune the default values for best performance.
Johannes Maximilian Kuehn was able to work with both the FreeBSD and NTP communities and his mentor, Harlan Stenn, to work on a reference implementation of the SNTP client. SNTP is a lightweight client that enables admins to synchronize with NTP servers. SNTP's networking code is written protocol independent and should work with almost any protocol like IPv4 or IPv6. SNTP supports MD5 authentication to verify the authenticity of the queried server. This code will be included in the upcoming ntp-4.2.6 release.
We've only highlighted three of the 19 successful FreeBSD projects here, and would love to hear more from the community about their favorite FreeBSD projects from Summer of Code 2008 or years past. Post a comment and share your thoughts with us. Congratulations to all of FreeBSD's mentors and students, as well as the FreeBSD community, for their fourth year of successful participation in Summer of Code!