幫助 FreeBSD
Prev |  |

# 2 如何提供幫助

基本上可以分為以下 5 種方式：

## 2.1 錯誤報告和意見發表

通常，一般 的技術想法和建議應該發到 FreeBSD technical discussions 郵遞論壇。 同樣地，對於這些東西有興趣的人 (當然， 他們同時還要能夠容忍 大量的 郵件！) 可以考慮訂閱 FreeBSD technical discussions 郵遞論壇。 請參閱 FreeBSD 使用手冊 以了解關於這個郵遞論壇， 以及其它郵遞論壇的詳細情況。

如果您發現了 bug 或者想要提交某些修改， 請透過 send-pr(1) 程式或使用 網頁介面 的回報 來提交。請試著填寫 PR 的每個項目。 一般來說，除非 patch 檔超過 65 KB，我們建議在 PR 中直接附上 patch 就可以了。 若可直接套用 patch 到原始碼的話，那麼建議在 PR 的 Synopsis 欄位註明 `[PATCH]`。 對了，在附上 patch 時，請 不要 透過滑鼠的『複製、貼上』來進行，因為這樣做會把 Tab 變成空格， 會導致 patch 就不能用了。如果 patch 超過 20KB， 請考慮壓縮它並使用 uuencode(1) 來進行編碼。

在寫完 PR 之後，您會收到一封確認郵件以及事件追蹤編號。 請保留這個編號，因為事後可以用這編號發信到 `<bug-followup@FreeBSD.org>` 來回覆、提供關於該事件的後續資料。您需要做的是將編號放到郵件的標題中， 例如 `"Re: kern/3377"`。 若是同一問題的回覆方面，應該透過這種方式來進行。

如果您在一段時間 (超過 3 天甚至 1 週，這取決於您的郵件服務)之後仍然沒有收到確認信 或者由於一些原因無法使用 send-pr(1) 程式， 則可以發信到 FreeBSD problem reports 郵遞論壇 來請別人幫你代寄。

請參閱 這篇文章 了解如何撰寫好的問題報告。

## 2.2 對於文件的修訂

文件的修改方面，是由 FreeBSD documentation project 郵遞論壇 來審查。 請參閱 FreeBSD Documentation Project Primer 來獲得完整的教學細節。 請按照 Section 2.1 中介紹的方法使用 send-pr(1) 來提交新的文件，或者改善現有的文件 (哪怕是很小的改進也是歡迎的！)。

## 2.3 對於現有原始碼的修改

在現有原始碼上進行修改或增加功能，在某種程度上是需要更多技巧的事， 並且還跟您對於目前 FreeBSD 的開發現狀了解程度有關。 有多種方式可以得到被稱作 “FreeBSD-CURRENT” 的 FreeBSD 開發版本。 請參閱 FreeBSD 使用手冊的 相關部份 ，來了解使用 FreeBSD-CURRENT 的詳情。

在舊的原始碼上進行修改，則通常可能原始碼已過時， 或與新的版本差異太大而無法被重新整合到 FreeBSD 中。 如果您有訂 FreeBSD announcements 郵遞論壇 以及 FreeBSD-CURRENT 郵遞論壇 的話， 則可以透過它們來大致了解目前的開發狀態。

若您能夠儘量以最新的原始碼來進行您的修改， 則下一步要做的事情就是產生您所修改的 diff 檔， 並將它發給 FreeBSD 的維護人員。這項工作可以透過 diff(1) 命令來完成。

提交 patch 時，建議 diff(1) 格式採用 unified diff (可以用 `diff -u` 來產生)。不過，如果您修改了大量的原始碼， 則使用 `diff -c` 來生成的 context diff 的 diff 可能更容易閱讀，因而推薦使用。一般而言，大都是採用 `diff -ruN` 即可。

例如：

    % diff -c oldfile newfile

或

    % diff -c -r olddir newdir

將會對特定目錄，產生 context 的 diff 檔。

或者像是...

    % diff -u oldfile newfile

或

    % diff -u -r olddir newdir

將產生一樣的 diff ，但是格式為 unified 。

更多的細節部份，請參閱 diff(1)。

一旦您使用 diff(1) 來產生 diff 檔 (可以使用 patch(1) 命令來測試一下)，就可以提交它們，以便被 FreeBSD 收錄。 透過使用 Section 2.1 中所介紹的 send-pr(1) 程式就可以完成這項工作。 請注意：不要只把 diff 檔發到 FreeBSD technical discussions 郵遞論壇， 否則它們可能會被遺忘！ 我們會非常感激您提交的修改 (這是一個義工計劃！)； 因為我們都很忙， 因此有時不一定能夠立即修正問題，但 PR 資料庫將一直保持著這些記錄， 因此只要有人有了時間它們就能被改正了。 如果您的問題報告中包括 patch ，不要忘了在標題加上 `[PATCH]` 來強調一下。

如果您認為合適 (例如增、刪檔案或更改檔名)， 還可以考慮使用 `tar` 來將檔案打包，然後用 uuencode(1) 來編碼。此外，也可以用 shar(1) 產生的方式。

