英国政府的开源开发,提供更好数字化服务

简介:

为英国政府开发的新代码现在已经开源了。政府数字化服务(Government Digital Service,GDS)技术架构师Anna Shipman说,以开源的方式进行代码编写可以让它们被重用,并提高透明度,最后会实现更好的数字服务。Anna Shipman在2016 GOTO柏林会议上谈到了政府的开源行为。

image

我们所做的事情就是要改变政府的工作方式,Shipman说。英国政府希望提供的非常好的数字化服务,好让大家喜欢使用它们,并最终让政府和公民间可以更好的互动。

英国政府的软件开发以前是每年都用大爆炸式的版本来完成的。近年来这种方式已经改变了,许多团队每天会做几次代码更新。

Shipman给出了一个例子:当车主们想要转让或保留登记号码时,他们必须要做什么事情。以前,他们不得不填写一张纸质的表格。现在,他们可以在网上填写电子表格,这样做更容易,速度也更快。在线上做这件事也降低了政府的处理成本,所以公民们现在为这项服务支付的费用也减少了。用户们对这项服务的满意度为91%。

英国政府一直致力于将代码开源,Shipman说新开发出来的代码应该默认就是开放的。当然用来处理安全或配置相关功能的代码也许可以除外。但即使是这类代码,有些也正在向开放发展。

大部分用于GOV.UK服务的代码在GitHub上都可以下载。开发过程中项目经历了四个阶段:发现、Alpha、Beta和生产。这些阶段在政府服务设计手册中会做进一步的解释。

这里的“将代码开放”和“开源开发”是有区别的,Shipman解释说。“将代码开放”意味着GDS不会承诺将来会对代码提供支持,也不承诺它将会一直被维护。同时,GDS不会准备以这样的代码为中心来建立和支持一个社区。即便是这样,像新西兰、以色列等国家,还有美国的莱克星顿·肯塔基等城市,他们搭建自己的网站时使用的仍是GDS的代码。

大多数软件都是以“将代码开放”的方式开发的,但也有一些是开源代码。Shipman提到了vCloud工具,这套在GDS内部开发的软件最终由代码开放转变成了开源。

今年早些时候,Shipman在QCon伦敦大会上发表了关于英国政府内的DevOps的演讲。她在演讲中提到,GDS在使用开源工具,也在开发开源工具:

GDS使用了大量的开源工具。其中,他们使用Jenkins作为一个CI服务器,使用Puppet完成IT自动化,使用syslog和Logstash完成日志记录,使用Cucumber完成验收测试和Icinga完成监控。GDS还以开放的方式开发了大部分他们使用的工具和应用程序。在AlphaGov项目上可以找到所有他们开放出来的工具的源码,但不提供任何方式的支持。GDS运维团队负责的工具则承担了更多的责任,比如vCloud工具。

将代码开放使得代码能被重用,并增加了透明度。Shipman认为它会强迫你用正确的方式做事情。它的缺点之一是,它可能会让团队里的新员工感到害怕,因为他们写的代码将是人人可见的。GDS处理这件事情的方法是凭借对代码审查非常正面的态度,并且通过对新员工的帮助来完成的,如结伴编程。

在文章《英国政府的敏捷:一位内部人士透露了一切》中,Nick Tune讲述了英国政府从开源代码中获得的好处:

另一个GDS的辉煌例子是他们如何成功地设法将开源理念引入了政府。不仅仅是使用开源代码,而且是创造开源代码。比如,如果你去浏览一下英国税务及海关总署的github网站,你可以看到成百上千的开源项目。而且不仅仅只是库。你可以找到英国税务及海关总署的网页前端代码,也可以找到领域驱动的微服务代码,而这些代码都是在GOV.UK网站上实际运行着的。

我对GDS取得这样的成就感到惊奇:在政府内促进重用、给纳税人们看他们的钱是怎么被花掉的、并避免了厂商锁定。就我个人而言,我喜欢将代码开放。它对所有的开发者都保持了高标准的工作要求,所以我们不会产生下一代产品的维护负担,因而浪费纳税人的钱,并无法为英国公民创造价值。

Shipman提到了数字化服务标准:一套所有面向公众的服务领域都必须遵守的18项标准。该标准包含的部分规定有:软件必须由多学科团队使用敏捷方法迭代式地进行开发;团队必须了解用户的需求,进行不间断的用户研究,并进行端到端的服务测试。

一些GDS目前正在做的事情是找出最有用的项目,使它们成为开放源代码的候选,找到方式帮助团队用开放的方式进行编码,并增加他们对开源的贡献。

