为什么Ubuntu移动操作系统会失败?

Simon Raffeiner 是一名开发者,曾经为 Ubuntu 手机平板项目服务。在项目的起伏动荡之中,Simon Raffeiner 学到了不少经验,让我们听听他是怎么说的。

现在 Ubuntu 手机与平板已经远去了,这个项目为什么失败?从中能学到什么?我有一些个人之见可以供您参考。

先来简单介绍一下我参与 Ubuntu 项目的经历:2013 年 Ubuntu Touch 发布到 2014 年 12 月,我断断续续在 Nexus 7 上使用 Ubuntu Touch;2014 年 12 月,我开始开发 Click App;2015 年 1 月,我开始撰写“Hacking Ubuntu Touch”系列博客文章,共 15 部分,谈论系统的内部结构,后来还加入了 Ubuntu Phone Insider,从 Canonical 拿到一台魅族 MX4 手机,组织并赞助了 UbuContest app 开发大赛,之后一直在编写漏洞报告、制作 App,直到 2016 年 4 月才停止,到了 2016 年年中时,我廉价出售所有剩下的设备——或者转化了设备。因为有过这么一段经历,所以我认为我可以就这个项目谈谈自己的想法,说说它所面临的挑战,说说它有哪些地方本来可以做得更好,但是没有做好。

请注意,这篇博文并不适用于 UBPorts 项目,这个项目还在继续开发手机操作系统、Unity 8 及其它组件。

图0:为什么Ubuntu移动操作系统会失败?

  它并没有瞄准有利可图的细分市场

面向 PC、笔记本、服务器的 Ubuntu 系统发展过程要顺利一些。几乎所有设备都允许你安装任何操作系统,2004 年 Ubuntu 崛起时,最大的对手微软相当脆弱,容易招来攻击。Windows 的名声不怎么好,价格很贵,占用太多资源,Ubuntu 只要不那么烦人、便宜一些、容易安装、能在旧电脑上跑得更好就行了。Ubuntu 正是这样做的。Windows 的声誉并没有好转,继续糟糕下去,现在甚至还监控用户,价格依旧高高在上。所以 Ubuntu Desktop 没有、也没有必要做太多正确的事,就能维持用户量,并且保持增长。

再看服务器市场,Windows、红帽、SUSE 都有点太保守了,速度太慢了,价格也贵。红帽企业付费订阅产品每年要收几百美元,而且付费之后还无法获得必要的人力支持。如果能够开发一件产品,跑得更快,成本更低,得到产业的支持,拥有大量的功能,肯定能吸引许多人,在云端尤其如此。后来 Ubuntu 成为了 OpenStack 的参考操作系统,这件事帮助很大。

在移动设备领域,一切都不同了。在手机或者平板上,你不可能让任何类型的操作系统快速发展起来。每一台设备都安装定制 Andorid,系统经历过特殊的裁减。2013 年,Ubuntu 宣布进入移动市场,不论是 Android 还是 iOS,都不容易遭受攻击。相反,Android 还向其它平台大举入侵,只有 iOS 例外。有些人之所以期待第三方替代者冒出来,并不是因为 Android、iOS 名声不好、限制太多或者用户体验糟糕,而是因为他们担心谷歌会一统天下。正因如此,攻击 Android、iOS 并不像攻击微软、红帽(在 PC、服务器领域)那么容易。

我还记得,Canonical 的人曾经说过,项目只有从移动市场拿下大约1% 的份额,才能持续生存。要达到目标,意味着每年要销售大约 1100 万台 Ubuntu 手机、几百万台平板。如果从每台设备的软件和服务中获得 1 欧元/美元的收入,就能养得起 100 名开发者,如果指挥得当,这么多人就够了。Sailfish OS 是 Jolla 开发的,曾几何时,Jolla 大约有 120 名员工,它们还要设立营销、支持部门,Canonical 已经拥有这样的部门。问题在于,每年销售 1100 万台手机、几百万台平板是一个艰巨的任务,看看 Ubuntu Desktop 的用户量,估计只有 2000-3000 万。

