既然你在阅读本书,那说明你也是对PHP很感兴趣的读者,在窥探到PHP内部实现之后 或许也蠢蠢欲动想要共享自己的力量。下面进行一些简单的说明。
很多人以为为PHP做贡献(contribute)只是简单的为PHP提交补丁,其实在广义上来说, 为PHP做贡献有很多种方式,这包含但不限于:
- 宣传和参与PHP的讨论
- 发现和报告或者提到补丁修复PHP的bug
- 编写和翻译PHP手册
- 编写PHP相关的书籍
- 写PHP相关技术的博客
- 为PHP增加新功能
- 编写和贡献PHP扩展或者库
所以很可能大部分的读者目前其实已经是在为PHP做贡献了。只不过如果你是本书的读者, 可能更想为PHP-Runtime做贡献,比如:修复PHP代码的bug,提交功能改进。
我们可能根据自己的特长来为PHP做贡献,如果你英语好,那么翻译手册将会是你的强项。 如果你的C比较好,那么可以为PHP修改bug,如果你对PHP语言的语法或者功能有改进想法, 你可以提交改进方法,当然如果你能将该功能实现出来那更好不过了。
下面介绍一下,为PHP做贡献的方方面面。
在很多开源项目中,邮件组都是作为最主要的沟通方式,邮件组虽然古老,但是却很有效, 每个人都会有一个邮箱,可以快捷的使用邮件客户端来沟通,目前的邮件客户端都很好用, 可以根据主题进行汇总。Gmail和QQmail就做的不错。
PHP官方的邮件组都列在这里了: http://php.net/mailing-lists.php
PHP的bug可以在http://bugs.php.net上进行。在这里你可以提交和php相关的各种bug, 虽然是bug管理,其实这里还可以提出你的需求,比如如果你觉得PHP缺失某个功能, 你可以在这里提交。在提交的同时,如果你能提供补丁那再好不过了。没有补丁也没有关系, 如果这的确是个bug,根据紧急和难易程度可能会有同学帮你修复,如果是一个功能改进, 同时对PHP的改动比较大,那么这个需要提交到php-internals邮件组进行讨论, 如果已经有实现了,讨论充分后就可以进行投票了。如果通过投票,那么恭喜你。
NOTICE 这里的bug通指bug和feature,也就是非预期行为以及功能需求。
这里的的Bug指的是PHP语言本身的bug,而不是应用程序的bug,比如某个函数的行为和预期不一致, 或者运行某段程序后PHP崩溃了,或者性能低下,你都可以提交报告。
这有一些基本的原则:
如果是bug:
- 你需要确认这的确是PHP的bug,而不是应用程序的bug
- 确认你使用正确,也就是是否和PHP手册文档使用一致
- 尽量用最少的代码来重现问题。这将有利于问题的追查
在你发现了一个bug或者实现一个功能时,你需要为你的bug或者功能编写测试, 测试用例的编写可以参考附录E phpt测试文件说明
测试时可以使用make test TESTS=/path/to/your/bugXXXX.phpt 来进行测试。 通常如果是个bug,那么会将测试的名称命名为bugXXXX.phpt