如果您的修改可能存在潛在的爭議，例如， 您不確定相關的版權問題，或者感覺需要經過更嚴格的復審才可以發佈它們， 則應直接發給 FreeBSD core team，而不是透過 send-pr(1) 來發送。 FreeBSD core team 這小組成員大多從事 FreeBSD 的日常工作。 需要注意的是，這個小組也因此十分忙碌， 因此只有在非常必要的時候，才應寫信給他們。

請參考 intro(9) 和 style(9) 以了解關於撰寫程式碼的風格偏好。 若能在送出相關程式碼之前，先了解這些，那對大家來說將是極大的幫助。

## 2.4 新原始碼或重要的加值軟體包

如果您打算提供規模較大的原始碼，或者為 FreeBSD 增加重要的新功能， 則可能必須將它們透過 uuencode 進行編碼，或傳到某個 Web 或 FTP 站點，以便更多的人能夠得到它。如果您沒有這樣的主機， 請到相關的 FreeBSD 郵遞論壇提出，看看是否有人願意幫您放置它們。

對於大量的原始碼而言，關於版權的問題肯定會被提出。 FreeBSD 基本系統中能夠使用的版權聲明包括：

1. BSD 版權。我們傾向於使用這類授權的原始碼， 因為它『不附加多餘的條件』，因而更能夠吸引商業企業使用。 FreeBSD 並不反對商業公司使用它的原始碼，相反， 我們積極地鼓勵商業公司使用我們的原始碼， 當然，如果它們若最終能把部分原始碼，重新捐贈給 FreeBSD 就更好了。

2. GNU General Public License，或簡稱 “GPL”。 我們並不很歡迎使用這樣授權的原始碼， 因為商業公司使用它需要做更多的工作。不過，由於很多使用 GPL 授權的原始碼目前是無法避免的 (compiler, assembler, text formatter等等) ，拒絕使用所有採用這樣授權的軟體是很不明智的。 採用 GPL 授權的原始碼會被放到原始碼的一些特定的位置，例如 `/sys/gnu` 或 `/usr/src/gnu`，以便那些認為 GPL 可能會造成麻煩的人能夠作出適當的判斷。

使用其它授權的原始碼在進入 FreeBSD 之前必須經過慎重的復審和考慮。 採用包含嚴厲限制的商業授權的原始碼，一般來說會被拒絕， 但我們鼓勵這些原始碼的作者，透過自己的管道來發布它們。

若要在您的成果上加入 “BSD-based” 版權的話， 請把下列文字放到每份原始碼的最開始部分， 並用適當的文字替換 `%%` 之間的文字。

    Copyright (c) %%proper_years_here%%
            %%your_name_here%%, %%your_state%%  %%your_zip%%.
        All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
    are met:
    1. Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer as
       the first lines of this file unmodified.
    2. Redistributions in binary form must reproduce the above copyright
       notice, this list of conditions and the following disclaimer in the
       documentation and/or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY %%your_name_here%% ``AS IS'' AND ANY EXPRESS OR
    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    IN NO EVENT SHALL %%your_name_here%% BE LIABLE FOR ANY DIRECT, INDIRECT,
    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

            $Id$

為了方便您的使用，在 `/usr/share/examples/etc/bsd-style-copyright` 也可以找到此授權的副本。

## 2.5 贊助資金、硬體或 Internet mirror

我們非常願意接受各種形式的捐贈，以進一步拓展 FreeBSD 計劃 ，因為有您的支持，像我們這樣的義工努力才能夠有更大的成就！ 捐贈硬體也非常重要，因為這樣能夠幫助我們增加可支援的硬體種類， 而我們中的很多人並沒有足夠的資金來購置這些硬體。

### 2.5.1 捐款

FreeBSD 基金會是一個非營利的、有課稅豁免權的基金會， 之所以會建立這個基金會，是為了讓 FreeBSD 計劃能夠可長可久。 因為該基金會屬 501(c)3 實體，一般而言捐款給基金會的話，可以免繳美國聯邦收入稅， 以及科羅拉多州收入稅。通常對於有課稅豁免權的實體進行捐贈的話， 可以折抵聯邦收入中應課稅部分的金額。

您可以把支票寄往：

The FreeBSD Foundation
7321 Brockway Dr.
Boulder, CO 80303
USA

FreeBSD 基金會現在可以透過 PayPal 從網上接受捐款。 如果您想向基金會捐款，請參閱 FreeBSD 基金會 網站。

關於 FreeBSD 基金會的更多詳情，可以在 FreeBSD 基金會 -- 介紹 找到。要聯絡基金會， 請發送電子郵件到 `<bod@FreeBSDFoundation.org>`。

### 2.5.2 捐贈硬體

FreeBSD 計劃歡迎任何人捐贈可以使用的硬體。 如果您有興趣捐贈硬體，請聯繫 捐贈聯絡人辦公室。

### 2.5.3 成為 FreeBSD mirror 的網站

我們歡迎新的 FTP、WWW 或 `cvsup` mirror 站。如果您希望成為這樣的 mirror 站， 請參閱 如何架設 FreeBSD mirror 一文，以了解進一步的情況。

Prev | Home |
幫助 FreeBSD |  |

本文及其他文件，可由此下載：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。