zoukankan      html  css  js  c++  java
  • .NET系列 之 开源和不开源的背后

    前几篇都着重在写Java和.NET社区的一些不同之处,也对二者做了一些比较。眼下呢,先休息一下,谈谈开源和不开源(为了对仗工整,叫闭源吧)的一些事情。也许不算什么,也许算点什么。这篇文章主要不是写技术的事情,而是谈一些和项目有关的问题。

    古人云,存在即合理。也就是说,一个事物能够存在并坚持一段时间,乃至取得成功,必然是有其合理性存在的。不用找那么多理由来解释它的合理性或者不合理性,毕竟一件事情总有两个方面,总有人看的顺眼有人看不顺眼。很多年轻人都喜欢争个面红耳赤,非要辩个输赢出来,但是却不知道,实际上很多事情是没有对错之分的,只有你接受或者不接受。在项目开发过程中也是一样的,用开源组件有其长处,也有其弊端。使用商业组件自然也有优势和劣势,都很正常。在一些开源项目中,自然会使用到很多同样属于开源社区的组件。毕竟法律是用来遵守的,而根据法律规定,很多开源软件不得用于商业化领域,也所以tomcat之类的开源杰作才会如此盛行。我想,每个做J2EE项目的人机器里,或多或少都会有这个软件吧?

    但是在商业领域,往往不是如此。一方面受限于授权协议的制约,有些东西不能用。另一方面,也是出于对开源组件的稳定性考虑,不会使用一些开源组件。那么这时候最优化和最合理的选择自然是商业组件,也就是收费版的东西。一般来讲,收费版的组件无论从质量还是稳定性上来说,都要远远高于开源组件,同时由于其收费的原因,售后服务和响应速度更是开源社区无法比拟的。下面就来谈一谈在软件公司中开发的一些情况。首先声明一个问题,本文所讨论的问题,是基于法律基础之上的,对于不遵守版权协议和授权协议的行为,不在讨论之列。

    在一些大公司,尤其是外企当中,版权和法律这两个词已经根深蒂固的植入了其内心之中。比如我曾经经历过的一件事情就很能说明问题。当时是需要对项目进行性能测试,那么就需要使用测试工具。一般情况下是使用LoadRunner。而LR本身的价格很贵,并且由于针对的范围太广,所以用起来难免有些不适。甲方最后选择了IBM的RPT作为测试工具。RPT是基于Eclipse环境的一个Performance Test Tool,使用方法和Eclipse基本相同,比较方便。在测试过程中,遇到了一系列问题,诸如并发访问强度不够,对新版浏览器支持不足等等,都在IBM大中华区的技术支持人员的指导下一一解决。就算是最复杂的一个问题,也通过IBM美国总部的快速确认,被列入了hotfix清单中进行Emergency Fix,并第一时间将Update Package反馈给我们。顺便说一句,因为这件事情,IBM大中华区的几个技术人员还和我本人成了很好的朋友,不过都是美国人- -#.

    如果使用一些免费工具,在前期的测试成本上会低很多,这一点是毋庸置疑的。但是如果遇到问题,那就只好百度加谷歌了。要是没有人遇到过,那您就可以烧香祷告或者自己想尽一切办法来解决,比如重装系统,重启电脑什么的,如果您有这耐心和想法的话。此外,文档齐全也是商业化项目的显著特征之一。最典型的例子就是MSDN,浩如烟海的文档,权威而且贴近人心。虽然更新速度没有英文版的快,但是也慢不了多少。

    那么究竟是什么造成了闭源软件的这些特征?说到底,还是一个钱字。开源社区多数是因为兴趣而做事,纯粹为的是高兴。最初的时候XFire还是很好用的,个人感觉比起Axis来说要好很多。但是不知道因为什么原因,XFire停止更新了,这一点让人非常难受。直到CXF不久前的现身,才弥补了这个空缺。而那段空白期间,我只有硬着头皮从Axis2的不算很全的文档里慢慢配慢慢扣,当然同时还要解决和其他jar之间的兼容性问题。之所以会这么轻易的停止更新,我个人意见来说,很大程度上是因为没有经济回报,通俗一点来说就是三分钟热度。过了最初感兴趣的时间了,再因为一些什么原因中断了开发或者维护的话,会不会拾起来继续,就只能看作者的兴趣了。毕竟人是一个生活在社会里的动物,不是一个活在真空里可以不吃不喝的神,人人都会遇到不开心的时候,也会遇到劳累甚至想放弃的事情,不能因为没有更新就责怪作者,对吧。

    而闭源软件在这个问题上,要比开源软件皮实很多。毕竟是有经济因素在背后支撑着,所有的程序员都是有付出有回报的人,质量也是有控制体系的,这种产品的质量会好很多。也许你会说,开源社区的东西也有Bug List,也有人在维护。但是作为一个项目开发人员,我们要的是稳定的DBS输出,而不是间断性的,对吧?您老人家要是一直不改,我还真不能咬您。可是我遇到这个问题,如果影响了我开发,那就闹心了。如果购买的是商业组件,我可以打电话回去,可以提交Bug给厂家,我也可以指望着有人来改。最少,我有个盼头,甚至于有些时候,这种修复是属于合同范围内的事情,那我还有法律来约束双方的行为,岂不是比用开源的要安心很多。

    再一个,因为闭源软件的用户都是花钱的,也就难免有点大爷化,大多数情况下他们都不是专业的软件开发人员,甚至点鼠标都不咋会。这个时候,软件的易用性和稳定性就更加重要了。配置文件少一些,环境依赖小一些,都是一种优势。而一个东西稳定一点好用一点,不管是对开发人员还是终端用户,都是一件好事。而开源社区赖以生存的,就是难用和复杂的配置。因为不好用,所以需要人来指导。而指导了,就好用了,因为什么?还是因为你花钱了呗。没有利益的驱使,谁会那么任劳任怨?

  • 相关阅读:
    HLS Coding Style: Hardware Efficient C Code
    HLS Coding Style: Arrays and Data Types
    HLS Coding Style: Unsupported C Constructs
    HLS Optimization: Latency V.S. Throughput
    HLS Optimization: Pipeline V.S. Unroll
    HLS Coding Style: Functions and Loops
    HLS Optimization: Latency
    HLS Optimization: Throughput
    hive常见报错
    Neo4j 第三篇:Cypher查询入门
  • 原文地址:https://www.cnblogs.com/xhr8334/p/1905810.html
Copyright © 2011-2022 走看看