Our application to become a mentor organization for the Google Summer of Code 2008 has been approved! Qualifying students can apply for our GSoC 2008 ideas listed here between now and March 31th April 7th, 2008. 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 GSoC 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.

Project Areas


Extend the Network Preferences Application

Last years GSoC has brought us a new Network Preflet. It can be used to configure the devices of the system for DHCP or manual settings. Extend the applet to support profiles (named sets of settings). Integrate more settings types (at least PPP, maybe prepare for WiFi).
  • Tickets: #820
  • Skill set: networks, UI development, usability basics

Bluetooth Preferences Application

A Bluetooth stack is actively being developed by Oliver Ruiz Dorantes. The preference application would configure the stack and its services. It would be a first test case for the stack.
  • Skill set: teamwork, UI development, usability basics


Add DVD-RAM support to the CD driver

It should be possible to use DVD-RAM media like a hard disk, including write support. Another useful extension would be Mount Rainier support for CD/DVD-RWs which allows for a similar usage.
  • Tickets: #1047, and #1085 for Mount Rainier
  • Skill set: kernel 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

Finish USB OHCI support

Our USB stack currently only supports UHCI (Intel), and EHCI (USB 2.0) style USB chipsets. OHCI is found in many chipsets, though, and is still often used for USB 1.1 devices on a USB 2.0 interface. There is already much code written for OHCI. The UHCI/EHCI implementations can be regarded as examples on how to talk to our USB stack.
  • Tickets: #1044
  • Skill set: kernel and driver development


Implement paging (swap file) support

Try to intelligently handle the free space and the swap file (eventually allowing several swap files, or the reuse of other system's swap partitions - note suspend-to-disk issues with that), have a look at page compression, etc.
  • Tickets: #1972
  • Skill set: kernel development

Implement using HPET timers and other mechanisms than TSC for time keeping

On CPUs that are able to change their frequency, the TSC increment is not invariant. Therefore, we cannot use it to compute time on these machines. Unfortunately, most recent CPUs are affected due to power saving features.
  • Tickets: #1993
  • Skill set: kernel and driver development

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

Implement a layered file system extension architecture

The architecture should allow to transparently extend file systems with features like BeOS attributes and query support, write support, and data encryption.
  • Tickets: #1933
  • Skill set: kernel and file system development


Add encoding support to our MediaKit

The current media add-on API only supports decoding media. An API for encoding has to be created that fulfills all modern requirements (ie. B-frames). Furthermore, the existing encoders should be extended to export their functionality using this API.
  • Tickets: #1043
  • Skill set: You should have an interest in media encoders and should have experience in designing APIs. A knowledge of encoding algorithms is not needed.

Write a DV media node

Last years GSoC has brought us a port of the FreeBSD firewire stack. The next logical step is to write a media node implementing DV input/output by interfacing with the new firewire stack. The node would automatically detect hot plugging of DV equipment and provide the means to access this equipment via the Media Kit APIs.
  • Skill set: kernel/driver development, FireWire protocol, Haiku Media Kit


Implement ICMP error handling and propagation

The current stack implementation lacks a mechanism to deliver ICMP error messages to the protocols, and also to produce ICMP error messages on behalf of the protocol implementations. ICMP error handling would need to be implemented in the IPv4, TCP, and UDP protocols.
  • Tickets: #800, and possibly #1073
  • Skill set: network protocols, kernel level development experience probably helps

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

Implement ZeroConf/Bonjour support

It's sufficient to port an existing solution. Options include Apple's Bonjour implementation or