node-webot / wechat

微信公共平台消息接口服务中间件
Other
5.1k stars 1.19k forks source link

能否考虑与 weixin-robot 项目合并? #12

Closed ktmud closed 11 years ago

ktmud commented 11 years ago

在 @atian25 的大力推广下, weixin-robot 模块有了一定的用户量, 也很高兴看到你的中间件关注人数也越来越多。

目前看来,两边做的事情有大部分都是相似的,不同的地方则可以互补。

之前看到你也给 weixin-robot 发过 PR ,不知为何后来还是决定自己写一个呢?

如果觉得代码不符合自己习惯,可以发 PR 来重构嘛,比如 @atian25 就基本把我之前 写的 0.0.x 版本完全重写了。而现在我又删了他很多代码。 如果觉得项目不在自己名下,无法掌控,可以建一个组织来协作嘛。

weixin-robot 项目已经分拆成 weixin-robotwebot-cliwebot-dashboard 三个项目。 计划中这是一整套公共平台API的解决方案,包括命令行工具和一个网页端的后台。

不希望看到更多重复造轮子的事,前端界已经够分裂了。

node 社区也不是没有这样的先例:

比如 node_mailer 就被合并到了 Nodemailer 。

JacksonTian commented 11 years ago

之所以有这个项目是因为我想给我自己写一个API回复的机器人。这个项目的粒度非常小,wechat负责中间件,alpha负责API文档索引,api-doc-services用来做具体的业务。

那么对应下就是weixin-robot的业务层次太高了。我倾向的是API自下而上的构建,而不是自上而下构建。所以写wechat中间件只是帮业务层提供底层工具,而尽量不侵入业务层。

在 #7 中,我跟 @runawaygo 也讨论过这个问题,两者目前是各有所长的。weixin-robot目前在易用性上是要优于wechat的,但是API的暴露层面是在最顶部的业务层,wechat中间件则是底层。对于有些人,会很喜欢能够直接拿来用的东西,有的人则希望有一定的diy空间。对于后一种人,weixin-robot是无法满足的。

wechat的定位就是提供底层封装,给业务以好用的API。

合并两个项目不太可能,但是可以构成依赖链。也就是说weixin-robot可以用wechat作为底层,将这些破事交给wechat来处理就好了,比如解析xml,session等。weixin-robot可以专注在上层,基于yaml的设计我也很喜欢,后续偏向应用层的代码,我也可以直接向wexin-robot提交即可。

ktmud commented 11 years ago

weixin-robot 之所以没有注册成 weixin ,就是因为它不只是处理微信API。没有注册成 webot ,则是因为它的还没有被抽象到可以成为独立品牌的高度。

weixin-robot 的设计初衷也是为微信API的开发者提供方便,并且提供足够的灵活性。要 DIY 自动回复API的机器人什么的,应该也不麻烦。早期捆绑了很多依赖(比如 request, geo2loc,yaml),现在已经都拆掉了。

用你的 wechat 做底层挺靠谱,我来看下怎么更新代码。如果不用你的东西做底层,这一块将来也会被拆出来的。

JacksonTian commented 11 years ago

我目前就做了几件事情:

除了后面两项刚刚加上,其他的还是妥妥的靠谱。

atian25 commented 11 years ago

good job!

我的理解,可以:

  1. webchat作为底层协议层,负责与微信接口的交互。
  2. wexin-robot作为一个上层的,供第三方开发者用的语法糖。
  3. weixin-dashboard之类的东西,作为上层的后台分析管理, UI层。
  4. weixin-cli作为命令行工具。
  5. 也许将来会有weixin-ai之类的上层类库。(譬如小黄鸡)
JacksonTian commented 11 years ago

yes, 完全正确。

ktmud commented 11 years ago

为什么提「合并」而不是「合作」呢?

  1. wechat 新加的 List API 和 webot 能做到的事略显重复
  2. 你在 #6 里提到的工作流模型让我觉得你已经在另外规划一套和 webot 类似的新东西。

两者共存,能有竞争和相互借鉴,有时候倒是好事。但如果大家的精力都能拿来维护同一个东西,在各自的理念上取长补短,省掉不必要的差异化,后来的使用者也不会那么纠结,对社区帮助可能更大一点。

已经新建了一个 node-webot 组织,具体要怎么做,欢迎参与进来一起讨论。

wechat 作为底层组件,可以选择放或不放到 node-webot 组织下。但您规划中的工作流模型,似乎就和 webot 的功能重复了。所以我才会提「合并」,希望两者只留一个。

runawaygo commented 11 years ago

好事情,那把大家都加进来吧。微信的未来是多种多样的,自动聊天机器人只是其中一种用户场景,所以将webot的底层解放出来是很有必要的。其实我纠结了一段时间,到底是自己在weixin上面构建一个东西,还是用webot。很高兴大家能坐下来谈谈合并这个事情:)

JacksonTian commented 11 years ago

工作流不会再做了,因为list就已经够了。后面的功能一切按定位来进行增删。

我稍后将weixin transfer到新组织中。

huang-1234 commented 1 year ago

m