Apple 让步了

9月 9 号,Apple 在网站上发布了条 PR,Statement by Apple on App Store Review Guidelines,字数不多,当量不小:Apple 让步啦,第一,放松了原来引起轩然大波的强制要求只能用限定的工具和语言开发 app 的限制;第二,公布了 App Store Review Guidelines (或者看这个 PDF),些许减弱了关于 Apple 在黑箱操作的责难。

关于开发工具方面,这么说的

…today we are making some important changes to our iOS Developer Program license in sections 3.3.1, 3.3.2 and 3.3.9 to relax some restrictions we put in place earlier this year.

In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code.

3.3.1 就是 famous 或者 infamous 的工具和语言条款,那时候 apple 要求只能用 Objective-C, C, C++, 或者 JavaScript (跑在 iPhone OS WebKit engine 上),只有前三者(C, C++, and Objective-C)才能使用 documented API。通过 intermediary translation 或者 compatibility layer or tool 来链接 Documented API 是不允许的。这次,这些限制全都被删除了,没有提及要求使用指定的语言,没有要求不使用中间层或兼容层 —- 只要最终的 app 二进制的行为等符合新的 guidelines 就可以。

关于 “as long as the resulting apps do not download any code” 部分,是对 3.3.2 的改写,原来的 3.3.2 相当长,新的 3.3.2 说:

3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple’s built-in WebKit framework.

就是要 self-contain,我想这是个安全方面的考虑。不过看上去和老 3.3.2 没什么差别,语言凝练了而已。

3.3.9,新条款

3.3.9 You and Your Applications may not collect user or device data without prior user consent, and then only to provide a service or function that is directly relevant to the use of the Application, or to serve advertising. You may not use analytics software in Your Application to collect and send device data to a third party.

这是实质上去掉针对 AdMob 等第三方 in app 广告服务商的限制。不过,开发者也很关心的其他 app 数据统计问题,比方可否使用 Flurry 等 analytics 工具似乎仍然没有希望。

4 月份的时候,老的这份 SDK licence 是顶着所谓保证效率,安全和更新频率的帽子出来的,如今,这些“帽子”可以不考虑了吗?那不是自扇耳光?要么就是,或许,Apple 洗心革面,不那么邪恶了?
Wired 说,Apple 最新的改变,有可能是因为 FCC 在对 Apple 老条款展开调查。Dictionary! 的开发者 Hampton Catlin 就表示,FCC 的律师和他就这方面沟通过,当然这不代表 FCC 有正式进行中的行动,按惯例,在调查结束前,FCC 既不确认也不否定是否有调查。

我看 Adobe 有点打碎牙齿的意思,最早 Flash CS 5 提供了 Packager for iPhone,方便 Flash 开发者把东西“转”成 iPhone app,后来 Apple 釜底抽薪,宣布了那个广受争议的条款,Adobe 不得不宣布 Packager for iPhone 这个 feature 停止开发,“我们得往前看” —- 多心酸的一句啊。昨天 Apple 的 PR 一出,Adobe 马上表示这是 Great News for Developers,他们会恢复这个 feature 的开发工作。Adobe 还说,他们已经从自己的用户那听到消息,用 packager 开发的 app 已经被 approve 了 —- 当然,别搞混淆了,iOS 的浏览器里的 Flash 还是照样 block 的。当然,好消息是,Adobe 的股价今天立涨 12%,成交量也相当可观。

去年 7 月,iOS 版的 Google Voice 和第三方开发的 GV Mobile 都被不明不白地 block 了,此“不明不白”自然是没有公开说法,而不是指 Apple 的当权者不明白。据 TechCrunch 说,昨天 guidelines 一出,GV Mobile 的作者 Sean Kovacs 就含恨从头到尾通读了那份文件(请想象一下已经在五七干校累弯了腰的老一辈党和国家领导人读到自己罪行宣判的感觉),那可是 100 多条规则呢,最后,Kovacs 说,他觉得自己的 GV Mobile 没有违反其中任何一条。

Kovacs 一分钟也没有耽误,马上开机奋笔疾书,给 Apple 的 approval board 发了 email 询问可否在 AppStore 恢复 GV Mobile,很快,他收到了回复,Apple 的一位专员表示欢迎 Kovacs 重新提交 GV Mobile。虽然严格说这不代表任何许可,不过终究是隧道尽头亮起的一点烛光(看来这是一次团结的沟通,胜利的沟通,催人奋进的沟通……)。

