📄 6.html
字号:
<center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I651" ID="I651"></A><center><b><font size=+2>CVS</font></b></center><br> 在开发一段时间以后,也许会建立起一个开发团队,这不仅意味着项目的成熟,也意味着挑战。由于软件项目越来越大,也增加了软件项目管理的难度。在开发组中,每个成员都要保留一个副本,在开发中非常容易引起冲突。CVS 就是为了解决这个问题的。<p> CVS,顾名思义,是个可以用在小组协作环境下的源码版本管理系统。同类的软件有AT&T的SCCS(Source Code Control System),还有PVCS等。在OpenSource项目里CVS用得最为广泛, Linux kernel不使用CVS来维护,但是包括FreeBSD操作系统在内的很多自由软件源码管理都是由它完成的。<p> 现代软件的产生已经不是手工作坊式的了,软件工程、项目管理一类的工具是必然的东西,可是对于自由软件这种通过网络志愿性质的软件开发项目来说,很多教科书里经典的集中开发模式根本不可能使用;另外一方面,这种松散的特点又更加需要一种有效的管理方式,以便达到目的。对此自由软件社团已经建立起了一种特殊的文化传统,同时也就是一种特殊的项目管理方式,这方面具体的内容没有比Eric S. Raymond的《大教堂与集市》更好的说明和分析了,所以我就不必多嘴了,如果又有兴趣而不了解的人,可以自己去看看这篇自由软件历史上最著名的文章。<p> CVS就是实现这种分散但是有效的“集市性”开发的一个工具,而我在这里仅仅是列出使用它从技术上可以解决的问题。<br> a、修改同步,防止一名开发人员的修改覆盖其他人的成果。(check out、read only)<br> b、维护不同的版本。(按 version 查找)<br> c、可查找历史记录。防止 bug 的再引入。(diff)<p> CVS 为了解决这个问题,采用的方式是:<br> 当开发人员对源代码进行修改时,修改的内容被登记(check in)到了 CVS 仓库(repository)中。仓库中保存了代码的主控副本,以及历次修改的历史信息。它不保存文件的每个版本,而只是简单的记录发生在每个版本间的不同,节省磁盘空间。它能做到:<br> a、使开发人员的目录和仓库保持一致。可以把自己的修改提交(commit)给仓库,让仓库更新自己。<br> b、允许代码派生。可以进行测试,如果失败,可以消除所做的修改,维持原结果。<br> c、检索任何一个版本。<p> 像前面说的,我不会具体地列出安装方式和使用方法,因为这不是一篇使用手册的文章。你可以到joyfire.net寻找相关的资料。<p><p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I652" ID="I652"></A><center><b><font size=+2>make和tar</font></b></center><br> 程序某个阶段完成了,就需要发布。这时候就需要一些工具,例如tar、automake、rpm等等<p>1. tar和rpm<p> 使用方法我不多说,需要注意一些细节,例如最好在压缩包文件名上带着版本号,确保tar包解压时会创建一个独立的新目录。rpm是越来越常用的方式,尤其是那些对源代码不关心的用户,最好能够花点时间,制作rpm版本。<p>2. automake<p> 如果用C写程序,要用autoconf/automake/autoheader工具来处理各种移植性的问题,用这些工具完成系统配置信息的收集,创建makefile文件。客户编译源码时只需要按照标准的“configure; make; make install”就可以干净利落编译安装。<br> 至少在每次发布之前要记得用 -Wall 编译选项重新编译一遍并去除编译中遇到的任何错误。这么做可以帮助您发现不少没有想到的错误。要是想更彻底的检查,那就用 -pedantic 选项再编译一遍。<p>3. vi<br> 是的,是VI,你需要用它编写文档,一般随着压缩包一起会发布以下几个文件。它们具体的内容我想经常使用UNIX或者GNU软件的人不会不知道。也不必非要这么全,但是用户会在第一次使用的时候寻找这些东西。<br> README<br> INSTALL<br> CREDITS<br> NEWS<br> HISTORY<br> COPYING<br> LICENSE<br> MANIFEST<br> FAQ<br> TAGS<p>4. Texinfo、man、DocBook文档工具<p> 以上这些文档格式都是linux/unix比较流行的格式,也许还要加上PDF格式。它们的有关工具和用法在一般的linux系统里都带,也可以去http://www.gnu.org和http://www.docbook.org下载。Texinfo和DocBook都支持转化为HTML格式,所以也很容易生成项目网站在线帮助文档。<br> 总之,项目文档应该和项目代码一起成长,而不应该在发布的前一天才被考虑。好的程序员必须能写出优秀的文档。安装手册、用户手册和开发手册是吸引用户、打败竞争对手的最好武器。<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I653" ID="I653"></A><center><b><font size=+2>Bugzilla和News</font></b></center><br> Bugzilla、新闻组或者邮件列表都是收集用户反馈的工具。项目最初发布后,最大的问题就是解决用户报告的BUG。<p> 每个和你联系的用户都该记录email地址,以便用来保持他对你的项目的兴趣,例如利用群体邮件对新版本进行通告。但是实际上这些用户应该存在两个子集,一个是普通用户列表,另一个是更重要的帮助者。就像《大教堂与集市》里说的,程序发布后,作者会被潮水般“我要怎么做才能帮你”的邮件淹没,但90%名义上的志愿者根本帮不上任何忙。它们的价值甚至连报告BUG的用户都不如。<p> 真正有价值的是发来这样邮件的人:“hi,我下载了你的源代码,发现BUG,这是修改后的补丁”,“刚好,这里有段代码可以增加你软件的功能”。他们才是项目发展的动力,而且很多人会变成你技术上的老师或者生活上的好友,应该和他们建立牢固关系。另外,负责人最后一件应该做的事情,就是在失去维护项目的兴趣或者能力前,找到合适的接替者。你认为最合适的人选会在哪里呢?<p> 由上面的建议可以看出,用户反馈并不总是有用的,太多的要求会超出作者的能力范围之外,不切实际的许诺和幻想也都是由此而来。很多失败的案例里,卤莽虚荣地宣布没有把握的宏伟幻想,或者妄想一天之内就建立完美的志愿者团队100%负责软件各部分,最终都导致浮精疲力尽却一无所获。像做生活中任何事情一样,应该谨慎冷静地思考后再开始,然后保持低调、坚韧和适度乐观,在软件和团队没有完全成熟前,确保自己能掌握一切。<p> 有人总结说,项目启动以后只需要做三件事:说“YES”、说“NO”、把新代码加入新版本,其中说“NO”更多。有些时候选择纯粹是就一种选择,没有理由,但是解释和仲裁必须让对方信服,这就是累人的地方。<p><p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I654" ID="I654"></A><center><b><font size=+2>站点</font></b></center><br> 无所不在的Internet本身就是共享和联合的结果,所以某个人所需要的也许正是千百人所具有的,也许你感兴趣的很久以前就有人解决了。通常,为了解决一个问题会有很多自由软件项目同时启动,谁最先受到最终用户的拥护,进而得到Redhat这样的自由软件发布代理商的认可,谁就可以存在下去。<p> 项目开始之前应该了解同类项目的情况,也许你应该加入别人的项目而不是自己重新开始。freshmeat.net、slashdot.org、sourceforge.net、Python站点(http://www.python.org)、CPAN(http://www.perl.com/)。这样的站点都是很好的资源查询和信息发布站点。还可以使用搜索引擎,用Free、Open source、GNU、GPL这一类的关键字搜索,只要你找到一个,跟着就可以链接到一串。<p> 如果你的确有欲望去追求比这更高(比如说为了名誉或者信心),那么在编程以后必须推广自己的作品。例如在comp.os.linux.announce 新闻组发布公告。这个新闻组除了有大量的阅读群外,也是许多其它站点,比如Freshmeat,公布新消息的地方。或者在USENET中找到一个与项目密切相关的讨论组,并在那里发布您的项目也是一个极好的方式。另外,您的帖子中应该包含您的项目网站所在的URL地址。<p> 在一定的时机以后,建立自己的站点、邮件列表和讨论区,以便发布有关的消息,收集BUG,让用户下载最新的代码,这都是必要的。一个典型的自由软件项目站点包括:<p> ·项目介绍<br> ·下载源代码,甚至还有源码结构树的访问链接。<br> ·HTML格式的FAQ和其他项目文档。<br> ·各种相关链接。<br> ·建立让普通用户获知项目进展的公告邮件列表,并在首页指明如何加入项目相关的邮件列表。<br> ·建立项目开发专用的邮件列表,透过它合作开发者可以互相交流并讨论对程序补丁的建议。<p> 建立自己的项目站点的时候,一定要明确自己的目的。不要搞成大杂烩。应该学习kernel.org,他的原则是:简洁,再简洁,甚至用一张页面就搞定一切。可是谁都得承认,它大概是网络中最重要的站点(至少是技术站点)之一,统计显示,访问次数最多的是Microsoft。<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I655" ID="I655"></A><center><b><font size=+2>hacker</font></b></center><br><table><tr><td>姓名:利启诚</td><td>网名:Mephisto</td><td>毕业:清华大学电子工程系</td></tr></table><table><tr><td>曾任水木清华BBS中Linux版斑竹,历届Linux版斑竹中编程水平最高深之人物。曾经仅花费3天时间实现自TurboLinux中文版TurboLinux 6.0开始使用的Unicon显示部分(输入法部分由马军老师实现),比起蓝点Linux的置入内核当中的zhcon更为安全;在极短时间内与智能启动管理器(SmartBootManager)作者苏哲合作,实现了光驱引导模块,此为全球第一个可以实现光驱引导的自由软件之启动管理器;参与InterMezo等国际项目,取得很好效果。</td></tr></table><p>01010101010101010101010101010101010101010101010101010101010101010101010101010101</p><table><tr><td>姓名:何锐</td><td>网名:raner</td><td>毕业:清华大学计算机科学系</td></tr></table><table><tr><td>CCE的作者,被誉为清华大学“9#绝对Linux第一人”。曾任水木清华BBS斑竹,于1998年年中制作出2CDs的RedHat 5.1(带中文工具和Motif2.0以及许多中文文档),风行全国,流入盗版市场后脱销,国内第三梯队的Linux爱好者大多从这一套盘起步。其改写的CCE-0.10/0.11/0.3x终端中文环境被众多中文Linux发行套件不同程度所包含,更是为众多简体中文版的Linux使用者所青睐。台湾出品的繁体版jmce则是自CCE-0.32所修改。使用FrameBuffer实现中文显示的技术构想从目前所得到的资料来看,为何锐第一个提出(此据可查询水木清华BBS中的Linux板精华区有关于CCE的部分)。目前何锐在美国Duke大学攻读计算机科学硕士学位,CCE-0.3x的维护工作交由上海交通大学图书馆的李亮先生管理。</td></tr></table><p>01010101010101010101010101010101010101010101010101010101010101010101010101010101</p><table><tr><td>姓名:谢东翰</td><td>http://xcin.linux.org.tw</td></tr></table><table><tr><td>XCIN中文平台的作者,XCIN是台湾非常流行的Linux中文平台。大陆的Linux发行版本很多中文平台就是从XCIN发展来的,并借鉴和改进了XCIN,比如蓝点Linux的CXWIN。</td></tr></table><p>01010101010101010101010101010101010101010101010101010101010101010101010101010101</p><table><tr><td>姓名:李亮</td><td>网名:holly</td><td>毕业:上海交通大学</td><td>http://programmer.lib.sjtu.edu.cn</td></tr></table><table><tr><td>CCE现任维护人员。对于CCE的分析、改写和维护起到了很大作用。另外还编写了若干Apache的模块,满足了某些特定要求。</td></tr></table><p>01010101010101010101010101010101010101010101010101010101010101010101010101010101</p><table><tr><td>姓名:谢华刚</td><td>网名:vertex</td><td>毕业:中科院计算所硕士</td><td>http://www.lids.org</td></tr></table><table><tr><td>为国际项目LIDS(Linux入侵检测系统)创始人。</td></tr></table><p>01010101010101010101010101010101010101010101010101010101010101010101010101010101</p><table><tr><td>姓名:章文嵩</td><td>http://www.linuxvirtualserver.org</td></tr></table><table><tr><td>系国际项目LVS(Linux虚拟服务器)创始人。</td></tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -