我们的愿景是好的,但是我们遇到了“技术障碍”。
在挣扎了十多周以后,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
评论