退勤後、深夜のプルリク対応。それでも楽しいOSSコミュニティ運営の魅力【kazupon×Hiroppy】
「才能が公正に評価され、どこでも誰とでも働けるプラットフォームを作る」–––オープンソースプロジェクトのための報賞金サービス『IssueHunt』を開発・運営する、BoostIO株式会社のミッションです。達成に向けて、いかなる社会変革が必要なのでしょうか。オープンソースを日本の“文化”へと昇華させるべく、先進的な取り組みを紹介していきます。
BoostIOは、「OPENSOURCE.TOKYO MEETUP」と題し、オープンソースの現在地と未来を語るイベントを定期的に開催しています。第4回は「オープンソースのつらいことをあれこれ話そう!」をテーマに、Vue.js core team & Vue.js Japan User Group organizerのkazupon氏とCommitter of Node.js & webpackのHiroppy氏に、OSSコミュニティの運営について徹底討論していただきました。モデレーターを務めたのは、BoostIOのCo-founder/CEO・横溝一将。議論がヒートアップして“荒れた”場合の対処法から、規模が拡大した際にクオリティを担保するための工夫、そして「退勤後、夜0時からプルリク対応する」つらさまで、会場で繰り広げられた議論をダイジェストでお届けします。
構成:小池真幸(モメンタム・ホース)
荒れたらどう対処する?OSSコミュニティにおける議論のあり方
横溝一将:BoostIOの横溝です。今日はお集まりいただき、ありがとうございます。
kazuponさん、Hiroppyさんと一緒に、オープンソースコミュニティの運営について議論していきます。僕自身、エンジニアのためのノートアプリ『Boost Note』のOSSコミュニティを運営しているので、参考になるお話を伺えそうでとても楽しみです。まずは、簡単に自己紹介と、コミュニティ運営を担うようになった経緯を教えていただけますか?
Vue.js core team & Vue.js Japan User Group organizer・kazupon氏
Vue.jsコアチームメンバ & Vue.js日本ユーザーグループ代表。Vue Fes Japanといった日本のVue.jsコミュニティ運営活動に関わりつつ、Vue.js日本語公式ドキュメントメンテナンスの他に、自身もi18n関連のOSS開発者として活動中。Twitter:@kazu_pon
kazupon:Vue.js日本ユーザーグループの運営に携わっているkazuponです。働いていた会社でVue.jsを使うことになり、必要に駆られてプラグインを実装してプルリクを送っているうちに、気がつけばコミッターとして携わるようになりました。今日はよろしくお願いします。
Hiroppy:Node.jsとwebpackにコミットしているHiroppyです。2015年頃にオープンソースを利用しはじめ、io.jsとNode.jsが合体した頃から、本格的にコミュニティ運営にも携わるようになりました。webpackは2017年頃に一度参加したのですが離脱し、2019年の頭にコミッターとして戻ってきました。どうぞよろしくお願いします。
横溝:ありがとうございます。お二人が運営に携わっているコミュニティは、Boost Noteの何倍も大きくて、世界最大レベルの規模といっても過言ではありません。規模が大きいからこそ、ディスカッションが加熱することも多いと思います。
もちろん、良質な議論はアウトプットの質を高めてくれるので、差別的な言動などを除き、基本的にディスカッションは受け入れられるべきです。しかし、ヒートアップするあまり、対立が発生してしまうケースもあると思います。コンフリクトが生じた場合は、どう対処していますか?
kazupon:Vue.jsはそこまで荒れないですね。以前、我々コアチームの運営方法が至らなくて、少し荒れたことがあるくらいです。生みの親であるEvanとコアチームの方針が割れたときも議論がヒートアップしましたが、コアチームが「このくらいにしておこう」と大人な対応をしてくれました。
Committer of Node.js & webpack・Hiroppy氏
JavaScriptが大好きで、Node.jsやwebpackの開発を行っているエンジニア。今はwebpack@5のリリースに注力している。
Twitter:@about_hiroppy
Hiroppy:基本的には、言動に問題がなければ誰も止めないです。最近も「WebソケットをNode.jsのコアに入れるべきか?」というIssueが加熱し、+1と-1のリアクションが大量につく事態になりましたが、そのままにしておきました。
ただ、あまりに荒れたときは、一度は警告します。それでも収まらなければ、やむを得ず、GitHubの「オーガナイゼーションに入れさせない」という仕組みを行使したり、Issue自体をコメントできないようにロックしたりしていますね。
横溝:コミュニティ内で意見が分かれたときの対処法についてもお伺いしたいです。webpackは、支援した額に応じて投票する権利が振り分けられていて面白いなと思ったのですが、主張が割れたIssueへの対応方針を決めるのはとても難しいですよね。意思決定の指針となる、哲学や開発方針はありますか?
kazupon:基本的にはEvanの思想が第一です。コアチームのメンバーも、彼の考えに共感する人だけを選んでいます。
Hiroppy:webpackもVue.jsと同じで、Authorの思想が第一なので、僕らが取り立てて何か言うことはありません。一方で、Node.jsはリーダー的な存在がいない。よって、技術委員会とコラボレーターチームで、協議や投票を行いながら意思決定しています。
コミュニティの規模が拡大しても、アウトプットの質を担保する方法
横溝:ありがとうございます。続いて、OSSコミュニティの規模拡大について議論していきます。お二人が運営しているコミュニティは、大抵のスタートアップと比べてもかなり大規模だと思うのですが、規模拡大の経緯を伺いたいです。もともと、現在ほどの規模になることを想定していたのでしょうか?
kazupon:Evanは、まさかVue.jsがここまで大きくなるとは思っていなかったでしょう。個人的なプロジェクトとしてスタートし、ひたすら自身の好きなように開発していたら、気がつけば数千人規模になっていた。
Hiroppy:webpackも、2014年にInstagramが使ってくれるようになって急激にバズっただけで、当初は拡大させる意図はなかったと思います。現在でも、コミュニティの大きさに対して、運営チームが不足していますしね。
一方でNode.jsは、io.jsと合流してNode.js Foundationという法人を立ち上げた頃には、拡大することを見込んでいたと思います。だって、法人化しているくらいですから。
BoostIO株式会社 Co-founder/CEO・横溝一将
大学在学中にシステムやアプリケーション受託の会社を福岡で起業しその後上京。その後会社として作っていたBoostnoteをオープンソース化し、現在はGitHubスター約15,000を獲得している。共創してくれているコミュニティの方々に何か恩返ししたい想いや、オープンソースエコシステムが抱える課題をIssueHuntに落とし込み、グローバルなメンバー達とともに世界へ挑戦している。
横溝:コミュニティが拡大し、コントリビューターも増えていったときに、アウトプットの質はどのように担保してきましたか?メンバーが増えると、コードの質を保つのも難しくなると思います。
kazupon:Vue.jsはきっちりと規則があるわけではないですが、オフィシャルの運営メンバーがコードをチェックし、問題なければマージしていくスタイルを取っています。
Hiroppy:Node.jsは、プルリクは平日・休日問わず、48時間は絶対にマージしないようにしています。少なくとも2人以上が承認し、各開発チームのレビューが通ってはじめてマージされる。コミットログの規約が厳しく、各プルリクについての責任の所在を明らかにしているので、質は担保されていると思います。とはいえ、ミスがあっても責められることはなく、淡々とrevertし、バージョンをpublishするだけです。
横溝:Vue.jsも、Node.jsとwebpackも、自律分散的で新しい組織形態だなと感じます。これからは自律分散的に会社組織が増えていくと思うので、お二人が直面してきた問題は、未来を先取りしているともいえるでしょう。自立分散型の組織ならではの組織課題には、どのように対処してきましたか?
kazupon:Vue.jsはもともとEvan主体で運営していたので、組織課題へのアプローチはあまり考えていませんでしたね(笑)。ただ最近では、少しずつ役割分担を進めるようにしています。
Hiroppy:Node.jsはドキュメントが豊富で、コミッターになるためには約2時間の研修を受ける必要があります。研修の際に、運営方針を共有してもらい、コミットの仕方もすり合わせるので、かなりの問題を未然に防げていると思います。
webpackはドキュメントが少ないので手探りですが、Googleが主催するイベント「Google Summer of Code」で学生メンテナーを拡充したりはしています。
横溝:コアメンバー内での役割分担は、どのようにバランスを取っていますか?
kazupon:Vue.jsは、基本は好き勝手にやっています。Evanが作った会社にフルタイム社員が現在1名いますが、他のコアメンバーは空いた時間で各々やりたいことをやっていますね。
Hiroppy:Node.jsも、一部の特に熱量が高い人が常に見てくれてはいますが、基本はメンバーの主体性に任せています。報酬を支払っているわけではないので、やりたいときにやればいいというスタンスです。
お金をモチベーションにするのは、悪いことか?
横溝:ありがとうございます。コミュニティに所属している方のコミットを促すために、何か工夫されていますか?
kazupon:Vue.jsでは、敷居を下げるために、Evanが実装する機会を減らし、できるだけコミュニティメンバーに実装してもらうようにしています。
Hiroppy:Node.jsでは、コミッターがコントリビューターに直にアドバイスするcode and learnというイベントを定期的に開催することで参入障壁を下げています。実際に、参加者の方がそのままコミッターになるケースもよくありますね。
横溝:お二人自身は、どういったモチベーションで関わられているのでしょうか?
kazupon:僕は、面白いからですね。多言語ライブラリの開発を担うエンジニアとしての責任感もありますが、ベースは“楽しさ”です。
Hiroppy:僕も「いま楽しいからやる」というモチベーションが最も大きいと思います。webpackは報酬も出ますが、取り組む義務があるわけではないですから。
海外の優秀なエンジニアたちにレビューしてもらえるのも楽しかった。英語でコミュニケーションを取ることに尻込んでしまう人も多いですが、別に会うわけじゃないですし(笑)、間違えたところでとやかく言われることはありません。
横溝:報酬の話が出ましたが、オープンソースの収益化についてどうお考えですか?僕はオープンソースの報奨金サービスIssue Huntを運営していますが、これが唯一の正解だとも思っていなくて。
kazupon:問題ないと思います。たしかに、オープンソース開発は楽しいので、「ただでもいい」と思ってしまいがちですが、提供している価値に見合う対価をもらうのは悪いことじゃない。サステナビリティも高まりますしね。
Hiroppy:僕も悪いことではないと思います。たとえお金がモチベーションでも、それで長く続くのであれば、みんな幸せになれる。『GitHub Sponsors』の登場をはじめ、オープンソースを収益化する潮流も生まれていますしね。
横溝:とはいえ、収益化によって生じる懸念もあるとは思っていて。たとえば、スポンサー企業の発言権が大きくなったりはしないのでしょうか?
kazupon:Vue.jsでは、特定の企業が発言権を強めたケースはないですね。
Hiroppy:Node.js Foundationも、ひとつの会社から技術委員会に入れる人数を制限するなど、予防線を張っているので、企業の思惑が反映されることはありません。
webpackは、先ほどお話ししたように、お金をたくさん出してくれた会社の投票権が強くなる仕組みではあります。でも、そもそも誰でも参加できるプロジェクトなので、特定の人が絶対的に優先される事象は発生していません。
退勤後、夜0時からのプルリク対応。OSSのつらさを凌駕する“楽しさ”とは?
横溝:ここまでOSSコミュニティの運営にまつわるTipsをたくさん教えていただきましたが、つらいことも多いじゃないですか。四六時中Issueは飛ぶし、テンプレートは機能しないし。お二人が特につらかったことはなにか、教えていただきたいです。
kazupon:本業との時間配分ですね。前職は3〜4人規模の会社のCTOだったので、業務の幅がかなり広かった。オープンソースの力も借りていましたが、それでも業務量は多く、プライベートなオープンソース活動との兼ね合いが難しかったです。
Hiroppy:まず、時間帯が合わない。主にモスクワの方と二人チームでコミットしているので、退勤後、夜の0時頃に始めざるを得ない。体力的にかなりしんどいです。お互いの予定を把握しあい、隙間時間を縫って取り組んでいるので、プライベートな時間もかなり削られます。
横溝:それにもかかわらずコミュニティ運営を続けているのは、どのような楽しさがあるからなのでしょうか?
kazupon:ミートアップやカンファレンスに来ていただいたみなさんから、ポジティブな言葉をいただいた時には、「やっててよかったな」と思いますね。特に、ドキュメントはかなり力を入れているので、褒めてもらえると嬉しいです。
Hiroppy:たくさんありますが、自分の書いたコードがみなさんのもとで動いていくことに、大きな満足感を得られますね。
横溝:ありがとうございます。最後に、OSSにコミットする人を増やしていくためにも、「こんな人にコミッターになってほしい」という想いを聞かせていただけますか?
kazupon:純粋に楽しんでくれる人にコミットしてほしいと思いますね。責任感からではなく、趣味として取り組まないと続かないでしょう。オープンソースで取り組みたい課題を見つけ、楽しみながら取り組むのが、続けるための秘訣です。
Hiroppy:僕も同じです。間接的にお金やスキルが得られるかもしれませんが、そもそも仕事ではないので、やっぱり楽しくないと続かない。僕が海外の優秀なエンジニアにフィードバックをもらうことを楽しんでいたように、楽しめるポイントが見つかったら、ぜひ手伝ってほしいなと思います。
横溝:やっぱり、楽しむことは大切ですよね。今日はありがとうございました!
opensource.tokyoからのメッセージ
今回は4回目のイベントとなり「オープンソースの大変さ」についてフォーカスをしたイベントを開催させて頂きました。kazuponさんは以前にもイベントに登壇していただきありがとうございました。以前に引き続き日本人のオープンソースコミッターだけでなく、これからオープンソースにコミットしてみたい、オープンソースって少し怖い印象がある、といった方々に多大なる道標を与えてくださるお話でした。Hiroppyさんは初登壇して頂きましたが世界的に使用されているオープンソースのコントリビューターとのことでオープンソースのリアルな現実を知ることが出来たのでは無いでしょうか!
おふた方も共通しておっしゃっていたのは、まず少しでも良いからオープンソースに挑戦してみるという事です!皆さんも是非日頃使っているオープンソースなどにコミットしてみましょう!
📣お知らせ📣
IssueHuntにて、オープンソースプロジェクトの支援や、求職中の開発者の方々と企業をマッチングするサービスを提供しております。
ご興味をお持ちの方は、下記のフォームよりお問い合わせください!
https://forms.gle/RXwrj7SpwDEeX8RTA
この記事が気に入ったらサポートをしてみませんか?