国内Py大牛limodou写了个Uliweb —— 一个类似Django的Web框架。考虑到去年刚刚接触Python时看了不少他在javaeye上分享的经验,觉得应该是个不错的东西吧,于是便复制了一份下来看看。
在看了大致的介绍以后,突然间没了兴趣。对于我来说,一个好的Web框架的意义是,一个不错的ORM来处理数据库连接,一套不错的HTTP库来处理包装HTTP请求和回应,一套PyInHTML的template系统,至于中间的逻辑处理,这是根据各种不同的需求来定的,能有多灵活最好就有多灵活,当然,有一套Debug系统是更好不过的了。再来看Uliweb,ORM使用了SQLAlchemy,HTTP使用了WebOb,模板用了Web2py的,Debug使用了Werkzeug提供的功能。咋一看不错,啥功能都有了,但是再仔细一想,那么这个框架又做了什么呢?我相信像limodou这样的牛人肯定是会加一些自己的东西在里面的,但我也相信在这些重量级的功能面前,这些附加物所占有的比例也不会太大,甚至更偏向于个人喜好,换一个开发人员用起来也许反而会觉得别扭。
说的恶毒一点,Uliweb又是一个TurboGears,一个大杂烩。现在基于Python的Web框架越来越多,而就我本人的意愿而言,竞争是希望有的,但是大统也是希望的。从实际的角度说,我更希望所有人都为同一个目的共同奋斗,避免竞争中资源的浪费,北京奥运还说“同一个世界同一个梦醒”嘞……Django也好web2py也好其他等等也好,如果在使用中遇见让自己不爽的地方,还是有不少办法反馈给项目的,这就是至少是我所希望的开源。如果说,大部分的老手在使用过几个框架后不爽了都跑出来自立门户的话,这场面该有多么混乱……在我们觉得不要重复造轮子的情况下,类似的轮子还是在不停的造出来……
如果硬说还需要一个框架的话,我更希望能够有一个插件系统,在处理完基本绑定后,可以自由选择ORM啊templating啊之类的实现,满足各人的灵活需求。当某个轮子发展到瓶颈时,只需要制造基本的新轮子就行,而框架本身不需要做太大的变化。理想总是美好的,不是吗 =_,=
以上只是我自己的一点想法,也许对于相关开发人员来说相当刺耳,但是我这人太实际有话就说了,也有可能是身为一个Django user的偏执之言,如有冒犯敬请见谅。


