最近网上最热的话题算是 QQ 和 360 的火并了。我不是 360 的用户,也没有装 QQ 的 client 。偶尔有朋友非要用 QQ 联系我时,我会用web qq 登陆上去,收个消息,回复一下,然后就下来。我有个 6 位 qq 号码(曾经还有个 5 位的),04 年开始就不怎么用了。
在腾讯,我有几个私交很不错的朋友,对这家公司没什么恶感。唯一的一次是觉得他们不尊重 GPL 协议。所以这次这件事情也没啥心情观看。直到,QQ 居然封掉了web qq ,用这种自残的方式参战,完全不顾用户的感觉。
我一直认为,做一家大的互联网企业是应该有更高的追求的。所以我喜爱 google ,他们以让信息被更高效的获取为己任。而作为中国 IM 最大提供商的 qq 呢?我想,更方便的让中国互联网用户相互联络应该是他们最高的追求吧。但是,qq 没有这个意识,这是让我最为失望的地方。
腾讯绝对有技术实力,按 XMPP 协议实现个互联互通的 s2s 服务。这能极大的促进互联网用户的在线交流。但是他们没有。这是我不喜欢这家公司的主要地方。而不是因为 qq 是我所在网易公司所开发的不争气的 popo 的竞争对手的缘故。
我一直不惜余力的向我的朋友推广 google 的 IM 软件(以及 google 其它服务):googletalk 。不仅因为它的简洁,更在于它的开放。完整的支持了 XMPP 协议。我觉得这次也算一个契机,可以帮助更多的朋友从 qq 的封闭世界里解脱出来。
大多数人都觉得,摆脱不了 qq 的主要原因是 QQ 上的社交圈。看似无解,但其实也可以部分的做到 QQ 用户关系的迁移。
我们需要做两件事情:
第一,导出 QQ 的好友名单。
完成这一步的方法有三:
关于其一,qq 是私有协议,逆向工程不符合 QQ 的 EULA 最终用户许可协议。不过世界上已经有许多开源的实现。我不认为 clone QQ 协议是非法的。用户有权用自己的方式合法的使用腾讯授予的服务。
关于其二,web qq 被腾讯自己砍掉了。qzone 倒是个不错的途径。
关于其三,扫描本地文件,比较流氓,不过得到用户授权,比如弹出对话框让用户选择目录应该没问题。只是兼容各种不同的 qq 版本比较繁琐。
如果用兼容 qq 协议的方式来做,出于对用户的方便,可以做成网络服务,让用户提交 qq 用户名密码。但这显得不太安全。没有什么可靠的手段让用户放心。所以,退而求其次,可以开发一个开源的 qq 登陆器。因为开源,可以受到监督,并没有盗取任何好友名单之外的信息。
并且在提交好友信息时,应该以明文方式呈现提交内容,让用户确定提交。
我认为这种形式是可以得到用户的信任的。
第二步要做的是提供一个服务收集用户之间的拓扑关系。用户提交自己另外在使用的 IM 软件的名字和帐号,以及自己的 QQ 好友列表。如果有足够多的用户(只需要是一个群体的)提交,这个服务就可以以各种方式提示你,你的 qq 好友某某正在使用 google talk / msn 等等。你可以方便的加他了。
以 google talk 为例,我们可以制作一个机器人。(因为 gtalk 兼容 XMPP 协议,机器人更方便制作,以跨服务器的方式来通讯,而不需要以 gtalk client 的形式)
在用户提交自己的 qq 好友关系时,我们的机器人就会自动加他为 gtalk 好友。一旦侦测到他有 qq 好友迁移到 gtalk,机器人就可以自动发通知了。
总的看来,这套东西不算难做。这几天比较闲,打算实现出来看看。
btw,如果有 360 的同学看到这里。如果 360 有推出自己的 IM 软件的打算。我强烈建议使用标准的 XMPP 协议,架设 jabber 服务器就行了。别再搞私有协议了。