Callisto的闹剧
看看Eclipse主页上闪烁的图片吧,Callisto is coming in 1 day!于是有许多人开始欣喜若狂了,甚至高呼这种按时发布是敏捷开发的伟大成果。我不知道按时发布是否真的和敏捷开发有关,在这里我也不像讨论这个东西。我想说的是,为什么Callisto这个东西会让大家如此着迷?
让我们先来看看Callisto是用来做什么的。Callisto的主页上面说:“Callisto的目的是通过提供一个更透明的可估算的开发周期提高在Eclipse框架上层工作的开发者的生产力。通过一次性发布10个项目,除去版本兼容的不确定性,并使得在开发环境中使用多个插件变得更简单。”看了这段文字,我想大家都会问这样的问题:为什么版本兼容会有不确定性?为什么使用多个插件不简单?
凡是使用过Eclipse的朋友们都应该有过这样的经历,为了安装一个插件,把自己原有的Eclipse中的插件搞得面目全非。好一点的情况是,当你需要安装一个插件A的时候,它要求你安装插件B,于是你就要去下载B这个东东;更糟糕的情况是,插件A依赖于B的1.0版本,而插件C依赖与B的1.1版本,如果想要同时使用A和B,该怎么办呢?Callisto看上去就是要解决这些问题。但是我们必须考虑这样一个问题,为什么会有这种不兼容性妨碍我们对插件的使用?最根本的原因在于Eclipse和它的核心插件的设计有问题。这个问题就是,对于Eclipse平台来说,并没有一个通用的schema来定义和约束所有的事情。于是我们可以看到EMF和GEF之间的重叠与矛盾,更看到了GMF的出现,一个即和EMF重叠又和GEF重叠,而且不能直接与它们交互的怪胎。
Eclipse平台自身的问题是无法通过发布类似于Callisto这样的插件能解决的,唯一的解决方法就是重新规划整个Eclipse平台。你们也许会说这是不可能的。但是看看Eclipse的发展过程吧,从2.1版本一直到现在的3.2版本,在哪个版本中没出现很大的变化呢?哪两个版本有很好的兼容性呢?为3.0版本开发的插件,不能在3.1版本上正确运行,这是太司空见惯的事情了,以至于IBM WebSphere和Rational系列的那么多产品还在使用Eclipse3.0平台,可怜我的内存啊!Eclipse自身版本的兼容性给IBM自己都造成了如此大的问题,更何况我们呢?我更希望Eclipse可以彻底改头换面,反正它的API从来就没有稳定过。但是IBM会愿意这么做吗?当然不会!它的那么多产品还要靠这个吃饭呢!IBM是商人,不是慈善机构。
因此,使用Eclipse的朋友们,做好准备去面对这些丑陋的兼容性问题吧。让我们看看最糟糕的情况:插件A依赖于插件B的1.0版本,插件C依赖于插件B的1.1版本,插件B的1.0版本只能装在Eclipse3.0上,1.1版本只能装在Eclipse3.1上。除了骂娘,我们还能做什么?
让我们先来看看Callisto是用来做什么的。Callisto的主页上面说:“Callisto的目的是通过提供一个更透明的可估算的开发周期提高在Eclipse框架上层工作的开发者的生产力。通过一次性发布10个项目,除去版本兼容的不确定性,并使得在开发环境中使用多个插件变得更简单。”看了这段文字,我想大家都会问这样的问题:为什么版本兼容会有不确定性?为什么使用多个插件不简单?
凡是使用过Eclipse的朋友们都应该有过这样的经历,为了安装一个插件,把自己原有的Eclipse中的插件搞得面目全非。好一点的情况是,当你需要安装一个插件A的时候,它要求你安装插件B,于是你就要去下载B这个东东;更糟糕的情况是,插件A依赖于B的1.0版本,而插件C依赖与B的1.1版本,如果想要同时使用A和B,该怎么办呢?Callisto看上去就是要解决这些问题。但是我们必须考虑这样一个问题,为什么会有这种不兼容性妨碍我们对插件的使用?最根本的原因在于Eclipse和它的核心插件的设计有问题。这个问题就是,对于Eclipse平台来说,并没有一个通用的schema来定义和约束所有的事情。于是我们可以看到EMF和GEF之间的重叠与矛盾,更看到了GMF的出现,一个即和EMF重叠又和GEF重叠,而且不能直接与它们交互的怪胎。
Eclipse平台自身的问题是无法通过发布类似于Callisto这样的插件能解决的,唯一的解决方法就是重新规划整个Eclipse平台。你们也许会说这是不可能的。但是看看Eclipse的发展过程吧,从2.1版本一直到现在的3.2版本,在哪个版本中没出现很大的变化呢?哪两个版本有很好的兼容性呢?为3.0版本开发的插件,不能在3.1版本上正确运行,这是太司空见惯的事情了,以至于IBM WebSphere和Rational系列的那么多产品还在使用Eclipse3.0平台,可怜我的内存啊!Eclipse自身版本的兼容性给IBM自己都造成了如此大的问题,更何况我们呢?我更希望Eclipse可以彻底改头换面,反正它的API从来就没有稳定过。但是IBM会愿意这么做吗?当然不会!它的那么多产品还要靠这个吃饭呢!IBM是商人,不是慈善机构。
因此,使用Eclipse的朋友们,做好准备去面对这些丑陋的兼容性问题吧。让我们看看最糟糕的情况:插件A依赖于插件B的1.0版本,插件C依赖于插件B的1.1版本,插件B的1.0版本只能装在Eclipse3.0上,1.1版本只能装在Eclipse3.1上。除了骂娘,我们还能做什么?