• Feeds

  • 老二应该怎样生存

    通常,对于有互斥关系的竞争产品如IM, 门户网站, SNS社交网站等,可替代性很强,有一个基本就满足用户需求了。而另外一些产品如游戏、社区、论坛等类型产品则相对共处能力比较强,大家基本可以和睦相处,就像看电影一样,用户需要看多部电影,需要经常看电影。

    对于有互斥竞争关系的产品,在产品设计和技术上并不难赶上对方。比如Office市场上,老二WPS Office在界面和操作上据说就和MS Office完全一致,除了Windows Title之外你可能感觉就像是在用Word。但是只凭这一点并不能明显带来用户数改善。因此可以认为简单copy并不能带来新用户。老二想要在市场占有率方面赶上老大则相对复杂,除了天时、地利、人和之外可能还需要一些其他因素。

    思考:
    1. Google为什么放弃独立发展Jaiku,而是有意去收购Twitter
    2. Microsoft/Yahoo!为什么搜索始终赶不上Google,或者根本没有带来丝毫威胁
    3. 腾讯的soso为什么动摇不了baidu

    上面的案例老二都不差钱,因此说明这不是钱的问题,那淘宝为什么又凭借免费战胜了易趣,后者与前者有什么区别呢,还是由于淘宝推出的时候市场还未饱和,淘宝抢占了蓝海?

    一些快乐的老二的例子:
    Mac OS X vs. Windows, 最近几年,Mac OS市场占有率在快速上升。
    Firefox vs. IE,Firefox吸引用户的可能有安全性,Tab浏览,完善的插件体系,而有些如安全性是IE的硬伤。

    或许只有凭借创新,老二才能在市场上脱颖而出,而简单copy可能是不够的。

    Facebook的feed格式设计

    SNS平台通常有各种格式的feed,如果考虑到feed需要在平台自身、扩展应用及第三方应用或客户端展示的话,通常需要一个统一的规范,而不是发布者本身随意输出最终展示的文字。而且也需要考虑图片、视频等在feed中的统一定义。在facebook它是这样实现的

    • feed是自描述的,即它不是由生产者决定最终格式,也不是前端决定。而是通过template机制来进行。
    • template在平台中可以由开发者注册,注册时需要定义字段及最终展示样式,如
    {*actor*} 在斗地主游戏中升到 {*credit*} 级
    • 发布的feed内容仅包含字段数据,也就是变量的值,json格式。
    {"credit": "80"}
    • 前端需要显示feed时候调用feed模板,再替换字段得到feed内容
    Tim 在斗地主游戏中升到 80 级
    • 模板需要定义两个,模板标题及模板内容(展示feed详细内容),前端根据需要决定只显示标题还是全部都显示。
    • “target”, “actor”是系统保留字段,代表目标对象和当前用户,{*actor*}必须放在模板标题开始位置。
    • “images”, “flash”, “mp3”, “video” 是系统保留字段,无需在模板中定义。但这些内容只会在详细feed界面输出。即只要feed内容里面有这个字段值,界面就会自动显示。
    • facebook文档中没有规定feed长度限制。
    • 每个开发者最多只能注册100个模板。

    参考资源:http://wiki.developers.facebook.com/index.php/Feed

    从技术角度看Google Wave

    由于Google Wave还未上线,目前了解Google Wave最佳方式是观看youtube上的演示视频或者官方Lars Rasmussen写的Went Walkabout. Brought back Google Wave。本文重点从技术角度谈下对Wave体会。(注意此文部分链接由于GFW原因国内不能访问,并非写错地址。)

    一、总体概述

    Google Wave它并不仅是一个前端的产品,它的整个技术可以概括为3P组成

    Product

    http://wave.google.com/ Product可以理解成Wave前端,基于HTML 5构建,从演示看可以运行在 Google Chrome, Firefox, Safari上。

    Platform

    http://code.google.com/apis/wave/ Google Wave的开发平台,目前可以进行以下类别的开发

    • Extensions: 构建扩展,Google也称它为robot,比如在视频演示中的拼写检查、Google search集成、Twitter Wave扩展等。可以将各种互联网应用导入以wave document方式呈现及交互。
    • Embed: 嵌入,可以将wave嵌入到web应用,嵌入的Wave具备wave的基本特性,比如显示实时更改。视频中演示了将wave嵌入到blogger.com中作为一篇文章。

    Protocol

    http://www.waveprotocol.org/ 目前的Wave协议为基于XMPP core的一个扩展,但是它也只是一个扩展而已,并没要求双方服务器完全支持XMPP特性,就是Wave服务器并不需要支持XMPP的presence, message协议。(XMPP与Wave相关介绍可参看我的另外一篇文章Google Wave与XMPP)

    总的说来,Google Wave整个体系将会是开源的,就是说每个公司都可以架构自己的服务器及前端,如果拿邮件系统来比喻的话,Product等同邮件前端webmail, Platform就是webmail各种插件,protocol就是SMTP/POP3/IMAP协议。

    二、HTML 5 及 Google Web Toolkit

    html5

    上节介绍Product即前端是基于Google Web Toolkit来实现,印象深刻的有几点

    • Google Web Toolkit是用Java代码来直接写前端,并不需要直接编写JavaScript,可能会影响以后前端的开发方式。有点类似n年前当VB/Delphi出来之后, 程序员基本就放弃了使用Windows SDK去写普通界面
    • 一次编写,跨浏览器,可运行在Chrome, Firefox, Safari上
    • 特性丰富,在浏览器里面完成了很多一般认为是不可能在浏览器完成的任务,再看完演示之后,你可能不敢相信它是通过浏览器完成的。图片可以直接从桌面拉进conversation, 由于需要网络传输,对方会看到逐渐加载新拉进的图片,但也几乎是实时的。(由于HTML 5暂不支持drag and drop,暂时通过Google Gears完成。)
    • Google Web Toolkit同时支持iPhone, Android两种Mobile终端。据Lars Rasmussen介绍的经验,使用GWT增加Mobile支持只需要增加5%的开发工作量。
    • 因此Tim觉得browser based也是手机应用的一个方向,而不是写无法跨平台的各种终端本地native应用。一个证明就是Google latitude for iPhone 已经不考虑native实现了,而是采用支持HTML 5版本的Safari。同时Android平台也在尽量让浏览器支持这一特性,TechCrunch这篇文章介绍如下

    Thanks to HTML 5, Safari will be able to access a user’s location information and Latitude will be able to access that as well (provided the user gives permission). This will put it on par with what Google is doing in its browser for Android. (原文)

    • 那大部分Mobile应用,比如SNS平台,SNS扩展应用,电子商务应用(如淘宝)也完全可以基于浏览器去实现。

    三、Wave是一个Realtime应用平台

    由于传统场景比如多人实时编辑相关介绍已经较多,这里介绍些不同的思路,先看两个图片

    国际象棋

    Google_Wave_inbox_chess

    数独游戏

    sudoku

    这是一个运行在Wave中的Gadgets,需要说明的有

    • 只是2个普通的Gadgets, 但是Wave让它具备了多人参与及realtime显示的特性。
    • Gadget本身不需要考虑为Wave作任何改造

    因此个人认为这种技术可以更扩展应用在SNS扩展平台,Web Game等领域,软件的实时通讯功能由平台来提供,软件开发将会更简单,更容易实现大规模的部署及运营。