Standard for Public Code

目次

  1. 公共程式定義
  2. 採用公共程式的原因
    1. 軟體程式碼 == 法律條文
    2. 傳統的公共軟體採購
    3. 技術自主權與民主課責
    4. 設計真正的公共軟體
    5. 公共程式的價值
  3. 公共程式運作方式
    1. 公共程式的經濟效應
    2. 購置公共程式
  4. 《公共程式標準》目標
    1. 適用對象
  5. 延伸閱讀
    1. 探討公共程式的影片
  6. 參與我們
  7. 聯絡方式

序文

《公共程式標準》提供一套準則規範,支持公家機關一同開發與維護軟體及政策。

任何想開發具有公眾用途的軟體或政策的人,可以利用本標準來提升公共服務品質,使其更具成本效益、風險更低,還能對系統更有掌控權。

本序文在介紹何謂「公共程式」以及解說其重要性。

公共程式定義

公共程式,英文為 Public Code,是指人類或機器在公共情境下,所執行的電腦原始碼(像是軟體與演算法)與公共政策。公共程式的範疇,涵蓋搭配公共基礎建設一同作業 的軟體、作為公共基礎建設運作而建置的軟體,以及產生公共程式的過程安排等。公共程式與一般軟體有明顯區別,因為其作業的環境與期待全然不同。

採用公共程式的原因

公共程式現在如此重要,背後有幾個原因。

軟體程式碼 == 法律條文

軟體是公共基礎建設。

在 21 世紀,軟體可被視為重要的公共基礎建設。軟體越來越常被用於實現既有政策,甚至成為新政策的制定來源。舉例來說,演算法可以決定哪些地區需要額外的社會服務或警力 等。

在公共政策的執行上,軟體運作機制、演算法與資料蒐集等,已成為關鍵要素。今日的電腦程式碼,正執行著透過民主程序制定的法規政策。程式碼與政策這兩種形式的程式,都根據民主 程序而確立的公共價值,設立出社會的運作環境;前者由機器執行,後者則是由人類執行。換句話說,軟體程式碼,已經越來越實質趨近於法律條文的地位。

因此軟體也應該接受民主治理原則的約束。

傳統的公共軟體採購

目前公共軟體的生產模式,在交付公共服務上的效率並不高。

過去近十年來,購置完整軟體解決方案的公家機關,有時甚至會很訝異地發現:

  • 他們無法修改軟體來反映政策的變動,或是改變軟體來利用新科技
  • 他們的資料都套牢在專有系統中,無法取用
  • 他們所需繳交的授權費變得越來越貴

技術自主權與民主課責

公家機關、公務員與居民都值得更好的。

我們相信支持社會運作的軟體,再也不能是黑箱,任由外部公司依隱藏在專有程式基底之下的秘密邏輯作控制。反過來說,政府,以及政府所要服務的人民,需要掌控技術自主權。技術自 主讓他們能主導設定與控制公共軟體的運作,正如同他們能依法制定與調整政策一樣。人民與公民社會的參與者,都需要這類軟體能夠透明,且可以課責。

作為必要公民基礎建設的軟體,其設計應該尊重公民的數位權利。

設計真正的公共軟體

公共程式是現代公家機構的核心,型塑了公務員的工作樣態,並且影響了幾乎所有居民的生活。

因此公共軟體必須:

  • 透明
  • 可課責
  • 讓選民能夠理解

必須能反映其所服務的社會價值觀,像是涵容與不歧視。

目前公家機關使用的大多數專有軟體系統,都不符合這些要求;而公共程式能夠做到。

公共程式的價值

我們認為公共程式應具有下列核心價值:

  • 涵容
  • 好用
  • 開放
  • 易懂
  • 課責
  • 近用
  • 永續

公共程式運作方式

公共程式是旨在協助公家機關,履行其必要職責時所採用的開放原始碼軟體。透過使用,其他行政單位也能為軟體做出貢獻,因此公共程式的開發與維護,可說是真正互相協作的成果。

開放的精神能開創許多可能性。

公家機關在執行與維護其自身的公共程式時,就是在確保能為地方負責,並履行民主課責。開放且貢獻者眾多的軟體,得利於有許多人在看,更容易發現潛在缺陷,因此安全性會更高。許 多貢獻者會分攤維護工作,讓公共程式能持續運作與更新,減少未來技術債的可能。因為能有多人分攤維護工作,使得現在與未來都會更加永續。而公共程式的開放性,代表其程式碼與 資料,在未來也更容易改寫與調整。程式碼也更容易重新利用、重新調整目標,或甚至淘汰。這一切特性都讓公共基礎建設可能遭遇的風險降到更低。

這種將資源集中的作法,能讓公共行政單位可以有額外心力關注如何客製化軟體,來使軟體最適合當地情境的需求,為終端使用者(居民或市民)創造更佳的使用體驗。

公共程式的經濟效應

公共程式為公家機關以及商業公司,提供更好的經濟模型。公共程式作為替代傳統軟體採購的方案,更能提升當地的掌控權並促進經濟機會。

公共程式從設計之初,就是要開放、適應力強、資料可攜,能夠由內部員工或信任的供應商來開發。由於原始碼開放,公共行政單位在有需要時可以更換供應商。開放原始碼讓社會大眾更 有機會瞭解與監督公共程式,使公共行政單位得以採購小規模的合約,而地方性的中小企業就更容易參與這些小型採購案的競標。如此一來,公共行政單位就可以透過他們所需的軟體採 購案,刺激當地經濟的創新與競爭。

這可視為對未來經濟成長的投資。隨著科技需求成長,也將需要更多供應商。

購置公共程式

公共程式可由常駐的內部研發團隊、承包商或外包供應商開發。公家機關的供應商,在投標時可以在標案中納入公共程式。

若要使用既有的公共程式,您將需要在預算以及專案設計中,明確指出新的解決方案將會使用該程式基底。為了鼓勵創新,將公共程式依據您的情境背景作調整,您可在合約中描述說明服 務內容或預期成果。

《公共程式標準》目標

本標準在於支持開發人員、設計師、管理人員、公共政策制定者:

  • 開發出高品質的軟體與政策,來改善公共服務的交付
  • 開發出能在各種情境下重複使用,且以協作方式維護的程式基底
  • 減少技術債與專案失敗率
  • 更能精細控制其 IT 系統粒度,並做出系統相關決策
  • 以更好的經濟模型改善供應商關係

如果有潛在使用者想採用經由《公共程式標準》測試過的程式基底,便可以預期這些程式基底具有方便重複利用、容易維護、高品質的特性。

《公共程式標準》能有此效果是基於:

  • 為公共程式開發訂立通用術語
  • 制定措施協助高品質公共程式的開發
  • 提出該如何符合準則並實作遵循的指引

《公共程式標準》設計精神就是要跨越時間與科技,不受其限制。

適用對象

《公共程式標準》適用於開發與重複使用公共程式的人:

  • 公共政策制定者
  • 業務與專案經理
  • 開發人員與設計師

在以下單位服務的人:

  • 社會機構、公家機關的組織與行政單位
  • 公家機關在資訊科技與政策服務上的顧問與供應商

適用對象不含公家機關的終端使用者(居民或市民)、記者或學者等。

延伸閱讀

探討公共程式的影片

參與我們

本標準是持續成長的文件。請讀我們的〈貢獻者指引〉,瞭解您可以怎麼做來讓本標準變得更好。

聯絡方式

若有疑問,或想進一步瞭解 Foundation for Public Code,請造訪我們的網站,或是寄電子郵 件到 info@publiccode.net,或撥打我們的電話 +31 20 2 444 500。