基本上可以分為以下 5 種方式:
通常,一般 的技術想法和建議應該發到 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 郵遞論壇 來請別人幫你代寄。
請參閱 這篇文章 了解如何撰寫好的問題報告。
文件的修改方面,是由 FreeBSD documentation project 郵遞論壇 來審查。 請參閱 FreeBSD Documentation Project Primer 來獲得完整的教學細節。 請按照 節 2.1, “錯誤報告和意見發表” 中介紹的方法使用 send-pr(1) 來提交新的文件,或者改善現有的文件 (哪怕是很小的改進也是歡迎的!)。
在現有原始碼上進行修改或增加功能,在某種程度上是需要更多技巧的事, 並且還跟您對於目前 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 收錄。
透過使用 節 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) 以了解關於撰寫程式碼的風格偏好。 若能在送出相關程式碼之前,先了解這些,那對大家來說將是極大的幫助。
如果您打算提供規模較大的原始碼,或者為 FreeBSD 增加重要的新功能, 則可能必須將它們透過 uuencode 進行編碼,或傳到某個 Web 或 FTP 站點,以便更多的人能夠得到它。如果您沒有這樣的主機, 請到相關的 FreeBSD 郵遞論壇提出,看看是否有人願意幫您放置它們。
對於大量的原始碼而言,關於版權的問題肯定會被提出。 FreeBSD 基本系統中能夠使用的版權聲明包括:
BSD 版權。我們傾向於使用這類授權的原始碼, 因為它『不附加多餘的條件』,因而更能夠吸引商業企業使用。 FreeBSD 並不反對商業公司使用它的原始碼,相反, 我們積極地鼓勵商業公司使用我們的原始碼, 當然,如果它們若最終能把部分原始碼,重新捐贈給 FreeBSD 就更好了。
GNU General Public License,或簡稱 “GPL”。
我們並不很歡迎使用這樣授權的原始碼,
因為商業公司使用它需要做更多的工作。不過,由於很多使用
GPL 授權的原始碼目前是無法避免的 (compiler, assembler, text formatter等等)
,拒絕使用所有採用這樣授權的軟體是很不明智的。
採用 GPL 授權的原始碼會被放到原始碼的一些特定的位置,例如
/sys/gnu
或
/usr/src/gnu
,以便那些認為 GPL
可能會造成麻煩的人能夠作出適當的判斷。
使用其它授權的原始碼在進入 FreeBSD 之前必須經過慎重的復審和考慮。 採用包含嚴厲限制的商業授權的原始碼,一般來說會被拒絕, 但我們鼓勵這些原始碼的作者,透過自己的管道來發布它們。
若要在您的成果上加入 “BSD-based” 版權的話,
請把下列文字放到每份原始碼的最開始部分,
並用適當的文字替換 %%
之間的文字。
為了方便您的使用,在
/usr/share/examples/etc/bsd-style-copyright
也可以找到此授權的副本。
我們非常願意接受各種形式的捐贈,以進一步拓展 FreeBSD 計劃 ,因為有您的支持,像我們這樣的義工努力才能夠有更大的成就! 捐贈硬體也非常重要,因為這樣能夠幫助我們增加可支援的硬體種類, 而我們中的很多人並沒有足夠的資金來購置這些硬體。
FreeBSD 基金會是一個非營利的、有課稅豁免權的基金會, 之所以會建立這個基金會,是為了讓 FreeBSD 計劃能夠可長可久。 因為該基金會屬 501(c)3 實體,一般而言捐款給基金會的話,可以免繳美國聯邦收入稅, 以及科羅拉多州收入稅。通常對於有課稅豁免權的實體進行捐贈的話, 可以折抵聯邦收入中應課稅部分的金額。
您可以把支票寄往:
The FreeBSD Foundation
7321 Brockway Dr.
Boulder, CO 80303
USA
FreeBSD 基金會現在可以透過 PayPal 從網上接受捐款。 如果您想向基金會捐款,請參閱 FreeBSD 基金會 網站。
關於 FreeBSD 基金會的更多詳情,可以在 FreeBSD
基金會 -- 介紹 找到。要聯絡基金會,
請發送電子郵件到
<bod@FreeBSDFoundation.org>
。
我們歡迎新的 FTP、WWW 或
cvsup
mirror 站。如果您希望成為這樣的 mirror 站,
請參閱 如何架設 FreeBSD mirror
一文,以了解進一步的情況。
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。