GitHub

**GitHub** 是一個線上軟體原始碼代管服務平台，使用 Git 作為版本控制軟體，由開發者 Chris Wanstrath、P. J. Hyett 和湯姆・普雷斯頓・沃納使用 Ruby on Rails 編寫而成。在 2018 年，GitHub 被微軟公司收購。

GitHub 同時提供付費帳戶和免費帳戶。這兩種帳戶都可以建立公開或私有的代碼倉庫，但付費使用者擁有更多功能。根據在 2009 年的 Git 使用者調查，GitHub 是最流行的 Git 存取站點。除了允許個人和組織建立和存取保管中的代碼以外，它也提供了一些方便社會化共同軟體開發的功能，即一般人口中的社群功能，包括允許使用者追蹤其他使用者、組織、軟體庫的動態，對軟體代碼的改動和 bug 提出評論等。GitHub 也提供了圖表功能，用於概觀顯示開發者們怎樣在代碼庫上工作以及軟體的開發活躍程度。

截至 2022 年 6 月，GitHub 已經有超過 5700 萬註冊使用者和 1.9 億代碼庫（包括至少 2800 萬開原始碼庫），事實上已經成為了世界上最大的代碼代管網站和開源社群。截至 2023 年 1 月 26 日，已經有超過 1 億開發人員使用 GitHub。

## 服務

### GitHub

GitHub 平台於 2007 年 10 月 1 日開始開發。網站於 2008 年 2 月以 beta 版本開始上線，4 月份正式上線。
GitHub 裡面的專案可以透過標準的 Git 命令進行存取和操作。同時，所有的 Git 命令都可以用到 GitHub 專案上面。GitHub 開發了針對 Microsoft Windows 和 macOS 作業系統的桌面客戶端。此外，也可以使用第三方外掛程式來實現 Git 功能。

網站提供了一系列社群網路具有的功能，例如讚 (star)、跟随 (follow)、評論。使用者可以透過複刻 (fork) 他人專案的形式參與開發，並可透過協同運作示意圖來檢視有多少開發者參與了開發並追蹤最新的複刻版本。此外網站還有 Wiki（透過一個名為 gollum 的軟體實現）等功能。

GitHub 同時允許註冊使用者和非註冊使用者在網頁中瀏覽專案，也可以以 ZIP 格式打包下載。但是使用者必須註冊登入一個帳號才能討論、建立並編輯專案、參與他人的專案和代碼審查。

GitHub 支援建立不限數量的公開倉庫，已付費使用者可以建立私有倉庫。2019 年 1 月 7 日，GitHub 宣布免費使用者也可以建立私有倉庫，私有倉庫數量不限但每個倉庫最多指定三個合作者。2020 年 4 月 14 日，GitHub 宣布進一步開放核心功能，取消私有倉庫合作者數量限制，並降低了收費帳號費用。

#### 開發語言

GitHub 系統由 GitHub 公司的開發者 Chris Wanstrath 開發。系統採用了 Ruby on Rails 和 Erlang 作為後端。

#### 主要功能

GitHub 通常用於軟體開發。GitHub 還支援以下格式和功能：

* 文件：包括自動生成的、採用類 Markdown 語言的 Readme 檔案（稱作 GitHub Flavored Markdown, GFM）。
* 問題追蹤系統（同時可用於功能需求）
* Wiki
* GitHub Pages 支援使用者透過軟體倉庫建立靜態網站或靜態部落格（透過一個名為 Jekyll 的軟體實現，但是也支援採用諸如 Hexo 等其他部落格引擎搭建）。
* 任務列表
* 甘特圖
* 視覺化的地理位置分析
* 預覽 3D 彩現檔案。預覽功能透過 WebGL 和 Three.js 實現。
* 預覽 Adobe Photoshop 的 PSD 檔案，甚至可以比較同一檔案的不同版本。

#### 倉庫許可證

GitHub 的許可條款並不要求公有倉庫滿足自由軟體標準。在建立軟體倉庫時，GitHub 會詢問使用者準備採取的軟體許可證，此外使用者也可以使用自己的許可證。

### GitHub Enterprise

GitHub Enterprise 和 GitHub 的服務類似，不過它為大型企業的開發團隊量身客製化，並可提供自代管版本伺服器軟體。

### GitHub Pages

GitHub Pages 是 GitHub 提供的一個網頁代管服務，可以用於存放靜態網頁，包括部落格、專案文件甚至整本書。一般 GitHub Pages 的網站使用 github.io 的子域名，但是使用者也可以使用第三方域名。Github Pages 以開源倉庫公開靜態網頁原始碼，可在倉庫 -> 設定 ->Code and automation 里設定， https://github.com/ （頁面存檔備份，存於網際網路檔案館）<使用者名稱>/<倉庫名>/settings/pages。

### Gist

GitHub 提供一個貼上箱風格的站點 GitHub Gist。

Tom Preston-Werner 於 2008 年開發了 Gist 功能。Gist 繼承了貼上箱的觀念，此外還添加了版本控制、復刻、SSL 加密等功能。因為代碼片段也是 Git 倉庫，所以單個代碼片段可以容納多個檔案，並且可以透過 Git 進行操作。因此 Gist 更像一個小型專案。

