最近几天以来,Google OpenSocial可谓国内互联网媒体的焦点:谷歌中国公司高调宣布国内10家著名的社区网站加入OpenSocial联盟,将各自推出支持OpenSocial的平台,如MySpace中国、天涯社区、校内网、豆瓣等等;并且谷歌高调举办开发者大赛,征集优秀的OpenSocial作品;此外谷歌还不遗余力在行业内和社区内对OpenSocial进行大肆宣传,真可谓全方位的轰炸式推广了。
在谷歌的大力推广之下,国内很多网站已经蠢蠢欲动,摩拳擦掌准备支持OpenSocial,生怕落于人后,错过一次千载难逢的互联网机遇。我的一位在某互联网公司的高层朋友对OpenSocial颇为心动,勾起了我对OpenSocial了解的欲望。但是经过一个晚上的学习和了解,感到非常失望,借用Valleywag的博客文章标题来形容就是:
OpenSocial只不过是Google的公关骗局。为什么我会有这样的感觉呢?
一、OpenSocial只不过是一个widget,离app还差10万8千里
OpenSocial和Facebook的f8虽然都可以称之为平台,但实际上的差异非常巨大。f8是真正的App platform,而OpenSocial仅仅只是一个widget容器而已。打个比方来说,Facebook平台就好像一个功能很强劲的Java应用服务器,你可以在上面开发各种各样的程序,而OpenSocial平台就好像一个简单的个人主页服务器,你只能在上面发布一下个人主页而已。
Facebook自己并不托管你开发的代码,你需要自己找服务器来运行你的应用程序,从这一点上面来说,Facebook上面的app实际上是独立的第三方网站,因此你可以做你想做的任何事情,你可以安装自己的Oracle数据库,跑自己的Tomcat应用服务器,本来就是你自己的网站,和Facebook没任何关系。
好了,突然有这么一天,你眼红Facebook 7000万注册用户的资源,你想把自己的网站和facebook集成起来,于是你研究了一下Facebook开放出来的REST接口,你根据他的接口,实现了登陆验证,然后在facebook上面注册了你的网站入口页面,好了,一切搞定!等着Facebook给你带流量和用户吧。我不是开玩笑,Friends for Sale这个网站通过和Facebook的整合,在三个月时间内流量从零增加到每天1000万访问量,注册用户增加60万。
那么OpenSocial是怎么回事呢? OpenSocial仅仅是一个xml文件而已!这个xml你既可以上传到提供OpenSocial容器的SNS网站上面,你也可以放在自己的网站上面。当然你也需要到这个SNS网站上面去注册一下xml文件的URL地址。于是这个SNS网站就会在显示指定的页面的时候,读取这个xml文件进行解析执行,把结果嵌入进来。如果你还没有明白这是怎么回事的话,你可以跟着我的步骤往下走:
1、复制我写的xml文件的URL地址:
http://ftp.iteye.com/download/my-helloworld.xml
2、打开iGoogle主页(我假定你在Google注册过账户,并且此时已经登陆):
http://www.google.com/ig?hl=zh-CN,点击导航条最右边的链接“添加内容”
3、在添加内容页面的左下角有一个类似RSS订阅的链接,叫做“添加供稿源或小工具”,点击它
4、在弹出的框里面把前面的xml文件的URL地址粘贴进去,确认,然后关闭这个对话框,最后返回iGoogle主页。
现在你看到了什么? 是不是一个页面框里面显示“Hello,JavaEye!”,恭喜你!你已经开发了第一个OpenSocial应用了。
当然OpenSocial的这个xml没有那么简单,你可以在这个xml里面写html,javascript,引用图片,JavaScript库,CSS样式文件,甚至可以引用flash,你当然也可以通过OpenSocial提供的JS库通过AJAX调用来访问SNS网站给你暴露出来的API,但是它终究只是一个xml文件,终究只能访问SNS网站的资源,而不是一个独立的网站:他本质上是JavaScript,他本质上是在用户的浏览器端执行的(服务器端有一个简单的xml解析操作,但没有业务逻辑),因此没有任何服务器端运算能力,也没有能力充分利用服务器资源进行复杂的操作。
说到这里你应该明白了吧,facebook的app是在app作者自己的服务器上面运行的,而OpenSocial的widget是在浏览者的浏览器里面运行的,facebook就好像用Java来做一个全功能的web应用,而OpenSocial则好像用html/javascript写一个纯静态web应用。
因此OpenSocial根本就没有办法做复杂的应用,他顶多只算是一个可以嵌入页面的widget,可以搞点花哨的页面效果,可以用AJAX方式抓点数据来显示,或者增加点锦上添花的AJAX搜索什么的小功能,但你想用OpenSocial来做类似Friends for Sale那样复杂度的应用的话,没门!除非你有用JavaScript开发星际争霸的高超JS编程水准,否则只能干瞪眼。
二、OpenSocial仅仅只是一个接口规范,提供OpenSocial的SNS网站不知道在什么地方飘呀飘
OpenSocial让我无可避免的联想起来臭名昭著的JCP以及Java EE专家委员会。JCP是一个很有意思的组织,专门负责制订标准,然后让厂商们根据标准来写自己的实现。就拿应用服务器来说吧:Glassfish,Tomcat,Resin,Jetty,WebLogic,WebSphere一大串号称符合某些标准的应用服务器实现,但是你绝对无法把一个war随意部署,这是因为:
1、应用服务器厂商总会因为自己的某些需要提供一些标准之外的东西,或者有些标准就是总支持不好,比如说WebSphere
2、有些应用服务器厂商没有能力提供全部标准的实现,只能打个折扣,比如说Tomcat就不支持EJB
3、Java EE标准也是有版本区别滴!不同的应用服务器分别支持的标准版本也各自不同。
所以Java EE标准当初也想的很好,让大家开发Java项目,一次开发,处处部署嘛,应该没麻烦的,但是做Java企业应用的人都知道,迁移应用服务器绝对是一个体力活。遗憾的是所有这些曾经在Java EE领域出现的问题,现在在OpenSocial这里照样的重复着历史:
1、大的SNS会不会出于自己的商业利益,往里面添加私货,就像WebSphere那样,这几乎是必然的。
2、iGoogle虽然号称支持OpenSocial v0.7,但是很多地方的功能已经打了折扣,我们可以联想一下,国内的小SNS们,都有能力实现全部的功能吗?
3、目前号称支持OpenSocial的这些网站列表,支持的标准是各自不同的,有支持v0.5的,有支持v0.6的,也有支持v0.7的。你当网站是搞企业开发阿,你Google升级一个版本,我们一定能很快的升级代码,支持上去吗?万一我平台上面好多老版本的widget已经在跑了,我一升级不兼容咋办?
三、这也是最关键的问题:OpenSocial能给SNS网站带来什么好处?能给开发者带来什么好处?
facebook的f8推出一年多来,已经涌现了24000多个第三方app,为什么这么多公司和开发者这样踊跃开发app,踊跃的把自己的网站和facebook集成? 无它,唯钞票尔!我集成了facebook可以给我带来流量,我在app里面可以加广告,流量大广告点击多,钞票哗哗的来,谁不干劲十足阿。
那么开发者开发OpenSocial的widget有什么好处?现在Google只是告诉你,你开发一次,可以处处部署!但是我上面已经告诉过你了,这句话是狗屁!就好像Java一次编译,处处部署那样扯淡。而且更扯的是,就算我处处部署,我真能赚钱吗? 基本没戏!因为widget太简单,难以开发高交互性的应用,因此无法粘住用户和病毒式推广用户,而且widget本身往往是页面的一个小小的frame框,你还能有啥地方加广告?
开发facebook的app也不见得只能通过广告赚钱,通过facebook给自己网站带来大量的注册用户,基于这些注册用户本身就可以挖掘商业模式了。但是OpenSocial widget是静态页面阿,你自己没有服务器没有后台程序,widget只能给OpenSocial提供者带流量,无法给你带来注册用户阿!
所以开发者你从头到尾就是白忙活一场,捞不着一点钞票,当然也许SNS网站看在你贡献了这么多OpenSocial widget的面子上,给你点啥纪念品也说不定。
然后我们反过来说提供OpenSocial的SNS网站能得到啥好处呢?答案是nothing but cost!你开发OpenSocial的容器要投入大量开发力量吧? Google升级版本了,你要跟着改代码吧? 弄了一个平台出来,不像网页,人家要写程序攻击是不是太容易了点?安全性要考虑吧?你的OpenSocial平台推出以后,怎么也得推广一下吧?所以这钞票就哗哗的出去了。但问题是我们前面说过了OpenSocial根本不能给开发者带来利益,因此无法像facebook平台那样涌现那么多app出来,那么零星三五个,甚至要SNS网站自己开发widget,这种模式你能运营的起来吗?
而且还有一个特别容易被忽视的关键问题:你的网站究竟是做什么的?你是做平台的?还是做社区的?
facebook网站压根就是一个做平台的网站,他的网站架构全部都是为了app服务的,除了app它啥都没有了,就连facebook自己网站提供的所有功能也全部是以app形式出现的。也正因为如此,facebook做平台才能成功。
现在这些号称支持OpenSocial的网站全部都是做社区起家的网站,社区是他们的老本行,而开放平台对他们来说,只不过是一个锦上添花的东西,有固然好,起码卡一个领先的身位,但是没有对我来说也不是灭顶之灾。
因此这些网站断然不会扔掉目前网站积累的所有社区资源,孤注一掷的做平台。也正因为没有这样和facebook一样的决心,网站开发和运营的中心还是必然围绕社区展开,其结果就是开放平台永远不会成为他们网站的核心,永远只是锦上添花的功能。因此也就注定了他们的开放平台不会成功。
总之,OpenSocial就是一个Google的公关骗局,是Google为了抵抗facebook推出的一个防御性策略,一个从技术层面,从商业层面完全经不起推敲的坏主意,OpenSocial目前和Facebook之间的差距完全不在一个层面上。有空的话多研究研究facebook,比浪费钱在OpenSocial上划得来。
补充:有人说我给facebook写软文,我就觉得好笑,照这么说,那我已经不知道给Sun公司写了多少年的软文了,好吧,现在就给大家看看真正的软文要怎么写的:
我为什么鼓吹facebook,为什么唱衰OpenSocial?