主题:关于Linux的推广——普通用户篇 -- 万斤
我原也想VC应该不会没有这些功能的。
我就折腾过好几次。
自己折腾出来的东西,往往就会觉得有成就感(一定程度上是欺骗自己并与人炫耀)。
但是对于大多数人来说,易用性最好的微软的视窗尚且经常出毛病,要玩转linux确实太难。
我在上一篇文章中给出了一个具体的例子,说明在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 帖 引用 (帖内工具实现)
顺便我很好奇你们公司Unix下面的DDNS,用什么软件是怎么实现的,有什么难以解决的安全漏洞。
呵呵,加花。LW 的问题都不知道吵了多久了,其实真正起作用的还是现实的问题,找不找得到饭碗,其实你这篇说了半天,从另一个角度,恰恰说明因该跟这W,因为这样才会不断的有活干,有饭吃,否则API稳定了,还要那么多程序员干什么?
对于一个优秀的程序员而言,严重依赖微软的产品确实是不应当的,掌握linux下的开发和应用是个重要的技能。虽然你比较出windows下的开发没有太大优势但这并不表示商业市场上大家只考虑产品的好坏,而是主要考虑客户的选择。基本上微软已经能满足大家的需求,也许不太完善,但至少对用户友好,有充分的开发支持,那就足够了。更何况大多数客户依赖甚至严重依赖windows平台,这是不争的事实。
前几年的时候关于linux将如何替代windows在企业中份额的预言非常之多,很多人都憧憬着把windwos从桌面应用上扫除,把office从办公中摒弃。比如中日韩三国的那个发行版,比如Novell收购Suse。 但是到了现在除了IT专业性公司,Windows和Office几乎没有受到太大的危险。
如同Google所作的那样,我认为现在讨论具体哪个操作系统更优秀似乎有点过时,现在的趋势已经转向了网络平台,在未来可预见的几年里商业应用将在网络平台有爆发性的增长,无论在PC上,或在PDA甚至手机上,最终用户只需看到应用的集成和无缝耦合,而底层的平台将变的无关紧要。从这个角度讲linux平台的稳定性和安全性恐怕才是我们真正想要的。
其实很多LINUX产品已经不便宜了。WINDOWS上的一些编程工具却成了免费的,另外windows上很多程序也是公开源代码的。
快,有可能。很多很多,哈哈~~~~!!
下个beta尝尝鲜
先有你的结果然后往回倒推各种论据,是不是很无聊?
建议你想想,如果你要应大部分用户的需求做一个易于使用、安全、易于管理的操作系统,怎么办?
另外引用你的原文——最具有讽刺意味的是,在一大堆不公开API的系统中,在一个著名的病毒之门IE6下,居然大家被强迫运行银行程序。这些开发员,被许诺在.Net下可以无所不能,结果连个浏览器都改不了。开发没有坚实的基础,其他方面,什么匈牙利命名法再花哨,有什么用?程序员能学到什么象样的东西?
什么叫做被强迫运行银行程序?你知道为什么要限制在IE么?如果换到别的浏览器下面,木马会更猖獗,网银遭受的攻击会多得多。
大家讨论可以,但不要学习倪光南那种人之贱则无敌的精神,再说,你比倪光南要差得好远呢
经济基础决定上层建筑的道理还是应该知道的。没有用户,开发出来大眼瞪小眼?
真想推广,先把用户界面做好才有那么一点点的可能性。
大家都有其他的工作,计算机应该是工具,不是靠计算机谋生。
你是专业人士,不知道有多少人家有路由器?
Maxthon比这个中键方便多了,直接点住一拖,tab后台开链接。
50%的用户市场不要了,敢歧视女性,你太厉害太有才了。
如果你做的OpenOffice文件发给客户用Office打开有问题,排版不对了,怎么办,让他们也用OpenOffice?
为啥不用CutePDF?也不需要Acrobat Pro。或者用Latex好了,做出来的比Office和OpenOffice好看不知多少倍,也不需要Acrobat Pro。虽然我用Latex,可我从来不向人推广,不好学。
需要吗?5块钱一张,遍大街都是
中国互联网络信息中心在2007年12月估计中国有2.1亿网民(不是每一个网民都有计算机的),有多少是这些软件的用户?不知道你最后还有多少人可以用来费口舌?
可能吗?江山易改,本性难移。
skype容易装吗?这可不光是skype的问题,我从来没有让视频用起来。我容易吗我。
我用Windows,也用Linux,两者都有长有短,总的来说,Linux太短了。(公司的打印机在Linux下都不工作,没驱动程序。)
如果你要应大部分用户的需求做一个易于使用、安全、易于管理的操作系统,怎么办?
--------
那要定义是什么用户,如果对于稍微有经验的用户来说,Linux明显比较好用。甚至从安全和易于管理来说,windows这方面明显不如Linux。
什么叫做被强迫运行银行程序?你知道为什么要限制在IE么?如果换到别的浏览器下面,木马会更猖獗,网银遭受的攻击会多得多。
--------
呵呵,你在说反话吧。我在用汇丰的网络银行3-4年了,它的网上银行就不强迫使用浏览器。也没有发现什么猖獗的木马。
windows就得让出50%以上的市场
Linux我没有什么经验,但是对于如何作Windows,我还是有一点经验的。Windows中很多地方对熟悉IT的人来说很费解,是因为他的设计目标是给根本就不知道IT的人来用的,这样的用户占所有用户的95%以上。
你说的汇丰银行的网银我没有用过,但拿smith barney的作个例子吧,正好打开了:p
如果没有USBKey/SmartCard/Token等辅助硬件设备(这对国内用户是很正常的,至少我父母就不会用这些,我父亲以前还是教汇编语言的),也不限制浏览器,那么木马可以很容易的截获键盘输入并且发走。对于95%的用户,它没有足够的安全意识来防范木马,所以很多网银都是用ActiveX来从底层获取键盘输入然后MD5加密之后发走。还有很重要的原因是国内很多计算机是多人共用的,很难从根本上保证安全