wiki:GoogleSummerOfCodeIdeas

Version 49 (modified by mmadia, 13 years ago) ( diff )

added #6206 -- scrollbar pref merged into appearance

Work-in-Progress: 2011

Google has announced Google Summer of Code 2011, here are some project ideas for Haiku.

Filesystems: general improvements

  • ReiserFS: write support
  • BTRFS, UFS2, ZFS: Read (& Write) support
  • SMB, Windows shares: Read (& Write) support
  • SquashFS: To support booting Haiku off SquashFS on a CD/DVD
  • exfat read/write support. A FUSE driver exists at http://code.google.com/p/exfat/wiki/QuckStartGuide. The UserlandFS FUSE compatibility needs to be extended (signals API) for it to compile out of the box. For auto-mounting support, a native file system with libexfat as backend needs to be written, or the UserlandFS server needs to be extended, so that it implements FS hooks related to automounting, by forwarding these calls to each known UserlandFS add-on and figuring out which one would handle the given partition.

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.

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.

Skill set: network protocols, maybe kernel development, userland development

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.

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

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.

Requirements: owning an UVC webcam.

Related code: skeleton driver

ACPI Video Extentions

ACPI Video Extentions, 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.

Suggested work: Detect attached devices for display adapters, implement a basic driver for a display, allow display switching and brightness control.

Requirements: computer with ACPI that has Acpi Video Extentions (_DOS _DOD and so on)

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

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.

Requirements: a DV camera, a machine with a Firewire port.

Skill set: kernel development, API design, general C/C++, userland development

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 phoudin's libusb port, which would help to make the driver more feature complete.

Skill set: kernel, and driver development

Tickets: #35 #3232

Bluetooth Stack Improvements

Haiku Bluetooth Stack implements basic functionality on lower and middle layers, this functionality needs to be completed and Bluetooth 2.X possibilities explored.

Requirements: Bluetooth enabled Haiku system

Skill set: C++, kernel development, userland development, global bluetooth stack knowledge(optional)

Tasks: RemoteDevices Database, UserLand tools(Preferences), Pairing/Auth/Encryption use cases, etc.

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

Multi-monitor support for the app_server

The app_server needs to handle multiple monitors in its internal screen representation and configuration. The drawing call dispatching would need to be split up, so that drawing commands are dispatched to different Accelerants.

To ease development, having two graphics cards in your computer is recommended, as none of the existing Haiku drivers currently support dual head output correctly (as the accelerant interface does not define a way to use it).

Skill set: graphics drivers, application design

Preflet GUI refactoring

Several preference applications (aka preflets) could be redesigned. This includes (but not limited to)

  • combining Keymap and Keyboard
  • #6983 Printer
  • #6206 integrate scrollbar options into a new Appearance preflet
  • Shortcuts
  • Network (todo, link to work-in-progress preflet)
  • ...,

Merge CDPlayer into MediaPlayer

The functionality of CDPlayer could be migrated into MediaPlayer, allowing the play back of audio cd's.

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.

Help Improve WebPositive, Haiku's Native WebKit Based Browser

WebPositive is Haiku's native WebKit based browser. Students interested in this will be need to contact us on the possible areas to work on.

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.

Skill set: graphics drivers, API design

Related code: development branch, containing gallium3d port

BuildBot for Haiku's source tree

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

Skill set: Python

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.

VirtualBox port to Haiku

A port of VirtualBox to Haiku, would allow developers and users to run another operating system within Haiku. Preliminary VirtualBox port to Haiku

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

Updating AbiWord

Even though an older AbiWord port is being hosted at OSDrawer : AbiWord Project Page (2.0), the AbiWord project would prefer the port to use their current sources (2.8.x). The student is responsible for determining which aspects of this project to persue. AbiWord/AbiSource has participated in past GSoCs and we expect that they will again this year. This could be a possible cross project with a co-mentor from each org, so if interested in this one you may want to apply to both orgs.

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.

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.

Graphical project manager tool

BeOS had CodeWarrior IDE built-in, which makes it easy to create a new project and get started on development. Haiku currently only provide make and jam in the

default installation, which is far less easy to use for starting developpers. The makefile engine is somewhat simpler, but more limited. All of these tools are to be used in text mode, not so good for beginners. Also see : http://www.marmida.org/blog/2010/10/27/9/

Create some graphical tool to easily get started on 3rd party development in a few clicks. No need for a full-blown IDE.


Previous Years

2010

See official page here: http://www.haiku-os.org/community/gsoc/2010/ideas Last work-in-progress page for 2010

2009

See official page here: http://www.haiku-os.org/community/gsoc/2009/ideas Last work-in-progress page for 2009

Note: See TracWiki for help on using the wiki.