由动易开源说开来

以下引自 《开源中漫步,与自由同行》

骤然回首,已近五年风雨。我们感谢所有一如既往喜爱与使用动易软件的朋友,有你们的支持,动易才能在风雨兼程中逐步发展。时值动易公司成立五周年来临之际,为了动易产品的进一步发展,经过公司的慎密研究与讨论,我们做出重大决定:自2008年1月11日起,动易将按计划逐步开放源代码,建立动易开源社区,同时将进一步加强实施“免费”产品策略!

动易开源的消息,是我正在上课的时候,晓风吟月通过QQ发短信到我手机上告知的。我第一反应是:哪个版本??随后的念头是动易开源,会带来多大的影响和变化?这件事情想了很久,联想到了很多很多。

一、Webboy说“我们要让技术平民化”,是菜鸟站长们把动易推上今天的高位。

从动易辞职到现在差不多3个月了,这三个月没学习新技术,没怎么做网站。除了上课,做得最多的事情就是看技术文章(偶尔还翻译几篇),一直在期待动易新系统的正式发布。我在落伍者上看到有人这样评价phpcms:“就差不多是php里的动易,易用、强大……”。还有“动易的服务很好啊。”

相信我认识的很多站长,或者很多认识我的站长,都曾经或者仍然和动易有着不解之缘。这是一个真正让做网站变得再简单不过的系统。phpcms、dedecms、帝国cms、动网旗下的IWMS、康盛科技的SupeSite、风讯、国外的曼波……我用过或者至少试用过上面这些所有的建站系统。说到简单、易用,动易绝对是无与伦比的了。dede和帝国、phpcms的有些用户喜欢说这些系统扩展型强、开源、可以自由扩充……,但是对于任何一个技术一般点的站长,甚至对于有点技术的站长,谁都不可能否认动易的易用性和人性化设计。动易唯一的难度在于模板制作,模板制作之所以让有些人觉得难,是因为标签较多,要足够熟悉才能做好模板;是因为动态标签要熟悉数据结构,熟悉SQL查询——而这些“难”,在其它的系统里哪一个没有?有些用惯了动易采集的站长转到动网IWMS或者SupeSite之后,跑到官方论坛去抱怨采集功能比动易差太多了。其实原理都是一样的,功能也差不多。但是一般人懂正则的有几个呢?或者,在它们过于简单的设置界面下,有多少站长能像用动易采集一样,甚至不需要看教程和说明,光靠后台提示就可以配置好呢?

就是把大家需要的各种复杂功能“平民化”、“易用化”让动易迅速占据了ASP平台下CMS软件的老大地位。但是不可否认,在用户的平均技术水平方面,我得说动易的用户们恐怕是排在最后的。虽然动易的不开源,让插件编写很难进行,几年来动易系统的优秀插件没出过几个!也因为这个,对“二次开发”非常看重的一些技术型用户往往跑到别的系统阵营去了。但是没有能力进行二次开发的站长数量是如此之多,让离去的这很少的一部分用户显得无关紧要了。在这样一个背景下,动易开不开源,其意义和影响,不会特别大。

如果把dede这样的上手很难的CMS比做JAVA,把IWMS这样虽不难上手但是多年来一直应用得并不算广泛的系统比做ASP.NET,把SupeSite这样依托Discuz广泛用户群的系统比做依托免费开源环境的PHP,那么动易恰似WEB应用行业里的ASP,好用,好学,功能又强,尽管常常被所谓的“高手”们看做是菜鸟的工具。

动易为什么能取得如此成功?公司的盈利和壮大是商业用户的功劳,但我觉得这只是直接的原因。免费用户、菜鸟站长们的忠诚和动易一直以来的理念和遥遥领先的服务水平才是一切的根本。

二、关于 ASP.NET 开源

