GitHub上的軟體作品也能申請DOI:Zenodo與Github設定教學 / Software Projects on GitHub Can Also Apply for DOIs: A Tutorial on Zenodo and GitHub Configuration
有人注意到我的GitHub保存庫出現了DOI的標示嗎?DOI是學術界確保數位資源能夠長期被人取用的重要方法,常用於學術期刊文章上。但其實任何數位資源都可以註冊DOI,包括發佈在GitHub上的軟體。有了DOI,大家就更容易引用你的作品,也可以為你的作品留下一個確確實實存在的記錄。那麼到底怎麽為GitHub申請DOI?又怎麼讓DOI的徽章出現在GitHub儲存庫的首頁?這篇就讓我們一起來看看怎麼做吧。
Has anyone noticed the DOI badge appearing on my GitHub repositories? DOIs are crucial in academia for ensuring the long-term accessibility of digital resources and are frequently used for journal articles. However, any digital resource can be assigned a DOI, including software hosted on GitHub. With a DOI, it becomes easier for others to cite your work and provides a permanent record of its existence. So, how do you get a DOI for your GitHub repository, and how do you display the DOI badge on your repository's homepage? Let's explore how to do just that in this post.
什麼是DOI? / What Is a DOI?
(圖片來源:https://sciencen.org/o/doi/ )
數位物件辨識符 (DOI, Digital Object Identifier) 就像網路世界的身分證字號,能賦予數位資源一個獨一無二且永久的標記。舉凡期刊文章、研究報告、資料集、官方出版品,甚至是影音檔案或書籍,都能透過 DOI 精確地被辨識。它不僅讓數位資源易於搜尋和引用,更確保了資源的永久可及性,即使網址變更,透過 DOI 依然能找到目標資源。國際標準化組織 (ISO) 制定了 DOI 的相關標準,使其成為國際通用的數位資源辨識系統。
DOI 的運作方式類似網址的轉址服務。根據APA第七版的規定,DOI被要求以網址的形式呈現,例如「 https://doi.org/10.5281/zenodo.11508527 」。它本身並非資源的直接連結,而是一個指向資源所在位置的永久辨識碼。當我們在瀏覽器輸入 DOI 時,系統會自動將其解析到對應的網址,進而開啟資源本身。
國際數位物件辨識號基金會 (IDF, International DOI Foundation) 負責 DOI 系統的管理和營運。該基金會成立於 1998 年,是一個非營利組織,致力於保障 DOI 系統相關的智慧財產權,推廣 DOI 的應用,並確保 DOI 系統的持續發展和改進。透過 IDF 的努力,DOI 系統已成為全球廣泛使用的數位資源辨識標準,為學術研究、資訊管理和知識傳播等領域帶來了極大的便利。
為什麼需要DOI? / Why Register for a DOI?
很多人初次看到這種識別碼的做法時會感到難以理解。因為對大部分的人來說,許多資源都可以用網址來直接開啟就好,為何還要另一個長得像網址的DOI呢?早期在SEO尚未普及的時代裡,大部分的資源都需要透過表單查詢才能找到,它們並不允許使用者直接開啟網址就取得資源,而DOI則是給這些資源另一種取用的管道;另一方面,由於數位資源容易複製的特性,使得不同的網站常常提供的都是同一份資源,我們需要仰賴DOI來確認這是否是同一份資源;最後,一般網站的網址是跟隨企業、機構、組織而命名。當機構或組織發生名稱變更的時候,網址通常也會跟著改變。早期很多人喜歡用瀏覽器的「書籤」(bookmark)功能來保留資訊,但通常他們也會在過了數年後,發現書籤大部分的連結都已經無法取用了。
考慮到上述幾個問題,DOI的機制主要是能夠確保即使資源的儲存位置或網址發生變更,使用者依然可以透過不變的 DOI 找到所需的資源。
DOI是怎麽制訂的? / How Are DOIs Assigned?
DOI 碼由前綴和後綴兩部分組成,中間以斜線「/」分隔。前綴通常以「10.」開頭,後綴則由資源的發布機構指定,以確保每個 DOI 的唯一性。從上圖的例子中,我們可以注意到,我在GitHub申請到的DOI,其實都是來自於Zenodo這個組織所提供。
Zenodo 是一個開放的數位典藏庫 (digital repository),由歐洲核子研究組織 (CERN) 和 OpenAIRE 共同建立。它讓研究人員可以分享和保存各種研究產出,例如出版品、資料、軟體、簡報等等。Zenodo 的一大特色是它會為每個上傳的檔案授予一個數位物件識別碼 (Digital Object Identifier, DOI)。這個識別碼就像網路上的身分證,讓其他人可以輕鬆找到並引用你的研究成果,確保你的貢獻得到應有的肯定。此外,Zenodo 提供永久保存的功能,讓你的研究資料在 CERN 資料中心安全保存,不必擔心遺失。
https://zenodo.org/account/settings/github/
有鑑於現在越來越多學術研究者都用GitHub保存它們的學術研究成果,Zenodo推出了與GitHub保存庫深度整合的便利功能。只要你將GitHub保存庫的取用權限授權給Zenodo,它不僅會為你的保存庫提供DOI,也會為保存庫裡每個release自動建立DOI。
具體到底要怎麼讓你在GitHub上的作品取得DOI呢?讓我們一步一步來看看怎麽操作吧。
Stage 1. 準備階段 / Preparation Stage
準備階段只需要進行一次,完成之後就不用再作了。在準備階段裡,我們有兩件任務要完成:
- 擁有GitHub帳號,並且建立了你的保存庫。
- 用GitHub註冊Zenodo帳號並登入。
1-1. GitHub與保存庫 / GitHub and Repository
https://github.com/pulipulichen?tab=repositories
只要是投身在軟體工程領域的人,應該都已經有GitHub帳號,而且在上面建立保存庫了吧?如果沒有的話,可以看看進度條編輯群在「[Git][教學] 02. 開始使用 GitHub, 註冊與建立repo。」裡面的說明,建立一個GitHub帳號並建立保存庫。
1-2. Zenodo與GitHub連結 / Zenodo and GitHub Integration
Zenodo提供的多種註冊帳號方案中,最直接的就是使用GitHub來登入了。
- Zenodo Sign up: https://zenodo.org/signup/
下一步就是使用你的GitHub帳號登入。現在大家通常會搭配GitHub的的二階段驗證(2FA, Two-Factor Authentication),所以還會要你還要搭配手機的APP來登入。這邊的操作步驟就很複雜了,請參考「How to enable 2FA on GitHub」來設定吧。
確認登入後,接下來就可以按「Authorize zenodo」將部分權限授權給zenodo。
嗯?出現了奇怪的錯誤訊息。
https://zenodo.org/login/?next=%2F
讓我們再重新用GitHub登入zenodo看看。
可以順利登入了。
接著再從右上角的選單進入「GitHub」。
https://zenodo.org/account/settings/github/
下面看到你的保存庫列表,就表示你完成了Zenodo跟GitHub的整合了!
Stage 2. 啟用DOI階段 / DOI Registration Stage
如果你要為你的某一個GitHub保存庫申請DOI,那就得要按照以下步驟,一一進行操作。
2-1. 在Zenodo裡將保存庫的開關設為ON / Turn the repository switch ON in Zenodo
https://zenodo.org/account/settings/github/
我們在Zenodo的GitHub頁面找尋你要申請DOI的保存庫,然後把保存庫後面的開關從「OFF」切換為「ON」。
如果你的保存庫是剛剛才建立,而尚未同步到Zenodo的時候,你可以按右上角的「Sync now」來讓Zenodo立即同步GitHub。如果你的保存庫數量有點多的話,那這個同步大概會需要你等個5分鐘。同步完成後,你需要重新整理網頁,新的保存庫才會出現在列表上。
確認將開關切換到「ON」之後,我們可以點左邊的保存庫名稱,進入查看該保存庫的版本跟DOI細節。
由於我們的保存庫尚未建立release,也就是正式的發佈版,所以zenodo不會給我們DOI。此時請按右上角的「Create release」,連結到你的保存庫建立發佈版的頁面。
2-2. 在GitHub保存庫建立發佈版 / Create a Release in GitHub Repository
透過Zenodo的「Create release」開啟GitHub網頁後,你會看到建立發佈版的表單。接下來我們要為保存庫現在的狀態設定名稱。在Git裡,tag (標籤)是為現在的軟體狀況建立快照的功能。release (發佈版)是為tag給予更加正式的版本號,並且可以上傳附加檔案供使用者下載的功能。release (發佈版)跟tag (標籤)在Git中有特別的定義,我們以下就用原文來稱呼它們。
首先我們在左上角的「Choose a tag」選擇tag。如果你還沒建立過tag,也可以直接輸入字串來創建。我就簡單一點,用時間來命名。
選擇好tag後,右邊就會出現一些按鈕。我們要按的是「Generate release notes」建立發佈版的訊息。
此時下面的表單會自動產生必要資訊。當然,你可以再將發佈版的資訊填寫的完整一些。不過我這裡只是做個範例,就只使用自動產生的內容而已。接著按下面綠色的「Publish release」按鈕來發佈release。
接著你便可以看到成功建立的release了。
2-3. 在Zenodo取得DOI / Get DOI on Zenodo
讓我們回到Zenodo的頁面,你會看到Zenodo正在取得GitHub保存庫剛剛建立的release的相關資料。
稍待片刻,大概等個5分鐘左右。網頁不會自己更新,你需要自行重整網頁。如果release已經同步完成,此時你就可以看到DOI徽章。
按下DOI徽章,你會看到Zenodo幫你準備好各種呈現DOI徽章的不同語法。其中我們會在GitHub用到的是Markdown語法。Markdown的內容大概會是長下面這個樣子:
[](https://zenodo.org/doi/10.5281/zenodo.11508527)
有了這串DOI徽章的Markdown語法,我們就可以把它加到GitHub保存庫的README.md裡面囉。
2-4. 在GitHub保存庫加上DOI徽章 / Adding a DOI Badge to a GitHub Repository
如果你的GitHub保存庫有README.md,那可以在你的保存庫首頁按下「Edit file」按鈕來編輯它。
(1) 把剛剛取得的DOI徽章Markdown語法貼到最上面,(2) 按下「Commit changes...」提交變更。
然後設定提交訊息,按下「Commit changes」按鈕確認。
DOI徽章就出現在你的GitHub保存庫首頁囉。
Stage 3. 引用GitHub保存庫 / Citing Your GitHub Repository
有了DOI徽章之後,Zotero便能根據DOI徽章來引用資料。如果你的Zotero開啟、並且在瀏覽器上正確安裝了Zotero Connector,(1) 按右鍵選擇Save to Zotero,就可以看到 (2) Save to Zotero (DOI)。
按下「Save to Zotero (DOI)」,Zotero會分析網頁中的DOI徽章,然後將你的GitHub保存庫視為是一項可匯入的文獻。
匯入之後,你可以注意到Zotero在額外增列標註了「DOI: 」,表示它有正確捕捉到DOI的資訊。
開啟DOI連結,你會看到Zenodo的頁面,以及Zenodo將GitHub保存庫release當時的資料全部備份起來的結果。未來即使GitHub關閉、保存庫裡面的程式碼被移除了,Zenodo還是會將程式碼保留下來,供後續其他人使用。
https://www.zotero.org/download/
如果你也想使用Zotero引用別人的保存庫,那可以看看「書目管理工具Zotero介紹」這篇的教學來安裝喔。
GitHub保存庫DOI跟各版本的DOI / GitHub Repository's DOI and Releases' DOIs
如果你繼續照著2-2的步驟,在GitHub建立新的release,這時候Zenodo會為下一個release產生新的DOI,並將徽章的文字自動轉換為最新release的DOI。此時我們可以看到每個release都有著自己的DOI,但是在DOI徽章的後面,我們還有一個保存庫的DOI。
[](https://doi.org/10.5281/zenodo.12513720)
DOI徽章的Markdown語法可以找到保存庫的DOI是「10.5281/zenodo.12513720」,而Zotero實際上引用的就是保存庫的DOI。即使建立新的release,保存庫的DOI也依然不會改變。
當然,如果你只想要引用特定版本的release,那引用時就要選擇release的DOI,而不是保存庫的DOI囉。
結語 / Conclusion
為GitHub保存庫申請DOI確實可以增加軟體的曝光度。如果你更進一步地將ORCID開放學者身份識別碼跟Zenodo和GitHub連結之後,你就可以在這寬廣的網際網路世界中,以一個全世界公認的可識別身份來聲明你創造了獨一無二的作品。
未來其他人要使用你的程式碼,或是在論文裡表示用到你開發的工具,他們都能用DOI明確地將功勞歸功於你。而即使歷經滄海桑田、物換星移的轉變,由歐洲各大組織共同維護的Zenodo還是很有可能可以持續運作,好好地將你在GitHub保存庫的release程式碼保留下來,讓未來的人們能夠奠基在你的創作之上,創造出更加美好的世界。
這篇關於在GitHub申請Zenodo DOI的介紹就到這裡了。文章最後要來問大家的是,關於學術引用的這件事情,你聽過哪些名詞呢?
- 1. DOI,作品的識別號
- 2. ORCID,作者的識別號。
- 3. ISBN,書本的識別號。
- 4. ISSN,連續性出版品的識別號。
- 5. Handle System:數位典藏藏品的識別號。
- 6. 其他:歡迎在下面留言,分享你的看法吧!有設定成功的話也歡迎在下面說一聲喔!