2007 was our first year involved in the Google Summer of Code. Looking back on it, it is easy to say that it was a resounding success. We were able to handle 8 students. Work accomplished included a mostly-complete FireWire stack, major improvements in networking, and more. Click Read More for summaries of every student projects.
FireWire stack for Haiku
Student: JiSheng Zhang
Mentor: Jérôme Duval
JiSheng spent his summer porting the FreeBSD Firewire stack to Haiku. Currently the bus module (OHCI + firewire core), the userland interface and a userland are ported. Receiving DV to a file works (command line only). Mass storage support (with SBP) is still in progress. The code is committed in our repository (see 00README.haiku for more information).
Network preflet for Haiku
Student: Andre Garzia
Mentor: Stephan Aßmus
Andre has produced a first working version of the Network preflet with which each working interface can be configured. He currently continues to work on the preflet to implement more advanced features like support for different profiles. The code is committed in our repository (see here for more information).
Package (.pkg) File Installer
Student: Łukasz Zemczak
Mentor: Ryan Leavengood
Łukasz continued the work mentor Ryan Leavengood had started to reverse engineer the pkg file format originally designed for the BeOS SoftwareValet system. Many existing BeOS applications are distributed in this format. Łukasz then implemented a parser for that format and a GUI based installation program. In addition he designed a package registration system which allows for later uninstallation of packages. He consulted with the Haiku Creative Design Team in designing the simple but elegant GUIs used for the installer and uninstaller. He also made use of the Haiku GUI layout API to make the interfaces properly font sensitive.
Precaching Algorythm in Haiku
Student: Krishna Kishore Annapureddy
Mentor: François Revol
Krishna wrote code to do readahead on disk I/O. Code isn't yet ready for svn, but it showed some improvement on the latency of periodic read() calls by a factor of up to 3 from harddisk. Limited testing on CD-Roms showed improved playback experience.
USB isochronous streams
Student: Salvatore Benedetto (emitrax)
Mentor: Oliver Ruiz Dorantes
Salvatore started his work on the isochronous transfers right after knowing his acceptation into GSoC, despite started involving within the comunity before. His work has involved all levels of the USB Haiku architecture: The UHCI controller, the USB bus manager. In the current USBKit has added support for the isochronous transfers and to set alternate settings. To complete the bridge also the usb_raw driver needed modifications. As test case, he implemented a simple application which communicates a webcam retrieving buffers. The project was successful although some code still needs to be committed to the tree.
Create a thread scheduler with CPU affinity
Student: André Braga
Mentor: Axel Dörfler
André designed and implemented an O(1) scheduler for Haiku - the actual integration in the kernel is still missing, though. The scheduler so far delivers a perfectly fair distribution of the processor time to the running threads while respecting their different priority levels. CPU affinity is not yet completely outlined, but will follow the integration into the kernel which André will work on in the next weeks.
Network stack revamp: IPv6, ICMP, multicast, etc.
Student: Hugo Santos
Mentor: Axel Dörfler
Hugo started working on our networking stack way before the GSoC officially started, and showed an enormous pace and high quality of the work he did. That obviously motivated him even more, and he started to work on things not directly related to networking (like his slab allocator implementation), but this also brought us an early stage of a FreeBSD network driver compatibility layer. Later on, he unfortunately couldn't keep up with his performance: he moved to another country, and did not have a working internet connection from home which prevented most further work. He still has some stuff pending and intends to continue working on the IPv6 implementation for our stack in the upcoming weeks.
Implement ICMP error handling and propagation
Student: Ivo Vachkov
Mentor: Axel Dörfler
Unfortunately, Ivo could not spend as much time on the project as he originally intended; therefore, he didn't finish his assignment, and is our only student who did not receive our recommendation for his final payment. Ivo regrets his lack of time and fully supports our decision, though. He sent me what he did so far, and it seems to be a good start - I will try to work together with Hugo and integrate his work some time in the near future.
Congratulations to all involved and here's to next year!