我们先不谈动易的开源,说说ASP.NET的开源。ASP.NET与ASP、PHP系统有所不同,ASP本身根本没法加密,只能通过完整的VB或者其它编程语言来编写DLL控件保护核心代码,PHP可以通过Zend加密,但是Zend环境一般来说支持PHP的系统都会支持,加密后的文件还是原来那个文件,并不单独生成组件。也就是说,不管加不加密,ASP和PHP,你要是有条件修改的,都只要一个记事本就可以动手。比如网吧,下载个FTP软件立刻就可以开始对站点源码进行修改。那么ASP.NET呢?尽管也可以完全在代码模式下运行,但是一个成熟完整的ASP.NET系统,要想全部是直接可改的ASPX源文件构成,这就有点折磨开发人员了。微软的、第三方的控件大多是编译成DLL的,你只能引用它,因为就算你开源,人家商业控件未必也开源,而要是为了开源放弃了很多优秀的控件,那ASP.NET的“快速开发”这个特性恐怕就无从谈起了,而程序员们绝大部分的时间用来做那些重复劳动都足以耗光了。就算一个控件也不用,新开发的系统本身也需要通过WebApplication和类库、控件等来构建多层结构,组织项目。那么,就算开发方提供了源代码,站长们还是不能拿个记事本随便在哪个网吧就能动手改起网站来。别说开发额外的插件了,有时候就算是做一些细小的改动,都要在本机建立开发调试环境,然后下载源码包(通常就是SDK了),在自己机器上把环境设置好以后,对着开发人员文档分析ASP.NET系统的结构,然后从哪里引用、从哪里改动……弄完之后,再自己编译发布,然后才能正式使用和生效。

我忘了是在哪里看到有人这样说:微软在.NET的泥潭里越陷越深了。这样说似乎有点过了,但是 asp.net 作为“非嵌入式脚本语言”,在修改起来,绝对是没法和asp和php比的,基于dotNet开发的软件,不管多小,要使用都必须要有dotNet Framwork支持,还要注意1.1版还是2.0版。由于上面提到的这种特性,对于绝大部分的站长来说,asp.net 系统的开源,只不过是让你有了“或许有更多人做插件来给我用”的盼头罢了。对于你自己,基本上开不开源没什么区别。高手写了篇教程文章,说在XXX系统的XXXX控件源代码里添加这样一段代码可以实现某某功能,你以为这个小小的修改像在ASP环境下一样,就是打开对应的文件,改几行代码吗?

早在许多现在开源的PHP系统还没有开源的时候,就有一套著名的基于ASP.NET的 dotText 的博客系统开源免费提供,可是直到今天,使用 dotText 来建立个人博客的还是寥寥无几,偶尔有几个,用的也多是博客园汉化并二次开发的版本。真正用这个系统的,在国内也就是几个大的技术类博客网站——cnblogs、csdn等。比用JSP的商业网站还少。

在 asp.net 2.0 都还没发布的时候,国外就已经有一套开源的ASP.NET全站系统,提供文章、下载、图片、博客、社区、聚合、影视……全套功能,相当完善,非常强大,那就是大名鼎鼎的Community Server,这套系统可以看作是微软的“样板工程”了,把ASP.NET的各种新技术新特性应用得淋漓尽致。多层结构、模板和程序逻辑完全分离……,国内那么多ASP.NET开发人员都研究它、学习它、参考它,那又如何呢?真正能够拿来用的站长还是没有多少。

所以,ASP.NET 产品是否开源,对于普通用户来说,作用真的不大。如果程序的接口做得好,不需要源代码你也能开发插件,很好地集成,而且还不影响升级。如果需要源代码才能做的修改和开发,那以后该产品更新的时候,每一次你都要重新分析,重新编写,重新编译,重新部署……

三、关于动易的开源

