关于开源集中在中低端市场的我的看法

中山野鬼 发布于 2012/04/14 18:10
阅读 435
收藏 5

来这不久,像 @宏哥 发表的一些有质量的老帖子,都没有翻过,今天看到别人翻出的关于开源产品集中在什么样的市场的帖子,我也就此话题发表下我的观点。

首先,关于@宏哥 的原帖内容,我表示认可。因为,所谈的内容属实,从某个角度上得出的结论也正确。

下面我从其他的角度来谈谈开源和市场的问题。说开源和商业公司闭源的最大区别,我觉得应该是面向的目标不一样。开源之所以能称为开源,不单单是源码开放,更多的在于不同群体的组织化开发行为。例如,你一个人A,不算,你不仅A了,还传播A,导致一群人A,那么你就犯法了。但一群人A,口味总有差异。要想能传播的A,至少也是德艺双馨的陈摄像师或空老师的作品。即便这样,也会因为有特定人群的不同品味表示拒绝。

而商业公司,公司化行为就是赢利,因此存在非常明确的客户或客户群。你要什么我给什么。我的目标就是让你爽。别人爽不爽另谈。

由此,开源通常是在两种情况下,具备良好的开发和使用价值。

1、明确的一个共用目标。例如IM。还有视频编解码。大家可以了解一下XVID,和DIVX的历史就知道了。现在流行的FFMPEG,你们看到的国内绝大多数的无论是网页的视频播放,还是各种播放器,可以肯定,几乎百分百有开源的代码在里面,如果是泛PC平台,不是特定的嵌入式平台。我甚至相信,百分百的这些商业企业,只是做了局部修改,核心是否有特定优化都很难说,原因不是技术。

2、非明确目标,但存在共性的通用件。例如linux和阿帕奇本身。mysql也算成功的一个。从我对数据库的定义来看,mysql也是个数据库。如同只有VFS的OS,仍然是个OS一样,即便功能不足,但基本功能都有,MINUX也是OS。我也是从这个学起的。

这些非明确目标的通用件,如果作为商业公司来看,确实无法直接拿来用。因为这些通用件并不是为了特定客户的需求所设计的。而是作为一个平台化的东西,更通用的给予最终开发者以方便和支持。

别人为什么要参与你的开源项目,因为你的开源项目能和自己60%-80%的设计目标或所需要的底层接近,由此,参与到项目中开发,并针对自己的目标中,别人也需要的东西,组织进开源项目。

由此,总结,开源的价值在于重叠各个开发目标中的通用型,降低了开发人员的成本这个很难说,但可以有效的形成一些事实标准,方便后续的面向具体客户的业务响应。并针对共性部分进行高质量的设计,这块反倒是闭源代码项目的劣势。

而对于中高低端市场,这个划分规则,每个人有每个人的看法。这里并不想参与讨论最正确的结论。就我的态度,市场本身没有中高低端之分。但从收益,和技术复杂度,可以按照两个标准分。

1、收益多少。

2、技术难度大小。

从产品收益多少来看,如果把开源的代码直接对应,那么几乎可以肯定是低端的。既然都开源的代码,拿来就能用的话,怎么可能还有什么产品收益呢。而商业领域则不同,会有定制化的工作涵盖,包括定制化的稳定性检测,性能扩充等。不过这些工作又有多少是基于非开源的代码之上呢?

如果不谈收益,谈技术难度大小。例如,淘宝的后台系统,可以说相当复杂了。另外,还有一个实际应该比较复杂,但是究竟怎么样,我不知道的系统,铁路订票网站。不谈后者,就谈淘宝的去这个化,去那个化。如果想去这些商业软件,不依赖开源的技术,重启炉灶,如同你想A,打算重新配DNA育种,过18年后再找陈老师拍A,一样不靠谱。

如果从技术难度上来看,还有一个就是这个项目的通用型。GCC,不单单是个C编译工具链。这就是开源的。GCC可以说是支持平台最广泛的。难道技术复杂度不够高?

由于开源的自身的特点,因此更多的强调共性方面的技术开发难度和深度。而不是特性方面。由此,在独立拿出来,和特定目标的商业软件比较,是没有可比性的。

从哲学辩证的角度来看,没有优点,缺点之分。从项目主持,运行角度来看,最小的投入,最大的产出,是目标。由于开源是共性强,差异性弱的特点,因此,利用开源,集中满足客户差异性需求,才是有效的发挥开源特点的方式。

最典型的一个例子就是,oracle,可以说这个产品非常优秀。优秀在什么地方。对于广泛的数据库应用需求,均可以提供良好的,稳定的,大负载的支持。但极端的对比时,就有问题。如果是特定客户,或特定客户群的任务。针对这类特定客户的数据库的支持,则oracle的产品就无法做到最优方案。

由此我也说过。如果针对特定的目标任务,如果拿基于开源的代码进行改造出的来的产品,在技术指标上和oracle来对比,简直可以说在欺负oracle。这就如同商业软件产品和开源的半成品模块做对比一样。

可能你会说,你野鬼是不是喝高,首先我不喝酒,其次没有彪狂。我就举个简单例子。

曾经优化工作中,有个条C代码语句。类似如下

(a*b+c)>>d;

由于DSP虽然有并发度,但是乘法器和移位器之间,存在3个cycle的延迟。如何解决掉移位工作。经过特定情况分析,在特定目标计算集合里,确实移位可以去掉,等同于

