haiku-website/content/development/getting-started.html

146 lines
7.3 KiB
HTML

+++
type = "article"
title = "Getting Started"
date = "2009-09-11T06:42:48.000Z"
tags = []
+++
The information on this page is intended to explain how you can get started with Haiku development.
<h3>Getting Involved</h3>
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.
<!--more-->
<h3>Submitting patches to Haiku</h3>
<p>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.</p>
<p>Since working with Gerrit is a bit different than the usual "pull request"
flow some developers already know, please read our page about <a href="/guides/building/get-source-git">working with git</a>
for more details about the process.</p>
<h3>Easy Introductory Tasks</h3>
Here are a few possible starting points:
<ul>
<li>
<strong>Fix font sensitivity issues and hard-coded values</strong><br>
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()).
</li>
<li>
<strong>Make our UI and applications more compliant to our HIG</strong><br>
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.<br>
See the <a href="https://www.haiku-os.org/docs/HIG/index.xml">
Human Interface Guidelines</a> for further information on this item.
</li>
<li>
<strong>Cleanup incompliant source files</strong><br>
We have <a href="/development/coding-guidelines">
Coding Guidelines</a> 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 <a href="https://dev.haiku-os.org/">
bug tracker</a> as an enhancement ticket.
</li>
<li>
<strong>Easy tasks from our bugtracker</strong><br>
Please also take a look at our <a href="https://dev.haiku-os.org/wiki/EasyTasks">
list of easy tasks</a> 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.
</li>
</ul>
<h3>Most Wanted Tasks</h3>
Anyone with an account at our bugtracker can up/downvote specific tickets. If you
can solve a ticket on the <a href="https://dev.haiku-os.org/report/9">"Most Wanted"</a>
list there, you'll be instantly loved by all. Beware though, most things listed
are non-trivial problems...
<br>
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:
<ul>
<li>
What are your skills? - E.g.: "I'm a professional C++ developer." or "I'm
a hobby coder with 2 years C++ experience."
</li>
<li>
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.
</li>
<li>
Do you have experience with special development areas? - E.g.: kernel,
network, file systems...
</li>
<li>
Is there some specific area you want to work on?
</li>
</ul>
We will try to find something for you by asking some questions and maybe
pointing you to specific bugs.
<h3>When You've Found a Task</h3>
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!
<h3><a name="development_tools" title="development_tools"></a>What do I need for coding?</h3>
<ul>
<li>
Currently, Haiku is the best development environment.
Linux, BSD, and OS X also work.
BeOS, Zeta, Cygwin, and Solaris are no longer actively maintained as development environments and little to no support is offered for those platforms.
</li>
<li>
Subscribe to these mailing lists:
<ul>
<li>The <a href="https://www.freelists.org/list/haiku-development">development mailing list</a></li>
<li>The <a href="https://www.freelists.org/list/haiku">general Haiku mailing list</a></li>
<li><a href="https://www.freelists.org/list/haiku-commits">Commit logs</a></li>
</ul>
</li>
<li>Learn which <a href="/guides/building/pre-reqs">development tools</a> are needed on your platform.
</li>
<li>Read how to <a href="/guides/building">get and build our source code</a>.</li>
<li>Learn the basics of our <a href="/documents/dev/a_brief_introduction_to_our_source_repository_layout">source tree layout</a>.</li>
<li>
Get familiar with our <a href="https://dev.haiku-os.org/wiki">project management and bug/issue tracking system</a> (Trac).
</li>
<li>Learn our <a href="/development/coding-guidelines">Coding Guidelines</a>. All Haiku source code should comply to this standard.</li>
</ul>
<h3><a name="further_reading" title="further_reading"></a>Further reading</h3>
<ul>
<li class="icon-document"><a href="/development/faq#intro-tasks">FAQ: Do you have any easy introductory tasks for me?</a></li>
<li class="icon-document"><a href="/documents/dev/a_brief_introduction_to_our_source_repository_layout">Brief Introduction to the Source Repository Layout</a></li>
<li class="icon-document"><a href="/development">Developers Documentation</a></li>
<li class="icon-document"><a href="/legacy-docs/bebook/" title="The BoBook">The BeBook</a></li>
<li class="icon-document"><a href="http://www.oreilly.com/catalog/beosprog/book/"
title="http://www.oreilly.com/catalog/beosprog/book/">&quot;Programming the Be Operating System&quot;</a> (<a href="/files/downloads/programmingbeos.zip">mirror</a>)<br /></li>
<li class="icon-pdf"><a href="http://www.perforce.com/sites/default/files/pdf/WPLaura.pdf">Getting Started with Jam</a> (<a href="/files/WPLaura.pdf">mirror</a>)</li>
<li class="icon-document"><a href="https://swarm.workshop.perforce.com/view/guest/perforce_software/jam/src/Jamfile.html">Jam reference and documents</a></li>
<li class="icon-document"><a href="https://dev.haiku-os.org/wiki/GitStarted">Getting started with Git</a></li>
<!-- TODO: Replace this, add more resources! <li class="icon-document"><a href="/documents/dev/using_subversion_with_the_haiku_source_repository">Using Subversion with the Haiku Source Repository</a></li> -->
</ul>