动易系统的开源,我的观点是要对ASP和ASP.NET两套版本分开来说。对于ASP版本,我觉得开源或许是一个不错的选择,毕竟ASP已经是一个日落西山的东西了,连他爹(微软)都不管他了,自然没什么前途了。动易以后的发展重点既然不是ASP了,把ASP版本开源能够让有能力的动易爱好者充分发挥自己的创意和技术,不断为ASP版本补充进的功能和特性,或许再过四、五年,动易的ASP版本还能在开源社区的集体劳动下,像现在的雷傲论坛一样,继续发挥作用也不一定。

但是对于动易ASP.NET版本的开源,我觉得不管是对动易还是对动易的大多数用户来说,或许意义并不太大。我们不妨拭目以待,到2009年1月18日,经过一年的开源,看能有多少由网友开发的优秀动易插件出现吧。我觉得,对于占绝大多数的动易普通免费用户,一个不开源的动易版本能够提高安全性,在使用上却和开源版本没什么区别;而对于购买服务的商业用户来说,既然肯花钱买服务,当然宁愿要官方的定制开发多过自己另外请技术员做二次开发。而有实力的高端用户,要么人家要自己开发;要么人家去买十几万几十万的高端产品整体部署了。像外交部、CCTV这样有钱又没必要自己开发而且还舍得花钱的那些主儿,动易恐怕很难抢过那些有政府背景的高端产品吧?

当然这只是我对动易两套产品开源以后的影响做的个人分析,动易选择重返开源社区,这绝对是我期待已久而且绝对支持的事情。这是两码事。

四、关于 ASP、ASP.NET、PHP、JAVA

ASP和PHP都是嵌入到WEB页面中,由解析器来解析执行的,为什么PHP就越来越有前途,而ASP则日落西山了呢?真的是ASP本身已经没法改善,没法提高了吗?这是微软说的。然后大家也都这样说了。因为除了微软没有人可以帮忙改进ASP,ASP是微软的,微软说它不行了,那你啥都别想,赶紧另谋出路就对了。

动网先锋当初作为国内ASP开发的技术先锋,它的ASP版本论坛程序几乎垄断ASP论坛市场,Discuz尽管很牛,在PHP论坛市场的占有率都还没有动网先锋在ASP里这么高。结果微软一放弃ASP,动网一下子黯然失色,沉寂了很长一段时间,最近推出新产品的时候对媒体介绍动网是“一向低调”。匆忙出击的动网又是ASP.NET又是PHP,尽管是匆忙出击,但的确不愧为技术先锋,很快地就三个平台的版本都推出来了。但是毕竟ASP.NET和PHP的众多优秀产品已经在那里拼杀了很久了。动网的ASP.NET版本和PHP版本吸引的,往往是以往动网ASP的拥护者们,打算放弃ASP而又舍不得动网,于是正好成为动网.NET和PHP版本的用户。至于Discuz、phpbb这些成熟的PHP产品的用户,恐怕没多少会转过来吧。动网现在终于又是开源社区、免费平台、商用平台占齐全了。就算ASP彻底灭亡,它也仍然同时拥有高端低端的产品线,上可和JAVA抗衡,下可分享PHP的收获。

康盛科技在PHP领域的位置稳了,Zend中国官方合作伙伴了,财大气粗了,于是开始到ASP.NET这个“看上去很美”的市场上来圈地发展,但是它幸运的是只需要再下点功夫在ASP.NET上就行,这样一来,它已经横跨LAMP(Linux/Unix+Apache+MySQL+PHP)这个免费平台和WIMA(Windows+IIS+MSSQL+ASP.NET)的这个商业平台,ASP.NET可以去和高端的JAVA拼,PHP正好趁着ASP让出市场的机会尽情接收放弃ASP后不愿意或者没办法转到ASP.NET的这些用户。

相比之下,动易现在手里的筹码就要少得多了,ASP版本的已经近乎停止更新,ASP.NET 的还在开发。PHP这个市场不但没有去挤,反倒由于微软的不厚道,失去了一些从ASP转向PHP的用户。所以在这个时候,动易恐怕要挺一阵子了。毕竟是产品真空期。

