正当Mono准备发威时,却从半路杀出了Sun Microsystems。这真是喜忧参半。
基于windows技术的Mono克隆了微软的 .Net开发平台。实际上,它就是为Linux和其他Unix类操作系统设计的 .Net开发平台。
在Novell的Miguel de Icaza发起Mono项目之初,所有人都说他疯了。为什么一个如此天才的开放源代码开发者想要模仿微软的技术,更何况这项技术隐患重重。他原本可以选择其他更有价值的领域。
Mono的批评者指出,作为Mono基础的微软C#语言和CLR虚拟机不过是模仿了Java的一些特点。微软首次发布.Net平台时,对Sun的Java技术进行了大规模的改进,但最近发布的Java版本已经有了很大改观,足以弥补技术上的差距。为什么Novell在技术已经成熟的情况下还要退而求其次呢?
尽管这种观点没错,但却忽略了一个重要的事实:Java一直不能在Linux上顺利运行。尽管Java有适用于Linux的版本,但Sun提供的Java受到与通用公共许可证(GPL)冲突的软件许可协议的限制,无法在不违反知识产权条例的情况下,与Linux捆绑销售。这些问题都影响了Java在Linux平台上的普及。
但这一切已成为历史。日前,Sun正式宣布将在GPL下公开Java的源代码。这无疑是一个大胆的举动,令人敬佩。不过对于许多Linux开发者来说,这一天来的可不算早。
微软最近和Novell的合作加深了人们对Mono的担心,加上Novell是该项目的主要发起人,就更是如此。其中最受关注的莫过于知识产权问题。批评者警告说,尽管de Icaza和微软都表示不会出现这一问题,但Mono的存亡就在微软的一念之间。如果哪天微软甩手不干了,Mono的开发者们就不得不面对侵权的指控。
作为与Novell协议的一部分,微软承诺不会对某几位开发者进行起诉。言外之意,其他人可要小心了。Java在GPL下公开了源代码,这意味着对现代语言特点感兴趣的开发者们可以转向Mono。倘若果真如此,就太遗憾了。虽然Java加入开源社区广受欢迎,但Mono的技术优势并不会因此而减弱。既然两个平台都开放了源代码,那么这两种技术的结合,必将会带来一个崭新的开源系统。这将超越当今任何一个系统,成为IT业的一大革新。鉴于Sun在处理专利问题上有一定经验,它可以在开发新系统的过程中提供帮助。
但不幸的是,我怀疑微软和Novell的协议只会导致开源社区的分裂。结果像Mono这样的项目会由于大家意见不统一而惨遭淘汰。倘若果真如此,恐怕微软又要打一场胜仗了。