前言
本專案使用 Go 實作了一個 GitHub 排名系統,雖然以下網站都可以查詢 GitHub 排名,但是它們各自存在一些問題。
利用 GitHub 本身的進階查詢功能,可以查詢到像是使用者的追蹤者數量排名。優點是資料即時且正確,但缺點是有些特殊排名是查詢不到的,例如使用者儲存庫的星星總數的排名。畢竟 GitHub 的進階查詢主要是用來查找特定資源的,而不是用來查看排名的。
Gitstar Ranking 是一個專門做 GitHub 排名的網站。這個網站的優點是介面簡單清楚。但是它只提供星星總數的排名,而且有廣告干擾。
Git Awards 也是專門做 GitHub 排名的網站。優點是提供程式語言加上使用者地理位置的排名,例如可以查到台灣的 GitHub 使用者以 PHP 為主要語言的儲存庫星星總數的排名,但是缺點是所有的排名都是基於程式語言去做分類後排名的,而且一般使用者和組織的排名是混在一起的。
因此,本專案希望實作一個可以根據不同條件來做 GitHub 排名的網站。
排名內容
對象
為了減輕系統負擔,並過濾掉一些不合適的帳號,不同的排名對象在蒐集時會設下一些門檻。排名對象有以下三種:
- 一般使用者(user):追蹤者數量須大於 250 名,儲存庫數量須在 1,000 個以內。
- 組織(organization):儲存庫數量須介於 25 到 1,000 個之間。
- 儲存庫(repository):星星數量須大於 100 個以上,無論是否為複製(fork)的儲存庫。
如果一般使用者因為追蹤者數量不到 250 個,或是組織的儲存庫數量超過 1,000 個,可以透過將帳號添加到特殊名單的方式讓系統做排名。
時間範圍
2007 年 10 月 1 日至今。
項目
一般使用者
至 2021 年 3 月 1 日為止,符合排名門檻的一般使用者約有 16,500 個。排名項目有以下:
- 追蹤者(follower)總數排名
- 追蹤者總數依使用者地理位置排名
- 儲存庫星星(stargazer)總數排名
- 儲存庫星星總數依使用者地理位置排名
- 儲存庫星星總數依主要程式語言排名
- 儲存庫關注者(watcher)總數排名
- 儲存庫關注者總數依使用者地理位置排名
- 儲存庫關注者總數依主要程式語言排名
- 儲存庫複製(fork)總數排名
- 儲存庫複製總數依使用者地理位置排名
- 儲存庫複製總數依主要程式語言排名
- 程式碼片段(gist)星星總數排名
- 程式碼片段星星總數依使用者地理位置排名
- 程式碼片段複製總數排名
- 程式碼片段複製總數依使用者地理位置排名
組織
至 2021 年 3 月 1 日為止,符合排名門檻的組織約有 55,400 個。排名項目有以下:
- 儲存庫星星總數排名
- 儲存庫星星總數依組織地理位置排名
- 儲存庫星星總數依主要程式語言排名
- 儲存庫關注者總數排名
- 儲存庫關注者總數依組織地理位置排名
- 儲存庫關注者總數依主要程式語言排名
- 儲存庫複製總數排名
- 儲存庫複製總數依組織地理位置排名
- 儲存庫複製總數依主要程式語言排名
儲存庫
至 2021 年 3 月 1 日為止,符合排名門檻的組織約有 224,000 個。排名項目有以下:
- 星星總數排名
- 星星總數依主要程式語言排名
- 關注者總數排名
- 關注者總數依主要程式語言排名
- 複製總數排名
- 複製總數依主要程式語言排名
週期
三種類型的排名都是每週更新一次資料、排名一次。
技術架構
後端:Go。
資料庫:MongoDB。
前端:JavaScript、Vue。
UI:Vuetify。
主機:1 CPU Core、1 GB RAM 的 Ubuntu 20.04 LTS 虛擬主機。
網頁伺服器:Caddy。