西西河

主题:关于Linux的推广——普通用户篇 -- 万斤

共:💬381 🌺357
分页树展主题 · 全看首页 上页
/ 26
下页 末页
    • 家园 关于Linux推广-开发优势篇(NTLM的故事)

      我在上一篇文章中给出了一个具体的例子,说明在windows下面开发程序,从程序员角度来说,尤其是从学习角度来说。是特别得不偿失的。一个不好的比喻是,微软的开发方式好比连邪功,进展很快,后期提高很麻烦。而Linux下面做开发,刚开始进展比较慢,但是后面速度越来越快。当然Bolaohu兄给我提出了宝贵的建议和启发。

      在这个帖子里面,我先给出NTLM的例子回答Bulaohu兄关于NTLM的问题,基本上都是商业上的操作讨论。技术上很少。对于商业我有一定的自信,因为我自己业余也帮家里运作一些小业务。对商业运作有一些基本的了解,加上我女朋友的课题和这方面很接近。所以我也知道一些非常粗浅的理论。

      Bulaohu兄在他的bulaohu:最后一回中(千万别是最后一回啊)举了NTLM到ActiveDirectory作为例子,说明微软是从不公开走向公开,我还对此有批评是不公平的。他这个例子给的非常好,非常具有代表性。我们就看看微软这个NTLM->ActiveDirectory的转变过程是怎么一回事:

      NTLM按照我非常有限地理解,它只是对应着一个用户认证协议(就是让客户机通过这个协议在服务器上面的数据库查询验证用户名称和密码),有两个版本v1和v2。微软在windows for workgroup中开始采用此协议。但是到了windows 2000的时候,忽然改用开放的Kerberos协议来取代NTLM,并且和她的LDAP服务进行整合。难道它真如Bulaohu兄所推测那样,是因为微软特别喜欢公开的协议,越来越开放所致?

      很不幸,一般商业公司不会这么做,微软没事也不会这么做。我女朋友他们的商业管理教科书上写的明明白白:一个公司要采用一个新技术(比如ERP)通常最主要有三个原因,一个是它的目标客户,投资人或者监管机构要求他们这么做,第二个是其他竞争者都在使用这个技术。第三能基本替代现有的功能,而且在降低成本的情况下不增加任何明显的风险。这对程序员开发商业软件也是一样,如果你开发了一个很好的技术,向某个公司推销。除非你的新技术/软件能满足这三点,否则大部分公司是不会同意的。

      所以,对于进入者来说,实际上这三个理由对新的竞争者添加了一个门槛。比如从windows转到Linux这样的情况,看看下面的这么多回帖就能看出来,1)“Linux下面能干的事情,windows下面也能干,干嘛需要转换?”“我们的客户都在用windows系统,Linux开发出来没有用”2)“其他公司都在用windows系统”3)“公司里面没有人会维护Linux,Office不兼容怎么办?风险太大了”。这三个理由在这里有明显的表现。当然,这个原理对微软也适用,如果它开发的一个技术,它的目标客户没有要求它升级,或者说,目标客户没有要求它升级的权力(不能换到别的技术)。并且投资人还乐得看到技术垄断造成利润上涨。那别说从根本上更换协议了,就是一般的升级都是不一定要做的。比如Internet Explorer就是最最明显的例子。IE6整整6年没有任何大的技术升级,甚至坚持不兼容W3C的标准。Opera对它根本不造成威胁。直到Firefox占到了16%以上的市场份额,并且越来越快为止。

      这个原理当然对NTLM也是有效的,以如果微软自己开发了NTLM,而忽然放弃了去追求开放的kerberos,那肯定是1)它的目标客户要求它这么做,2)周围的竞争者在使用Kerberos/AD类似的技术,3)在此基础上,它还需要打成本牌,因为它实现的这些技术,说实话谈不上最先进的(即便当时也谈不上)。然后根据这三个理由,我自己做了一个大概的调查(因为我自己上来就是用的OpenLDAP/NFS/SSH一类的共享)对这方面了解的很少。果然,结果和理论结合的很好,在1998年win2000开发的时候,当时网络系统市场上确实有几个大头占有绝对优势,谁是微软在这方面的头号竞争对手?相信大家都能想到:Novell!

      (可能还有IBM和SUN的产品,估计IBM/SUN在1998年左右的时候也应该推出了LDAP为主的相关产品,有谁熟悉麻烦给补充一下)。

      想像一下,当微软用NT向它的目标客户推销的时候,和各位用window比linux一样,那些商业客户也会有疑问:我们Novell用的好好的,为何要用NT啊,自然就要拿Novell的服务和windows的比。看看当年Novell 5.x在1998年10月份推出的功能:

      1)新的网络存储服务

      2)Java虚拟机

      3)分布式打印服务

      4)Java为基础的控制台(Shell)Bulaohu兄请注意:微软现在的完全面向对象的console shell恐怕不是第一个它发明的,Novell的Java Shell才是第一个

      5)目录为基础的PKIS用户认证服务(eDirectory,一个采用LDAP作为协议的目录服务).

      6)目录为基础的DNS和DHCP服务,

      7)集群服务,

      8)一个5用户版本的Oracle 8i。

      大家能清晰地看见,当年Novell Netware 5.x出来的时候,要说到性能,要谈到功能,可都要比Windows NT/2000高出来一大截子。Novel Netware 1999年左右提出的这些功能块,到现在也不能叫做过时。其中对微软最致命,最不利的的是其中的第五点和第六点,PKIS是基于公钥加密协议的,安全性要比采用Challenge方式的NTLMv2高的多,因为它不需要在网络传输具体的密码。并且也是基于目录服务(LDAP方式)的资源分配!换句话说,它可以兼容Unix的认证方式。那么微软带着NT4.x这样的服务器去找它们的时候,如果一般正在使用Novell的企业,是不会采用NT系统的。第二条理由在这里也起直接作用,对于某个大企业来说,既然其他竞争者,合作者都在用 Novell,自己采用NT当然有巨大的风险。微软唯一的优势是免费牌,所以NT一开始打的是小企业牌,瞄准的是预算紧张的中小型企业和工作组,走农村包围城市道路。后来显然成功了。

      而且NTLM还有一个噩梦般的问题:就是微软不想公开,不想升级NTLM这个协议也不行。像其其它大部分程序一样,这个协议被SAMBA TEAM采用逆向工程公布了大部分的程序调用。并且SAMBA小组发现此协议的弱点,甚至能够比较两个版本的不同。而且既然SAMBA小组可以公开这个发现,不难想象肯定还有一些安全机构早就秘密地利用这些弱点,所以在这种情况下,微软NTLM完全成了防君子不防小人的工具:它真正想防备的人可以轻松利用弱点穿过,而广大程序员,如果它不想去采用特殊手段了解的话,只能眼睁睁看着这个问题发生没有解决方法!因为协议是不公开的。对于大公司客户来说,这个一定是首要考虑的问题。SAMBA的工作如此有成效,以至于后来微软被迫公布了NTLM的文档。

      这两个问题加在一起,肯定造成严重的后果,1)隐藏的客户认证方式得不到第三方企业的支持。认证问题在网络系统里面是核心问题,因为除了开机需要认证,很多应用程序都需要用户认证信息,比如我用的emacs就需要。如果认证完全是不公开的,其他开发商很难开发网络应用程序,而被迫采用SAMBA的逆向工程方式。而且如果微软采用不透明的方式,那么这些第三方企业还需要花大量的成本来做转换工作,那它们谁都不会去投靠windows。2)时间上也不允许微软再去开发一个全新的认证协议,安全认证协议不是普通程序,牵涉的方方面面相当多,需要很长时间的开发,而且通常技术只掌握很少的特殊机能的人手上。而且对客户而言,当然公开的协议要安全的多。这两点就足够说明它只能选择一个公开的加密协议以及相关的API库来快速实现类似的功能以加强它的实力,赶上Novell。同时,它还需要开发一个LDAP程序接口,实现Netware 5.x下面的基本功能。先保证服务器能够在基本功能上和Netware 5.x持平,并且有保留地实现某些公开的标准,吸引第三方开发商转换windows平台的时候降低成本。先用低成本冲击掐死直接对手。然后拓展此标准作为私有标准拓展,并且用这些私有标准来阻挡其他竞争者进入。

      这个策略就是著名的微软3E策略——包围 embrace,拓展 extend,毁灭extinguish/exterminate)当然微软自己不是这么说的,叫做 拥抱,拓展,和发明Innovate。最后的结果大家都能看见了,Novell在没有走Linux道路以前一直被压的翻不了身。这个策略别说以前,到现在还在用——IE8又不按照标准的W3C标准来。而是自己搞了一套拓展模式。所以Bulaohu兄说微软越来越开放,那是有根本原因的。我做了一个小小的调查,大部分微软的开放行为,都是有商业驱动的因素。绝对不会是忽发善心,在没有竞争者基础下主动善待用户和下游开发员。

      这个历史也生动地说明了为何以微软为主开发程序是危险的,微软不是Novell,不会在自己的核心软件里面完全加入像Java这样第三方的核心支持。以前很多传统的计算公司,对其他伙伴还算是相当友善的,至少不会像微软那样试图大小通吃。它每次和其他公司打架,下面的开发商就要遭殃——因为你需要按照新的结构再来一次,而这个新的结构居然依赖于它的竞争对手!结合上一篇的例子,我们得出一个结论:

      在微软模式下开发的程序极大依赖于微软的对手采用什么技术,什么时候,以什么方式出现。如果它对手实现了当前的功能,而你做的程序正好是在windows下面实现对手类似的功能,那这个程序基本上会被判死刑,连做服务的机会都很小了。

      这样的方式开发程序,其实很危险:一个好一点的中型程序,通常需要至少2-3年的开发期才能基本好用。如果采用微软的方式,期间很有可能系统被强迫升级了。而程序本身的架构要是有很多建立在它的系统上面,就要全部重来。中国一直缺乏高质量的程序员,对微软依赖太大我认为也是一个重要原因。

      而在Linux世界里面,就不是完全这么回事,经常有小公司的软件打败大公司软件的情况,比如文件系统就是这样,IBM自己在Linux下面移植了一个JFS文件系统(此JFS不是基于AIX上面用的系统,而是基于OS/2的),就是因为性能不突出,结果反而ReiserFS这样的个人为主的文件系统一度占了上风,(这个人杀死自己的老婆去蹲监狱了,好像他准备卖掉所有的相关产权来挣律师费)。类似的例子还有LVM,甚至就算是Novell也不行,它购买了XGL Server的程序,雇佣了相关的所有开发人员,然后把开发封闭起来不接受外界补丁。结果就是Redhat开发了AIGLX拓展。微软的方式,在公开标准占上风的Linux下面,很难予以竞争,比如微软就很难说服我换到它们的系统。除非上面的三个理由中的前两个某个生效了。(我反复提到上面的三个转换理由,是有大量的研究做基础的,这里也是主要给广大程序员开发商业软件提个醒。)

      我认为目前最佳的开发方式(至少我会这么做)就是以Linux为主,尽量独立地开发自己的功能块,如果有LGPL的库可以拿来用。尽量不要考虑商业软件对象的重用问题,那样并不可靠,还不如自己写一份来的省事。然后再考虑windows平台接口。实际上,目前真正需要服务的系统大概就三类:1)windows2)POSIX/X,3)JAVA,移植本身并不是特别严重的问题。Linux下面开发,从长远来说,确实是最值得投资的行为,至于那些工具某个特殊的功能,那是个人爱好问题。

      最后,根据我的经验,一旦某个程序员下决心从windows转到Linux平台下,并且真正按照Linux为主的方式来进行管理和开发,很少有人(至少我没有遇到)再愿意回到微软系统下了。

      元宝推荐:铁手, 通宝推:铁手,

      本帖一共被 1 帖 引用 (帖内工具实现)
      • 家园 实话是 Linux 确实太好用了……

        在 windows 下开发过于受制于人,其实上就是你把很多你应该了解的东西,包括函数库、编译、连接、代码管理、文档生成这些身家性命,都完全交给了微软。简直就是被别人卖了还帮别人数钱。

      • 家园 好文章,希望这三点对我以后的创业有帮助!
      • 家园 我认为你可以换个思路

        对于一个优秀的程序员而言,严重依赖微软的产品确实是不应当的,掌握linux下的开发和应用是个重要的技能。虽然你比较出windows下的开发没有太大优势但这并不表示商业市场上大家只考虑产品的好坏,而是主要考虑客户的选择。基本上微软已经能满足大家的需求,也许不太完善,但至少对用户友好,有充分的开发支持,那就足够了。更何况大多数客户依赖甚至严重依赖windows平台,这是不争的事实。

        前几年的时候关于linux将如何替代windows在企业中份额的预言非常之多,很多人都憧憬着把windwos从桌面应用上扫除,把office从办公中摒弃。比如中日韩三国的那个发行版,比如Novell收购Suse。 但是到了现在除了IT专业性公司,Windows和Office几乎没有受到太大的危险。

        如同Google所作的那样,我认为现在讨论具体哪个操作系统更优秀似乎有点过时,现在的趋势已经转向了网络平台,在未来可预见的几年里商业应用将在网络平台有爆发性的增长,无论在PC上,或在PDA甚至手机上,最终用户只需看到应用的集成和无缝耦合,而底层的平台将变的无关紧要。从这个角度讲linux平台的稳定性和安全性恐怕才是我们真正想要的。

        • 家园 我不认为每个公司都应该单纯采用Linux/Win系统

          这个问题我女朋友的研究课题说的很清楚。对于计算机一无所知的人来说,Windows系统不经过一些基本的培训,恐怕也是无法正常运行的。

          现在用Linux的普通用户和商业用户也非常多。比如教育/科研/开发领域。还有大公司的服务器领域的用户非常多。断言大多数用户都严重依赖win平台这个有待商榷。比如现在eee pc就卖的很火。

          不可否认的是,最近Novell通过收购SuSE很有起色了。以前很多人都认为它是一个日落西山的企业?更别说现在的RedHat Enterprise Edition,卖的不比windows便宜,我想要不是没有特别出色的理由,他们不敢这么做的。

          目前网络平台的开发,我个人认为还有一定差距。完全把程序放在服务器端运行,仿佛完全住在旅馆,不要自己家一样。听起来很美,不现实。

          • 家园 再来

            这个问题我女朋友的研究课题说的很清楚。对于计算机一无所知的人来说,Windows系统不经过一些基本的培训,恐怕也是无法正常运行的。

            这个不可否认,总有些应用不容易立刻上手的。但是linux不可能比windows更容易上手。

            现在用Linux的普通用户和商业用户也非常多。比如教育/科研/开发领域。还有大公司的服务器领域的用户非常多。断言大多数用户都严重依赖win平台这个有待商榷。比如现在eee pc就卖的很火。

            你自己都说了教育科研领域,还有大公司用linux作服务器。这些才是linux应该被广泛应用的领域,但是对于大量的最终用户而言桌面应用上始终都是windows的天下。

            目前网络平台的开发,我个人认为还有一定差距。完全把程序放在服务器端运行,仿佛完全住在旅馆,不要自己家一样。听起来很美,不现实。

            这是完全现实的事情,而且也有潜在的商业价值。设想下如果我们可以借助网络平台来办公,那么协同工作,项目管理将变得非常方便,何时何地都可以进行,也是企业应用中最核心的需求之一。所谓的差距就是技术上的差距,这点随着WEB的标准化进程会慢慢变小。事实上现在也已经有一些成熟的产品,比如google docs可以实现开发者共同在线编辑word,excel文档,微软的sharepoint更是强大无比。更多的比如yahoo和amazon推出的web services服务。

            • 再来
              家园 强大无比这个词不能用在sharepoint上

              "比如google docs可以实现开发者共同在线编辑word,excel文档,微软的sharepoint更是强大无比。"

              ————SPS从2001到2007一直是个奇恶心的产品,可惜我目前状况不能多说,真是屁股决定嘴。

              • 家园 但SPS现在的确很流行

                好象忽然好多公司都要赶这个时髦了。

                但有一点SPS一直没有大的改进,就是我一进去就找不着北。 世上的web site 千千万,只有SPS有这个能耐,而且从第一版开始就是这样。比如本部门推出了个SPS把所有文档材料都放在上面,然后经常听到人们问得就是,你能把那个文件的SPS link email 给我么? 反正只大概说个方位,没有人能自己进去找得着。

                就冲这一条,那个设计sharepoint的人脑子就进了不少水,这波忽悠过去后,估计SPS是秋后的蚂蟑长不了。

                • 家园 “一进去就找不着北”,说的太对了

                  研究了几天SPS,这玩意极大地打击了我作为一个老程序员的自信心……

              • 家园 能不能稍微说下?

                我真的有兴趣,因为我也搞过这个。

                • 家园 有很多痛苦之处

                  流量访问统计,最后还得自己做;

                  工作流太弱,稍微复杂一点的流程就没法用;

                  任务也是个笑话,居然不能把个人的任务集成到一起,要到各个网站去看;

                  excel service还是独占式修改的,另外只能用在几个格子输入更改上,想大面积改cells能累死你;

                  性能是大问题,vpn拨号用户真需要养成喝咖啡的习惯;

                  More...;

                  经常是一边开发一边问候产品组仁兄们的祖先,活是交差了,感觉比自己白手起家开发更累。别说不懂产品之类的屁话,SPS安装完连个像样的books online都没有,那个help内容贫瘠得可怜,有时侯出了莫名奇妙的问题只好运行那个重新配置工具,同时求神保佑能修复。

                  • 家园 认识的做过和正在做SPS的程序员都是这么说

                    经常是一边开发一边问候产品组仁兄们的祖先,活是交差了,感觉比自己白手起家开发更累。

                    连用词都差不多。 这个SPS也是够另类的了。 不过高层肯定是被微软sale忽悠的不差,否则不会有这么多公司最近上马SPS项目。要我看,用SPS最大的卖点就是那个不用写程序就可以做网站的CMS 等的概念,结果是做出来的怎样先不说,花的精力比写程序还费劲,人工也没省下,典型的隔靴搔痒,事倍功半。做个网站有那么高深么? 真不懂微软现在开发部门领军的都是什么样白痴,跟早年的微软真有天地之别。

分页树展主题 · 全看首页 上页
/ 26
下页 末页


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

Copyright © cchere 西西河