Ideas

The Haiku project has been accepted to participate in Google Summer of Code&trade 2010! Qualifying students can apply for a Haiku project (see the list of suggested projects below) between March 29th and April 9th, 2010. For details about how to apply, please check out Students: How to Apply for a Haiku Idea.

According to other mentor organizations, the most successful Google Summer of Code projects are the ones proposed by the students themselves. The following list represents our ideas and the current needs of our project. However, suggesting your own idea is encouraged!

If you find an idea marked as "big" interesting but feel you cannot completed in time, feel free to suggest splitting it into smaller parts in your proposal. Also, many of these ideas are not sufficient as stand-alone projects and would need to be combined with others on this list or of your own suggestion.

Students, who intend to submit applications on ideas that are part of other accepted mentoring organizations, need to contact both Haiku and the other mentoring organization.

Project Areas

Applications

Updating AbiWord

Even though an older AbiWord port is being hosted at OSDrawer : AbiWord Project Page, the AbiWord project would prefer the port to use their current sources. The student is responsible for determining which aspects of this project to persue.

Help Improve WebPositive, Haiku's Native WebKit Based Browser

Last year and again recently, Haiku's port of WebKit was significantly improved. A native Haiku web browser, WebPositive, has started to be written to make use of this port. Students interested in this will be need to contact us on the possible areas to work on, as WebPositive is heavily in development.
  • Skill set: teamwork, c++, UI development, usability basics

Creating Services Kit

Services Kit would expose web services to other Haiku applications. Such web services could include Last.fm, Facebook, or Twitter. Students interested in this project will work with the mentor to implement the base code, the Twitter protocol, and a replicant to update the Twitter status. The base code includes the necessary utility functions such as HTTP/HTTPS protocol, URL formatting, and computing MD5 hashes. Another aspect of this project could include creating a preflet application for managing a user's account information.
  • Skill set: UI development, usability basics, C++, API design, some experience with HTTP/HTTPS

Drivers

TTY Layer

Rework our current TTY layer into a module, and create an API that fulfills the need of a serial port, this includes both traditional RS232 as well as serial over USB. Integrate the new API into the serial drivers that are already in our repository, and make sure everything works as expected. Until now the serial port was reserved for kernel debugging, but it is now time for proper userland support.
  • Tickets: #35 #3232
  • Skill set: kernel, and driver development

Enhance USB Webcam

It is desired to refactor the USB Webcam driver to allow easier compilation on other operating systems. This will allow Haiku and other operating systems to benefit from each other's work more readily. In addition, there are numerous bugs to be resolved as well as adding support for a nearly endless supply of webcams.
  • Skill set: teamwork, kernel, and driver development

USB Video (UVC)

This driver will support higher end webcams and other devices. This should be designed with portability to other OSes, which encourages the re-use of coding efforts for both Haiku and non-Haiku operating systems.
  • Skill set: teamwork, USB knowledge, and driver development

ExpressCard with hotplugging support

Implement a bus manager for the ExpressCard slot. While we already have initial support for its preceding technology CardBus, ExpressCard support is missing yet.
  • Tickets: #1086
  • Skill set: kernel and driver development

Kernel

Enable the kernel to run as a userland process on top of itself

Having a virtual userland kernel running on top of itself or another operating system like Linux or BeOS can greatly benefit kernel development and code profiling.
  • Tickets: #1102
  • Skill set: kernel development

Various File System Drivers & Improvements

Haiku has great support for its own file system, but most others are only available read-only or simply not accessible. For better interoperability with other systems, it is desired to be able to read and write to these partition types. To note, while FUSE is an option in some cases, it is preferred to implement advanced features such as synchronous writing. Combining this project with others may be needed as well.
  • Ext, ReiserFS: write support
  • UFS2 : Read (& Write) support
  • ZFS: Read (& Write) support

Improve PCI bus_manager

Implement memory, IO, and IRQ resource assignment.
  • Tickets: #3, #4, #5
  • Skill set: kernel development

Port to x86-64 Architecture

Pretty much all current x86 desktop CPU are capable of running in 64 bit mode, but Haiku can use them only as 32 bit CPUs. Particularly because most exist code has not been written with 64 bit safety in mind, a port of the complete operating system is probably not realistic as a GSoC project. Porting at least boot loader and kernel should be absolutely feasible, though.
  • Ticket: #1141
  • Skill set: kernel development

Media

Improve MediaKit's encoding support

Encoding support is still relatively new to MediaKit and there are several areas could use additional development. The BEncoder is one of the API's to be implemented. Adding support for more codecs and updating the port of Xiph would need to be done as well.
  • Skill set: You should have an interest in media encoders and should have experience in designing APIs. Knowledge of encoding algorithms is beneficial.

Generic S/PDIF support

This should be implemented with Media Kit, so as to allow any Media Kit aware application to make use of it.
  • Skill set: API design, general C/C++

AV/1394 support

Our Firewire stack supports DV receiving, but not controlling the A/V device (ie play/stop). This requires to modify the Firewire stack for FCP frame support. See AV/C Digital Interface Command Set General Specification for reference.
  • Skill set: kernel development, API design, general C/C++, userland development
  • Hardware requirements: a DV camera, a machine with a Firewire port.

Network

Create C++ network stack class framework

This would involve designing and implementing an API to replicate similar functionality as cURL, but not limited to it (ie. WebDAV support comes to mind).

Integrate our PPP implementation

Port the PPP implementation to our new network stack. Add phone-line modem support, including HDLC framing and VJC compression (porting both algorithms is sufficient, but make sure the license is compatible to MIT). Implement CHAP authentication. Find and fix bugs.
  • Tickets: #812, #869, #873, #922, #923, #1059, maybe: #1057, #1058
  • Skill set: multi-threading basics, maybe network protocols and some kernel/drivers development, maybe UI development

NFSv4 client with xattr support and c