OPEN SOURCE GUIDE
オープンソースに貢献する
Arrow keys / Space で操作
ゴール: OSSの仕組みを理解し、初めてのContributionを成功させる
オープンソースの定義と代表例
→ オープンソースの文化と参加する意義を知る
Fork・Clone・PRの一連のワークフロー
→ 他人のリポジトリに安全に貢献する方法
MIT・Apache・GPLとContributor License Agreement
→ 法的な約束事を理解して安心して参加する
Issue・PR・レビューのエチケット
→ OSS特有の礼儀と作法を身につける
README・LICENSE・CONTRIBUTING.mdの準備
→ 受け手から出し手になるステップ
OPEN SOURCE SOFTWARE
ソースコードが公開されていて、誰でも自由に閲覧・利用・改変・再配布できるソフトウェア。
世界中の開発者が協力して作り上げる、ソフトウェア開発のムーブメント。
有名なOSSの例
普段使っているツールの多くがOSS。私たちは既にOSSの恩恵を受けている。
実際のプロジェクトのコードを読み、プロの書き方を学べる。コードレビューも受けられる。
GitHubのContribution履歴が公開される。就職・転職時に実力を証明できる。
世界中の開発者とつながれる。メンターが見つかることも。
自分が使っているツールをより良くする。次の開発者の助けになる。
FORK
他人のリポジトリを自分のGitHubアカウントにコピーする操作。GitHub上のボタンで行う。
CLONE
リポジトリをローカルPCにダウンロードする操作。git cloneコマンドで行う。
Fork
Clone
Branch
Code
Commit
Push
PR
探し方
good first issue ラベルを検索help wanted ラベルも初心者向けおすすめの始め方
コードを書かなくてもOSSに貢献できる。まずは小さな一歩から。
CLAとは?
コントリビューターが、自分の提出したコードに対する権利関係を明確にするための法的合意書。
初回のPull Request時にサインを求められることがある。
なぜ必要?
CLAがあるプロジェクト例
大企業主導のOSSに多い。CLAbot が自動で確認する。
OSSに参加する際、ライセンスの理解は重要。自分のプロジェクトを公開するときにも必要。
| ライセンス | 商用利用 | 改変 | 再配布 | ソース公開義務 | 特徴 |
|---|---|---|---|---|---|
| MIT | OK | OK | OK | なし | 最もシンプル。著作権表示のみ必要 |
| Apache 2.0 | OK | OK | OK | なし | 特許保護あり。企業での利用に安心 |
| GPL v3 | OK | OK | OK | あり (コピーレフト) | 派生物もGPLにする必要あり |
| BSD | OK | OK | OK | なし | MITに近い。歴史的に古い |
迷ったら MIT が一番扱いやすい。企業向けなら Apache 2.0。
CONTRIBUTING.md とは?
プロジェクトへの貢献方法を説明するガイドライン文書。PR を出す前に必ず読むこと。
リポジトリのルートに置かれていることが多い。
よくある記載内容
Issue のエチケット
PR の書き方
#123 で参照レビューへの対応
心がけ
CODE_OF_CONDUCT.md
プロジェクトに参加する全ての人が守るべき行動ルールを定めた文書。
健全で包摂的なコミュニティを維持するために存在する。
推奨される行動
禁止される行動
多くのプロジェクトが Contributor Covenant をベースに採用している。
必要なファイル チェックリスト
README.md — プロジェクトの説明・使い方LICENSE — ライセンス (MIT等)CONTRIBUTING.md — 貢献ガイドラインCODE_OF_CONDUCT.md — 行動規範.gitignore — 不要ファイルの除外良い README の構成
Tips
gh repo create でCLIから作成も可能今日からできる3ステップ
興味のあるプロジェクトを見つける
普段使っているツール、GitHub Explore、awesome リスト
CONTRIBUTING.md を読み、good first issue を探す
ドキュメント修正、タイポ修正、翻訳でもOK
Fork して、ブランチを切って、PR を出す
小さな変更でも立派な貢献。恐れずに行動しよう。
Every expert was once a beginner.
全てのエキスパートも、かつては初心者だった。まずは最初の一歩を踏み出そう。
| コマンド | 説明 |
|---|---|
| Fork (GitHub UI) | 他人のリポジトリを自分のアカウントにコピーする(ブラウザ操作) |
| git clone <url> | リモートリポジトリをローカルにダウンロードする |
| git remote -v | 登録済みリモートリポジトリの一覧を表示する |
| git remote add upstream <url> | 元のリポジトリ(upstream)をリモートとして追加する |
| git checkout main | mainブランチに切り替える |
| git pull upstream main | 元リポジトリの最新変更を取得してマージする |
| git checkout -b <branch> | 新しいブランチを作成して切り替える |
| git add <file> | 変更をステージングエリアに追加する |
| git commit -m "<msg>" | ステージした変更をコミットする |
| git push origin <branch> | ローカルのブランチをFork先にプッシュする |
| Pull Request (GitHub UI) | 変更を元リポジトリに反映してもらうためのリクエストを作成する |
| gh repo create | CLIからGitHubリポジトリを新規作成する |