图1:为什么Ubuntu移动操作系统会失败?

——获得1% 市场的可能性之一:做得比竞争对手好很多,这样你的产品就会流行起来,那就不用担心1% 了。我认为,大家都清楚这样的事情不会发生,因为有一点很明显:所有的重要服务(WhatsApp、谷歌、Twitter、Instagram 等)都不允许我们克隆它的 App,在 Ubuntu 设备上运行。如果 Canonical 不开发自己的 Telegram 客户端,当第一款商用版 Ubuntu 手机上市时,甚至连 Instant Messenger 工具都没有。当时已经是 2015 年,大家几乎无时不在使用 Instant Messenger。如果 Ubuntu 手机不能做 Android 手机所做的事,大家就不愿意付同样的钱购买 Ubuntu 手机,即使手机上写着“开发者设备”也一样。

——获得1% 市场的可能性之二:拿下一块利润丰厚的细分市场。Canonical 过于关注所谓的“Convergence”(聚合)细分市场,这个市场的人不够多,但 Canonical 忽视了所有的黑客、“程序修补匠”、以及那些无法忍受谷歌、微软的人,NSA 正在盯住这些人。花很多的钱购买一台手机,当它与外接显示器连接时可以变成较慢的笔记本,并没有多少人做好准备买这样的东西,但是有很多人准备花高价钱购买 Blackphone。

  用户体验糟糕、没有抓准重点

推出最初的几版 OTA(over-the-air)升级程序之后,我问自己:“bq 和魅族——尤其是它们的客户——真的想干下去吗?”手机很慢,在常规使用中老是要重启。魅族 MX4 有点过热。电池指示器给出的数据不准,移动数据不稳定,许多时候无法在国内漫游,定位服务也是相当不靠谱。来电时,手机老是没有铃声,或者你没有办法打出电话,因为 UI 挡住了按钮。闹钟不好用,蓝牙只支持音频设备,或者最新的输入设备,但连基本的文件传输功能都没有。WiFi 没有办法连接到 WPA Enterprise 网络,这个问题直到 OTA-5 才解决。当我索引文件时,音乐播放器甚至还会删除文件。

有些东西你认为管用,但实际不能用,这样的东西很多很多。还有一点更糟糕:一些漏洞修复之后,经过 2 次 OTA 升级之后居然又跑回来了。在手机/平板项目推行的整个过程中,向 Launchpad 提交的漏洞报告很多,数量冲到太空去了,超乎我的想像。

根治漏洞并不是优先考虑的事,开发者将大部分时间用来拓展平台,让软件支持更多的硬件(魅族 Pro 5,bd Aquaris 10),专注于“Convergence”(聚合)。到了项目快要结束时,与我交流过的用户大部分都对设备不满意。只有那些使用基本功能的人满意,比如我的父亲,他甚至不使用移动数据,每两天才打一个电话,他之所以满意是因为手机可以续航几天。买一台 150 欧元的智能手机,却不使用任何“智能”功能,真说不过去。

我表示理解,因为没有足够多的开发者快速修复所有问题,但是我们既没有开发出很好的 Convergence 手机,也没有很好的 Convergence 平板,相反,设备做任何事情都做不好。项目的人一直在说:“这是开发者设备,不必追求快速,因为从长远来看我们会获胜。”直到某一天管理层才意识到,这样做成本太高了,而且已经浪费了很多时间。此时,我们开始在内部削减开支,大约在 2016 年 10 月时,所有重要员工全都搬到了 Snappy,让手机和平板项目在沉默中死亡,直到几个月后才告诉公众。

我认为,设计师老是抱着“Scopes”的观念,迟迟不变,这点不好,没有人真正知道如何在桌面端使用 Scopes。

图2:为什么Ubuntu移动操作系统会失败?

  设备很难弄到

