西西河

主题:【原创】论开源和修桥-说说我对开源的理解 -- 猪头简

共:💬27 🌺33 新:
全看树展主题 · 分页 下页
家园 【原创】论开源和修桥-说说我对开源的理解

OpenSource,开放源代码,指软件开发者将软件本身和软件的原始程序一起公开,这样第三方不仅可以更好的了解整个软件的工作原理,而且可以方便地 修改、完善、扩充。软件的全部秘密都在源代码里。如果一个软件的源代码公开,意味着这个软件将没有任何“独门绝活”可言。

OpenSource最开始源自一些程序员的个人软件作品,这些程序员为了和别人分享开发理念、个人爱好、甚至只是为了向自己的朋友炫耀,或者诸如此类的原因,将自己的软件源代码公布出来,供别人随意使用、随意修改。也有些软件出于纯学术或科研的目的开放。

最开始OpenSource只局限在学校和某些小团体中间,但随着OpenSource的代表大作──Linux的流行和互联网的发展,OpenSource迸发出无穷无尽的生命力,脱离了业余圈子,成为软件行业不可忽视的主流力量,影响了整个软件行业的发展方向。

这让人不得不思考──OpenSource概念因何流行,一种看似毫无经济利益的商业模式因何产生出如此巨大的力量。

让我们发挥一下想象力……

========Story 1========

有一个距离陆地很近的小岛,住着一些居民,这些居民中间,有一些单车旅行爱好者,他们每次要离开小岛,都要搭乘一艘微硬号渡轮,当然,所有岛上的居民也都要搭乘微硬渡轮到陆地上,微硬公司的老板锅盖茨因此而大发其财,被人冠以“帐单(bill)锅盖茨”的绰号。

有一天,这群单车爱好者聚集起来商议,我们何不修一座桥,说做就做,他们有的去找石头做桥墩,有的去找木板做桥面,不久,一座简陋的桥建成了,勉强可以通过,他们并不满足于次,每当他们过桥的时候,都会加固桥梁,或者装饰一下,经过了好多年,这座桥变成了一座坚固漂亮的大桥,大桥不仅为单车爱好者带来了方便,而且岛上的居民也可以随意通过,后来,由于这座桥,小岛成了旅游圣地,岛上的居民也富裕起来。唯一不爽的只有可怜的锅盖茨先生,他的帐单越来越少。

======================

实际上,相当一部分开源软件开发者,他们原始的动机并不是为了利他,而是为了满足自己的需要,只不过他们和普通的商业软件开发者不同,他们在满足自己需要的同时,把自己的成果分享给他人使用。由于软件基本可以零成本复制,所以在满足他人的同时并不会给自己造成任何损失。

当一个软件的源代码被公开以后,便会有人来继续修改满足自己的需要,一部分修改被再次公开,如此周而复始,自我完善,最后达到甚至超过商业软件的水准。

还有一部分开发团体,在衣食无忧之后,他们仅仅因为一种精神信仰或朴素的理想,像那些热衷于社区服务的团体一样,无偿地为开源软件做改进、维护和版本管理工作。

=========Story 2=========

伴随游客的增多,有游客开始投诉大桥的建造无人规划,显得粗糙杂乱,影响了小岛的景观。这时候,有人开了一个叫“小红帽”(RedHat)的公司,这个公司出钱把大桥装饰一新,借此招揽照相生意,向旅行者贩卖大桥纪念品和小岛旅游指南。由于公司业绩还不错,小红帽不久就在大颗纳斯市场上市。

========================

开源软件也在逐步走向商业化,只不过商业化的方式并非像微软一样贩卖版本授权──他们也没有权利这么做。很多依靠开源软件的公司,依靠整合、订制开源软件,并以此为基础贩卖技术服务来赚钱,RedHat是一个典型。

=========Story 3=========

这个小岛有个邻居──咕鸽岛,咕鸽岛的风景也不错,但苦于游客不够多。于是咕鸽岛决定自己建造一座大桥,将小岛和咕鸽岛连接起来,任何人免费通过。不久,咕鸽岛的旅游业也一片红火。

=======================

