20.2. 如何作出貢獻

貢獻基本上可以分為以下六個類別:

20.2.1. 問題回報及一般性評論

一般性的技術問題應該跟 FreeBSD technical discussions mailing list 聯絡。 同 樣的,如果您對這樣的事 (能接受大量信件!) 有興趣,您可 以寫信給 加入 hacker 郵件清單。 請參閱郵件清單列表 以獲得更多有關此郵件清單及其 他郵件清單的資訊。

如果您發現有問題或是要提供一些修正,請利用 send-pr(1) 程式,或 是此程式的 Web 介面。 試著填寫所有問題回報中的欄位。除非檔案超過 65KB,請直接將任何相關的修正直接 包含在問題回報中。當引入修正的時候,請不要用剪下貼上的 方式,因為這會讓原本應該是 tab 字元的地方變成空白字元,有可能使得這些修正程 式無法使用。當修正程式超過 20KB 的時候,您可以考慮將它壓縮並且使用 uuencode(1)。 如果修正程式很大,您可以將它們上傳到 ftp.FreeBSD.org:/pub/FreeBSD/incoming/

當您填好並送出問題回報後,您應該會收到包含一個追蹤號碼的確認函。 請記住這個號碼以便您將來寄信給 更新 問題回報細節時使用。 請用這個號碼當作信件標題,例如: "Re: kern/3377"。 有其他任何關於問題回報的資訊也請比照 此方式辦理。

如果在一段時間內 (三天到一個星期,實際速度依連線速度有所不同) 您還 沒有收到確認函,或是基於某些原因您沒有辦法使用 send-pr(1) 指令,那麼您 可能要請別人幫忙您將相關的資料寄給 FreeBSD problem reports mailing list

20.2.2. 更動文件資料

文件資料的更動由 FreeBSD documentation project mailing list 負責審理。 請將更動的部分 (即使只是小部分 我們都歡迎!) 利用 send-pr 指令送出。相關的資料可以參考 問題回報及一般性評論

20.2.3. 現有原始程式碼的變更

對現有原始程式碼的增修比較困難,而且跟您對於目前 FreeBSD 核心研發 的狀態的了解程度有關。FreeBSD 一直都會釋出所謂的 "FreeBSD-current" 版本,這是為了研發者在各方面的便利而設的。請參考 關於 FreeBSD current 版本 以取得更多有關取得及 使用 FreeBSD-current 的資訊。

如果您正在修改舊的程式碼,很不幸地,這些程式可能因為早已過時或是跟 現有系統差異太多而無法重新整合到目前的系統中。 為了避免這種情形,您可以訂閱 FreeBSD announcements mailing list 及 FreeBSD-current mailing list 郵件清單,裡面會討論目前系統的狀況。

假設您確定拿到的都是最新的程式碼,那麼您的下個步驟就是產生相對應的 diff 檔並送給 FreeBSD 維護者。 您可以使用 diff(1) 命令,並填寫好 "context diff" 表格,例如:

    % diff -c oldfile newfile
    % diff -c -r olddir newdir
將會根據您給定的來源檔或是目錄結構而產生相對應的 diff 檔。 詳細的使用方式請 參考 diff(1) man page。

一但您產生了這些 diff 檔 (您可以先用 patch(1) 指令測試),您就 可以將它傳給我們以便跟 FreeBSD 整合。 您可以使用 send-pr(1) 程式 (說明 請見 問題回報及一般性評論)。 請不要 直接將這些 diff 檔寄給 FreeBSD technical discussions mailing list ,否則它們有可 能會遺失!我們非常感激您的付出 (此為自願性質的計畫!);即使我們很忙,可能沒有 辦法馬上處理,但是在我們處理之前,它們一定都會好好保存在 PR 資料庫裡。

如果您覺得適當 (例如增加、刪除或是重新命名檔案),您可以將您所做的 更動用 tar 壓縮成一個檔,然後對此檔執行 uuencode(1) 程式。 Shar 格式的壓縮檔我們也接受。

如果您所做的變動較敏感,例如您不確定在未來散佈的時候會不會有版權問 題或是在您送出修正版之前您還要再做進一步的測試,那麼您應該將目前的修正檔直接 寄給 FreeBSD core team 而不是用 send-pr(1) 送出。 核心郵件清單只有一小群每天都 會做 FreeBSD 工作的人在使用。請注意,他們這群人也是非常忙碌 的,所以請確定真的有必要才寄信給他們。

請參考 man 9 introman 9 style 以取得一些程式撰寫風格的資訊。如果您在撰寫程式的時候能稍微 注意一下這些撰寫格式,我們會很感激您的。

20.2.4. 新程式碼或主要的加值軟體