想弄一台设备真的难,相信大家有同样的感受。我在店铺里买了自己的第一台 Nexus 7,在 eBay 买了一台 Nexus 4,当项目开始蓬勃发展时,这些设备已经旧了,更难买到,很快,官方就不再支持了。Bq 的设备至少还在欧洲大多地区销售,但是很快就卖光了。除了 Ubuntu Phone Insiders,其它人想买到 MX4 真是很难,简直就是痛苦。如果你在美国,拿到一台设备,许多时候根本无法全速连接到移动网络。

2015 年和 2016 年的大多时间里,如果开发者想弄到一台官方支持的设备,测试 App,我真不知道该向你推荐什么。

图3:为什么Ubuntu移动操作系统会失败?

从另一方面看,大家最想要的设备却不是自己拿到的设备,最想要的是高端 Ubuntu Edge。Bq 设备很便宜,内部存储空间很小,只支持 3G。MX4 很快,安装了大屏,支持 4G,但再无其它,甚至没有 SD 卡槽。在所有官方手机中,Convergence 需要的 HDMI 输出接口全都没有,Miracast/Aethercast 也不是很好的解决方案。许多人认为,Ubuntu 应该可以让它们的硬件发挥最大潜力,比如在 Aquaris E4.5/E5 上支持 FM 广播,不过这个功能甚至都没有出现在清单上,如果没有 Android 设备驱动,社区根本没有办法增加此功能。

大多人都认为 Ubuntu 手机会比 Android 更安全,因为它是开源软件,可以快速升级。但事实并不是这样的,Android 驱动和移动基带是专有的、安全的,可以完全访问硬件。不过这些东西理解的人不多。

  沟通与营销有点混乱,有时还存在误导

每一天,我都要花很多时间关注最新进展,许多时候,我根本不知道接下来会有什么出现,下一个 OTA 又会怎样。邮件列表、IRC、Telegram 频道、Launchpad、官方网站、开发者的私人对话、Ubuntu Online Summit……东西太多了。我还没有将 Canonical 非公开对话放进来,这些交流是保密的,目标是保密,希望消息公开时能获得新闻媒体最大的关注。

Canonical 的许多员工在家工作,或者在不同的时区工作,在我看来,这种办公方式变得越来越糟糕。曾几何时,我碰到一些麻烦,比如:“当我按下电源按钮,一秒之后手机才唤醒。”“电池指示器有问题。”我希望他们重视这些漏洞,寻求帮助,服务真是折磨人。

为设备开发内核源码的人可能来自亚洲,至于负责Q&A的人,可能在美国某个地方工作。我自己在欧洲。工作轮班并没有重叠。有时我会早上 8 点与某个亚洲人聊天,在他下班之前交流;然后又在下午或者晚上与美国的人交流,他们刚刚才上班。

图4:为什么Ubuntu移动操作系统会失败?

不得不承认,我从营销部门学到了许多东西,在“预期 VS 现实”方面学到的更多。例如,许多人假定,在随后的 OTA 升级过程中,Aquaris E4.5/E5 和 MX4 会加入 Convergence 功能,不过在销售设备时,制造商与 Canonical 都没有这样宣传过。直到项目取消了,大多人还认为以后可以在桌面端(火狐、SIP 客户端)运行同样的应用,可以通过软件包安装(apt-get)管理手机,这些想法完全是被营销给误导了。许多时候,团队都强调说 Ubuntu 会保持一致,事实并不是这样的。火狐没法运行,使用软件包安装(apt-get)会出问题,为了这样的事,我无数次通过各种渠道向人们解释。大家很吃惊,他们发现原来面向移动设备的 Ubuntu 居然如此不同。

  太关注用户、App 开发者不关心的技术功能

