馮昌揚
(華中師范大學信息管理學院 武漢 430079)
開放代碼在學術交流中越來越受到重視。開放代碼可以釋放軟件的巨大潛力,讓不同機構之間能夠共享代碼,避免重復勞動。在過去幾年中,許多國家政府、政策制定者、科學基金等科技資助機構、專業協會、出版商和科學期刊,都強調了開放代碼的重要性和益處。一些國家和國際組織一直在積極推動開放代碼,因此,了解它們的開放代碼計劃對我國開展開放代碼活動有借鑒意義。
目前,許多國家和國際組織如英國、澳大利亞、美國、新西蘭、歐盟委員會(European Commission)、研究數據聯盟(Research Data Alliance,RDA)、軟件遺產項目(Software Heritage)等都開啟了開放代碼計劃。
英國政府的開放代碼計劃起步較早,發展比較成熟。特別是技術社區,一直致力于開放和重復使用源代碼[1]。早在2010年,英國政府就發布了《政府的開源戰略》(An Open Source Strategy for Government)[2],希望通過鼓勵開源思維來鼓勵政府內部創新,并通過幫助開發充滿活力的市場來鼓勵外部創新,從而使IT行業和更廣泛的經濟體從政府生成的信息和開發的軟件中受益。2012年,他們又發布了《采購政策說明8/11:采購開源IT》(Procurement Policy Note8/11:Procurement of Open Source IT)[3],該政策提到“政府部門在購買信息通信技術解決方案時,應確保公平地考慮開源軟件”。2016年,英國政府發布《數字服務標準》(Digital Service Standard),該標準第8條“開放所有的新的源代碼”(Make all new source code open)對開放源代碼進行了詳細闡述,即“開放所有新源代碼,使其可以被再利用,并在合適的許可下發布(如若不能對源代碼的特定子集執行此操作,則需提供令人信服的解釋)”。該標準認為開放源代碼意味著:其他服務可以重復使用用戶創建的軟件,可以降低整個政府的成本,用戶可以避免啟動不能輕易結束的技術合同。該標準亦對開放源代碼的評估標準進行了解釋,要求用戶:解釋如何使新的源代碼開放和再利用,在開放的互聯網源代碼存儲庫中存儲代碼,描述如何接受對代碼的貢獻和評論,解釋如何處理代碼的更新和錯誤修復,解釋用于發布代碼的許可證,確認擁有知識產權,解釋沒有公開的代碼以及原因,解釋另一個部門的團隊如何再利用代碼[4]。2017年,英國政府部門又發布了《開放并使用開源代碼》指南(Be Open and Use Open Source),該指南認為需要公開代碼,并使用開源技術來提高透明度,靈活性和問責制[5]。
此外,英國政府還牽頭成立了“數字化五國”(Digital 5),旨在促進開放標準、開放源碼、開放市場、開放政府。
澳大利亞的開放代碼計劃主要由聯邦政府、數字化轉型機構和各州政府實施。
2011年,聯邦政府發布《澳大利亞政府機構開源軟件指南》(A Guide to Open Source Software for Australian Government Agencies)[6]指導機構“考慮采購的所有軟件均為開源軟件。”這無疑是聯邦政府釋放的致力于開源的信號,而govCMS正是將政策付諸行動的例子。聯邦政府的開源政策分為三個驅動原則:“原則1:澳大利亞政府ICT采購流程必須積極公平地考慮所有類型的可用軟件”,在采購過程中,澳大利亞政府機構必須同時考慮專有和開源軟件解決方案,這里的關鍵驅動因素是物有所值;“原則2:供應商在與澳大利亞政府機構溝通時必須考慮所有類型的可用軟件”,供應商必須同時考慮專有和開源軟件,聯邦政府機構必須在其招標文件中對此進行規定;“原則3:澳大利亞政府機構將積極參與開源軟件社區,并在適當的時候做出貢獻”,澳大利亞機構將跟上開源軟件的全球最佳實踐,并將積極參與開源軟件社區。
此外,在2013年聯邦選舉之前,現任聯邦政府概述了其對電子政務和數字經濟的政策(Coalitions Policy for E-Government and the Digital Economy)[7]。該政策的一個關鍵方面是在線遷移所有澳大利亞政府的主要服務和與個人的互動,并將2017年定為實現這一目標的現實可行日期。該任政府建立臨時數字化轉型辦公室(Digital Transformation Office,DTO),后改組成數字化轉型機構(Digital Transformation Agency,DTA);發布《數字服務標準》(Digital Service Standard)[8]的Alpha版本,該版本改編自英國政府的《數字默認服務標準》(Digital by Default Service Standard)。該標準的第8條標題為:“公開源代碼——默認情況下,公開所有新源代碼。”[9]DTA認為共享源代碼非常重要,其他具有類似需求的用戶可以對它進行再利用。同時,開源有助于降低項目和其他人的成本,避免鎖定,停止重復,增加透明度,通過其他開發人員的改進增加收益。該標準的Alpha版本實施期間,用戶需要表明已考慮過適合其服務的開源許可證;考慮在開源社區廣泛采用的平臺上發布源代碼,例如GitHub。在Beta版本實施期間,用戶需展示:如何公開和再利用源代碼,例如,存儲在存儲庫中,在許可下發布代碼,使用API;為貢獻者提供的計劃或指導;如何處理代碼的更新和錯誤修復。
部分州政府也鼓勵開源。如:《數字西澳大利亞州:西澳大利亞州政府信息通信技術戰略(2016—2020)》(Digital WA: State ICT Strategy2016—2020)[10]在其路線圖中表示:“政府采購將得到簡化......采購選項范圍擴大,以促進眾包,開源解決方案以及從初創企業和中小企業采購。”
2016年8月,美國行政管理和預算局(Office of Management and Budget,OMB)發布了《聯邦源代碼政策》(備忘錄M-16-21)(Federal Source Code policy,Memorandum M-16-21)[11],其中包括授權聯邦機構開源他們開發的代碼,以便在聯邦政府中廣泛使用。這是美國政府第一次制定政策,要求被聯邦政府資助的網站、應用程序和其他軟件項目發布源代碼。該政策還要求各機構根據三年試點計劃向公眾發布至少20%的用戶開發代碼。OMB還為聯邦機構建立了與開源社區合作的原則和指南,以便在代碼開發和改進方面進行協作并迎接共同的挑戰。這些要求旨在對機構內部和跨機構的聯邦政府軟件開發進行改進,消除重復成本,通過加強競爭促進技術創新,實現公眾開放性、透明度和可訪問性的需求。OMB指示每個聯邦機構的首席信息官(CIO)與首席采購官(CAO)協商,制定全機構政策,以實施聯邦源代碼政策的要求。近年來,美國政府已經發布了一些項目,包括白宮請愿平臺[12]和vets.gov的新測試版,code.gov還提供了各種政府開源項目的鏈接[13]。在奧巴馬的兩個任期內,他還監督了三個以技術為重點的聯邦組織的建立,消費者金融保護局(Consumer Finance Protection Bureau)[14],美國數字服務(United States Digital Service)[15]和18F[16],這三個組織都經常在Github上發布他們的工作。
美國地方政府也逐步加入這項運動。2018年5月,加州技術部宣布了“開源和代碼再利用政策”(Open Source and Code Reuse Policy)[17],以提升州政府對開源軟件的使用。該政策要求各機構將開發、購買或再利用開源軟件作為新的IT項目和財務的第一選擇(諸如威脅國家或國家安全的情況則被視為例外情況[18])。該政策還追溯到州政府機構正在使用的軟件,要求代理商“廣泛地提供這些代碼,以便以一致的方式在州政府中重復使用”。該政策指出,在州政府機構中重復使用定制開發的代碼“可以為納稅人帶來巨大利益,包括降低重復成本”,旨在“促進州政府的創新和協作”。除了上述要求,該政策還要求創建在線存儲庫code.ca.gov用以發布代碼。
新西蘭的《新西蘭政府開放獲取和許可——軟件擴展》(New Zealand Government Open Access and Licensing—Software Extension,NZGOAL-SE)[19]為各機構提供了實現開源的方法。該政策通過推薦一系列開放許可選項,概述使用它們的好處并明確如何操作,從而促使各部門根據條款發布軟件源代碼,以便其他部門可以調整或修改代碼以構建自己的軟件。它還解釋了與代理商的軟件開源許可相關的法律和政策背景;制定了一系列政策原則指導各機構公開分享軟件代碼;主張為此目的使用特定的開源軟件許可證;為幫助代理商做出具有法律效力且實際有用的決策,該政策制定了審核和發布流程,以指導代理商審核他們建議發布以供再利用的軟件。
2000年12月,歐盟委員會制定了一項使用開源軟件(OSS)的戰略,該戰略為在UNIX系統上推薦的Apache Web服務器的識別和使用創建了背景。2003年7月,該戰略的修訂版被提交給技術信息學委員會(Comité Technique Informatique,CTI),該戰略推薦使用開源軟件為歐盟的博客和公共論壇。在該戰略執行的2007—2010年期間,歐盟開發了歐盟公共許可證[20](European Union Public Licence,EUPL),現已被私營部門廣泛使用。
2010年初,委員會對組織內的開源軟件進行了評估。在前十年歐盟委員會使用開源軟件的基礎上對該戰略進行修訂,修訂版戰略涵蓋了2011—2013年。該戰略的關鍵組成部分是:委員會將繼續通過產品管理程序采用開源技術和產品;委員會將在IT采購中考慮開源解決方案和專有解決方案; 對于新信息系統的開發,開源將是首選;委員會將澄清開源的立場等[21]。
研究數據聯盟為開放代碼專門設立了軟件源代碼識別工作小組(Software Source Code Identification Working Group)和軟件源代碼興趣小組(Software Source Code Interest Group)。
其中,軟件源代碼識別工作小組認為軟件源代碼與研究數據和科學文章不同,絕大多數軟件源代碼是在學術界之外開發和使用的,如在工業界和開發者社區。在實踐中,軟件源代碼被引用的方式通常與在學術出版中完全不同。該工作組的目標是匯集直接參與軟件識別的廣泛利益相關者小組,計劃的輸出是給學術界提供具體建議,以確保學術參與者采用的解決方案彼此兼容,特別是與全球數千萬開發人員的軟件開發實踐相容[22]。
軟件源代碼興趣小組認為軟件源代碼在科學研究的所有領域中發揮著關鍵作用,軟件源代碼是研究可重復性和可重用性的必要組件。因此,軟件源代碼應該以與其他研究輸入和輸出相同的方式進行適當的策劃。該興趣小組提供了一個論壇,討論有關軟件源代碼的管理、共享、發現、存檔和出處問題。它特別關注產生研究數據和在科學出版物中發揮重要作用的源代碼[23]。
軟件遺產項目[24]是一項由法國國家信息與自動化研究所主持的計劃,其目標是收集、組織、保存和訪問所有可用軟件的所有源代碼。通過構建通用且可持續的軟件檔案,軟件遺產項目旨在為社會、科學和工業建立必要的基礎設施。提供單一且通用的存檔使得軟件源代碼隨時可用,有助于訪問其中包含的知識,支持編程教育,并創建具有該軟件所有知識的參考目錄,也即一種軟件維基百科。軟件遺產項目憑借其分布式基礎架構及其國際合作伙伴,可確保存檔的長期可用性和可靠性。
迄今為止,軟件遺產項目已經收集了超過8 300萬個軟件項目,存檔了超過40億個源文件,以及所有相關的開發歷史。例如,存檔了阿波羅11號制導系統的源代碼[25],推廣了Web的NCSA Mosaic Web瀏覽器的源代碼[26],等等。軟件遺產項目還與HAL建立了合作伙伴關系,HAL是一個多學科開放檔案館,旨在存放和傳播研究級科學文章(包括已出版的和未出版的),以及來自法國或外國教學和研究機構以及公共或私人實驗室的論文[27]。此外,該項目還得到了一些國際合作伙伴的支持,如微軟、博洛尼亞大學、華為、諾基亞貝爾實驗室、英特爾、GitHub等。2017年,軟件遺產項目與聯合國教科文組織簽署了一項協議,支持保存和共享軟件源代碼。
上述國家和國際組織都十分重視開放代碼的貢獻,各自在其計劃文本中鄭重進行了詳細說明。這些貢獻主要包括:節省時間和金錢,從而更有效地利用資源;鼓勵公共和私營部門進行開放式創新;促進經濟增長,主要是通過私營部門能夠利用和支持政府對其公開發布的軟件進行再投資;有助于具有共同或類似目標或利益的公共和私營部門成員用戶形成信任社區;通過這些用戶社區以單一機構無法實現的方式持續不斷地維護已發布的軟件代碼;在某些情況下,提供用于創建或提供公共數據和服務的方法或算法,可以實現批判性分析,有助于發布機構改進方法或算法。
代碼授權許可通常包括作者對代碼保留的權利和放開的限制,以及用戶獲取代碼后被準許和禁止執行的操作。上述所有國家和國際組織都明確強調代碼授權許可的使用,例如:英國政府明確提出“應該在Open Source Initiative兼容的許可下發布代碼”,例如,其政府數字化服務(Government Digital Service)使用MIT許可證。所有公務員產生的代碼均自動由英皇享有著作權(Crown Copyright)。澳大利亞政府單獨發布文件《澳大利亞政府開源軟件許可風險框架》(Australian Government Open Source Software Licensing Risk Framework),概述了了解開源許可風險的重要性,以及提供識別和管理與開源軟件許可相關的風險的方法[28]。如前所述,歐盟開發了EUPL,EUPL是歐盟倡議的第一個歐洲自由/開源軟件(FOSS)許可證,它是以22種歐洲語言開發的獨特法律文書,任何人都可以將其用于軟件分發。EUPL的目的是從歐洲機構本身開始,鼓勵新一輪的公共行政部門采用FOSS模式來對其軟件和知識進行估值。
上述機構或組織大都在其網站列舉了適用的例外情況。例如:美國政府在其網站列舉了如下幾點:①源代碼的共享受法律或法規的限制,包括但不限于——專利或知識產權法,出口資產法規(Export Asset Regulations),國際武器貿易管制法規(International Traffic in Arms Regulation)以及管理機密信息的聯邦法律和法規;②共享源代碼會產生可識別的風險,從而損害國家安全,政府信息的機密性或個人隱私;③共享源代碼會對機構系統或人員的穩定性、安全性或完整性造成可識別的風險;④共享源代碼會給機構任務、程序或操作帶來可識別的風險;⑤CIO認為不開放源代碼符合國家利益。同樣地,英國政府提出,不開放代碼的主要原因是它與尚未公布的政策有關。在這種情況下,在政策發布后應盡快開放代碼。它們還出臺了《代碼不應開放的情況指南》(When Code Should Be Open Or Closed)[29]以及《開放代碼的安全注意事項指南》(SecurityConsiderations When Coding in the Open)[30]。
代碼審核是開放的前提,也是保證代碼質量的基礎。例如,新西蘭政府建議政府機構遵循審核和發布流程,然后在FOSS許可下發布軟件源代碼以供重復使用,并在技術和法律團隊的要求下提供幫助。該過程包括五個主要階段:版權相關權評估、例外評估、選擇FOSS許可證、申請所選許可證和發布該軟件[31]。澳大利亞政府則針對Discovery stage、Alpha stage、Beta stage分別提出了不同的審核評估流程[32]。Software Heritage則是利用Forge跟蹤問題和錯誤,進行代碼審查等。此外,Software Heritage也有一組員工專門處理代碼審核工作[33]。
開源是推動新興產業發展并推動產業長期發展的價值所在。從人工智能的爆炸式增長,如TensorFlow,MXNet和PyTorch等框架項目,到Hyperledger,Bitcoin和Ethereum等區塊鏈項目,以及像Kubernetes,Prometheus和Istio這樣的基礎設施顛覆者,開源無不發揮其作用。就作者所知,我國尚沒有政府部門實施開放代碼計劃,我國亟待加快開放代碼行動。上述主要國家和國際組織的開放代碼計劃可以給我國提供如下啟示。
閉源可能會導致對基本相似的代碼的重復收購以及納稅人資金的低效使用。開放代碼可以促進機構內部和跨機構的員工合作,降低成本,簡化開發過程,應用統一標準,并確保創建和提供信息的一致性。我國應該高度重視開放源代碼的價值,積極開展與全球范圍內開放代碼行動的合作。在開放科學與開放社會環境下,開放政府、開放創新都離不開開放代碼。所以,如前所述,許多國家政府部門和國際組織都很重視開放代碼的價值。從整體上我國政府部門在開放代碼行動上對世界所作的貢獻不大,這與我國目前所處的世界地位和具備的綜合國力有很大反差。我國應該站在開放代碼運動的國際前列,積極參與或主導相關行動的實施和政策的制定。
開源軟件/代碼的保護在我國法律界是一個尚未有明確規范的領域。我國目前保護開源軟件的法律主要是《著作權法》和《計算機軟件保護條例》。但這兩部法律均沒有明確定義“開源”。《計算機軟件保護條例》還認為“同一計算機程序的源程序和目標程序為同一作品。”但從實際情況來看,開放源程序和發布目標程序是兩種不同的行為。軟件著作權人依法享有修改權,但是在發行或網絡傳播時,不提供源代碼是無法轉讓或授予他人修改權的。此外, 《計算機軟件保護條例》還提到“軟件著作權人可以全部或者部分轉讓其軟件著作權,并有權獲得報酬”,其中的部分轉讓,是否包含修改權的部分轉讓尚未明晰。另外,還有比如如何確定侵權行為的判斷依據等,這些問題的解決方案都是現行法律體系需要補充或完善的內容。
制定開源代碼公開標準有助于鼓勵和規范開源代碼行為。標準制定的過程應該保持理念開放,程序開放,讓利益相關方享有知情、評議、參與等權利。制定的標準應和國際標準、其他層級標準、同級其他標準相協調,做到不矛盾、不重復、不交叉,但又立足于中國國情。例如,哪些代碼是可以公開的,每年新公開的代碼在開發代碼總數中占多大比重;哪些代碼是暫時不能公開的,多久以后或者什么情況下可以公開;哪些代碼是不能公開的,不能公開的情況包括哪些;公開代碼需要走哪些程序;閉源代碼重新開源需要走哪些程序,等等,這些都是需要在標準里闡述的內容。
文章對一些主要國家和國際組織的開放代碼計劃進行了特征分析。這些開放代碼計劃對于在世界范圍內促進代碼的開放共享,克服代碼開放共享的政治、經濟、倫理、法律、社會、機構、技術障礙,實現開放研究與開放創新,具有至關重要的作用[34]。雖然不同國家政府部門和國際組織的開放代碼行動各具特色,但是它們都有關注和強調開放代碼的價值和貢獻,注重知識產權,強調代碼授權許可,強調例外情況,注重代碼、軟件審核流程。我國應該高度重視開放代碼的價值,借鑒國際上開放代碼行動的經驗,完善開源軟件法律保護體系,制定開源代碼公開標準,以便為全面促進代碼開放共享、深化科技創新和提升國家創新能力提供政策保障。
(來稿時間:2018年11月)