當您所做的貢獻牽涉到大量的工作或是替 FreeBSD 增加重要的新功能的時 候,最好是將變更或新增的檔案 uuencode 後 tar 起來,或是上傳到 Web 網頁或 FTP 站,以便別人也可以取得。 如果您沒有辦法連到 Web 或 FTP 站台,那麼您可以到合 適的 FreeBSD 郵件清單詢問是否有人可以幫助您取得這些檔案。

當牽涉到大量的程式碼的時候,版權問題總是應運而生。 FreeBSD 包含的 程式碼,其合理的版權有下列幾項:

  1. BSD 版權。 此種版權是我們最樂見的,因為它"不用多加版權聲明文 字"的特性以及能吸引商業機構的青睞。 FreeBSD 計畫 不但不反對,反而積極鼓勵這些逐漸想轉而投資 FreeBSD 的商業機構的參與。

  2. GNU Public License (GNU 公開執照) 或簡稱 "GPL"。 此種方 式我們比較沒那麼喜歡,因為它必須對那些想用這些程式碼在商業用途的人特別註 明。但是在仍然需要大量 GPL 程式碼 (編譯器、解譯器、文件編排器等) 的前提 下,我們也不會拒絕接受往後使用 GPL 的程式碼。 使用 GPL 的程式碼也被放在 不同的分類下,例如 /sys/gnu/usr/src/gnu,以便當大家使用 GPL 發現問題時能很容易 地找到。

使用任何其它版權模式的程式碼,在整合進 FreeBSD 前都會經過仔細的審查 考慮。 有特別嚴格商業版權的程式通常都是被回絕,即使我們鼓勵他們在自己的管道 中流傳這些修改過的程式。

要為您的程式加上 "BSD 風格"的版權聲明,您可以在您的每 個原始程式檔案最前面加上下面這段文字,並且將 %% 符號中間的 文字改成適當的資訊。

    Copyright (c) %%西元年份%%
            %%您的姓名%%, %%您所在的州名%%  %%您所在地郵遞區號%%.  
    	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 %%您的姓名%% ``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 %%您的姓名%% 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 存了一份 上述的版權聲明文字供您日後使用。

20.2.5. 資助、硬體設備或網際網路服務

我們非常高興大家能捐助 FreeBSD 計畫,以便讓她能繼續發展下去。像我們 這種採自願性質的計畫,即使是一點點的幫助,也能持續很久!捐獻硬體設備對未來對 這些裝置的支援是很重要的,因為我們通常都沒有錢來購買這些設備。

20.2.5.1. 資助

因為 FreeBSD 計畫並不是 501(c)(3) (慈善) 團體,所以我們也沒辦法唆使大家 多資助一些。總之,任何數目的資助我們都會很感激的。

FreeBSD 公司在 1995 初由 Jordan K. Hubbard 及 David Greenman 為了達成 FreeBSD 計畫的目標 而出資贊助。任何資助 (以及可能因為 FreeBSD 而獲得的利潤) 都將用在達成本計畫 目標上。

如果您要資助,請開立可兌現的支票,支付給 FreeBSD, Inc.,並將之妥善寄到 下面的地址:

  FreeBSD, Inc.
  c/o Jordan Hubbard
  4041 Pike Lane, Suite F
  Concord
  CA94520

(在我們擁有自己的郵政信箱前,先暫時使用 BSDi 的地址)

電匯也可以直接寄到美國銀行:

  Bank Of America
  Concord Main Office
  P.O. Box 37176
  San Francisco
  CA94137-5176
  
  Routing #: 121-000-358
  Account #: 01411-07441 (FreeBSD, Inc.)

任何跟捐助相關的事項請 e-mail 給 Jordan K. Hubbard 或是郵寄給上面列的 FreeBSD 公司 地址。

如果您不想將您的大名登在我們的捐助者專欄, 請在捐助時特別指明,謝謝!

20.2.5.2. 捐獻硬體設備

任何在下列三類範圍內捐獻的硬體設備本計畫都樂於接受:

  • 一般性硬體,如磁碟機、記憶體或整套系統等,請直接寄到在 資助 區所列出的 FreeBSD 公司地址。

  • 為了維持相容性而捐助的硬體。我們目前正嘗試建立一個測試中心,將所有 FreeBSD 集中並在每次發行新版本的時候做回顧測試。 我們仍然缺乏許多重要 的設備 (網路卡、主機板等等);如果您願意捐助,請聯絡 David Greenman 查詢我們仍 欠缺的硬體。

  • 捐助目前 FreeBSD 不支援的硬體,但是您希望以後能被支援。 請跟 FreeBSD core team 聯絡,但是因為我們需要時間找尋願意接手開發支援您硬體的驅動程式 的開發者,所以在找到之前請先不要將您的硬體寄過來。

20.2.5.3. 提供網際網路資源

我們可以一直使用新的 mirror 站台,以提供 FTP、WWW 或是 cvsup 服務。 如果您希望成為 mirror 站台,請聯絡 FreeBSD 計畫管理人員 以取得進一步的資訊。