首先感谢对Uliweb的批评。
以下要澄清:
1. 其实所有的框架都是大杂烩,django也不利外。而且别人做好的东西,如果没有什么问题,拿过来用当然就可以了。特别象是框架,它更多的是提供管理模式和一些工具,本身就是个大杂烩。
2. 大一统是不可能的,正如世界上有那么多可以统一的东西为什么没有统一,如:语言,操作系统,数据库?因为多样性才是这个世界的特点。更因为人们总有不同的思念和需求。
3. 为什么不向django和web2py做贡献?贡献我的确做过,如果你去查django和web2py相关的内容,应该还有我的名字。但是有些东西是不可调合的,比如对设计的一些看法,对一些组件的使用,这些东西我建议过,他们并不接受。所以只有以自已的方式来构造。
重新构造也是一个很痛苦的过程,但是可以让造出来的东西完全按自已的意愿发展,也是一种不错的选择。更有一些人不建议使用框架,而是使用组件,为什么,就是不想被框架所束缚。
而你所说的插件系统,就是uliweb实现的一个目标。uliweb的app的功能要比django还要彻底。如果有兴趣欢迎与我交流。
展开回复(1)
本来只是随便写写的,没做啥seo,没想到直接把limodou给招来了@@
就Django而言,我并不认为是一个大杂烩。首先框架的核心都是Django所自有的,而contrib中的东西事实上对个人应用而言是可有可无的。我也不是说杂烩不好,虽然我现在是用的Django,事实上debug用的还是werkzeug。我的想法是,不要太杂就行,开发时可能不会觉得,可是也许时间长了维护起来就不方便了。
大一统么,我也就是说说了,天下之事,分久必合,合久必分,人类社会尚且如此,更何况社会活动的产物——开发框架呢。我这儿的意思嘛,也就是鼓吹鼓吹大家别乱跑看好队伍站进去然后尽量始终如一罢了:) 这点Ruby社区做得很好,起码就我所知ror独大。而Python么,也许因为牛人泛滥,分家之事为之过多了。
最后关于贡献。就说Django吧,如果某些意见在trunk通不过,何不试试建个新的分支呢?不可调和很大程度上是因为沟通的不够,那么一个实际的实现实例也许能让他人接受自己的想法,又或也许发现他人不接受的原因。编程世界相对而言还是一个比较开明的世界,或对或错一般来说比较明确,一个开放的社区对于对的东西应该保持一种包容接受的态度。但假如仍然无理由的拒绝,那么另起炉灶应该是一个比较好的解决办法。当然这都是我随便拍着脑袋想出来的,对于实际情况我还是小白一个……
最后,怎么说呢,Django是有不完善的地方,这东西随着使用的深入会慢慢凸现出来。我真正使用Django的时间也就半年左右吧,现在只能说是稍有了解,发现的问题肯定是没有您那么深入的。所以说的话么,有的也许在你看来很幼稚,请见笑。至于Uliweb有时间我也会再看看,我也很想知道您说的更灵活的app是什么概念。虽然现在我还是一个忠实的Django用户,兴许过阵子就成为uliweb的粉丝了也说不定呵呵。
说django是大杂烩,是因为它也使用了其它的组件,象simplejson, dispatch等,当然它杂得还不够,的确许多东西是自已开发的。只不过uliweb作为一个后来者实在没有必要再走django的老路。而django的自建组件也一直有许多人在评论。当然我并不反对造轮,关键是为什么要造,原因不一而足。
而一个框架与杂不杂关系有一些,但是不同的人有不同的看法。比如tg,pylons,许多人不一样认为它们好,认为他们使用了一些成熟的模块,这样减少了学习的重复性。象django的东西,有些人不也认为它的模块只能在django中使用吗?当然不可否认,组合的东西是存在一些问题,比如维护不集中,文档不统一,但许许多多的项目也是类似的,并不因为它们使用了其它的模块,组件就成为一个问题,这个要两面看。甚至有可能因为使用了某个外部的组件而使得产品本身变成更为出色。评论一个框架的因素很多,组件的选择应该只是其中一个因素。
Ruby社区因为不了解,所以不好评论。但是其它的,象java, php不一样框架满天飞。只不过python社区的这种现象也反映了python世界的丰富多彩。这个也有利有弊:好的地方就是百花齐放,百家争鸣,可以让更多的灵感出现。坏的就是很难形成合力。但是现实就是如此,顺其自然吧。
如果你关注过,其实我在django中也做了不少的贡献,提了不少的建议。如果你再仔细看一看uliweb,除了它的一些思想,许多地方是与django不同的。因此这并不是简单的沟通的问题。首先沟通的确是一个问题,我要用英文的确吃力。再加上以django方式思维的人很多,django小组我个人感觉不太容易接受别人的建议,比如对配置文件,对模板等。因此与其不停地在沟通上下功夫,搞得别人都反对你,吃力不讨后,为什么不自力更生呢?这也是不得以而为之。再加上和人的性格也有关系。有些人就喜欢用,不喜欢自已做。而我喜欢自已做,如果我有这个能力,为什么不去试试呢。
其实今天我也在和别人谈论django和uliweb的差别,别人建议我写篇文章比较,我说那不又引火上身了嘛。不过如果你有兴趣可以进一步沟通。Uliweb当然还不能和django相比。但是我认为某些功能上还是要强于django的。当然如果django可以接受那是不错的事情,但是不知道有没有这个可能。Uliweb还存在很多的问题,但也正好是一个发展和学习的机会。学别人的东西,不如自已造东西。这样大权在握的感觉还是不错的。当然只是一个人弄发展是慢得多。
有兴趣可以继续交流。
展开回复(1)
做一个比较各个web框架的表格来显示uliweb的独特之处。
展开回复(1)
发现你好像误解我的意思了,我并不是在和你争论Uliweb和Django那个更优秀,因为这个各人有各人的见解,不依靠武力(?)手段很难得到口径上的统一。我评论Uliweb其实主要还是表达一下自己对某种新框架的向往,因为发现目前Uliweb并不能达到我的要求。
我也不反对造轮子,但是目前吧Uliweb对我来说就不像是轮子,更像是车子。举个例子,某人搞了一家汽车厂,但是造的车的各个部件都是从其他不同工厂里拿来的,那他造出来的车最初肯定是颇受争议的,而且有一个问题,这个车是缺少自己核心的技术的,其他人采用相同的法子也可以弄出类似的车子来竞争。但是可以肯定的是,只要不在这最初的一步上驻足自封,而是发展自有的核心技术,那么在争议之后这厂子仍然能继续生存下去,甚至打出自己的品牌。
就Uliweb来说,我不知道现在limodou大牛你现在引入了多少自有的核心组件,但是应该也会有蛮多人和我一样由于看不到这些核心特性而口吐唾沫星子的。你别太在意就行。既然你觉得Django团队并不那么容易接受,请坚持你现在的这条道路。希望将来Uliweb能够有足够多的理由让更多的Django用户叛变过来:P
我希望这个工作不是我来做,而是别人来做,这样更公平一些。我做不免有个人的倾向在里面。
展开回复(1)
其实框架秀是满不错的一个提议@@
http://wiki.woodpecker.org.cn/moin/FrameworksShow