开发常见问题(FAQ)

我是一个程序员,希望可以帮忙,那么从何开始呢?

查看我们的 开发入门页面 。你可以在文档资料找到一些链接,通过这些链接可以找到 有关编程的页面

是否有简单的引导任务?

你可以做一些介绍性质的工作,可以在 开发入门页面 看到相关的介绍。

是否有特定的编程风格?

我们确实有自己的编程风格,你可以查看 Haiku 源码规范 获取相关的文档信息。

如何创建和提交补丁?

在[检出我们的源码库](构建Haiku)和[git配置完成](获取源码)之后,你可以进行源代码的修改。记着检查你的修改是否存在编译错误或者警告。之后就是提交修改,打开终端,在你进行修改的目录或者你的源码仓库的根目录,完成本地修改提交 git commit -a 之后,运行 git format-patch。 之后,您可以在代码库根目录找到这个补丁。如果希望提交该补丁,需要将该文件链接到相应的[错误报告](http://dev.haiku-os.org/)或者将其发送到我们的[开发邮件列表](http://www.freelists.org/list/haiku-development)。

为什么无法在 Trac 中创建任务单?

在 Trac 中创建账号之前,需要通过电子邮件来核对你的账户,阅读这里[获取详细信息](http://dev.haiku-os.org/wiki/AccountVerificationEmail)。

使用哪些开发工具?

  • 一个稍微修改过的 Jam 是我们的编译工具,在 Haiku 的官方版本和最近发布的镜像都包含这个工具。如果需要跨平台编译 Haiku,您需要从[源代码编译 jam](从源码编译jam)。
  • [GIT](http://git-scm.com/) 是我们的版本控制系统。
  • [Trac](http://dev.haiku-os.org/) 是我们的项目管理和错误问题跟踪系统。

是否有开发者邮件列表?

我们有几个邮件列表,可以在[邮件列表页面](http://www.haiku-os.org/community/ml)上查看相关内容。

是否有 IRC 聊天室?

有多个[IRC频道](http://www.haiku-os.org/community/irc)可供选择,所有的频道由 irc.freenode.net 网站提供支持。

我尝试进行测试,但是 Haiku 编译失败。接下来该如何操作?

确保你的系统是被 Haiku 编译系统所支持的系统平台。确保你是用的是正确的编译工具(编译工具的版本号要正确),而且还要确保你调用的设置脚本和 jam 的正确性(阅读[开发入门](开发入门)来获取更多的信息)。如果所有步骤都是正确的,但是问题仍然存在,在 [Haiku 开发邮件列表](http://www.freelists.org/list/haiku-development)上发布错误,但是请不要在 Trac 中报告编译错误。

我想把一些东西集成到官方源之中,可以集成那些组件?该使用何种协议呢?

由于 Haiku 源码树包括了几个移植的应用程序,我们尽量只把重要的部分包含进来(如 bash,GNU 命令行工具,以及调试工具 gdb)。对于多数其他的应用,建议它们用于 Haiku 平台分支的源码保存在原始提供者的代码库中。第三方的库函数只有在它们被我们认为很重要的应用所使用时,我们才会在代码库中包含它们。但是,我们非常乐意接受用于硬件支持的内核驱动代码。

我们通常只接受自由软件协议授权下的捐赠(例如 FSF 下的[自由软件协议](http://www.fsf.org/licensing/essays/free-sw.html)),最好是 Haiku 使用的协议(即 [MIT 协议](http://www.opensource.org/licenses/mit-license.php))。如果是应用程序,内核驱动,或者大多数的插件,唯一的限制就是它们所使用的条件不是我们所不能够或者不愿意采用的(例如:BSD 协议较早的版本中包含的广告条款)。对于操作系统的各个组成部分(如内核,或者提供公共API的函数库,例如 libbe),我们拒绝使用由传染性的协议授权的捐赠(如 GPL),这类协议要求我们在相关的代码中使用该协议。目前有只有 libroot 是个例外,它使用的大量代码来源于 LGPL 授权下的 glibc。

我希望可以把我的 BeOS 程序/驱动移植到 Haiku,该如何进行?

由于 Haiku R1 与 BeOS R5 是二进制和源代码大部分兼容的,通常你可以直接在 Haiku 中使用 BeOS 的程序。在应用程序级别的 API中,只有极少的不兼容性存在。尽管已经有了一个新的驱动接口,但是 BeOS R5 的驱动仍然被 Haiku 所支持(只是需要做少量的改动)。文件系统添加接口的方式发生了显著地变化,你需要移植老的文件系统。你可以查阅下面的文档列表获取更多的信息,如果需要进一步的帮助,在 [Haiku 邮件列表](http://www.haiku-os.org/community/ml#haiku)中联系我们。

[Application Level API Incompatibilities with BeOS](http://www.haiku-os.org/documents/dev/application_level_api_incompatibilities_with_beos)