為英國政府開發的新代碼現在已經開源了。政府數字化服務(Government Digital Service,GDS)技術架構師Anna Shipman說,以開源的方式進行代碼編寫可以讓它們被重用,并提高透明度,最后會實現更好的數字服務。Anna Shipman在2016 GOTO柏林會議上談到了政府的開源行為。
我們所做的事情就是要改變政府的工作方式,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目前正在做的事情是找出最有用的項目,使它們成為開放源代碼的候選,找到方式幫助團隊用開放的方式進行編碼,并增加他們對開源的貢獻。
查看英文原文:Open Source Development at the UK Government