其实动易的普通用户大可不必着急改换门庭。ASP的2006SP6,你花了那么多时间学习,做模板、完善细节,好不容易做完了技术活儿,现在正是专专心心搞搞网站运作管理、推广宣传的时候,干嘛匆匆忙忙又要急着换版本呢?一个系统稳定下来,你的网站稳定下来,总需要一段时间的稳定期的。以前我做6571.NET的时候,用的动网论坛,动网每次一升级我就郁闷,因为新功能的需求毕竟不是那么急迫,可是论坛来回折腾的话就很难形成细致的管理体系和自己的论坛文化和气氛。我那时候经常是在动网发布补丁或者升级版本挺长时间之后才升级(安全更新除外,反正是开源的,安全更新的话自己改改相应的代码就行了)。

而现在换一套系统的话,你想想当初在动易ASP版本上是花了多少时间精力才熟悉到今天的程度,才达到今天的水平的?这时候去换用别的系统,那些系统任何一套本来就比动易难上手得多,再加上有用惯动易的习惯影响,你的网站上又要发布多久的“本站模板正在改版/完善中……”的公告呢?相信动易论坛上已经有去转了一圈又回来的朋友了吧。

五、动易2007版的开发

动易2007开发已经一年左右了,至今还在beta2版本,如果再考虑到1.1版本和2.0版本、不同数据库支持这些在目前的公测版都还没出现,不少功能在公测版中还没实现等等问题,估计正式版本肯定还要有相当长的一段时间。所以论坛上就有人开始质疑开发团队的技术了,所谓的“动易的开发人员也才刚刚接触新的开发语言”等。哪有什么新的开发语言?ASP.NET的开发语言——VB、C#、C++、J++这些都是好几年的东西了。只不过在ASP.NET新版本中,在原来基础上增加了新的特性罢了。像动易开发团队的那些老程序员,拿来就用,什么问题都没有。架构开发、公共类、控件这些,都是熟练的再做,新接触的做具体实现部分。简单来说,就是创建具体的功能模块,然后按照统一的规范,结合具体模块的数据库,按照标准格式写一下代码。动易公司今天的开发团队已经不是当初那只团队了,人多了不说,新进来的ASP.NET程序员都比原来的ASP程序员多了。怎么会搞出“才刚刚接触新的开发语言”这样的闹剧呢?

动易2007之所以一再难产,我觉得有两方面的原因。微软的ASP.NET,从作为ASP+推出以来,一直就在不断地完善和发展。我们常常说ASP.NET怎么怎么好,实际上,在现有的WEB开发的众多语言中,可以说ASP.NET是最新、最年轻的一个。它的确吸取了其它语言的很多优秀的特性,但是在它创新的过程中,毕竟还有很多需要完善和丰富的地方。正因为如此,微软的ASP.NET更新实际上是很频繁的。而且每次更新往往都是增加几个新特性,增加新控件,增加新的库……

动易2007版的开发是从2006年末开始的,正是Ajax开始火热流行的时候,微软推出代号为Atlas的用于ASP.NET的开发包,我当时还买了一本刚刚出版的Atlas教材《Atlas基础教程》,收到书的时候,书中作者已经有很多地方说明所写代码在书出版的时候,Atlas已经进行了更新,所以代码又做了更新。然后译者又加“原书中为xxxxxx,在AtlasX月版中,该方法的签名已经改成XXXX……”,然后我按照译者最新订正的代码测试,依然是运行不了,上asp.net网站一查,版本已经又几经变动了。到了2007年1月,干脆Atlas整个项目都取消了,取而代之为ASP.NET AJAX Extentions。就是这样一个不断变化的开发语言,用它来开发,本身就有相当的难度了。

