联合 VMWare 等 11 家企业,花费 9700 万,为何还做不好一款小小的跟踪应用程序?

我们的愿景是好的,但是我们遇到了“技术障碍”。

在挣扎了十多周以后,NHS(英国国家医疗服务体系)才意识到想要绕过谷歌和苹果 API 自研开发应用程序并不容易实现,在 1100 多万英镑(约合人民币 9700 多万元)打了水漂后,决定放弃,转而与谷歌、苹果展开合作。

事件回溯

4 月初,英国国家医疗服务体系(NHS)决定自己来开发一款联系人跟踪应用程序:NHS COVID-19,以追踪冠状病毒在人群中的传播。

这款应用程序被设计为免费下载后,只要打开蓝牙就会在手机的后台运行,并通过蓝牙信号探测周边的智能手机,将近距离接触过的“手机”都记录下来。如果有人在应用上声明自己出现症状,近几天与他们接触过的用户便能收到“密切接触”的警报。NHS 会要求这些人进行隔离或接受测试。

如果该应用得以实施,那么从 5 月起就英国就可以摆脱掉最严格的社交禁令。于是,NHSX 就“以惊人的速度”进行了开发,希望能快速上架。

5 月初,该应用程序按计划在怀特岛(Isle of Wight)进行了测试,准备测试成功后于 5 月中旬推广到英格兰其他地区。

但测试结果显示,这款应用程序并不能有效检测到“密切接触”过的用户。测试中给予 25 个联系人,在苹果设备上仅能检测到其中的一位,而在 Android 设备上检测率能达到 75%。在测试中还发现存在错误通知和其他各种小问题,这导致一些人卸载了应用。

要让这个程序真正起到作用,首先必须让它得到足够广泛的使用。牛津大学大数据研究所估计,如果 60%的人口采用 NHS 的程序,它才可以帮助“大大减少”新冠状病毒病例的数量,并帮助英国相对安全地解除封锁。但显然很多人并不信任这个程序,政府也不打算强制推广。

随即,这个应用程序被宣布“失败”。6 月份,工党议员约翰·斯皮拉咆哮道:“这是 NHS 一长串 IT 失败项目名单中的一个!”

已经浪费掉大量的人力和金钱

5 月初测试开始的时候,NHS 还雇佣了数百名员工负责测试和跟踪。但一周后,这些员工发现自己差不多已经算失业了,因为他们几乎没有什么工作可做,尽管他们的工资是每小时 27 英镑。

一位已经辞职的追踪者说,首相承诺提供世界一流的服务,但她已经十天没有打过一个电话了。另一位追踪者表示,他们的工作是浪费时间,因为他们一直坐着等待做点什么。随后,这几百名员工被证实将被解雇。

议院卫生部长贝瑟尔勋爵(Lord Bethell)在政府汇报工作中透露, 这款 NHSX COVID 追踪应用程序总共花费了 1,180 万英镑。

官方拒绝透露这笔巨款具体是怎么花的。有人假设开发人员每小时收费 100 英镑,这相当于开发耗费了 118,000 个工时,显然这是不可能的。即使我们将费用翻倍到每小时 200 英镑,也就是 59,000 个工时,那又有多少人在该项目上工作了 3 个月?

但据英国媒体查找出来的资料显示, 一个官方数据库记录了 份价值 480 万英镑的合同,授予了开发该应用程序 VMWare Pivotal 公司

据公布的记录显示,软件公司 Zuhlke Engineering 也获得了超过 500 万美元的合同。

此外,据消息称,一系列合同还被授予了多家负责应用程序安全测试的公司,合同金额从 6.7 万英镑到 16.2 万英镑不等。

实际上,这个应用程序总共由 11 家私营公司联合开发,总花费超过 1100 万英镑。

该应用程序是由 VMware Pivotal 实验室和许多其他组织共同协助 NHS 开发和测试的,其中包括 Zuhlke 工程、微软、亚马逊网络服务、牛津大学、英国广播公司(BBC)、英国皇家空军,此外,新加坡、挪威、爱尔兰、新西兰和德国也对该项目予以了支持。我们将会仔细研究第一阶段在怀特岛推出的应用程序版本,并在接下来的几周内不断完善和改进它。

最近这份源代码被上传到了 Github 上: https://github.com/nhsx/

这款程序为什么会失败?

在疫情爆发之后,各种追踪应用程序层出不穷,不管是开源的还是类似谷歌和苹果的都有较为成熟的应用。但 NHSX 的首席执行官马修·古尔德(Matthew Gould)却选择了一个“ 研发而不是购买”的方案,然后将项目外包给了位于瑞士等地的承包商。

古尔德是前英国驻以色列大使,也是一位没有技术背景的职业外交官。项目结束后,这位年薪百万(15 万英镑,约 130 万人民币)的负责人正处于水深火热之中,甚至可能因此被解雇。现在人们纷纷站出来指责他:“这是为他自己和 NHSX 的荣耀做出的决定,而不是出于公共利益。”“如果认真听取专家意见,可以节省数百万美元。”“古尔德应该因这场惨败而被开除……”