Google 基于Linux开发的手机/移动设备操作系统Android被认为是未来嵌入式操作系统的重要方向。与微软不同,Google将Andriod完全开放,免费提供全套源代码。Google的战略并不是通过Android卖钱,而是力求将Andriod的市场占有率扩大,形成行业标准,借此推广Google 的网络应用。

上面的故事写得有点散乱,最后给一个总结──

OpenSource的流行,并非完全是理想主义者乌托邦式的创造。实际上,开源软件形成了另外一个,不同于以往模式的经济链。这就像最早的电影,都是通过票房卖钱,电视出现以后,难以收取收视费,于是就转向广告模式──电视可以免费看,但电视台要通过插播广告赚钱。

开源的核心竞争力来源于开放,正是由于开放,它可以不断凝结、积累无数天才的创造。而传统的大软件开发厂商的封闭软件,发展到一定阶段,常常因为开发效率降低、管理困难而难以继续保持竞争优势。开源软件更接近于自然选择──优秀的改进被自然保留下来,蹩脚的修改由于无人使用而被舍弃。而在传统的封闭软件企业,在某一点上的方向只有一个,方向的正确与否取决于开发小组负责人的个人水平,前面一个人犯错,后面要找一队人来擦屁股。

开源和商业并不是对立的,甚至还有互相促进的作用。一方面,开源软件为大量技术创业公司节约了软件授权成本──如果没有开源软件,互联网公司绝对要比现在少很多;另一方面,也有一批公司,通过在开软软件上定制应用、提供技术服务赚钱。

以Google为代表的第三种开源商业模式,将开源系统作为一个通向自己服务的免费工具和桥梁,这类公司,也将逐渐成为开源生态链的主流。

Symbian 最近“被迫”宣布开放源代码。这是因为Nokia意识到由于Symbian的封闭性,在这个平台上做出创新性的修改、开发出创新的应用比较困难,众多的第三方开发者正在逐渐投向竞争对手Apple和Google的怀抱。为了挽救Symbian平台,维护Nokia在手机行业的老大地位,实现“收入服务化” 战略,不得已宣布全面开放Symbian。这充分体现了开放平台的发展潜力和竞争优势。

从经济学角度,当软件收回其开发成本以后,再发行更多拷贝的边际成本为零。微软正是通过垄断地位和近乎为零的边际成本创造巨额利润──这从社会投资的角度是缺乏效率的。微软十年如一日持有百亿计的巨额现金正体现了这一点。而在开发软件、满足自身需要的同时,将其免费提供给其它有需要的人,其实并不产生额外的成本──这才是真正有社会效率的软件经济模式。从这个意义上,开源模式,代表了更先进的生产力。

开源软件会不会危害软件业?会不会让软件业“自裁”,程序员没饭吃?答案是绝对不会。实际上,并非所有的软件都适合开源。就像免费公路能够创造最大的社会效益──因为公路走的人多;而在自家花园里修条小路一定要自己花钱,因为这是专用的道路。只有普遍需求才有开源价值。对于专有需求──开源了也没有人用。

最有效率的方式,是利用开源软件,提高为特定用户群服务的效率──开源免费,定制与服务产生效益,这才是高效的软件商业模式。IBM之所以能够成为全球最伟大的软件公司之一,并不在于它买了多少操作系统,而在于它为大型企业提供从管理到信息化的整套定制解决方案,而这套方案当中,包含了许多开源软件,以后或许更多,所以,IBM正在积极拥抱开源,很多未来的、有远见的软件企业也会这么做。

通宝推:邓侃,高子山,

本帖一共被 1 帖 引用 (帖内工具实现)
家园 好文章

别的都同意,只是最后一段有点腹诽。

IBM之所以能够成为全球最伟大的软件公司之一,并不在于它买了多少操作系统,而在于它为大型企业提供从管理到信息化的整套定制解决方案,而这套方案当中,包含了许多开源软件,以后或许更多

想当年,IBM是电脑业的龙头老大,现如今,老本眼看要吃光。叹一声,IBM,曾经全球最伟大的软件公司。

家园 开源神化已经破灭

那个桥的例子实在太差。现实生活中,哪个桥是这样盖成的?

可能有简陋之极,危险万分的桥是这样形成的,但坚固漂亮的大桥,还未见过。