动易公司由于ASP.NET版本采用全新的系统架构,等于是完全重新开发一套系统,功能上参考2006版,但是系统结构、程序逻辑完全都要重新设计,除此之外,还要采用ASP.NET的最新特性。我们最初阶段写的代码中有的地方使用了ASP.NET Ajax Control Kit,具体版本号不记得了。但是没过太久,系统中完全加入了最新作为正式版发布的ASP.NET AJAX Extentions,这样对应的很多代码就失效了,需要重写;除此之外,还有微软企业库(Microsoft Enterprise Library),为动易系统的全新架构提供了一些底层的支持,比如数据工厂、缓存等。我最记得的是当时在cnblogs上有一个专门研究和讲解微软企业库的博客,作者发布系列文章来讲解微软企业库,结果系列教程还没完,微软企业库新版本发布了,又是很多地方向下不兼容。这是两个例子,实际上在2007的开发中,相信动易团队在之后还遇到过更多的此类问题。

或许有人会说,那为什么DiscuzNT这些版本都开发得那么顺利?有用过Discuz!PHP版本和NT版本的朋友肯定都发现了,Discuz的.NET版本最初的时候基本上是完全照搬了PHP版本的界面设计、功能设计等。等于说,数据结构,系统架构是现成的,只要实现编程语言的转换就可以了。这样一个完整的基础版本就很块地出来了。然后开发人员就可以在这个完整的系统基础上进行后续的改进,不管是要改基础的东西,还是附加新功能,都相当于升级版本开发,这就容易多了。而且他们在最初版本的开发中,基本上很少涉及ASP.NET 2.0中一些仍在不断改进的功能。最早的beta版的DiscuzNT,aspx文件的源代码绝对不像现在那样漂亮:)这是我当时几乎用Discuz而又放弃的原因呢。当然了,通过这样的方式,Discuz的ASP.NET版本不仅完成了快速的基础开发,而且很快就赶上了微软的变化,最新的特性一出来他们就可以加进去,加到一定程度就可以作为升级补丁或者新的版本发布了。

通过以上的这些推测,我得出的结论是动易2007版本的开发周期之所以长,是以为这并不是动易2006版的ASP.NET版本,而是一套全新架构的基于ASP.NET、XML、AJAX,系统架构得相当完善的全新全站系统。试想一套全新系统的开发,要是半年一年地就出来正式版了,你敢用吗?

这一点,我个人认为动易开发团队略有点失误了,其实完全可以就在动易2006的架构基础上,只是简单地采用ASP.NET实现出来就OK了,至于改善缓存体系,增加新功能,追踪微软最新技术这些,不妨放到基础版本较为稳定了之后才来做。毕竟升级版的开发要快得多。现在是追求完美,反而不被最终收益的用户理解了,而且还面临市场争夺的危机。

六、动易的合作者及竞争者

在P、D、O的战略合作之后,现在动易ASP.NET和动网ASP.NET继续保持战略合作。很多网友为此感到欢欣雀跃,因为官方层面的合作,将让以后两套ASP.NET版本的系统整合得更好。但是我个人认为,对于动易来说,与动网在ASP.NET领域合作,或许暂时可以缓解动易的一些危机,但是长远来看却极不可取。如果只是战略合作还好,如果是像以前三方合作时候那样的互不竞争,那就危险了。为什么?因为动网有IWMS,而动易没有论坛。在ASP领域,动网没有发行的CMS管理系统,虽然它的论坛实际上已经集成了内容发布、博客空间这些特征,但是毕竟没有成熟的CMS管理系统。但是在ASP.NET下就不同了,动网有一个非常成熟的IWMS全站系统,而且已经做到可以和动网的系列论坛完美整合了。这样的话,实际上动网现在在ASP市场上持有论坛+博客系统来和动易CMS合作,在ASP.NET领域则持有论坛+博客系统外加一个独立的全站系统来和动易合作。一旦从合作转为竞争,动网立刻就有完整的产品线,动易呢?缺一个论坛模块。虽然我这里用“论坛模块”,但是相信大家都很清楚,一个论坛系统的重要性足可以和一套CMS相提并论了。因为任何一个用CMS维护的站点都不会想缺少论坛。但是建立论坛未必要建立一套文章、下载、图片等等组成的全站系列。

