第21章 为FreeBSD作贡献
你想为FreeBSD做贡献吗?太好了!FreeBSD是以用户的不断贡献为基础而不断发展的。你的贡献不仅仅是赏识,也将关系到FreeBSD的继续成长。
可能与一些人认为的相反,你不一定需要是一个很棒的程序员或是一个与FreeBSD核心团队比较亲密的朋友,你也可以为FreeBSD做贡献。FreeBSD计划的开发是由分布于世界各地,不同年龄,不同地域的,并在不断增长中的人员组成的。
既然FreeBSD是一个可信赖的操作系统,而不仅仅是一个内核或几个分散的工具。我们所做的工作包括很多任务,从文档,beta测试和内核开发的指导研究。无论你的水平怎么样,都可以为FreeBSD做贡献!我们也希望一些商业团体能给我们以支持。
21.1在这之前,你需要做些什么
下面是一些任务和子项目的计划。如果你对某些任务比较感兴趣,你可以署上你的名字并发邮件给相关协调人。如果没有指定协调人,也许你将成为一名志愿者?
21.1.1正在进行中的任务
绝大多数的任务都需要你付出大量的时间或是对内核有深入的了解。然而,有很多任务也适合那些“weekend hackers”,或是没有编程技能的人。
1. 如果你在运行FreeBSD-current,而且有一个很好的因特网接入,那你可以时时访问到current.FreeBSD.org网站,它上面有一个完全的发行版,你可以从它那儿安装最新的发行版,一旦有什么错误,就可以立即报告。
2. 阅读一些freebsd-bugs的邮件列表。你可以为某个问题作注释或用某个patch来测试,甚至你也可以亲自来修复这个问题。
3. 周期性地阅读FAQ和使用手册。如果有什么错误,你可以及时报告。最好给我们一个修复方案。(你可以采用ASCII码的方式)
4. 帮助翻译FreeBSD的文档为你自己国家的语言。只要发一封邮件到<[email protected]>告诉我们要求做些什么。注意你不是提交你自己翻译的FreeBSD的简单文档,事实上,绝大多数需要翻译的文档是安装说明。
5. 偶尔阅读一下freebsd-questions邮件列表和comp.unix.bsd.freebsd.misc新闻组。它能够让你与别人交流技术和帮助别人解决问题;有时你也可以为你自己学到一些新东西!这些论坛通常是一个诞生好主意的地方。
6. 如果你知道一些-current版的错误修正还没有被加入到-stable版,可以提交一些提示给开发人员。
7. 在源目录树中把贡献来的软件移到src/contrib中。
8. 确定在src/contrib中的代码已经到期了。
9. 根据一些特别的通知来建造源代码目录树(或是部分地),然后整理这些通知。
10. 如果你已经贡献了一些port,可以把你的patch发给最初的创作者。
11. 建议你做一个长期规划!
21.1.2通过PR数据库工作
FreeBSD PR列表显示了所有当前活跃的由FreeBSD用户提交的问题报告和请求。认真检查一下开放的PR,看看是否有你感兴趣的。有一些可能是很简单的任务,只要多花一点精力就可以解决。其他的可能会比较复杂。
启动还没有分配给其他人的PR,如果在分派给其他人的任务中,有个问题你能解决,你可以发email给那个人,问一下是否你可以来做这个,他们可能已经加上了一个准备测试的补丁,或你可以跟他讨论一下这个问题。
21.2如何做贡献
为系统做贡献通常可以分为下面几种情况:
21.2.1 Bug报告和普通的注释
一个普通的技术方面的主意或建议可以通过发email给<[email protected]>技术讨论邮件列表来提交。同样的,有人对某些比较感兴趣,就可以通过发<email: [email protected]>预定hackers邮件列表。也可以看看其他的邮件列表了解更多信息。如果你找到一个bug或提交了一个特殊的修正,请使用send-pr程序或它的基于WEB的完成同样功能的方式来报告。如果补丁程序超过20KB,建议将它们压缩一下。可以把它提交到:ftp.FreeBSD.org:/pub/FreeBSD/incoming/。
整理成一份报告之后,你应当用一个跟踪号码接受一个确认系统。保存这个跟踪号码,以便你能根据问题的细节来升级它们。使用数字来作为邮件的主题,例如:“Re: kern/3377”。其他的错误报告也可以这样来提交。
如果由于某些原因,你不能及时接收确认信息,你不能使用send-pr命令,你可以通过发邮件到FreeBSD problem reports 邮件列表<[email protected]>要求某人来完成这件事。
21.2.某些文档的修改
文档的变化可以通过FreeBSD文档计划邮件列表来查看。使用send-pr程序来发送提交和修改的信息。
21.2.3已存在的源代码的修改
有一个特殊的正在进行中的版本叫“FreeBSD-current”,它采用很多种方法来确保系统的开发人员能够很活跃高效地工作。看看Staying current with FreeBSD了解更多有关得到和使用FreeBSD-current的信息。
在比较老的源代码基础上工作意味着你所做的任何修改都会比较陈旧或会产生错误。这些变化都会在FreeBSD的<[email protected]>公告邮件列表和<[email protected]>邮件列表中有所反映。
你可以设法保护最新的源代码与你的修改保持同步,下一步是将修改的部分发给FreeBSD的维护者。这可以用diff命令来做,使用context diff命令可能更好。例如:
% diff -c oldfile newfile
或
% diff -c -r olddir newdir
这将会产生一组与给定的源代码或层次目录的前后关联。看看diff的联机手册了解更多细节。一旦你有了一组前后关联(你可以用patch命令来测试),你就可以提交它们。使用send-pr程序。不要只把它发送给FreeBSD的技术讨论列表<[email protected]>也许它们会丢失!我们很感谢你的工作;因为我们很忙,我们不可能立即作回复,但它仍会被保存在PR数据库中。
如果你觉得这样很好(如增加,删除或重命名文件),你可以把修改过的部分打包成一个tar文件,然后运行uuencode程序。shar文档也可以。
21.2.4新的代码或很有价值的软件包
有一个很重大的大型工作的加入或是一个很重要的新特性的加入,可以把它们上传到Ftp站点,以便于其他人访问。如果你无法访问web或ftp网站,可以在FreeBSD邮件列表上了解一些信息。
在许许多多的代码中,有一些有版权方面的要求。在FreeBSD中也包括这部分:
1. BSD版权。这个版权由于它的“no strings attached”特性而变得非常好,深受许多商业企业的欢迎。FreeBSD计划也鼓励这样的商业应用,以便使他们能够在这一领域进行投资。
2. GNU公共许可协议,或叫GPL。这个许可规定你需要它得到公众最大限度的利用。要做到这一点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和重新发布。
在其他版权形式下捐助来的软件需要在它们被加入FreeBSD之前先仔细地检查一下。每个有限制性的商业版权申请通常会被拒绝,虽然被鼓励通过他们自己的渠道来做可用性的修改。在你工作中要放一个“BSD-style”的版权,包括下面一些文字,用适当的信息替换掉%%之间的文字。
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中找到这个文本的拷贝。
21.2.5金钱,硬件或internet访问
我们很高兴接受各种捐赠,一小步能够成就一大步!由于我们通常没有资金购买一些设备,我们也乐意接受硬件方面的捐赠。
21.2.5.1捐赠资金
FreeBSD基金会是一个非赢利的,免税的基金会。基金会通常免除us的联邦收入税。捐赠的免税实体经常从联邦收入中扣除。
捐赠可以被送到这儿:
The FreeBSD Foundation
7321 Brockway Dr.
Boulder,CO 80303
USA
基金会还无法接受其他形式如信用卡和PayPal的捐助。有关FreeBSD 基金会的信息可以在有关FreeBSD基金会的介绍中找到。也可以发邮件到<[email protected]>与它联系。
21.2.5.2捐赠硬件
捐赠的硬件主要是下面三类:
普通使用的硬件如磁盘驱动器、内存或完整的系统。
也接受正在测试中的硬件系统。我们正设法建立一个FreeBSD支持的所有硬件的测试实验室,以至于在新的版本中能支持它们。我们也缺乏许多重要的设备如(网卡,主板等),如果你要捐献这样的设备,请与David Greenman <[email protected]>联系。
当前FreeBSD还不支持的硬件。请与FreeBSD core team <[email protected]>联系。
21.2.5.3捐献internet访问环境
我们经常使用FTP,WWW 或cvsup的新的镜象。如果你想提供这样一个镜象,请与FreeBSD计划管理员联系<[email protected]>。