Ideas

Our application to become a mentor organization for the Google Summer of Code 2007 has been approved! Qualifying students can apply for our GSoC 2007 ideas listed here between now and March 26th, 2007. For details about how to apply, please check out Students: How to Apply for a Haiku Idea.

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

Applications

.pkg-compatible package installer

Many applications for BeOS are only available as .pkg installer files. Create a UI proposal together with the usability team, reverse-engineer the .pkg format, and write an easy to use one-click .pkg installer.
  • Tickets: #1040
  • Skill set: UI development, usability basics

Implement a resource editor

Create UI proposal together with the usability team and implement the resource editor. We already have some source code in our repository which you can use as a starting point.
  • Tickets: #968
  • Skill set: UI development, usability basics

Network Preferences Application (small task)

Create UI proposal together with the usability team and implement the preferences application. This task could be extended to also have a replicant symbol in the Deskbar for simple connection/profile management (at least PPP, maybe prepare for WiFi).
  • Tickets: #820
  • Skill set: networks, UI development, usability basics

Drivers

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

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. 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

Support for USB isochronous data transfer

Implement isochronous data transfer for our USB stack.
  • Tickets: #1045
  • Skill set: kernel and driver development
  • Requirements: a USB device that requires isochronous transfer, like a USB audio card or some webcams.

Write a FireWire stack (big task)

Implement a FireWire stack with support for mass storage and DV cams. This could be done by porting a stack with a compatible license, ie. the FreeBSD FireWire stack would be a candidate.
  • Tickets: #1049
  • Skill set: kernel/driver development, FireWire protocol

Kernel

Create a thread scheduler with CPU affinity

Create an O(1) thread scheduler with CPU affinity and soft real-time support which targets desktop responsiveness.
  • Tickets: #1069
  • Skill set: kernel development, algorithm design

Identify and fix performance bottlenecks in the kernel and I/O subsystems

For example, the current syscall mechanism is much slower than it should be.
  • Tickets: #1071
  • Skill set: kernel development, algorithm design

Implement a precache algorithm for the file system caches

The file cache exports an API for precaching modules. We already have a very simplistic launch_speedup module that could be used as an example. The block cache currently reads single blocks from disk, and doesn't do any precaching whatsoever.
  • Tickets: #1070
  • Skill set: kernel development, algorithm design

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

Media

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 HDA audio driver and add-on

  • Tickets: #1072
  • Skill set: kernel development

Network

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. You will have to implement IP multicasting, though.
  • Tickets: #1042, #1077 for IP multicasting
  • Skill set: network protocols, maybe kernel development

WiFi support (big task)

Design a WiFi stack API, and implement it. There is lots of code to look at and/or port in OpenBSD. Also, the recently adopted WiFi stack in the Linux kernel could help with the design.
  • Tickets: #1050
  • Skill set: network stack development, WiFi protocols, kernel/driver development

Implement IPv6 support (big task)

  • Skill set: IPv4 and IPv6 protocols, kernel and network stack development

User Interface

Identify and fix performance bottlenecks in our app_server

While we did try to choose the right methods to make our app_server fast, we did not optimize it at all yet. Make sure the server threads use their full thread quantum, remove potential lock contentions, improve drawing speed.
  • Tickets: #1074
  • Skill set: UI development, multi-threaded programming, algorithms, you know how to use a profiler

Other

Expand our automated unit tests

Port a complete POSIX testing framework and add missing unit tests for the Haiku API. You might also port a network stack testing framework.
  • Tickets: #61
  • Skill set: good C/C++ knowledge