((a*b+c)*e)>>8

>>8有专门存储转移指令可以处理,e和d 都是常量。由此就变成了。

a*B + C

基本上基于这个优化策略,速度必自动编译器提高了4倍左右。DSP上,C代码的最高优化,和我汇编的优化,差异8到20倍,是很正常的。不是我的能力比C的编译器强,而是C语言在描述一些问题时,无法更好的利用硬件特性进行。但C是高级语言,强调的是跨平台的逻辑描述能力,难道我就能认为C这个类似开源的东西不好吗?显然抬杠了。如果不用特定寄存器,在非并发CPU上手工优化,你几乎没有机会超过C编译器性能的 15%。

我这里强调的并不是算法本身。类比,客户的任务也是一样,如果客户的数据库的特性导致很多数据情况并不存在。则特定的优化可以有效的发挥价值。不仅简化了数据结构,业务结构,也简化了计算方法和计算步骤。

由此,特定客户群的数据库优化后的产品,如果就此特定任务去 和 oracle这种商业级的产品比,确实欺负后者了。但是面对通用的客户目标,又有什么资格和oracle比呢?

而特定的商业级的产品和开源产品也是一样。

产生差异的原因就是在于,一个是具备特性的,一个是更看中共性的。这里重复一下@宏哥 观点的看法,还是对的。由这个观点,继续推导,也说明,开源要想真正被客户良好的使用,在最后还是要有个特定客户群的特定任务定制的工作。否则也确实会被沦为“中低端”的市场。毕竟,开源的产品,更多的是半成品的方式出现。例如 ccflow。我相信,ccflow中间还有很多BUG和不足。同时,也不可能拿出来,针对某个特定客户的任务有良好直接的解决。但是我也相信,ccflow的类似开源项目的继续,在成熟后,可以为更多的定制化的flow任务,所提供良好有效的支撑。

最后重复一句,开源的项目,无论是开发的目标,重点,还是价值,都在于共性部分。由于不同角度,不同水平的开发者的接入,可以有效的提高共性部分代码的质量。这是传统商业闭源产品所不能比拟的。

 


加载中
0
拉菲一箱
拉菲一箱

老鬼,这篇文章我200%赞同。

利用开源,集中满足客户差异性需求,才是有效的发挥开源特点的方式。

对大多数开源产品来说的话,基本上无法直接共给给客户使用

ccflow周朋
ccflow周朋
看到,ccflow为它的爱好者带来了价值了吗?
0
宏哥
宏哥

经过广大群众的教育,我已经认识到,劳动者最光荣

只有分工的不同,没有高低贵贱

0
中山野鬼
中山野鬼
@宏哥 哈,关键大家别和MONEY过不去。真正肯出MONEY的,还是客户的问题要能满足的解决方案。 技术只是技术。
0
皮总
皮总
技术在很多公司只是二等公民.
ccflow周朋
ccflow周朋
谁说的?
0
中山野鬼
中山野鬼
@皮总 很正常啦,除非公司主营业务就是靠技术的。软件外包不算,和人力公司卖人头没什么两样。技术和赚钱没直接联系,所以自然沦落。
中山野鬼
中山野鬼
回复 @皮总 : 不错啦。因为领导挨批了,迁怒供应商,全部替换设备品牌的都有。哈。不过如果替换成本非常高,领导也不敢随便换。外面排着队的等替换,不换做什么。
皮总
皮总
本人亲眼所见某公司因为更换邮件服务器, 出了一天的事故发不成邮件 ,高层一怒开除一组人, 做技术想相也挺悲哀,在某些人眼里觉得是理所当然一样.
0
ccflow周朋
ccflow周朋
经过考虑,还是把我的评论删除了,免得口水之战。
0
中山野鬼
中山野鬼

引用来自“ccflow”的答案

经过考虑,还是把我的评论删除了,免得口水之战。
哈。怕什么。不怕不怕。其实我喜欢讨论。哪怕被骂,讨论中也是再学习的过程嘛,就是什么也没学会,也提升了迅速寻找板砖,或丢鞋子准确率的水平。
0
ccflow周朋
ccflow周朋

引用来自“中山野鬼”的答案

引用来自“ccflow”的答案

经过考虑,还是把我的评论删除了,免得口水之战。
哈。怕什么。不怕不怕。其实我喜欢讨论。哪怕被骂,讨论中也是再学习的过程嘛,就是什么也没学会,也提升了迅速寻找板砖,或丢鞋子准确率的水平。

如果要评论ccflow, 就要彻底的掌握好ccflow,ccflow不是很完美,但是也不是你表达的那样不成熟或者说是半成品, ccflow的用户会证明这些. http://ccflow.org/Case.aspx

对于你说的"在最后还是要有个特定客户群的特定任务定制的工作。" , 如果设计人员,把道路引领这样方向,至少说明他抽象能力不够,或者说引擎配置不灵活。

开源软件不是低价、廉价、质量差的代名词。 首先它是一个接受公众检验的软件,一个应用级的软件。否则他不是一个真正的开源软件,或者一个纯粹的开源软件。

0
ccflow周朋
ccflow周朋

引用来自“大竹叶青”的答案

老鬼,这篇文章我200%赞同。

利用开源,集中满足客户差异性需求,才是有效的发挥开源特点的方式。

对大多数开源产品来说的话,基本上无法直接共给给客户使用

 看到,ccflow为它的爱好者带来了价值了吗?
返回顶部
顶部