Ideas

The Haiku Project has been selected to participate in Google Summer of Code™ 2011!

Qualifying students can apply for a Haiku project (see the list of suggested projects below)
between March 28th and April 8th, 2011. 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 wishes
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.

Enhancements for Virtualization Software

Haiku works nicely both on real hardware and virtualized machines, but lacks most of the so-called “guest additions” that allows smoother integration with the host. This include changing resolution on window resize, mouse automatically switching from host to guest and back, file sharing. Write such a guest addition package for virtualbox or/and vmware

Skill set: userland development, driver development

Kernel

Filesystems: general improvements (BIG)

Haiku has great support for its own filesystem, but most others are only available read-only, or not at all. It is way better for interoperability with other systems to be able to read and write to these disks.

ReiserFS, BTRFS, exFAT: write support

UFS2, ZFS: Read (& Write) support

SMB, Windows shares: Read (& Write) support

HAMMER FS: Read (& Write) support

Skill set: kernel, and driver development

IMAP FS: File system access to an IMAP account

In Haiku emails are stored as individual file with extended attributes. Mounting an IMAP account as a local file system is therefore a natural fit. The file system should have full read and write support (deleting mails (files), creating folders, and moving mails between folders, etc.) with local caching for better performance.

Skill set: kernel and file system (driver) development, network development

NFSv4 client with xattr support and caching

Haiku has an NFS client, but using the out of date NFSv2 specification and the old file system API. This makes it unusable for any practical purpose. Also, the current implementation doesn't support caching, which makes it slow, and lacks xattr handling, which is very important in Haiku.

BFS Partition Resizer

An often requested feature. This includes being able to resize the filesystem and it's descriptive structures (eg, think of resizing an image file) and being able to resize the partitions on the drive. Ideally integrated within DriveSetup.

Skill set: Driver development

Drivers

USB 3.0 support

XHCI implementation Haiku has already some support for UHCI, OHCI and EHCI.

Requirements: acquiring a PCI-e USB 3.0 board (30$).

Skill set: 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.

ACPI Video Extensions

ACPI Video Extensions, as specified in ACPI Spec 4.0a Appendix B, adds special support to handle multiple output devices such as panels and TV-out capabilities, brightness control as well as special power management features.

TTY Layer

The TTY layer is needed for proper serial port support in Haiku. Until now the serial port was reserved for kernel debugging, but it is now time for proper userland support. Rewrite the API that was available in BeOS R5, and make sure it can be used with a real serial port. USB to serial converter may or may not be included.

Currently, the TTY layer is written mostly with the usb_serial in mind, so it uses stuff that might not be easy or possible at all to use in more low-level drivers (like pc_serial). The API could use improvements. Locking issues exist. Also the generic module is not yet in the image due to these.

Note: This task could include finishing phoudoin's libusb port, which would help to make the driver more feature complete.

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.

Modular edit view (BIG)

Many Haiku applications are using their own edit view to provide basic editor functionalities. All these implementations work a little bit different and create an inconsistent user experience.
One solution is to provide a modular and powerful editor view that could be used in various Haiku applications.

The edit view design should be modular and extensible to make it easy to implement e.g. following features:

syntax highlighting

spell checker

code completion, word completion

line numbers, ruler, 80 character limit line, hyper links

working on an input stream rather than on a input file e.g. to be able to open files ~100Mb without loading them into memory in one go.

interface to external applications e.g. to jump from a compiler error to the according line in the code

Skill set: C++, UI development

Media

Merge CDPlayer into MediaPlayer

The functionality of CDPlayer could be migrated into MediaPlayer, allowing the play back of audio cd’s. An alternative to CDPlayer’s way of controlling the device in a low-level fashion would be to make it use the wave files as presented by the cdda-fs, subscribe to volume mounts via BVolumeRoster, present a menuitem for the CD similar to one for DVDs in the VLC Media Player, having this option populate a playlist and start playing.

Skill set: general C/C++, userland development

Fix and improve Haiku’s mail system

Haiku features an integrated mail management system allowing to manage your mail using Tracker, the file explorer. This system needs some improvements and updates. See this mailing list post for a list of TODO and related ideas

Skill set: Network protocols, general C/C++

Hardware 3D acceleration

Design or port an existing 3D driver interface. See for example the Gallium3D project. Another option is to write a compatibility layer to load binary Linux 3D graphics drivers. There should probably still be our own 3D acceleration API for drivers.

Other

BuildBot for Haiku’s source tree (small)

Currently Haiku uses an in-house continuous integration solution Haiku Build-O-Matic. Implementing a BuildBot would provide numerous features over Build-O-Matic. Some basic requirements would be to supporting building the various aspects of Haiku from source on numerous platforms (FreeBSD, linux based OS’s, Haiku, …,) related thread

Trac Plugin: “Test and Commit Patch” functionality

Several developers have requested the ability to simply press a button that would trigger an automatic system to test and (conditionally commit) a supplied patch.

Skill set: Python

Create Language Bindings to Haiku’s C++ API

Scripting languages should be able to use the system API directly. Python and Perl have an object-oriented approach that would allow using the Be API and using the full power of the Be API right inside your scripts. This includes displaying windows, but also accessing the locale kit, or other native stuff.

In previous years, it has been discussed to utilize a dual-layer approach: First to use SWIG to generate uniform bindings and then to have a more natural syntax that binds to the SWIG bindings.

Skill set: C++, Maybe Python and/or Perl

Update Haiku support in SDL 1.3

SDL 1.2 branch works on Haiku, but is a bit buggy still. The new development is now focused on 1.3, which does not yet have native Haiku support. Since the code in the 1.2 branch is so buggy, this may need a complete rewrite.

Skill set: C, userland development

Add Haiku support to Allegro 5.0

Allegro is a gaming library, it has support for BeOS/Zeta/Haiku in the 4.4 branch, but they dropped BeOS from the 5.x branch. Now that Haiku is in a usable state it would be nice to get the latest builds of Allegro 5.0 working on Haiku. It’s still unclear if Allegro will be applying for GSoC but they do have a developer who’d be willing to co-mentor this with a Haiku mentor.