6 月份,卫生部长马特·汉考克(Matt Hancock)透露说,该应用程序存在“技术障碍(technical barrier)”,因此不能正常工作,所以政府才不推荐广泛使用。

他们到底遇到了一个什么样的“技术难题”呢?

NHS 在之前公布过该程序的设计愿景,相关文档显示,NHS 希望这款应用程序不会耗费太多的电量,并且可以很好地保护用户隐私。

他们提出了两种模型:

在第一种模型(称为“分散模型”)中,系统会定期收集病人的名单,并将这份名单发送给应用内的所有用户,各设备会查看列表中是否有其本地联系人,并告知用户这一情况。

分散式和集中式联系人跟踪模型简介

在第二种模型(“集中式模型”)中,患病的用户报告其症状,但将其所有联系人信息以匿名的方式提供给公共卫生局,以及有关他们所拥有的和联系人相关的一些详细信息(持续时间和接近程度等)。卫生部门可以使用风险建模来确定哪些联系人受风险最大,然后通知他们采取一些措施。在这个模型中,系统只要知道某位匿名人士感染了病毒,就会将所有与之密切接触的人员标记为高风险。

两种模型都有一个共同特点:记录用户何时与他人密切接触(通常以保护隐私的方式进行), 并尝试刻画用户之间的亲密程度以及持续时间。一旦设备离某患者在 6 英尺以内超过数分钟,程序就会启动告警措施

但是,NHS 的方法存在一个问题:Apple 的 iOS 系统通常会禁止非官方应用程序在后台运行时通过蓝牙进行广播。这意味着程序必须保持在前台运行,跟踪应用程序才能正常工作。这显然不能满足 NHS 的要求,无法持续不间断的收集信息。

对于一些特殊应用,苹果确实可以允许其在特殊模式下运行,但这个限制非常严格且可能存在延迟。假设安卓应用每秒发送一次数据,iOS 应用每十秒才可以发一次,去唤醒并与附近设备通讯,而且这种频繁的启用还可能减少手机的电池寿命,而且不一定每次都能成功,极有可能会被阻塞或被系统杀掉。

如果是安卓应用,这个问题可以通过编码解决。谷歌 Android 8 及更高版本允许联系人跟踪应用程序一直作为前台服务运行,并带有图标表示程序正在运行,尽管这对电量不是特别友好,谷歌也不建议这么做,并且这可能因为人们想要节省电量而根本不愿意使用该应用程序。

NHS 坚持要求其工程师开发的应用可以在 iOS 上以特殊的后台模式运行,并“ 足够好 ”地解决上述问题,在检测到附近设备上运行的应用后短暂唤醒设备,以向附近的设备宣告自己的存在,但现在看来这并没有实现。

英国的软件开发水平

长期以来,英国政府一直致力于各种转型和升级,比如通过开源软件的方式对政府内部使用的软件进行重新升级。但这些事情往往效果甚微,却需要付出相当多的努力。

2013 年,英国也曾经发生过一起与此类似的项目失败案例,当时的目标是做一个通用信贷系统(UC),英国国家审计办公室(NAO)的报告以及泄露出的内部调查,都将其归咎于糟糕的管理和实践。

通用信贷系统的开发隶属于“工作和养老金部”(DWP), 它整合了对数百万英国索赔的补助金给付,这曾被视作一个敏捷项目,并预计在 2017 年发布。但在启动两年后,项目进度就落后于计划,而开销却超出了预算。这一旗舰项目无法赶上 2013 年 10 月的中期交付,而 The Register(英国的一家科技新闻网站)报道了 DWP 核销掉了 3400 万英镑的软硬件方面的 IT 资产,它们无法用于这一项目中。

此前,英国政府数字化服务(Government Digital Service,GDS)技术架构师 Anna Shipman 曾表示,英国政府希望提供非常好的数字化服务,好让大家喜欢使用它们,并最终让政府和公民间可以更好的互动。Shipman 在过往接受 InfoQ 采访时曾表示:

在任何一个已经存在了一段时间的组织中,做事的方式已经确定,而且常常与它们实施的原因脱节。那些作为“规则”的事物实际上就是惯例。我们必须很好地处理这些差异,回推其中的一些规则以触及核心原则。

例如,有些人说,如果应聘者说了一些你想深入了解的内容,你不能在面试中提出技术性问题或者偏离剧本。但事实并非如此,只要你确信,你给了每个候选人平等的机会来证明自己,你始终如一并保持着良好的记录。我们非常擅长于做研究和回推,这样我们就可以在不损害(通常是非常明智的)原则的情况下改变实践。

然而,随着时间的推移,政府的资金、治理和权力结构面临着更大的挑战。你可以通过某种方式来提供更好的服务,改进技术,引进新技能,而不处理系统的这些主要部分。但在某种程度上,如果你想真正利用互联网时代的工作方式,你就必须解决系统性问题。当你在挑战人们花了整个职业生涯来捍卫的东西时,你会遇到真正的阻力。

如今看来,英国政府的信息化转型之路,道阻且长。

延伸阅读:

https://www.ncsc.gov.uk/blog-post/security-behind-nhs-contact-tracing-app

https://www.infoq.cn/article/2013/10/noa-uc-failure-report