Text
Page: 1
OSSを継続的に メンテナンスしていく 仕組みづくり Fluentdの事例 Kentaro Hayashi OSC2022 Online/Spring OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 2
発表資料について https://slide.rabbit-shocker.org/authors/kenhys/ osc2022-online-spring-fluentd/ OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 3
今日お話すること ✓ OSS(Fluentd)を継続的にメン テナンスしていく仕組みづくり ✓リリースするための仕組みを改善し たこと ✓プラグインを引き取る仕組みがある こと ✓よいフィードバックをもらうために 工夫したこと OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 4
Fluentdとは https://docs.fluentd.org/quickstart OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 5
最新のリリース ✓ v1.14.5 (2022/02/09) ✓in_httpでapplication/x- ndjsonをサポート ✓out_forwardがハングする不具合修 正 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 6
定期的にリリース ✓ Fluentd ✓おおよそ2ヶ月ごとにメンテナンスリ リース ✓修正をはやくユーザーに届ける ✓リリースしないと使われない ✓masterではなおってます、というのを少なく OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 7
リリース作業 ✓ Fluentd gemの公開 ✓ ブログ記事公開 ✓https://www.fluentd.org/blog/ ✓ Dockerイメージの公開 ✓ TD Agentの公開(随時) OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 8
最新パッケージ版 ✓ TD Agent 4.3.0 (2021-12-13) ✓Fluentd+プラグイン集 ✓各種プラットフォーム向け (deb,rpm,msiなど) ✓おおよそ4ヶ月ごとリリース ✓ Calyptia Fluentd OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 9
従来のパッケージの課題 ✓ パッケージを簡単につくれる・ 維持できる仕組みが必要 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 10
TD Agent v3 ✓ Omnibusベースのビルドシス テム ✓バンドルしたOpenSSLを使う ✓環境を整えるまでが大変 ✓特定の人だけがビルドできる状態 ✓属人化したリリース OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 11
TD Agent v4 ✓ fluent-package-builder ✓Dockerベースのビルドに刷新 ✓環境構築や属人化の問題を解決 ✓arm64のサポート ✓GitHub ActionsによるCI https://github.com/fluent/fluent-package-builder OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 12
注意喚起 ✓ TD Agent v3はすでにEOLです ✓https://www.fluentd.org/blog/schedule-for-td- agent-3-eol ✓v4への移行手順も案内しています ✓https://www.fluentd.org/blog/upgrade-td-agent- v3-to-v4 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 13
今日お話すること ✓ Fluentdを継続的にメンテナン スしたい ✓リリースするための仕組みを改善し たこと ✓プラグインを引き取るしくみがある こと ✓よいフィードバックをもらうために 工夫したこと OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 14
Fluentdとプラグイン ✓ 1000以上の3rdパーティープラ グインがある ✓https://www.fluentd.org/plugins ✓ なかにはメンテナンスを継続で きないケースも ✓開発者が使わなくなった…etc OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 15
fluent-plugins-nursery ✓ メンテナンスを継続するための プロジェクト ✓ リポジトリを移行してメンテナ ンスを継続 ✓ もちろん配下で開発し続けても よい https://github.com/fluent-plugins-nursery/ OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 16
メンテナンスを移行するには ✓ contactリポジトリで移行の相 談 https://github.com/fluent-plugins-nursery/contact ✓ issueでownershipの移転のた めの手続きを実施 ✓最近の事例: fluent-plugin- remote_syslog OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 17
今日お話すること ✓ OSS(Fluentd)を継続的にメン テナンスしていく仕組みづくり ✓リリースするための仕組みを改善し たこと ✓プラグインを引き取るしくみがある こと ✓よいフィードバックをもらうために 工夫したこと OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 18
コミュニティーサポート ✓ GitHub Issues ✓https://github.com/fluent/fluentd/issues ✓ Discource ✓https://discuss.fluentd.org/ ✓GitHub Discussionsへ移行 ✓https://github.com/fluent/fluentd/discussions ✓ Slack https://fluent-all.slack.com/ OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 19
従来のGitHub Issueの課題 ✓ https://github.com/fluent/fluentd/issues OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 20
ありがちなこと(1) ✓ Fluentdと直接関係ないプラグ インの質問がくる OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 21
ありがちなこと(2) ✓ 再現に必要な情報が不足 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 22
各種ガイドラインを 読まない……ことも OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 23
なぜこうなるのか? ✓ それなりに使われているソフト ウェアでありがちなこと ✓背景もばらばらな人がフィードバッ クしてくれる ✓報告する人がわかっていることは省 略する傾向にある ✓ 再現に必要な情報が不足してい る OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 24
やりたいこと ✓ フィードバックを改善につなげ られるようにしたい ✓本体の不具合や機能に関する要望な ど ✓不具合であれば再現可能な情報が含 まれている OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 25
どうするか? ✓ GitHubのissueの役割を仕組み でしぼる ✓不具合報告 or 機能の要望に誘導す る ✓単なる使い方の質問のissueで埋もれ させない ✓プラグインに関するissueに埋もれさ せない OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 26
テンプレート選択画面を設定する https://github.com/fluent/fluentd/issues/new/choose OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 27
使い方を知りたい人向け ✓ GitHubのissueから discuss(Discource)への誘導 ✓課題: 開発者以外で回答する人が不 足 ✓開発者側でトラッキングがしにくい ✓結果: あまりうまくいかなかった https://discuss.fluentd.org/ OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 28
従来のIssueテンプレート OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 29
従来のIssueテンプレート ✓ 入力項目が別れていない ✓ 必須項目を指定できない ✓ テンプレートを消して報告して くる強者も OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 30
再現させるために必要な情報 ✓ バグの内容 ✓ 動作環境 ✓ 再現方法 ✓ 期待する挙動 ✓ エラーログ ✓ 設定内容 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 31
GitHub Issue Formsを活用 https://github.com/fluent/fluentd/issues/new? assignees=&labels=&template=bug_report.yaml OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 32
Issueのメンテナンス ✓ 反応がないIssueというのもあ る ✓放置されたIssueはGitHub Actionで 閉じる https://github.com/actions/stale OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 33
工夫したことまとめ ✓ Issueの役割を明確にする(不具 合・要望) ✓ Issue Formsで必要な情報を集 める ✓ 古いIssueをGitHub Actionsで 閉じる OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 34
よりオープンな開発方針 ✓ GitHub Project ✓実験的にプロジェクトメンバーで採 用 ✓次のバージョンに入れるものとかを 相談 https://github.com/orgs/fluent/projects/4 OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1
Page: 35
さいごに ✓ フィードバックを歓迎していま す ✓バグに遭遇したらGitHubのIssueと して報告する ✓既存のissueにコメントする(助け合 いの精神で!) ✓ 開発に関しては次の発表で! OSSを継続的にメンテナンスしていく仕組みづくり - Fluentdの事例 Powered by Rabbit 3.0.1