做好一个应用,绝对不是一个人所能独立完成的,人的精力毕竟是有限的。很多工具可以在我们协作过程中 提供强有力的帮助。这里只是做一个总结列表,肤浅至极,不做深入讨论。

1.源代码管理

这个应该不用多说了,团队协作开发必备,现在主流的是SVN(subversion),分布式的源代码管理Git和Mercurial也开始流行起 来,Google Code已经支持Mercurial,或许这是因为Mercurial是用python写的吧^_^。

2.团队协作平台

之前曾经试验过用Wiki+Mail list来搭建团队内部的交流平台,最后选择了开源的Gforge平 台,提供了源代码管理(CVS,SVN,GIT),甘特图,邮件列表,论坛, 代码片段,缺陷跟踪,任务管理,WIKI……等等功能,据说在ibm内部开源网站也是使用的gforge。gforge部署也 是非常方便,gforge提供了vmware虚拟机的镜像,可以再vmware player, vmware workstation, vmware server运行,部署完成之后就可以通过浏览器进行管理。当然不用虚拟机也可以,不过部署起来比较麻烦。

3.团队内部通讯工具的选择

多人通讯在平常用的通讯工具中最常见的莫过于QQ群之类的,但是在QQ群中进行讨论往往效率低下,而且容易受到QQ里面其他人的感染,所以一个内部 的通信平台也是极为重要,邮件列表+即时通讯工具或许是一个不错的选择。

邮件列表方面可以选择Google groups,即时通讯的话,基于jabber的开源平台openfire+spark绝对是一个非常好的选择。提供了文件 传输,多人聊天,聊天记录,电话集成,截图。这些已经足以应付交流中的各种问题。

4.总结

总结一下,文档管理(Wiki)+知识整理(Blog)+源代码管理(Svn , Git , Mercurial)+即时通讯(jabber)+ 缺陷追踪(Bug Tracker),单个项目的话,Trac已经可以满足需求,多个项目的话,Gforge是一个不错的选择,考虑到实验室项目肯定不 止一个,所以选择了Gforge。再写一个bash脚本,每天晚上夜深人静的时候自动备份一下。这样一来代码也就更加安全保险了。