我认为,对于架构师来说,如果你宣布推出一个新的、独立的移动操作系统平台,最好的理由应该是这样的:“好吧,让我们动手干吧,但是要以正确的方式进行,要做得比其它人好。”Ubuntu 不能只是关注图形用户界面,还要让系统在所有设备上运行,接受各种形状的设备。不能只是搞一些相互隔离的应用程序,就像 Linux 内核或者 Android 一样,还要进行全面的限制,保护用户的数据和隐私。系统必须防止 App 消耗太多电能。不论其它平台在技术方面做了什么,Ubuntu 都应该做得更好,以更优雅的方式完成。

对于我来说,这些东西并不是全都有意义。Unity 8 是有必要的,因为 Unity 7 依赖的是 Compiz,它无法良好兼容各种形状的产品,有些设备安装旋转屏。不过 Mir 的唯一作用就是替代X.Org 和 SurfaceFlinger,这样一来,Unity 8 就可以在 PC、移动设备上使用一个 API。我不是图形技术专家,也不是 API 专家,不过站在“人力资源非常有限”的角度看,这样拿出一个全新的显示服务器,但是没有其它人愿意使用,与现有替代产品相比也没有多少提升,应该少做这样的事。如果用户界面看起来没有什么不同,就更应该避免了。自 2013 年年末以来,Ubuntu Touch 一直使用 Android 的 SurfaceFlinger,用得还很欢快。

为了节省一点点电量,你将设计弄得很复杂,而且这种复杂还会给系统服务的部署带来更多工作量,这些服务从未被部署,因为你的团队太小,用户和 App 开发者不会因为你的设备续航时间延长了一点点而喝彩,相反,他们会有无穷的抱怨,因为缺少了这样那样的东西。在 Launchpad 平台上,经常出现“Complete the high priority background service implementations”这样报告,相关的漏洞报告数量达到 240,此时项目已经推出 3 年,但在漏洞方面基本上没有什么改进。

还有一个好例子就是规划好的信息框架。对于你的所有信息需求,不论是 Jabber/XMPP、SMS、Telegram 或者 WhatsApp,你只有一个系统应用程序,第三方资源可以为自己的服务提供插件。为什么不让 App 在后台运行?这套框架是主要的障碍之一。你没有办法制作一个简单的独立 XMPP 客户端,在后台接收信息,但是你想插入的信息框架却姗姗来迟,与没有推出差不多。甚至连 Telegram 客户端也无法在后台运行,它只能显示弹出式通知,因为 Canonical 说服了 Telegram 开发者,修改他们的服务器代码,支持 Ubuntu Push Notification 服务。

在 Canonical 平台上,有一些关键开发者认为 Ubuntu 如此重要,所有的服务提供商都会修改服务器代码,使用 Ubuntu Push Notification 服务,解决此问题。但是除了 Telegram,其它服务提供商都没有这样的想法。

  App 开发者的生活太苦了

移动操作系统的价值并不在于当下的基本操作系统,而在于生态系统。这也是 Ubuntu 最难攻克的难关。

从本质上讲,面向移动设备的 Ubuntu 不兼容任何之前存在的运行环境。你没有办法运行 Android、Windows、X11 或者 iOS App,不能跨平台编译 Android、Windows、X11 和 iOS App。图形系统、系统服务、限制、基本库,全都不同。移动 Ubuntu 和 Ubuntu Desktop 是完全不同的。你可以一而再再三强调说“它们是完全一样的 Ubuntu”,如果我们不能在桌面端测试我的 App,因为它甚至都无法运行 Mir,那就不能说它们是完全一样的 Utuntu,我必须接受两个不同的平台。

Canonical 开发了完整的 SDK,基于 Qt Creator 的“集成开发环境”( Integrated Development Environment),跨平台编译环境,以及一套全新的 Ubuntu QML 组件。我没有冒犯任何人的意思,除了不能重新使用现有代码,这样做还会给 App 开发者带来困惑,让人沮丧。从头到尾事情总是不顺利。有时 SDK 几周都没法用,然后团队又拿出了版本控制方案,你的 App 老是出问题。