文章转载自 开源中国社区 [http://www.oschina.net]

目录
相关文章
|
6月前
|
人工智能 安全 Java
Go与Java泛型原理简介
本文介绍了Go与Java泛型的实现原理。Go通过单态化为不同类型生成函数副本,提升运行效率;而Java则采用类型擦除,将泛型转为Object类型处理,保持兼容性但牺牲部分类型安全。两种机制各有优劣,适用于不同场景。
229 24
|
缓存 JSON NoSQL
为什么是删除缓存,而不是更新缓存?
本文介绍了数据库与缓存一致性的常见方案——Cache-Aside Pattern(旁路缓存模式),并分析了其工作流程及优势。该模式通过应用程序显式管理缓存,确保数据一致性。文章详细探讨了删除缓存而非更新缓存的原因,包括避免数据不一致、简化操作、减少并发问题及提高性能。删除缓存能有效保证下次请求获取最新数据,尤其在高并发场景下,确保系统的简单性和可靠性。
679 0
|
数据采集 监控 数据安全/隐私保护
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
在Selenium Web数据采集时,日志管理至关重要。通过调整`–log-level`参数可优化日志详细度,如设置为`INFO`记录一般操作信息。结合代理IP、Cookie及user-agent配置,不仅能提高采集成功率,还能规避反爬机制。合理选择日志级别有助于调试与性能平衡,在复杂的数据采集任务中保持程序稳定与可控。
463 1
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
|
网络协议 应用服务中间件 网络性能优化
解析TCP /UDP协议的 socket 调用的过程
【6月更文挑战第2天】该文介绍了传输层的两种主要协议TCP和UDP的区别。TCP是面向连接、可靠的,提供顺序无错的数据传输,而UDP则是无连接、不可靠的,不保证数据顺序或不丢失。
|
存储 索引 Python
python中的数据容器
python中的数据容器
|
机器学习/深度学习 人工智能 自然语言处理
【JAVA】AI医疗导诊系统源码
智慧导诊 患者可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
383 1
|
监控 DataWorks 前端开发
ARMS错误诊断
【8月更文挑战第22天】
211 4
|
存储 安全 Java
settings.xml详解(很详细读这一篇就够了)
settings.xml是Java项目中用于配置Maven的重要文件,它详细规定了Maven的运行规则和行为。该文件通常位于用户家目录下的.m2文件夹中,或者项目根目录下的.mvn文件夹内。settings.xml中包含了众多配置项,从代理设置、镜像仓库配置,到服务器认证信息、插件组等,均可以在此文件中进行细致定义。通过合理配置settings.xml,我们可以优化Maven的依赖下载速度,保障仓库访问的安全性,甚至实现私有仓库的搭建与管理。深入了解settings.xml的每一项配置,对于提高Maven使用效率、保障项目构建稳定性具有重要意义。因此,无论是Maven初学者还是资深用户,都应仔
16382 4
|
机器学习/深度学习 人工智能 自然语言处理
LLM浪潮来袭下,prompt工程师该如何做?
众所周知,在当前的人工智能和大数据时代,数据分析和机器学习已经成为了许多企业业务中不可或缺的一部分,因此,对于Prompt工程师来说,了解和掌握算法已经成为了必备的技能之一。LLM(Large Language Models)浪潮的出现更进一步强调了这一点,因为LLM模型的训练需要大量的数据和计算资源,而优化和调整模型的过程则需要深入理解算法和数据结构的知识。Prompt是一种新型的人工智能交互方式,通过给出一个简短的文本提示,快速生成符合用户需求的完整文本。在过去的几年中,Prompt得到了越来越多的关注,尤其是在本地生活场景下,如何写好Prompt成为了业内研究的热点之一。在本地生活场景下
664 1
LLM浪潮来袭下,prompt工程师该如何做?
|
存储 弹性计算 安全
阿里云各活动中的云服务器实例规格区别及选择参考
2023年阿里云的活动中可选云服务器实例规格主要有轻量应用服务器和通用算力型u1、计算型c7、通用型g7、内存型r7、计算型c8y、通用型g8y、内存型r8y等,实例规格定义了实例的基本属性:CPU和内存(包括CPU型号、主频等),但是不同实例规格所适用的场景是不一样的,价格也有很大差别,有的用户初次选购阿里云服务器可能并不知道这些实例规格的具体适用场景,本文为大家简单介绍一下这些实例规格,并做个选择参考。
阿里云各活动中的云服务器实例规格区别及选择参考