PRを取り込むのが怖くなった理由と今後
怖さを、閉鎖ではなく運営の工夫に変える
Kyohei Fukuda / @labelmake / 2026-06-23
Kyohei Fukuda / 福田京平
• pdfme開発者
• Developer Advocate / 外資ITエンジニア
• HP: kyohei.dev
開発者目線で雑多に発信しています。
今日話したいことは2つ
1.
PRを取り込むのが怖くなった理由
2.
意外と知られていない、いろんなOSSの運営方法
怖い話で終わらせない。
OSSを楽しいものとして続けるための話。
AI以前は、世界中から届くPRが楽しみだった
• 使ってくれて、直してくれた
• 一緒につくってくれている感覚
反応があるだけで、普通にうれしかった。
最近はPRを見ると複雑な感情になっている
これ、npmまで行くやつ?サプライチェーンの加害者にならないか?
CI / build / publish / npm / 開発者の端末
mergeボタン、実質publishボタン
PR -> main -> build -> publish -> user
レビューしているのは、コード差分だけではない。
コントリビューター / 依存 / CI / publish経路
最近の実例は、
配布経路が狙われている
狙われるのは、配布経路。
• axios: アカウント侵害 -> npm
• Shai-Hulud: install script -> secret窃取
• Nx Console: 拡張update -> 開発端末
• ETHcode: PR -> 拡張 -> 開発端末
• TanStack: PR -> cache -> OIDC -> npm
mergeしてないから安全? いや...
PR -> cache -> release -> OIDC -> npm
release経路につながると、PRはpublishまで届く。
👼
いろんなOSSの運営方法
PRを受ける / 受けない。
コードを開く / 場を開く。
入口を広げる / 絞る。
全部、プロジェクトが選んでいい。
PRを受けるのは運営方法のひとつ
• public PRを閉じる
• 外部patchをそのまま入れない
• 小さく保ってforkに任せる
• コードではなくissueだけ開く
OSSへの関わり方は、プロジェクトが選んでいい。
Ladybird: コード提案を受け取らない
• non-maintainerのPRを受けない
• code change proposalも別ルートで受けない
• bug report / reduction / security report は残す
PRを閉じても、参加は全部閉じない。
SQLite: パッチをそのまま取り込まない
• public domainを維持するため、貢献には権利放棄が必要
• affidavitなしのpatchは、そのまま受け取らない
• 必要な変更は、開発者が書き直すこともある
PRを閉じて、自分で実装し直すのも運営。
QuickJS: 小さく保ち、forkが育つ
• 本家はsmall / embeddableを重視
• quickjs-ngはforkとしてcommunity developmentへ
• mainに全部集めないモデルもある
forkも、OSSの継続の形。
Typora: コードではなく、場を開く
• 本体コードは公開しない
• issues repoでbug / feature / discussionを受ける
• 透明性と効率のために、公開の場を使う
「全部公開」以外にも、開き方はある。
TanStackのpostmortemで
気が引き締まった
完璧に防いだ話ではない。
むしろ、やられた話。
• timeline / root cause / IOC
• what went well / what could be better
• 「明日は我が身」と感じた
おれのOSSはどう運営していこうか
自分のOSSだから、自分なりの形で還元したい。
• fork歓迎
• それなりのユーザー、コードベースがある
• 失敗も、運用も、判断基準も公開できる
• PDFライブラリが不要な人にも、開発体験は渡せる
pdfmeのCVEで、セキュリティが自分ごとになった
セキュリティに興味を持ったきっかけは、きれいな教材ではなかった。
失敗や事故は、次の関心を作ることがある。
• 自分のOSSにCVEが出た
• 使っている人がいると実感した
• 公開している以上、影響範囲がある
• そこからサプライチェーンを見るようになった
形を変えながら
エコシステムに還元していく
1. PRを取り込む怖さには理由がある
2. 入口と境界線は設計していい
3. コード以外でも知見を返せる
OSSを諦めるのではなく、自分に合う形で返す。