Developing

Developing a whole operating system from scratch creates considerable complexity for the core developers, who need to have immense computer science knowledge and low level programming skills over a wide area. This then results in areas of development that are left on the back burner because of the lack of developers with the needed specialized knowledge in these particular areas. The primary cause is that Haiku developers have to contend with the fact that the Haiku project is not just a kernel, as with Linux, but is an integrated and interconnected kernel; windowing system; widget toolkit; desktop environment and more.

This does, however, mean there is room for new developers to take over these areas and "make them their own" by exhibiting their technical skills. Furthermore, those with more limited skills can participate in other ways that are meaningful to the overall project.

Check out the following areas that need help from new developers:


Core System

You can contribute code to Haiku by submitting a patch to the Haiku development bug tracker in a ticket. You should first read the Haiku Coding Guidelines, the guide on how to submit patches to the bug tracker and the bug tracker's guide on etiquette. There's a step by step guide aimed at new contributors.

You will need to learn how to build Haiku from source and learn how to use git, the source code repository management system.

Developers that aim to eventually gain direct commit access to the Haiku repository, need to be subscribed to the commit mailing list to be able to participate in the code review process and join the development mailing list for discussions.

A development FAQ is available to answer frequently asked questions and there is a study book available to help you learn the Haiku API.

Core Development Opportunities:

3rd Party Applications

As 3rd party applications are developed externally from the Haiku source code repository, there are various processes that are used by the developers depending on whether the application is open source software or proprietary software. Nonetheless it is recommended to those wishing to participate in application development to read the 'Programming with Haiku' textbook to give you a head start when writing applications for Haiku.

People wishing to contribute to the development of existing applications should contact the developers for the best way to do so. You can update open source BeOS software to better work on Haiku by helping out at the HaikuArchives project, which boasts a large number of source code repositories for BeOS and Haiku applications.
You can fork a project from there and submit pull-requests to participate in the development. Many projects also have an issue tracker available that you can use to identify areas to work on.

If you want to develop a new application for Haiku, it is best to use some type of online source code repository service or you can add it to the HaikuArchives project. Some of these online source code repositories are able to be set to private, so you can also use them when developing your proprietary software.

No matter if you're developing a native application or port something from another platform, you should use the haikuporter tool and create a recipe for it. It automates the building and packaging in a clean environment which is essential especially when the project depends on external libraries etc. These recipes can be shared at HaikuPorts where they can automatically re-build a project when it becomes necessary and upload the package to a public repository that's interfacing with the HaikuDepot application (refer also to 'HaikuPorts Project' below).

If you want to port software to Haiku then you should be aware of the ways that Haiku differs from the likes of Linux and other Unix like operating systems. There is a textbook that was written for the BeOS that is both valid for Haiku and still available and there is a quick guide on how to use Haiku's Find Directory functionality.

It is strongly recommended that when porting open source software to Haiku, you submit your haikuporter recipe to the HaikuPorts project that is detailed below. This way your effort is not for naught, if by chance your changes are somehow lost.

Application Development Opportunities:

Package Maintenance

Because this is currently done internally, there is no official guide yet for Package Maintainers. Check with the people on the general Haiku mailing list for more information.


HaikuPorts Project

HaikuPorts

HaikuPorts is a centralized collection of software ported to the Haiku platform; the main goal of the project is to facilitate cooperation towards porting efforts. There are a number of guides on its website that can be very useful when working with the Haiku build recipes and for porting software to Haiku in general. To help with creating HaikuPorts build recipes, you have to join GitHub to suggest changes. If you want to really get cracking, then you should introduce yourself to the HaikuPorts team on their discussion list.

HaikuPorter

The HaikuPorter tool is a Python based tool that is provided to ease the fetching, patching and building of source code. It can be compared to a slim version of Gentoo Portage. Each port contains the Haiku-specific patches to the original source code. It fetches the original source code, applies the Haiku-specific patches, builds the software, and packages it. Python developers wishing to help with HaikuPorter have to join GitHub to submit a pull request with your changes on the HaikuPorter source code repository.


Web Infrastructure

Haiku project website

While we are all about Haiku as an operating system, the website itself is an entirely different beast in comparison. The website is currently maintained by a small group of people, and we can always use some help. If you would like to give us a hand editing content, managing spam, and other website related chores, contact us on the [haiku-web] mailing list. Some familiarity with content management systems would be a plus.

HaikuDepot Server

The HaikuDepot web application is a Java based online tool for working with Haiku software packages. It aims to be an internet-accessible catalog of these packages, a repository of package metadata and a user interface to edit this additional data. The metadata hosted on the website and sent remotely to the HaikuDepot desktop application includes data such as screenshots, icons, translations and user-feedback.

Java developers wishing to help with HaikuDepot Server only have to join GitHub to submit a pull request with your changes on the HaikuDepot Server source code repository. Documentation for HaikuDepot Server consists of an official development and deployment handbook, which includes a chapter on getting a system set for development purposes. A mailing list has also been set up to support the development of the HaikuDepot project.

Haiku Package Build System

The Haiku Package Build System is a Ruby on Rails based online tool for automating the building of Haiku software packages via remote clients, which can also run lint tests to validate HaikuPort build recipes and send the results back for the web tool to display. Ruby developers wishing to help with HPKG Build System only have to join GitHub to submit a pull request with your changes on the HPKG Build System source code repository.

Infrastructure Development Opportunities: