Total Pageviews

Sunday, 28 October 2012

开源软件的七宗罪

我们每天使用着大量的开源软件,我们歌颂她赞美她。当有人站出来说一句开源不好
肯定会激起N多人站出来批评。然后给你列举出N多开源的好处和闭源的坏处。
首先我不反对开源,本文只是无聊时候的自己一点思考。想喷的各位请看完再喷。谢谢
自从开源运动发起以后。各种针对商业软件为目标的开源项目相继启动。而且冠以开源之名
就会得到尊重得到大家的支持。哪怕他曾经是一个“臭名昭著”的企业。
1. 安全性---代码可审查和补丁更新效率
以安全性最为顶尖的Linux为例吧。那些鼓吹Linux的多么无敌的大神们怎么遇到这事情就避而不谈了?既然是无敌的安全机制。为什么Linux还要打补丁?而且许多都是安全补丁。Kernel为什么会被入侵?而且最害怕的是Hacker植入后门代码。
做 了一下调查发现鼓吹Linux安全性的多数都是运维+应用级程序员(包括web和应用软件开发的)大部分人都没有详细的度过linux的源代码,请问那股 无敌的自信哪里来的。事实上有多少人会因为Linux是开源的使用Linux而更多的是因为免费和高效才去使用linux,事实上因为linux安装软件 超麻烦要记住N多命令以至于不得不找各种脚本才可以解决那些复杂而多样的命令的问题。
Linux真的安全么?开源安全么?由于开源的混乱 和代码审查工作的不到位。各种被安插了后门代码和各种隐藏后门一般人就差看不出来的。比如ShellCode被加密起来当作一组什么常量或者转换成字符 串。当某些特定情况下才会触发。可是这样的文档一般是不会随着源代码发布的。(中国的那些自主产权为什么没办法消化?的确拿到了设计图和专利。)研究的过 程和推导的过程才是最重要的。而我们忽略了这个最重要的步骤。这和我们这个社会的哲学观有关系。老板只认结果不重视过程,没有过程哪里来的结果。真正研发 过程只有研发工程师知道。你拿着研发的结果不知道复杂的过程你根本没有办法推导出各种情况和为什么这么设计。世界上有太多只有结果过程因为某些人的消失而 永远弄不清答案的事情了。扯远了。
如果你弄不清楚他为什么这么设计。如果里面有一些暗藏后门的逻辑请问谁能审查出来?一般人能检查的也就 是一些语法错误简单的逻辑错误。可是真正的逻辑陷阱有几个人可以审查出来?专业化的审查工具?呵呵我想说hacker手里的审查脚本远比一般人知道的要多 得多的多。否则哪里会有这么多漏洞。软件开发不是人多就能解决问题。否则也不会出现“钱学森一个人顶得上五个师的威力”这句话了。
精巧设 计的逻辑漏洞绝大多数的人是审查不出来的。QA更检测不出来。抛开这个不说单纯从代码安全性上来说。由于是开源的。查找漏洞的方式更简单。以前我们还需要 打开IDA,Ollydbg,Windbg等工具一行行汇编审查。或者fuzz现在我们根本不需要了。直接看代码就好了。检查各种函数入口看看有没有可以 利用的地方。专业的hacker会审查这些漏洞然后当作0day存储起来—实际上发布出来的0day很少很少。当你知道0day发布的漏洞的时候实际上都 是过了半年甚至好几年的漏洞了。这些早就是行业潜规则了私有化的工具私有化的漏洞。
Hacker渗透一个系统首先要收集资料。由于大量的 开源导致他们很容易获取整个网络架构服务器配置,网关设置信息。这些信息根本无法隐藏。这些都是无法避免漏洞。你指望有一个好像侦探一样的漏洞挖掘人员可 以大公无私的挖掘到漏洞然后第一时间放出漏洞信息么?可行性几乎微乎其微。这么多人研究越狱为什么只有一两个人成功了还藏着掖着放个视频显摆一下?因为大 家都知道这可以为他带来可观的收入,
早年Intel一个浮点数漏洞让Intel损失好几亿,软件的一个漏洞损失应该更强才对。在地下某些黑市一个针对远程溢出的漏洞能炒到几百万上千万的都有。而且愿意购买这些东西的人太多了。做黑产地,专业渗透团队,ZF,黑灰白都有。
请问开源软件的安全性谁来保证?靠大家监督么?可行么?而且许多开源底层一般人也接触不到。再说有的时候找到漏洞的成本比修补这个漏洞的成本更高。请问开发团队由收入这个漏洞查找的人谁来给予奖励?单靠表彰可能么?

2. 质量
绝大部分开源软件的质量很差。因为大部分开源项目都是一时热血发布的。自然是想到什么写什么。什么华丽的技术都用进去,热血过了咋办?我想大部分人都没想过。就和好多人说我爱这个女孩非她不娶,实际上最后结婚的大部分也都不是原来的那个她了。
可是当时觉得我以后肯定会一直爱她(它)会一直一直维护下去的。
大部分参与开源的人一半是觉得自己还行随份子(大部分开源项目管理者觉得人多好听自然就是有几个算几个只要有的人都算进来。说出去好听。我们的项目有好几个人共同开发。不少都是大学生为了做毕业设计或者其他目的参与的)
完全就是一个杂牌军。主力开发人员就那么几个。好吧这个项目很好很快得到大家的青睐有了一些小型的用户。靠这样的撞大运的开发方式能有好的质量么?
ACE那样的项目开发者就是为了做实验写了一些论文和书。随后这个项目几经转手最后弄得理论上最强大。实际上没几个人敢用。
能像MySQL,Linux,GCC这样的项目少之又少。就这还不算某些大公司背后的阴谋
3. 可维护性,制定性和开源协议
如果这开源团队不做了。你可以继续维护这个开源软件,听上去很美丽,实际上能自己维护像Linux,MySQL这样规模很大的软件能有几个人?再说我要的是使用而不像做开发人员。我如果有开发能力我自己开发一个好了干嘛要用它呢?
开源软件给我们画了一个很大的饼。大到我们根本没办法下嘴去吃它。我承认有一些团队可以维护Linux,MySQL这样的工程。可是这些人。要么是大公司要么是原开发者另起炉灶搞得项目。一般人根本无法涉及这个领域。
还 有软件各种开源协议。我给XX公司制定的某个MySQL版本增加了他们自己特有的一个什么技术来改进运行效率。请问我是否要开源?如果必须要开源的话那企 业机密和我自己研究的一种新的算法和技术怎么就平白无故就开源了?如果我不开源是不是就不尊重他人?而且这个协议谁来保证?当别人侵犯了你的权益谁来给你 保障?谁来审核是不是有人侵犯你的权益?
开源你就要遵循开源协议。比如阿里云为什么Android会站出来反对?
因为这是Android想做的。阿里你居然先做了。你居然不按照我设定的步骤走,我就搞死你。开源软件真的是“开源”的么?就和ARM的协议一样
有许多个版本。有你想怎么修改就怎么修改的,有你只能外围修改的核心不能动的,还有你根本不能动只能“免费,自由”使用的。
开源协议看似我开源的。实际上背后的条条框框你知道么?
你必须遵循我的约定。你能在我的上面修改的东西很有限。超过了协议约定我会告死你的。。。
4. 自由,免费,专利与开源协议的法律约束
许多人说开源不等于免费。好的请问你都开源了你如何保证别人会使用你的程序还会付钱给你?你没办法保证。包庇centos和rh一模一样rh去告centos了么?你都开源了你管别人怎么用了。
软件免费了。请问开发者的开发费用谁来支付?基金会?反过来想一下。是不是我们都是基金会的廉价劳动力?只是冠以开源的名义做着和那些IT企业一样压榨劳动力的事情?
调查了许多开源协议。除了某些义务开源(比如MIT,BSD之类的协议)其他的协议要么是你用了某软件必须要声明,或者修改了要开源,或者个人版免费,企业使用要收费。大家哪里有这么好的自觉性?那请问收入如何保证?
所以大公司的开源项目大部分都不可能是完全开源协议。
大公司领导的开源项目。项目中有技术含量的早就被申请专利了。他只是不说在开源协议中提到一下。然后给你免费使用哦。一旦你的所有开发都给予这个平台的话。有一天他要说我要收专利费了。我们的项目已经完全的捆绑上去了。我们怎么办?
想想转基因农作物的专利陷阱的问题,老外怎么这么好让你免费用他们的转基因专利?
没人想想背后的故事么?
开源协议在说什么?有人研究过开源协议么?我觉得大部分人对于开源协议的了解仅仅是开源了不需要付出任何代价,这个你修改了你也要跟着开源。仅此而已。剩下的那些霸王条款有人去研究过么?

5. 技术支持和第三方服务
开 源软件大部分安装都很麻烦。甚至有些不提供Bin直接Src自己爱怎么折腾就怎么折腾。出错了不知道找谁去社区问,有不错的社区会建立一个QA手册。如果 遇到一些QA没有的问题怎么办?靠开发人员自觉的跟踪回答?如果需要上门服务呢?需要比较专业的技术支持呢?费用谁来承担?有明码标价么?
而且大部分软件都很不负责任的写一句“风险自行承担,开发团队概不负责”这样的话。请问你看到这句话就和看到“最终解释权归本公司所有”是不是一样的气愤!
当然大部分人觉得没什么感觉那是因为你没有造成损失过。如果你真的因为使用软件而造成严重损失你就知道。技术支持和第三方服务的重要性了。

6. 支持开源项目的幕后---谁才是最终获利者
这个问题估计大家都很关心。开发人员希望有一份自己想开发就开发。而且有零花钱的项目。国内几乎没什么基金会,国外有因为他们有收入和捐款。而且大部分都是大公司背后支持的。这个东西发展的不错最后就把她收购了。
而真正的开发人员最后就成了一种“被开源”的廉价劳动者
逆向思维一下。开源项目都是什么人?
  1. 大基金会支持的项目
  2. 大公司支持的项目
  3. 大学或者科研机构
  4. 超有责任感超负责任而且可以拿到开发资源的“神人”
按照目的排列一下
  1. 实验性项目只是为了做实验而已-成熟的技术会另外收入商业产品中。比如RH
  2. 名声,企业形象。开源一些可有可无的东西。比如微软,SUN等等,国内新浪,网易,淘宝等等
  3. 商业目的。例如Intel为什么嘛支持Linux开源?把自己公司生产的硬件需要用到的驱动或者一些软件做到Linux上。随着Linux或者其他开源项 目的顺风车洒满整个世界(就和植物的果实,还有蒲公英一样)微软搞得IronPython,Mono,还有许多其他的东西
  4. 技术领先目的。这个说的有点远。考虑一下为什么美国和苏联当初都对中国或者其他国家有过技术支持?仅仅是因为政治么?
中国刚起步需要技术,苏联援助中国,那中国只能跟着苏联技术路线走。我们就被他们死死的捆绑了。我们始终只能获得他们的二流技术和仿制品。从中国的各种武器就能看出来。几乎就和苏联当初一个德性。
美 国支持日本和韩国的技术发展是不是也是抱着这种目的呢?带你走入美式路线当你完全进入的时候。你就始终落后于他。这些老大哥们就可以牢牢地控制住技术发展 路线。谁都想知道对方有什么技术,既然无法阻止别人研发,不如就让别人跟着自己的路线走。反思条条大路通罗马为什么非要跟他们走?
我们的祖先以前科技发展非常迅猛而且领先,自从满人入关以后废汉学兴西学所以我们一直落后于西方。西方人却在偷偷的学我们老祖宗的东西。现在反思一下我们是不是一开始就落后于西方呢?
  1. 希望世界更美好更和平人们相互关怀爱护,拾金不昧,视如己出……
说了这么多相信大家都知道我的意思了。老外在各个行业上压榨与我们。
冶金,材料学,医学,电子,粮食,转基因几乎所有行业。怎么软件行业突然这么大方起来了?给予我们免费的编译器使用,教我们如何使用他们的工程和代码。
把我们一步一步培养成只会使用他们开源工程的码奴。还提出各种封装思维。你不用懂我们是怎么做的。你只需要知道怎么用就好了。底层我们来弄就好了(其实我跟你们说底层吃力不讨好的。没意思的,研究要花许多钱还没收入的。这样的脏活累活我们做)
于是我们就成了只会使用别人开源工程和底层的一群码奴了。
就和中国制造一样。进口人家的设备和原材料。生产了东西卖给别人。看似是一笔不错的生意。实际上我们失去了许多。我们技术受制于别人,生产的东西还没有很高的附加值。而且各种贸易费用都要我们负担。开源真的就这么美好么?
开源项目中的专利陷阱我们发现了么?

7. 技术开源与世界局势---我们的未来在哪里
现 在生产和原料不占优势。中国在海外投资矿产有几个发财的。赔本的倒是见过不少。为什么人家有矿产自己不开发等着我们开发。我们自己还赔本了呢?相信这样的 新闻大家肯定知道的比我多。为什么?这个世界已经从单一的原料出口向高端技术和商业运作上发展了。搞开源的估计都不喜欢微软和甲骨文。甲骨文见一个收一个 再把开源项目搞死。微软死活不开源。Apple呢?有人喜欢Apple么?估计也都不怎么喜欢吧。至少在Apple开源以前大家都不喜欢它…难道我们就是 因为他们贡献代码了才喜欢他们的么?
为什么好好的垄断不做他们去做开源?有什么陷阱么?老外的智商和商业运作玩的比我们先进这么多。为什么会这么大方的在开源?突发善心?
就像上面我说的。生产和原料不占优势了。现在占优势的只有高技术和市场运作方式。
高技术有专利来保证。Apple是专利流氓芝麻大点的东西都要去申请专利。那再软件上是否也是默默地这么做了呢?或者说以后我们连写 if while都要付专利费给别人呢?
我想大部分搞开发的人都知道。公司里每年都会有一笔奖金是给那些有专利的开发人员的吧。虽然少的可怜。但是有总比没有好。为什么?因为专利就是公司的法律筹码!
调 查过一些商业开源失败的案例。举个最近的例子吧。DOOM3都玩过。卡马克大神开源了。可是里面由于Carmack"s Reverse技术被另外一家公司申请了专利(学名z-fail stencil shadows现在不少显卡都集成了这个功能)。DOOM3面临着开源就遭遇专利危机。一般人也就是算了不开源了。卡神不愧是卡神。自己开发一种替代技术 来解决这个问题。
关于软件的案例不多,但是足以看出来开源软件是否也暗藏专利陷阱呢?技术是你研发的没错。但是不代表别人不能拿你的技术申请专利。那些美妙的开源基金和公司是否也在背地里做这些见不得人的勾当呢?请问你敢说没有可能么?
他们发布出去的只是代码。设计文档没有开放。我们知道老外是最重视文档的,每个模块用了哪些技术为什么使用这个技术—这个技术的专利属于哪家公司。难道你能觉得他完全没有做过记录么?真的因为开源软件打起专利官司我们这些使用者和二次开发商肯定死定了…
现在你还会觉得“开源软件”是玫瑰(不解释)而不是罂粟(不解释)么?
开源软件引领着技术风潮。开源软件刺激技术发展。然后开源基金在幕后操纵着社区开发者。获得大量的开发资料和新的设计思路,然后偷偷的申请专利.谁能保证没有?
别的国家都在做基础研发,因为基础研发比较透彻所以人家各种专利技术和底层稳定性做的非常好,于是他们利用开源软件来收集各种资料,数据和设计思路。然后软件的所有权还归他们基金会或者公司所有。
高技术和所有权。通过技术专利和基金会的项目所有权而全权垄断了。他们垄断着上游
就像我说的。协议中最后一句“解释权归本公司(基金会)所有”那是不是意思就是说。项目中的技术和专利也都是属于支持的基金会和幕后公司所有呢?
我们吵着软件专利阻碍软件发展,那硬件又可况不是如此呢?开源硬件又如何?你不掌握制造技术,生产技术,研发技术,就算让你组合起来能成为一个产品。你又要付出多大的代价呢?当这个世界进步的同时。各种陷阱和战争也在悄然埋下伏笔不是么?
写在最后:
有 许多人会觉得我危言耸听。可是我举得这些例子和说的一些事件大部分人都知道,谁也没办法完全否定我说得这些事情。我们究竟是因为别人喊了一句“开源”我们 就成了开源世界的阿Q,还是我们是真正的技术先锋呢?没有组织的开源是不是会被国外的基金会当枪使呢?被“G命”这句号召感召的人们最后成了现在这些“寄 生X”的垫脚石了。我不希望我们也是被“开源”这句号召牺牲的一代人。
我真心希望能让大家引起思考。而不是一下子站出来说。你文中这个不对那个是错的。你不懂开源精神。你说的这些我都懂,这篇文章我没有深思熟虑细致考究。我只是临时有感而发写成的,我觉得我们需要的是反思!而不是相互攻击。思考我们的出路在哪里.