Wrap-up Reports 2009 : Google Summer of Code, Haiku Code Drive
This year eight students were funded to work with Haiku during the summer months, six from Google in their Google Summer of Code program and two from Haiku Inc. for Haiku Code Drive. It is both my pleasure and honor to announce that overall this year has been more successful than last. Five of the six Google Summer of Code students passed, as well as one of two Haiku Code Drive students. On top of this achievement, Adrien Destugues and Bryce Groff were granted commit access for Haiku. Maxime Simon was approved by WebKit to receive commit access as well!
Before getting into the actual results for each student, it is worth re-visiting how we got here. This is the third year in which Haiku was selected to participate in Google Summer of Code. Each year we, as an organization, strive to improve our process for both the participating students and our community. Perhaps the most significant modification was the introduction of requiring students to resolve one or more tickets in our bug tracker. The intention was to ensure each applicant had a minimal level of exposure to our project. This includes navigating and building Haiku’s source code, as well as communicating through our mailing lists and other collaboration tools. Having the requirement fairly open ended allowed the applicants to provide our mentors with initial insight to their motivation, skill, and communicative abilities. The results speak for themselves: an increased number of passing students puts the proverbial stamp of approval on this new addition to our selection process. And now for the summaries for each student…
Adrien Destugues: Locale KitAdrien's project centered around adding internationalization support to Haiku, in the form of string translations and formatting information to meet the standard conventions for a user selectable region/language. Such data includes, but is not limited to, calendar and monetary values. Aspects of the implementation ranged from:
- integrating branches/components/gsoc-locale-kit. Recently, this code has been merged to trunk. Improving the preflet and integrating the Locale Kit throughout Haiku are tasks where community contributions would greatly be appreciated.
Bryce Groff: Partitioning SupportPrior to Bryce's work, DriveSetup had some functionality for volume management, being able to initialize pre-existing partitions as BFS volumes. However the ability to create and delete partitions was absent. This work consisted of finalizing the initial design of the Disk Device API, the Intel partition and extended partition add-ons, and updating DriveSetup to utilize those additions. Most of this code was not in the userland program, but in fact much deeper in the API. Bryce's work was committed to trunk, as individual patches were ready. While some functionality, such as installing a basic partition boot record was missing, R1 Alpha1 did indeed ship with a partition manager capable of creating and deleting partitions.
Ma Jie: ZeroConf+mDNSResponderZeroConf essentially provides the ability to discover network resources, such as printers. Such network discovery is communicated over DNS multicast, which in this case is provided by mDNSResponder. A well known implementation of this functionality is Apple's Bonjour. The first task for this project was to enhance Haiku's existing network implementation to allow it to work with mDNSResponder. Once that was in place, the bulk of the project continued:
- porting mDNSResponder
- implementing a native API for service discovery
- writing several clients to utilize the new API
Raghu Nagireddy: BFS FUSERaghu was another student participating in Haiku Code Drive. A BFS Fuse implementation would provide read/write functionality to other operating systems that are FUSE capable. As you may imagine, this could easily help strengthen the adoption rate of Haiku, as it increases BFS's interoperability and thus Haiku's overall usability. In the first half of the semester, Raghu provided a working BFS FUSE implementation, which was committed to Haiku's repository. In theory, any of Haiku's supported file system could make use of it. However in practice, currently only the BFS code can be compiled as an FS shell module. The rest of the program did not go as well. BFS Defragmentation was slated to be the next phase of development. Raghu began studying the B+Tree implementation and even proposed a design plan. Unfortunately, he was not able provide any code for it.
Obaro Ogbo: CIFS ClientDuring the application reviewal process, Obaro seemed to be one of the top students. Unfortunately due to unforeseen circumstances, Obaro was left without internet access for the better part of the program and wasn't able to complete his project.
Ankur Sethi: Text IndexingAnkur was one of two students selected to take part in Haiku Code Drive, an independent program that runs along side Google Summer of Code and has similar goals. Ankur's project was to implement full-text searching, similar to Mac OS X's Spotlight. This involved creating an index_server to manage indexing new and existing files, DataTranslators to allow the indexer to farm data from specific file types, and a basic GUI for performing searches. The core of the searching functionality is provided by CLucene, which was also ported by Ankur. Originally he intended to use OSDrawer for hosting his project, but ran into some issues which lead to using Google Code. Currently performing simple text searches is possible. Future work involves writing additional DataTranslators, a preflet, and ideally integrating the search UI into Tracker's "Find" utility.
- a multi-process prototype in the existing browser shell
- a bookmarking library
- a basic toolbar
Johannes Wischert: ARM PortGiven Haiku's small resource footprint, a port to an ARM based architecture seems to be a natural fit. To aid development, the Gumstix Verdex was first targeted, as it can be emulated by Qemu. However, the Gumstix Overo with Tobi expansion board is the ultimate goal. Shortly before Google Summer of Code, Johannes modified Haiku's toolchain to support creating ARM binaries. The goals included implementing a modified U-Boot bootloader, porting the kernel, and drivers for the microSD reader and serial port. Quoting his blog: "The Haiku loader that gets loaded by u-boot finally is able to load the kernel and start it and we even have minimal framebuffer support running." His code was also committed to trunk throughout the summer as individual patches. Some instructions for building and testing the port were posted by his mentor, François Revol to the haiku-development mailing list. Having completed the project's goals, a foundation for Haiku on ARM has been put in place and much more remains for a fully functional port.
Overall, this was perhaps the most successful Summer of Code on our books yet! Our deepest thanks go out to Google for providing us with this opportunity, the community members who donated to Haiku Code Drive 2008, and to the community members who stepped up to mentor these exceptional students! We implore you to help these new community members feel welcomed and to work with them on improving the projects. They have done a magnificent job over this summer and deserve our hats off to them! Well Done!
- Haiku, Inc. has hired an existing contributor to work on Haiku full-time!
- 20 Years of Haiku
- Media Release: The Haiku Project Celebrates the Release of Beta 3
- Haiku R1/Beta3 Timeline Update
- Haiku, Inc. sponsoring hardware purchases for RISC-V port
- Important Change Required for Haiku Nightly and R1/Beta2 Users
- Haiku R1/Beta3 Timeline Approved
- Haiku's IRC channels are moving to OFTC!
- Haiku to mentor 4 students in Google Summer of Code 2021
- System Sounds Contest Wrap-up