aaa 发表于 2008-3-15 20:11:32

论Open Source软件开发模式

一、为什么OSS更高效?

Apache之父Brian Behlendorf在他的报告中介绍了开源软件(Open Source Software,简称OSS)开发模式的一些特点。为什么它会比传统开发模式更高效?Brian Behlendorf说,因为有诸多用户参与了软件开发。用户与开发者逐渐过渡,形成了一个金字塔状:


众多用户由于可以看到源代码,他们中很多是编程人员,他们会较容易的发现软件中的bug并做出自己的修正,并把patch公布在网上。这样编程人员debug的任务就大大减轻了。

Open Source Software(简称OSS)领袖人物之一Eric Raymond在《大教堂与集市》里不无嘲讽的说:

“尽量早尽量频繁的发布是Linux开发模式的一个重要部分,多数开发人员(包括我)过去都相信这对大型工程来说是个不好的策略,因为早期版本都是些充满错误的版本,而你不想耗光用户的耐心。这种信仰强化了建造大教堂开发方式的必要性,如果目标是让用户尽可能少的见到错误,那你怎能不会仅仅每六个月发布一次(或更不经常),而且在发布之间像一只狗一样辛勤`捉虫'呢?”

“但是一年之后,在Linux广泛应用之后,很清楚,一些不同的更加健康的东西诞生了,Linus的开发模式正好与建造教堂方式相反,Sunsite和tsx-11的库开始成长,推动了许多发布。所有这些都是闻所未闻的频繁的内核系统的发布所推动的。”

他跟着总结说,“如果有足够多的眼睛,所有的错误都是浅显的。”

与之相比,开发(尤其是debug)的专业化,对单个编程人员来说,效率是提高了,但由于参与者局限在原公司的范围里,他们整体效率可能反而更低。

二、OSS和中国
OSS开发人员,都具有相当高的软件开发的热情。一般他们并不为赚钱而开发软件,故而他们只是在业余时间做这些事情。这种人在美国、俄国等相当广泛的存在着。但是在中国,情况有所不同。在中国人眼里,programming只是职业,而不能作为业余兴趣。尽管有人的确这么做,但他们的气质里也浓重的包含了编程Nerd。

这种差异背后的原因是复杂的。一方面,先进工程手段的缺乏,使编程变得枯燥,机械化。如果一个人花了过多时间在编程上,那么他的思维就会变得刻板,或者说钻牛角尖。这在西方社会,并不是严重的错误,但在中国,一个刻板和固执的人是不受欢迎的。西方文化里,从一开始,由于科技在其中就有着相当的比重和影响力,他们的文化里包含着机械的成分,这从西方科幻电影里可以看出来。而中国文化,是基于人的,着重在处理人与人之间的矛盾,这里面就有很多模糊的和隐含(under table)的东西。程序设计的思维模式和这一文化是相抵触的。

还有一个原因值得一说。Linus(Linux作者)说过,他最开始写Linux时,并没有一个很强的ego,但后来,这个ego就boost起来了。(影片Revolution OS)OSS群体,对优秀的开发人员,给以的是精神上的奖励,即egoboo。别的一些OSS人物也承认这一点。但在国内,这看起来是难以执行的。个人觉得,一个人有强的ego,也许并不利于他的生存或生活。

由于参与人数不多,国内OSS软件发展水平相当差。事实上不仅是OSS,整个软件业的规模都无法和国外相比。据说windows xp使用了4000万行代码,我不知道整个国内一年的软件代码总行数有没有这么多。作为传统软件行业的“过剩精力”的结果(不准确的说),OSS自然处于一种很低的水平。

三、OSS和共产主义

OSS的free特点,容易使人联想起共产主义。一个英国社会学家Barbook暗示说,“以礼物形式传递信息不仅是如意接受的,而且比商品交换更加高效”。那些希望以他们的软件谋取利润的人必须学会如何接纳礼物经济,不然的话,就象列宁所说的注定成为“历史的垃圾箱(the dustbin\\ of history)”。另一个人远为激进,声称自由软件的开发者正在以他们的免费的代码颠覆资本主义和市场经济。对此,Eric Raymond断然否定。他说,说OSS是共产主义的说法是荒谬的,因为共产主义强迫人们公有,但OSS并不强迫任何人公开他的源代码。(Revolution OS)事实上,市场仍存在很多依赖于OSS并且的确盈利的公司。如果OSS是共产主义的话,那么是不会有公司愿意参与进来。(这些公司通过提供服务赚钱)不管怎样,OSS和非OSS仍将长期共存下去。

醉乡常客 发表于 2008-3-16 02:23:58

如果是原创,请谈谈创作背景。

aaa 发表于 2008-3-16 13:26:26

这是我研究生时候一篇课程小论文 hehe 昨天翻了出来
开源和闭源两种软件开发模式 是现在两种泾渭分明的开发模式 孰优孰劣 在前些年争论还比较多
现在大家已经都看到开源的好处 微软也渐渐开放了一些产品代码和技术规范 尽管限制仍比较多
这篇论文里许多话表达的比较幼稚 但基本的思想我觉得是没错的:
开源的特点:开发者主动性高,对bug响应快,最重要的是培养起了一批社区里的开发高手,而且他们比较多面手。
而闭源方式软件最初发布的质量高,但后续可能缺乏维护和升级,而且开发者的心态也比较“自私”,他们也往往被培养成某个狭窄领域的“专家”,却缺乏宽广的视野和技能。

aaa 发表于 2008-3-17 01:58:52

hehe 我主要是搞计算机的 业余爱好心理学

aπολλωv 发表于 2008-3-17 20:05:38

OSS现在的发展的趋势是 建造更大规模的教堂,甚至是里面可以容纳很多集市,乃至超级市场。当然后面的构想是极具突破性的,也是极具挑战的

aaa 发表于 2008-3-17 20:40:54

这种大教堂怎么建造呢?难道成立一个超级公司?

aπολλωv 发表于 2008-3-17 22:29:09

怎么建设这座大教堂,估计教父本人(Richard Stallman)都不知道。或者说他做的就是其中某一部分,却仍然浑然不知。

自由软件需要自己的大教堂让教徒“朝圣”,防止异教徒的讨伐,这样会拥有更多的精力和智慧面对自己的“圣经”,以及软件的上帝-----用户。(GPLv3有撵人的味道)

Richard Stallman说OSS运动有将软件技术等级化的趋势,其价值仍然是狭隘的,并过于实际的价值。(只不过微软做的更直接,利益链更单一,当然微软也就更丰满了)

现在的问题是,FreeSoftware和OSS之间的裂痕到底有多大,OSS还需不需要FS这座精神大教堂


我对现在OSS以及FS社区的政治性观点是:
保持近乎宗教式的狂热哲学信仰 + 全球技术精英所领导的精英自由主义 + 放弃无政府主义式的短视以及共产主义式的狂妄



这种差异背后的原因是复杂的。一方面,先进工程手段的缺乏,使编程变得枯燥,机械化。如果一个人花了过多时间在编程上,那么他的思维就会变得刻板,或者说钻牛角尖。这在西方社会,并不是严重的错误,但在中国,一个刻板和固执的人是不受欢迎的。西方文化里,从一开始,由于科技在其中就有着相当的比重和影响力,他们的文化里包含着机械的成分,这从西方科幻电影里可以看出来。而中国文化,是基于人的,着重在处理人与人之间的矛盾,这里面就有很多模糊的和隐含(under table)的东西。程序设计的思维模式和这一文化是相抵触的。

还有一个原因值得一说。Linus(Linux作者)说过,他最开始写Linux时,并没有一个很强的ego,但后来,这个ego就boost起来了。(影片Revolution OS)OSS群体,对优秀的开发人员,给以的是精神上的奖励,即egoboo。别的一些OSS人物也承认这一点。但在国内,这看起来是难以执行的。个人觉得,一个人有强的ego,也许并不利于他的生存或生活。


其实这只是个前工业时代的社会精神转型问题,并非”文化决定“的
这就如同拿西方文化与非洲土著文化相比,不能说是”机械主义“与”自然主义'的文化决定
至于ego也同样如此,时空滞后,人才不兴,以及此处省略的某些原因,社会心理的期许也就对“ego”不强烈,导致GIGO现象。如果将其纳入到文化语境,这就是略微带有因果不分的用法了。印度的软件业很发达,但其文化却不是“机械的”,更不是“期许ego的”,同样的情况还有日本,以及新近的韩国。

aaa 发表于 2008-3-18 19:12:54

社会心理的期许对ego不强烈 我觉得归根结底还是个资源不足的问题吧 一个很多人才买不起房子的国家 怎么能让这些人觉得自己很体面很重要呢?
印度的软件业基本全靠的是外包吧 我觉得繁荣全靠的是廉价劳动力 背后是本土idea的贫乏
日本自己创新的软件不少 不过他们社会文化具体什么样子我还不清楚

liuichini 发表于 2008-3-20 23:59:56

我也觉得楼主过于强调文化的作用,过于强调ego的作用。国内OSS之所以落后,恐怕主要还是吃饭的问题。

aaa 发表于 2008-3-21 13:37:58

这是个鸡生蛋还是蛋生鸡的问题
OSS如果发展到一定程度 也可以赚钱 因为它可以把许多程序员联合起来
但目前 几乎没人搞 也就没什么钱途
页: [1]
查看完整版本: 论Open Source软件开发模式