Google 表示目前有 BB 和 Android 的 Google Voice 应用,iPhone 则有 HTML5,除此以外没有进一步消息宣布。

或许 Google 目前觉得真正重要的似乎是…… app 内广告。其官方的 Mobile Ads blog 也在昨天发布一篇 An Update on Apple’s Terms of Service,Apple 的新条款其实也意味这,iAd 不是 app 开发者强制的唯一选择了(虽然老天保佑,老条款在这方面差不多从未实质运用过),从书面澄清和承诺上说,开发者现在可以安全地选用他们喜欢的广告提供商了,Google 和 AdMob 都行,

在 guidelines 里有挺好玩或者意义重大的:
# “Apps that enable illegal file sharing will be rejected.”
BT 和一些合法的文件共享软件,即便只是控制程序都要被拒

# “Apps that browse the web must use the iOS WebKit framework and WebKit Javascript”
用户不会碰到 Android 上那样,打开一个地点,被询问要用 Internet 还是 Dolphin 了。

# “Apps that alter the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, will be rejected”
这是我家,谁都不准乱碰任何东西,那情景模式切换的 app 就也要被毙吗?

# “Apps that misspell Apple product names in their app name (i.e., GPS for Iphone, iTunz) will be rejected.”
锱铢必较,睚眦必报

# “In general, the more expensive your app, the more thoroughly we will review it.”
全世界都仇富。

# “Apps that include games of Russian roulette will be rejected.”
为什么?掷骰子就可以?

# “Apps containing pornographic material, defined by Webster’s Dictionary as “explicit descriptions or displays of sexual organs or activities intended to stimulate erotic rather than aesthetic or emotional feelings”, will be rejected.”
这话听起来像取得了大法官斯图波特的“只要我看到它,我就知道它是色情”之精髓

H.264 编码使用率大幅上升

尽管 web 上 75% 的视频是由 Flash 承载的(承载和编码无关,Flash 也支持 H.263,H.264,VP6 等编码),不过关于 Flash 必要性和前途的争论是最近几个月很热闹的话题。特别是如 Jobs 所说:纵然如此,这 75% 里几乎所有视频也已经有 H.264 格式,因此可以被支持 H.264 的浏览器直接观看,无需客户端 Flash 插件。Microsoft 最近也插了一杠子,表示他们在 IE9 的 HTML5 video 标签的编码支持上,选择 H.264。

提一句,Microsoft 根本不是说 IE9 不支持 Flash 插件,原文里说的话

当前,Web 上的视频基于 Flash 的占据主导地位。虽然视频可以是其他格式,但对典型用户来说,浏览器在某个网站不用 Flash 就方便地观看视频仍然是个挑战。Flash 确实有些问题,特别是在可靠性,安全性和性能上。我们和 Adobe 的工程师紧密合作,在持续进行的技术讨论中共享我们了解的关于这些问题的信息。尽管有这些问题,Flash 仍然是在今日的 Web 上提供良好用户体验的重要部分。

这更应该理解为,考虑到向后兼容性和 Web 现状,IE9 当然很有可能继续支持 Flash。而且,再浅显不过的道理是,当前 video 很大程度上依赖 Flash ,但 Flash 可绝不是仅仅用于 video。如果 Microsoft 决定掐掉 Flash 的后路,我倒宁愿相信跟视频编解码方案无关,而是 Microsoft 使坏,要给 Silverlight 铺路。

说来说去,如果有更多的数据来辅助争论就好了。

TechCrunch 的 H.264 Already Won—Makes Up 66 Percent Of Web Videos 提到了一些,作者 Erick Schonfeld 联络了 encoding.com,问了问他们那边的数据。encoding.com 的客户包括 MTV, WebMD,Brightcove,Nokia 和 MySpace 等,他们去年编码了 5 百万个视频,从统计上来说,采样覆盖率还行,也是有效数据。encoding.com 的 Jeff Malkin 的回应包括了如下的图表,去年一年各种编码格式的占有率:

图中表示的变化趋势是:
H.264: 31% –> 66%
Flash FLV 和 VP6 统统算作 Flash:早前 69%,当前仅剩 26%
Ogg Theora:目前 4%

附带说明:FLV 是承载,支持 H.263 编码。FLV,MP4 和 MOV 等等等等也都是承载,可以承载 H.264 编码的视频。

