buffalo1.2发布了,有了许多感想,有必要写下来。开发过程中的一些点滴,也许并不像像外人一样那样容易。现在开始明白,一些独立以个人之力进行专业化软件开发之路的开发者,是多么的不容易。可以说,每一个新版本release的背后,都留下了辛勤的汗水。

从一开始,就没想到buffalo能走到现在。buffalo 1.0出现后,也许会像jsvalidation一样,轰动的来,悄悄的去,莫名无声。然而,清风和nemo大胆的在Sina的内部系统中应用了buffalo, 证明了buffalo的可用性,这给了我极大的鼓励(事实上,我一直在这样各方面的鼓励中,不断的改进buffalo)。后来社区的引入,逐渐有了像董董,宋来这样的热心的用户,不断提出意见和建议,督促着buffalo往前走;曹晓钢老师也不断提供资源的支持,amowa和buffalo站点都是在他的服务器上。没有各方面资源的支持,我想buffalo不可能走到今天。

buffalo api的实现都很简单,但是都是长期思考后得到的,我认为能够让使用者得到最大自由度的,并且不依赖buffalo的接口定义。当一个新的特性需要被加入的时候,我首先考虑的是是否会加重使用者的学习负担,其次是如何设计最直观最人性,最后才是实现。现在的开发者需要学的东西太多太多了,如果这套api不能在5分钟内告诉他们怎么用,30分钟内不能开始使用,这不能说明这个产品的成功,而正好证明了他的失败。在现在的JavaEE领域,没有把任何事情比把事情弄得复杂更加容易的事情了。复杂不是优点,是缺点。我很高兴的发现,今天发布之后,有新的使用者能够在看完api后说,功能差不多,比DWR简单。

不得不说,开发buffalo的过程是一段痛苦的过程,甚至真切的影响到了我的工作和生活。上班中,我时不时去论坛看看;下班路上,我在考虑如何添加新的特性,如何设计service接口更加兼容IoC容器和自定义的服务。周末,如果没有其他的事情,一般也是在做buffalo. 然而,工作中我也并非自由人,也要管人和被人管。遗憾的是,在这种平衡关系中,我做得并不好。

更重要的是,这种真正意义上的开源开发(至今为止,我没有从buffalo或者amowa或者jsvalidation中得到一分钱)让我的价值观也发生了一些变化。我开始理解Richard Stallman当初开发gcc的那种狂热,也能够理解菲利普·卡兹为何潦倒而终,归根结底,我开始似乎领略到那深邃的开源精神,那种以全世界使用者开心而开心,以使用者快乐而快乐的精神。这种精神能够让人逐渐忽略物质的需求而享受真正的精神世界。然而,我中毒尚浅,深深的明白,全盘接受这种价值观在国内跟自杀没什么差别。

下一步工作,我知道还有许多没有做。目前已经提出的有:表单到DTO对象的绑定,与jsvalidation的集成,对service调用的ACL控制,改进的对有状态service的支持,等等。只要开发者有需要,buffalo会一直走下去。buffalo会放到java.net或者其他的开放cvs上,以接纳更多的开发者。

ps. 我答应了博文视点,从明年开始与夏昕一起写一本关于JavaEE开发的书,工作更多了。