图5:为什么Ubuntu移动操作系统会失败?

有时,我必须在程序店内重建、升级我的 glmark 2 App,因为 OTA 内包含了更新后的 Mir 客户端库,但是 OS 的兼容等级仍然与之前一样。事情变得很明确:版本控制方案只能向你保证,用官方支持的方式编写 App,它才能正常运行,而官方支持的方式只有 QML、HTML5。glmark2 直接与 Mir 对话,还有许多其它程序也一样——比如用 SDL 开发的游戏。

每一次 OTA 之后,如果你不能持续检查、更新,程序店内的 App 就没法用了。在最新的 Android 手机上,你可以继续使用旧 Android App,不过你必须担心一件事:如果你长时间不维护,完成下一次 OTA 之后,你去年开发的 Click App 可能就没法用了。我还记得,2015 年年末曾经在 IRC 有过一场激烈的讨论,当时几名 Canonical 开发者发现了这个问题,他们质问 SDK 团队:到底 SDK 团队希望 App 开发者如何在这样的环境下工作?

最开始时,我是一名 App 开发者。当我想开发一些东西时,基本上都要从零开始。想开发 GUI?只能用带有 Ubuntu QML 组件的 QML 开发,而 QML 并不是什么成熟的生态系统,没有大量已有的代码存在,也没有什么好工具。是不是只想使用现有 UI 库中的一个?只能指望 X11 或者 Wayland,如果想等到 SDL 或者 Mir 后端出现,那样时间太长了。想与硬件或者系统服务对话?因为受到了限制,我必须通过D-Bus 与特殊 Ubuntu 服务对话,许多“标准”的东西(比如 NetworkManager)无法与限制之内的东西对话。想在后台下载一些东西吗?请与特定的 Ubuntu 下载管理服务连接。如果手机之外发生了什么事,你想收到通知,怎么办?你只要将所有东西与 Ubuntu Push Notification 整合才能做到。

正因如此,我开始开发基础系统。2015 年 1 月时,我想开发 Wi-Fi 和蓝牙扫描功能,但是需要的 API 和系统服务全都不存在,大多东西都缺少,API 与系统服务也永远不会出现。

因为上述种种原因,对于第三方开发者来说,平台没有什么吸引力。投入时间精力重新开发另一个版本的 App,实在看不出有什么价值,加上用户基数本来就不大,那就更不值得了。在 Click Store 内,我基本上找不到一个 App 是由“原始”开发者上传的。甚至连 Telegram 都是由 Canonical 自己开发的。

大多人只会跑去开发便宜的 WEB App,或者克隆现有 App。很快,这样的做法就碰到了问题,许多 App 依赖某些不自由的网络服务,而且服务的条款极不友好。例如,我自己开发了 BD Navigator,它相当于德意志联邦铁路 Navigator 的克隆体。我对客户端-服务器协议进行逆向工程,几乎可以复制所有东西,只是不能购买真正的火车票,因为德意志联邦铁路在程序内植入了加密信息,如果使用偷来的加密密钥,在德国可是犯法的。我问德意志联邦铁路,能否允许我这样做,他们说不行。最终我只能将整个 App 降级,将它变成一个 WEB 容器,里面包含从德意志联邦铁路的移动 WEB 页面收集的书签。

WhatsApp、Twitter、Instragram、谷歌 Plus、谷歌 Drive 等服务也碰到了相似的问题。大多东西我们都能复制,但是服务提供商不允许你这样做。例如 WhatsApp,如果你想获得授权,接入它的 API,必须支付一大笔钱(达到 7 位数),而且 WhatsApp 不允许别人开发可以运行的客户端 App。Instagram 封锁了 API,就连内置的 Instagram Scope 也不得不撤下。对于大多服务,谷歌甚至没有提供开放的 API。

  原本想让项目变得开放、以社区来驱动,结果未能如愿

我知道,关于这个观点肯定有很大的争论,如果你不同意,那么请记住:这只是我自己的看法。我可能属于少数派。