好玩的正好是,上面的数据表示,去年 Flash native 编码和 H.264 编码的占有率几乎正好交换了位置。当然前面提到了,Flash 也可以播放 H.264 编码的视频,但是,如果有了浏览器 native H.264 支持,Flash 插件在播放此格式视频方面自然就可有可无了。

当然,这份数据遗憾的地方在于:这是基于 encoding.com 自己的数据(我还不知道哪里有更全面的关于 web 上视频的近似总量统计数据),另外就是这里有编码格式和承载的混合,没有清晰地区分。不过好歹算作一个参考吧。另外考虑到 YouTube 占据了 web 上 40% 的视频数量,而其也支持 H.264,你说未来会是个什么样子呢?Flash 或者 Adobe 如果想不出更有破坏性,更有突破性创新的招儿……

Flash on iPad 之 哪有那么复杂啊…

为最近热议的 iPad 或者准确说 iPhone OS 拒绝支持 Flash 的话题添砖加瓦的是一位名为 Morgan Adams 的 Flash 开发者(这种 title 真的十分地不确切)的评论,评论是针对 AppleInsider 的 Daniel Eran Dilger 的 Inside Apple’s iPad: Adobe Flash。这篇评论形成了 An Adobe Flash developer on why the iPad can’t use Flash

Adams 的论点主要是……什么!他的评论里居然没出现什么 platform, strategic, momentum, leverage 这样嘴皮儿一翻就能砸死一圈人的词儿?…Oh My…
好了,他的论点,哦,非常战术性,很细节:

Current Flash sites could never be made work well on any touchscreen device, and this cannot be solved by Apple, Adobe, or magical new hardware.

当下的 Flash 站点不可能在触摸屏设备上良好工作,这没法被 Apple,Adobe 或者什么神奇硬件解决。

而不能良好工作,不是因为设备性能不够高,电池不够强,或者 Flash 会引起死机。是因为 hover 和 mouseover。

基于指点设备的系统 —- 装备鼠标的 PC 是个典型 —- 提供了手持设备目前没有的一个特性,鼠标滑过或者停在对象上的时候,会发送 hover,mouse over 等消息。目前绝大多数网站自然是为“电脑”用户设计的,所以悬停菜单,on demand 动画,预览,fade 效果等都依赖 hover 等特性,而且在电脑上工作的很好,很酷。反过来,光想象一下在线视频的 Flash 播放窗口不能显示下面那几个 hover 了才出现的按钮,就是多让人抓狂的一件事儿啊。

其实,打心眼里我是不相信,完全不认为一个 hover 特性就能决定 Flash 是不是被支持的,不过,哈,我是工程师,我喜欢细节,我喜欢善于讨论细节的人,甚至关于触摸界面的 hover 消息,我几天前还说过类似的话 —- 不过 Adams 的观点不敢苟同,因为后半句话: this cannot be solved by Apple, Adobe, or magical new hardware. 真的?

无论硬件还是软件,hover 并非遥不可及。贴近感应设备 proximity sensor 虽然目前很初级,不过正在发展中,可以使用分散在屏幕下的多个感应器判断逼近的手指;还有光线变化探测和热量感应,屏幕毕竟不大,手指悬停会引起阴影通光量变化而且用户毕竟不是一条冷静的蛇;再就是曾经介绍过的双面触摸里的思路:使用多个摄像头辅助判断手指位置;甚至可以这样,提供一个小贴片黏在屏幕角落,用户可以按一下就把贴片附着在指肚上,以后裸手指操作仍是传统触摸,而通过贴片触碰到的都作为 hover 消息传递,再进一步,贴片内置技术和成本都很成熟的感应线圈,这样有贴片的手指连碰都不需要碰屏幕就可以进行交互 —- 全都无需接触屏幕,完成 hover;软件上,不能把未标准化的手指手势 map 成 hover 消息吗?无所谓那是顺时针画圈还是两指同时单击,这是 Adobe 和 Apple 可以完成的事情。所以,真的那么 cannot 吗?诚然,我上面这些设想或者动议当然可以因为技术难度,成本或者易用性,实用性而无法实现,不过并非绝无可能,谁知道呢 —- 谁让我是个喜欢讨论细节的工程师,是个敢想的喜欢讨论细节的工程师呢?