开源软件中的确存在质量高的,但这些软件的贡献者非常有限,而且非常集中。那种有人继续修改满足自己需要,逐渐完善的说法,谁能给我个例子?经过多人在不同时间修改的代码,可以明显地看到代码风格不一致,设计混乱,几乎是不可用。

软件的开发,就像外科手术,是必须有主刀医生的,多个主刀医生分批次的修修补补,恐怕很难做出什么东西。

sourceforge.net上开源软件这么多,绝大多数都是质量非常烂的。此外,看看依然活跃的开源软件数量就知道了。

几乎可以说,开源神化已经破灭了。

家园 开源整个一套体系你没看见啊

linux kernel 不谈,linux上跑的大批软件真不入你的法眼?

家园 花简兄

欢迎欢迎

家园 我觉得嘛

我觉得嘛,红帽子没权力拿linux卖版权

但是很多开源作品是有权力卖版权的,开放源代码不见得就不能卖版权吧,不过我没研究过开源几个协议。

我赞同开源,也赞同微软的卖版权;软件开发应该要能给作者带来足够满意的回报,卖版权赚钱并不邪恶,和卖服务并不矛盾;微软的版权实际也包括后期一票服务,而且现在他们在中国的定价策略也灵活很多

家园 我的看法

我的看法:开源确实有其好处,但是人人都修改的软件是会出问题的。

应该是,优秀的开源软件,不断被人使用,然后不断提交bug,高手能自己分析出bug,提交上去,然后核心维护组的成员采纳意见进行修改,这个过程不断互动,让参与人互相提高。

另外,一个优秀的开源软件设计对整个业界也有相当正面的影响。

家园 好的当然有,但大量的是垃圾

最有名的open source项目包括linux kernel,apache,boost等等,这些项目水平当然是相当高的,我或多或少都看了里面的代码,的确是水平非常高的。但上面提到的这3个代表性/标志性的项目,开发模式是典型的外科手术式的做法,是有主刀医生的。而且也绝对不是前文所提到的修桥模式。这些项目的开源,只是利于使用者阅读代码,也许有人会为自己的项目对代码进行调整,但调整不会进入源代码。能够修改源代码的人非常少,而且这些人都是超一流专家,写代码的时候是经过精心设计的。这个过程和大公司里开发商业软件没什么区别——可能还更为精英主义一些。

我前面提到这些软件的代码会被其他人阅读,阅读者可以修改以适应自己的项目。这样的例子很多,但99.9%的修改到此为止,再也没有下家。还有0.1%的修改会被提交到前面所说的那些项目拥有者那里,在经过他们的仔细review之后进入源代码树。请注意是经过仔细review之后,而且review的人通常就是项目拥有者。这种review未必是非常快的,也许要拖很久。

大批的open src软件先天就不足,一方面没有超一流高手,写得代码很烂。另一方面,由于很烂,所以没人会去关注,因此就更烂,因为没有人测试。然后由于没人愿意基于烂代码修改,所以也没人试图修改,即便有人试图修改,也不容易进入代码树。所以它就一直烂在那里。甚至很多著名软件都是如此。

我举一个著名的开源项目的例子。vnc是一个远程桌面控制软件,非常著名,而且衍生出了许多变种。它的用户很多,修改也很活跃,直到最近都有更新。但是里面代码是非常烂的。我除了佩服他们在如此烂的代码基础上居然还能维持下去之外,别的也说不出什么了。事实上,vnc的多个变种,包括realvnc,tightvnc,utralvnc,都开发了商业版本,据说代码彻底重写过。而open src版本,则持续的保持烂的状态。这有点像前文所提到的那座桥。

家园 同意。修桥的比喻并不正确

同意。修桥的比喻并不正确

无论是现实的修桥还是软件开发,都没有学徒工随便介入就搞出一个漂亮东西的道理。

家园 开源差不多只能算是一种软件发布模式,而非开发模式

开源改变的是软件的发布模式,而非开发模式。

开源发布的好处不言自明,使用者得到的更多的好处和权力。对于开发者而言,好处并不是很明显,可以看到的好处是用户提交的bug会更有质量。但这种用户相当少,显然能够在遇到问题进行源代码级的分析的人是很少的。而且除非是著名项目,否则也没有太多人(即便有能力)去花时间进行这种分析。