2014 年 11 月 2 日，Gist 在中國大陸被防火長城封鎖，無法正常存取。

### Student Developer Pack

GitHub 與 Algolia、Microsoft Azure、Bitnami、Crowdflower、DigitalOcean、DNSimple、GitKraken、Heroku、HackHands、JetBrains、Namecheap、Name.com、Orchestrate、Screenhero、SendGrid、Stripe、Travis CI 和虛幻引擎等共同合作，於 2014 年 10 月 7 日發起了一個名為 GitHub 學生開發者套裝的專案。該專案為學生提供了一些免費的開發工具和服務。

## 使用 GitHub 的專案

許多程式庫、開發架構都採用 GitHub 作為為主版本控制平台，其中包括：

## 統計

GitHub 於 2008 年 2 月執行。

在 2009 年 2 月 24 日透過雅虎進行的一次採訪中，GitHub 隊伍成員們宣布在 GitHub 執行的第一年，有共計 46,000 個公共版本庫，它們中有 17,000 個是於最近一個月內建立的。當時，大概有 6,200 個版本庫被衍生（fork）至少一次，有 4,600 被合併。在另一個在 2009 年 6 月 27 日透過雅虎的採訪中，Tom Preston-Werner 宣布版本庫數量已經提升到了 90,000 唯一性公共版本庫，有 12,000 個版本庫被衍生（fork）至少一次，總共有 135,000 個版本庫。

在 2010 年 6 月，GitHub 宣布它現在已經可提供 1 百萬專案，它們中的 60% 是完整的版本庫，但仍然有 40% 是「gist」或代碼片段。2011 年 4 月，GitHub 宣稱存放的代碼庫數量已達到 2 百萬個。2013 年 4 月，GitHub 使用者數達到 350 萬，代碼庫數量達到 6 百萬個。

## 融資

* 2012 年，GitHub 從 Andreessen Horowitz 籌集了 1 億美元的資金，估值為 7.5 億美元。
* 2015 年 7 月 29 日，GitHub 表示已在紅杉資本（Sequoia Capital）領投的一輪融資中籌集了 2.5 億美元。 那一輪的其他投資者包括 Andreessen Horowitz，Thrive Capital 和 IVP（機構風險合伙人）。該輪融資對公司的估值約為 20 億美元。
* 2018 年 6 月 4 日，微軟宣布有意以 75 億美元的價格收購 GitHub。 該交易於 2018 年 10 月 26 日完成。GitHub 繼續作為社群，平台和業務獨立運作。在 Microsoft 的領導下，該服務由 Xamarin 的 Nat Friedman 領導，並向 Microsoft Cloud 和 AI 執行副總裁 Scott Guthrie 匯報。 GitHub 的執行長 Chris Wanstrath 被保留為「技術研究員」，並向 Guthrie 匯報。

## 事件

### 對 GitHub 的封鎖

GitHub 曾在中國、俄羅斯和印度等國被審查和封鎖，雖然此網站是單純的技術社群一般較少具政治敏感訊息的議題，但相關代碼可用於開發突破網路審查等線上隱蔽軟體或者中介軟體；同時因其具有較方便的協同運作功能特性，因此有部分用於非代碼的政治訴求或敏感內容，因此相關政府要求對於該種資訊進行管制。GitHub 在收到政府對某一倉庫的管制請求時，會將公文公開在官方倉庫 github/gov-takedowns（頁面存檔備份，存於網際網路檔案館）。