我们再看另一个重量级的竞争对手:康盛科技。 康盛科技现在在PHP领域可以说是万事不求人,SupeSite全站系统+X-Space多人博客+Ecshop网店系统+Discuz论坛(通过5d6d系统的展示说明康盛科技的Discuz已经可以用于提供成熟的多用户论坛服务),而在ASP.NET这边,暂时还只有一个DiscuzNT论坛系统,但是这个论坛系统却已经包含了太多的Web2.0元素,个人博客空间、圈子、C2C电子商务……,这个DiscuzNT像变形金刚一样摇身一变,一个SupeSite/X-SpaceNT系统就可以出来。何况谁也不知道康盛科技有没有暗地里在开发配套的CMS系统。就算没有,按照康盛现在的表现,找一个差不多的ASP.NET全站系统收购过来也未必不可能。

所以在这种情况下,动易又是产品线最不完整的,如果再由于战略合作限制了自己的手脚,恐怕更为不利。当然动易也可以在广州研发中心另组几个团队,在保密的情况下同步开发论坛及其它平台的产品,然后在明年1月18日开源的时候,几套产品间隔几天相继发布,充分展示自己的实力,如果能够来这么一手的话,相信效果不仅仅是完善了产品线这么简单。至少同时还展示出动易多线开发的实力。

七、刀刀的建议

面对当前表面上看起来危机重重的局势,我不知道动易高层是否胸有成竹,早有打算。作为一个动易的学生、曾经的员工和永远的朋友,提出一点不成熟的建议,要是能对动易公司略有帮助固然好,即使没有,相信也没坏处。

以动易开发团队现在的实力,相信有实力马上组建一只3-5人的PHP开发团队,不需要另起炉灶重新设计,就在动易2006版的架构基础上,尽快地推出动易的PHP版本,目前PHP市场上的全站系统,还没有哪一套像动易这样易学易用的,只要能够完全地实现动易2006版的功能(其实可以收集用户建议,去掉一些无意义的部分),相信在留住对动易2007新版本信心有所动摇的用户之外,还能争取到一批新的客户;

加紧完善动易2007.NET版本的CMS基本功能,争取早上市,开源的相关修改和完善可以从ASP版开始,ASP.NET版本的什么时候能实现就什么时候再实现,先上市才是关键。动易2007.NET早期版本关键是实现和完善CMS相关功能,至于商城、Web2.0元素这些可以缓行,不要为这些拖累整个开发进度。动易的用户里面有20%需要商城或者网店吗?恐怕如果达到这个比例已经相当多了。以后或许很多个人站长用这个功能来为本地的商家提供网上商城服务,市场不可谓不广,但是首先要抱住了数量巨大的免费用户,占有了市场,赢得了口碑才可能赢来更多的商业用户(卖的不是服务吗?动易的服务口碑现在那么好,保住这个才是根本。)

如果要合作,不妨联合现在所有开源的WEB系统服务商,搞一个大规模的开源合作计划,这种合作不一定要是在技术上互补的,或者是双方要在程序上互相做多少支持的。完全可以更广泛,比如说行业性的合作啊,搞个什么联盟啊。甚至于,像动易、动网、康盛科技、Dede这些较有影响的WEB程序提供商,再联合一些技术社区,一些企业,一起来创建一个开源社区,或者像微软的 源码实验室, 或者 sourceforge 这类的支持,或者对国内开源WEB软件的一些开发制定些规范啦。总而言之一个宗旨:摊子多大都行,噱头是什么都行,但是就是不要束缚自己的手脚。

               

由动易开源说开来》上有2条评论

  1. hyvip

    我是Tony,只是不记得密码了,晕!只好用hyvip来发表了!

  2. hyvip

    最近一直少于上网,今天上来刀刀的BLOG看了看,看完此文深有感受!

评论已关闭。