有些人对开源软件进行了扩展以满足他自己的需求。但问题在于,这些人通常水平达不到开发软件的人的高度,所以哪怕他做了一个很好的扩展,也很难进入代码树,而后续得人即便从网上得到了他的代码,阅读起来也会感觉到困难。此外这个人的修改也许引入了许多其他的问题(他未必能够理解原来的整个设计和源代码,他当初扩展的目的只是为了自己的项目,而且最原始的代码未必适合扩展,说不定更合适的做法是重新设计架构)。

家园 应该说

应该说,很多开源作品的成功是源于是免费的。。

商业作品也有很白烂的(还不如开源的,不过这种作品一般没人注意),做的好的多数不便宜。开源作品满足够用的需求,然后经过若干人评测稳定后,ok了,影响力日益扩大。

也因此开源作品收版权费不是那么容易。

一个好的软件作品,首先是软件构架出色,然后是核心开发人员水平高。

开源作品优点在于有时候一些小扩展可以自行定制,但是不见得适合所有人。

家园 核心在于开发者水平

成功的open src项目,由于其开发人员水平超高,我认为那些项目如果不是open src的,也同样会成功。而且越是成功的open src项目,它的代码树越严格,几乎最后只有1到2个人有权力修改。

一个有趣的事情是这样的:由于windows的symbol可以免费从MS下载,而且非常方便,其开发环境甚至集成了symbol下载,以至于在调试时只比没有src code差一点点,有时候我甚至感觉更方便,毕竟如果只有src code而没有symbol,是不能直接汇编-〉code的。有能力的程序员可以很容易的基于symbol找出windows的bug。这样做的人不多,因为有能力读懂汇编(哪怕是基于symbol)的人很少。linux代码是全开源的,但能够提交bug的人也很少,我认为和前者是差不多多的。

所以linux开源的好处在于,使用者(开发者)可以通过阅读code学习——因此许多东西没有文档也无所谓了——反正你可以阅读代码(这怎么看都像是讽刺),使用者(开发者)可以修改——这个是windows怎么都赶不上的。

至于多人添加模块,众人拾材火焰火焰高之类的梦想,那是不现实的。甚至众人寻找bug,都不那么现实。

家园 这是一种诡辩,你不赞同的是开源项目大都采用的

多个程序员协同开发方式。开源的本身的十个定义并没有要对于开发方式有任何要求。在商业项目中,你所说的几个项目多个“主刀”造成的代码过“烂”怕也并非少见。

要知道,早期更为激进的 Free Software 的代表项目 GNU 就是倾向于所谓的“大教堂”开发方式。一个人写项目一样可以开源,很多项目开源的目的并不是说要有很多要依靠外来的代码。他们开放源代码的目的明显不是简单的要求外界给项目贡献代码。

因此,你的结论与论据之间不存在必然联系。

另外,说到医疗,其实上复杂的外科手术中,时间往往长达二十甚至三十个小时,多科室配合、多个医疗小组、两人(或以上)联合主刀时有听闻。

现代化大生产中,无论是何种领域,这种合作劳动,减少个人在团体中作用的趋势是非常明显的。

家园 没错,开源并非开发模式

我要反对的正是主贴中所乐道的"开源开发模式".

至于开源本身,就事论事的话,我倒是很希望目前许多商业软件开源。不过我估计那只对我有好处,对开发者恐怕没什么好处。不过这涉及到商业模式的讨论,主贴中的例子也同样不恰当。目前这种商业模式也近乎破产了。轰轰烈烈的开源运动,看看mysql的下场就知道了。

家园 你所说的“开源商业”模式一样是个诡辨

MySQL 是 MySQL AB 主导的,这种模式本身在开源世界里也是有反对声音的。 MySQL 是否失败,单从项目本身来说现在下结论似乎尚早,而从商业上来说,也不能算是失败。

真要评价开源的话,硬碰硬的就是采用开源方式发行的软件数量,参与开源项目的程序员数量,程序员为开源项目贡献的小时数。开源是否已死,现在来看缺少证据。

在我来看,开源,包括自由软件本身程序员相互之间相互交流的必然选择。这才是开源的真正动力。

全看树展主题 · 分页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河