Getting Started

Developers are the driving force behind Haiku, and without them, we would not be where we are today. It’s hard to put into words the pleasure of seeing something you’ve built help many other people. Newcomers will need to know or be willing to learn C++, as well as the BeOS/Haiku API.

Getting Involved

The best way to get into developing on the Haiku project is to get to know the environment and make yourself familiar with the system. If you have programmed for BeOS before, getting into the Haiku API shouldn't be a problem. If you are new to Haiku, try spending some time with easier tasks (see below). It is much easier for us to help you with problems you encounter after you chose a task than to assign one to you as we don't know what your exact skills and preferences are. Usually, by running Haiku for a while you will easily find out things that don't work as expected or that can be improved.

What do I need for coding?

As far as development environments are concerned, Haiku itself can be a very optimal and frictionless development environment. Linux and some BSD-based systems also work perfectly fine and using those operating systems can be more practical.

You should also get in touch with the Haiku Community and the developers, especially if you need direction.

  • Learn our Coding Guidelines. All Haiku source code should comply to this standard.
  • Haiku

    Submitting patches to Haiku

    Haiku uses Gerrit to handle patches for review. Patches are usually submitted from the command line using git. Initially, all your patches must be reviewed in this way, but after a while, you may be promoted to reviewer yourself and be granted the right to push your changes to the repository directly.

    Since working with Gerrit is a bit different than the usual "pull request" flow some developers already know, please read our page about working with git for more details about the process.

    Beginning to work with the Haiku operating system

    However, before you decide that you're going to make a change, you need to figure out what the change you want to make is going to be!

    When you have found a task you'd like to work on, please feel free to ask your questions on the development mailing list. Before writing code please also read our Coding Guidelines and try to always keep them in mind (we are strict about them). Then we wish you much luck and fun coding for Haiku!

    Easy Introductory Tasks

    Here are a few possible starting points:
    • Fix font sensitivity issues and hard-coded values
      Run apps, see if everything looks alright at different font sizes, fix any bugs. Check the source for use of hard-coded values (e.g., colors, paths) and use the respective API call to retrieve the system-defined value (e.g., via ui_color()).
    • Easy tasks from our bugtracker
      Please also take a look at our list of easy tasks at the bugtracker. They are mostly smaller bugs that can be fixed by one person. Pick one of them, leave a comment that you are working on it and attach a patch when you're done.
    • Make our UI and applications more compliant to the Haiku User Interface Guidelines
      Run apps, check if menus and buttons are named and positioned correctly (e.g., menus/buttons that open a dialog should end with "..." using B_UTF8_ELLIPSIS). Also, check, for example, if the preferences dialogs apply changes immediately (or have an "Apply" button) and if they have a "Revert" button (instead of "Cancel" and "OK"). Also see if they behave consistently with the rest of our system preferences applications.
      See the Human Interface Guidelines for further information on this item.
    • Clean up source files
      We have Coding Guidelines that all of our source should follow (except for imported code from other projects). Some of the native applications do not follow these guidelines yet. Clean them up so they are compliant and submit a patch to our bug tracker as an enhancement ticket.

    Most Wanted Tasks

    Anyone with an account at our bugtracker can up/downvote specific tickets. If you can solve a ticket on the "Most Wanted" list there, you'll be instantly loved by all. Beware though, most things listed are non-trivial problems...
    If you don't find something for you in this list, please ask at our development mailing list by sending in a small introduction of yourself:
    • What are your skills? - E.g.: "I'm a professional C++ developer." or "I'm a hobby coder with 2 years C++ experience."
    • How many hour per week do you want to work? A rough estimate is enough, just so that we can assess which kind of task may fit you.
    • Do you have experience with special development areas? - E.g.: kernel, network, file systems...
    • Is there some specific area you want to work on?

    We will try to find something for you by asking some questions and maybe pointing you to specific bugs.

    HaikuArchives

    Haiku hosts an entire repository of software that was specifically designed for both Haiku and BeOS in the HaikuArchives GitHub repository.

    Working with applications on HaikuArchives is an amazing way to get acquainted with the Haiku APIs and practice your C++ skills!

    Many of these applications are relatively easy to work with and have literally been around for decades! There are literally thousands of open bug reports and feature requests for them. Most of them are easy to deal with.

    Further reading