Rabbit Slide Show

OSC 2022 Online Spring Fluentd

2022-03-12

Description

This is private repository.

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

Other slides

DebConf20 DebConf20
2020-08-25