欢迎大家来到IT世界,在知识的湖畔探索吧!
编者按: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及其它组件。
它并没有瞄准有利可图的细分市场
面向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%市场的可能性之一:做得比竞争对手好很多,这样你的产品就会流行起来,那就不用担心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。
设备很难弄到
想弄一台设备真的难,相信大家有同样的感受。我在店铺里买了自己的第一台Nexus 7,在eBay买了一台Nexus 4,当项目开始蓬勃发展时,这些设备已经旧了,更难买到,很快,官方就不再支持了。Bq的设备至少还在欧洲大多地区销售,但是很快就卖光了。除了Ubuntu Phone Insiders,其它人想买到MX4真是很难,简直就是痛苦。如果你在美国,拿到一台设备,许多时候根本无法全速连接到移动网络。
2015年和2016年的大多时间里,如果开发者想弄到一台官方支持的设备,测试App,我真不知道该向你推荐什么。
从另一方面看,大家最想要的设备却不是自己拿到的设备,最想要的是高端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点与某个亚洲人聊天,在他下班之前交流;然后又在下午或者晚上与美国的人交流,他们刚刚才上班。
不得不承认,我从营销部门学到了许多东西,在“预期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老是出问题。
有时,我必须在程序店内重建、升级我的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小时,我会想:“我做得不够好,这是我的错误。”既然用业余时间来工作,不应该这么无趣。
编译组出品。编辑:郝鹏程
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22008.html