為英國政府開發的新代碼現在已經開源了。政府數字化服務(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目前正在做的事情是找出最有用的項目,使它們成為開放源代碼的候選,找到方式幫助團隊用開放的方式進行編碼,并增加他們對開源的貢獻。