* 2013 年 1 月 20 日，中國大陸政府的防火長城利用域名污染和關鍵詞過濾等手段封鎖 GitHub。23 日，GitHub 被解封，事件平息。
* 2013 年 1 月 26 日，有中國大陸的使用者在存取 GitHub 時發現憑證無效，經檢查發現，GitHub 的憑證變為了一自簽署的 X.509 憑證，生成時間為 2013 年 1 月 25 日 14 時 29 分 12 秒，有效期一年，故有人推測 GitHub 疑似遭到了中間人攻擊。攻擊持續了約一個小時後停止，存取恢復正常。
* 2014 年 12 月 3 日，GitHub 因使用者發布自殺教學內容而被俄羅斯封鎖。
* 2014 年 12 月 31 日，GitHub 等 32 個網站因使用者發布的伊斯蘭國相關內容而被印度封鎖。2015 年 1 月 10 日，GitHub 被解封，但 2015 年 9 月 12 日 GitHub 在整個印度又被封鎖。
* 2015 年 3 月 26 日，GitHub 遭受了 GitHub 歷史上最嚴重的阻斷服務攻擊。GitHub 堅信攻擊者的目的在於迫使 GitHub 刪除特定類型的內容。截止 29 日，攻擊者共使用了四種 DDoS 攻擊技術。攻擊於 31 日停止。外界有人傳聞這是中國政府所為，但中國政府予以否認。該攻擊工具也被稱為「大炮」。
* 2015 年 8 月，中國政府進一步收緊對網際網路的控制。22 日翻牆軟體 Shadowsocks 作者迫於警方壓力刪除項目。25 日，翻牆軟體 GoAgent 作者自行刪除自己的代碼。同一天 GitHub 再次遭到來自中國大陸的 DDoS 攻擊。部分開發者認為此次攻擊與中國政府有關。
* 2016 年 2 月 29 日，編程隨想的部落格在 Github 上發佈了《趙家人》專案，整理出據稱為中國大陸權貴階層包括 130 多個家族、700 多人的資料和關係網路。其中在 6 月 8 日，中國網路空間安全協會致信 GitHub，稱該專案下的一個 issue（頁面存檔備份，存於網際網路檔案館）誹謗中華人民共和國最高領導人習近平有謀殺嫌疑，要求立刻刪除。這個題為「習近平有重大殺人嫌疑！」的 issue 列舉了 16 條指控習近平犯下謀殺罪行的理由，在 2020 年 2 月已有 2000 個以上的評論，至今仍然保持開放。該 issue 的作者使用者名稱為 CMB-news，可疑的是其於 Github 上的個人首頁（頁面存檔備份，存於網際網路檔案館）顯示該使用者僅在 2016 年做出了數個不含任何代碼的編輯，此後便無活動，亦未見其與專案 zhao 的正式關聯。3 天後 GitHub 公開了這封信（頁面存檔備份，存於網際網路檔案館）。這是 GitHub 收到的第一個來自代表中國大陸官方的請求。
* 2020 年 3 月 26 日，中國大陸多地使用者存取 GitHub Pages 時發現遭遇中間人攻擊，憑證變為一張透過私人 QQ 電子信箱自簽章的憑證，生成時間為 2019 年 9 月 26 日。部分地區遭受攻擊數小時後停止，但也有部分地區持續遭受攻擊 1-2 天且憑證變為了另一張使用 MyMail 自簽章的憑證。DNSMon 系統的憑證資訊顯示同一時間京東等網站也遭到了相同攻擊，尚無證據證明此次事件與審查有關。
* 2021 年 2 月末至今，中國大陸開始對 `*.github.com`，以及 `raw.githubusercontent.com` 的域名進行「間歇性」的封鎖。

### GitHub 限制使用者與專案

* 2019 年 5 月，GitHub 更新了使用者協定，表明 GitHub 的產品和服務適用於美國出口管制法律。
* 2019 年 7 月起，GitHub 基於美國出口管理條例，開始對伊朗、敘利亞和克里米亞的私人 repo 和付費帳戶實施限制，2020 年 4 月起一個名為 Aurelia 的軟體代碼被 GitHub 封鎖引起較大紛爭，其理由為參與的兩個志願者為伊朗人，引起該程式諸多志願者不滿並於矽谷的「 駭客新聞 」論壇大舉批判，後續 GitHub 改變作法重新啟動 Aurelia 頁面但封鎖兩個伊朗人帳號，之前並發生過一名為 Hamed Saeed 的開發者已經移民芬蘭多年但祖籍為伊朗而被封鎖的事件。此事件引發一個後續討論，美國訂定的制裁他國法案僅限於不讓特定外國人使用美國技術，然而 GitHub 上的技術是各國志願者撰寫並無償分享，並非美國購買有著作權的所有物，其中也包含伊朗程式員也就是其實有伊朗的技術，美國無權拿不屬於自己的東西制裁別人甚至「拿伊朗的技術制裁伊朗」。GitHub 最後在爭議下覺得有所理虧而改變作法，被封禁的使用者可以下載回自己的作品，但依然不能在社群里檢視代碼。
* 2020 年 10 月 23 日，美國唱片業協會（RIAA）根據《數字千年著作權法案》（DMCA）向 GitHub 發布了刪除通知，其中要求刪除 youtube-dl 及其分支。GitHub 接受了請求，移除了該專案。2020 年 11 月 16 日，電子前哨基金會正式向 GitHub 傳送了一份質疑移除請求的信，澄清了該軟體並沒有規避任何著作權保護措施。隨後 GitHub 恢復了該儲存庫。GitHub 還在官方部落格中宣布，未來將由技術和法律專家組成的團隊逐項審查所有涉及《數字千年著作權法案》第 1201 節的移除請求。

### 著作權爭議

2022 年 6 月，軟體自由保護組織呼籲開發者「放棄 GitHub」，原因是他們相信 GitHub Copilot 的訓練過程涉及著作權爭議。

## 趣聞

因 GitHub 開源社群性別嚴重失衡，男性群體高達 95% 以上，故 GitHub 常被網友們戲稱為「GayHub」、「全球最大同性交友網站」。

## 參考資料

## 參考文獻

## 外部連結

* 官方網站 （英文）
* GitHub Pages（頁面存檔備份，存於網際網路檔案館）（英文）
* GitHub System Status Messages（頁面存檔備份，存於網際網路檔案館）（英文）
* The GitHub Blog（頁面存檔備份，存於網際網路檔案館）（英文）
* GitHub 的 Facebook 專頁
* GitHub 的 Twitter 帳戶
* GitHub 客戶端使用操作

## 參見

* 自由軟體主機服務比較
* SourceForge