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