当 Web 初出茅庐的时候,社会学家们惊叹,集权政府真正的颠覆性力量出现了,如此普遍,分散的传播方式将让权力无从下手 —- 不好意思,错了,甚至不需要在 20XX 年才发现错了。即便回到 Web 新兴之初,不需要 Bill Joy 的头脑也可以知道,这个颠覆性力量是多么脆弱,摧毁它的,可以是官员的一张臭嘴,或者太平洋上一把的鱼叉 — 只要你真的了解这件事物的内理。社会学家不需要知道 packet 是怎么打包拆包传递的,不过确实因为不知道才预错了言。Adams 同学可能非常了解 ActionScript,不过,或许还有不熟悉因而推论错了的地方吧。

当然,我不是要嘲笑“纯真”的社会学家或者低估乃至无视 Internet 的力量,不过那个乐观的论断真是个“美丽的错误”。同理,Adams 关于触摸设备无法提供某些 feature 的观点,或许就是“善意的愚蠢”。

完了上面这个细节之争,还有另外一些 Flash 支持的想法。

首先,大家热议的 iPhone,iPad 之 Flash 支持这个议题,如果要细节上明确点,意味着好几层意思,一是是否只是浏览器中的 Flash 插件支持,再是弄个完整的 VM 等放到 iPhone 里,让开发者可以实现 OS 里“独立”的脱离浏览器的 Flash 应用,这更会要了 Apple 的命。如果 iPhone SDK 的 license agreement 禁止第三方再基于其开发新的 SDK,那浏览器外的 Flash 支持,就是这么个被禁止的第三方 SDK —- 开发者可以隔离 Apple 的 iPhone SDK,依赖另一个人了。当然,还有一层意思,可否在 iPhone native app 里嵌入 Flash 支持,或者利用 flash sdk 操作对象等。

如果是浏览器内的 Flash 支持,我真的不明白哪有那么重要。目前除了视频网站(以及基于其的扩展比如嵌入视频),到底哪种或者那个 killer website 是纯粹基于 Flash 因而如果无法从手机上访问简直就是大逆不道人神共愤的?YouTube 和 Vimeo 等其实已经有 native app 或者单独编解码,可以从 iPhone 等手机上无需浏览器访问,或者从浏览器但不需要 Flash 支持。使用 app 访问这些服务和从网站访问得到的感觉/体验当然不一样,不过这个“不一样”可绝不意味这更差 —- 何况,YouTube 都在准备支持 H.264 了。

如果 Flash 支持那么重要,那不好解释为什么 iPhone 已经发布了 3 代产品,为什么一直光屁股还是那么受欢迎;如果 Flash 支持那么重要,那也不好解释为什么消费者不一窝蜂地涌到 Windows Mobile 或者 Android 去,轮番给 Jobs 一记记大大的耳光光(后两者有 Flash Lite 和 Flash 支持)。两厢对比,我看出这背后发出声音的人,也就是你我他,是有点贪得无厌,有种凡是可能拥有的都先一口要下来,能拿回家的先拿回家再说,管它用不用得上。Flash 支持,借用常年混迹于企业见惯官僚沟通方式的人熟悉的一句话来说就是 it’s nice to have —- developer 和 sales & marketing 坐下来谈东西时,老实巴交克勤克俭的前者问这个东西今年做不做啊,觉得有用吗?后者即狡黠地来这么一句 it’s nice to have,这话翻译过来其实就是干嘛不要,你提都提出来了,不要白不要,反正干活出力受苦受累的是你们,又不是我……
回过头来,对我个人而言,网站上的 Flash 内容,大多没什么非你不可的吸引力,过场动画?菜单?得了把….这还没完,有了 Flash,想想那满屏漂浮晃悠的牛皮癣广告成为现实,我就吓得尿裤子。

不过话说回来,从 SmartSketch 到 FutureSplash 再到 Flash,都有超过 15 年的历史了,PC 上的 Internet 浪潮也有 10 年了,移动互联网历史将近 5 年。在这么长的时间里,PC 端得益于软硬件的大众化和标准化,上亿消费者已经可以享受比较顺滑的互联网上的多媒体了,这后面其实有从台湾到圣迭戈,从伦敦到深圳的所有人的努力,技术的,商业的,运气的。相比之下,这玩意儿在手机上却迄今都玩不转,感觉悲剧与无奈间,我想,这并非只是两家姓A的公司之间的事。