照设想,面向移动设备的 Ubuntu 应该像“普通”Ubuntu 一样开放,但是事实并非如此。

——我们开发了一些东西,这些东西的源代码都在那里,放在某些地方,在 Launchpad 项目(不知道有多少)上扩散。

——内核源代码放在 GitHub,许多时候都过时了。

——所有专用 Android 驱动及其它内容的代码,只有一些 Canonical 员工才能看到。

——Canonical 和商务合作伙伴设立了一个 Launchpad 区域(完全私有),里面会在私密漏洞报告。许多时候,公开漏洞报告的链接会指向私密报告,这样一来,你只能看到一半的信息。

——大量数据会在无意之间泄露,主要通过 paste.ubuntu.com 泄露,关于即将到来的设备,许多信息通过搜索就能找到。

——当我们想了解即将到来的新功能时,经常会找到相似的 Launchpad 项目,这些项目早在几周或者几个月前就开始做了,以代号的形式进行,或者 Canonical 开发者已经私下开发了几个月。

——对于没有为 Canonical 工作的人来说,想了解它们做了什么、有何规划、你可以从哪里加入从哪里退出,真的有点难。

——如果你发现有些事情自己可以帮忙,想与 Canonical 开发者保持联系相当难。他们在工作日至少会工作 8 小时,但是你可没有 8 小时的闲暇时间,你的闲暇时间经常与他们的工作时间是不重叠的。

——用户和宽泛社区的愿望似乎对接下来要开发的功能、下一个 OTA 要做的事没有什么大的影响。许多时候,那些最热门的 Launchpad 漏洞报告、功能请求存在的时间最长。

  FAQ

有些问题会被大家经常问到。

  ——为了做开发,你买了多少设备?

我买了两台新的 Nexus 7、两台旧 Nexus 4,三台新的 bq Aquaris E4.5,两台便宜的联发科手机(用于逆向工程),为 Ubuntu 做开发。我还从 Canonical 弄了一台 MX4 手机。我想我买了 7 台手机、2 台平板,花了 1000 多欧元。

  ——能估计一下你投入了多少时间吗?

可以。计算了一下,我发现,在长达 18 个月的时间里,我投入了 6 个人工月(一人一个月内完成的工作量),这样的工作量与 Canonical 聘请我、投入 30% 的兼职时间为他们工作差不多。

  ——你后悔投入这么多时间和精力吗?

不后悔。

  ——你什么时候开始怀疑项目会失败的?

如果记得没错,大概是 2015 年圣诞吧。当时项目的发展越来越不顺利,事情越来越清楚,我们不可能拥有完整的 WhatsApp、Twitter App,你开始看到,对于许多手机用户来说,再也没有什么真正重要的东西。Convergence 平板项目还在推行,但是拿到 bq Aquaris M10 平板的人并不多。

还记得我刚才说过吗,我曾开发过基本操作系统,因为在我想开发的 App 中,有一半没有办法开发。努力一年之后,我需要开发的 API 和系统服务没有一个完成的,我们还在与一些系统架构师争论:到底系统是不是应该拥有我们需要的所有东西。当你们的 APP 开发者告诉你,说他们需要一些东西,这样才能开发出很酷的 APP,你应该给他们一些东西,让架构师在可以预见的未来勉强度日。不必完美,但是相比开发者对你的需要,你更需要开发者。

  ——你是 2016 年年中离开的,比项目真正终结的时间早了很多。为什么?

我对软件开发的兴趣并不大。现在我将更多的闲暇时间留出来周游世界,摄影,制作糟糕的卡牌游戏、糟糕的漫画和糟糕的游戏。

另一方面,我觉得继续为项目工作无法再让我感到高兴。有时,坐在一台设备之前连续鼓捣 8 小时,我会想:“我做得不够好,这是我的错误。”既然用业余时间来工作,不应该这么无趣。

本文文字及图片出自 36氪

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注