! This post is also available in the following languages. 英語, 韓国語, 繁体中国語

LINE Open Source Sprint 2021: オープンソースに貢献する文化の創出

こんにちは。 Open Source Program Office TF (タスクフォース)です。LINEがオープンソースに大きく依存していることはよく知られる事実ですが、私たちのチームはLINEのエンジニアリング文化がオープンソース文化と密接に融合するように多くの努力を払っています。

LINEのような環境で働いている開発者であれば、一度ぐらいは次のようなことを考えたことがあるかと思います。
「あ…自分も時間をかけて、いつかはオープンソースに貢献しないと…」
この思いはすぐに次につながることでしょう。
「けど、何をどこからやればいいのだろう。。。」
多くの人がこのような悩みを抱えているという事実が分かったことで、私たちのチームはオープンソースへの貢献を行うための社内イベントの開催を企画しました。

今回の記事では、2021年の年末に行われた「LINE Open Source Sprint 2021」についてご紹介します。

どんなイベントなのか?

LINE Open Source Sprintは、エンジニアが短期間に集まって特定のオープンソースに貢献してみる企画として実施しています。

LINEでは多くのオープンソースを公開していますが、その中、2019年にはArmeriaプロジェクトを対象に短期のオープンソース貢献メンタリング(Armeria Sprint)を実施しています。当時の現場では、Armeriaに貢献したいという意欲のある人たちが一堂に会し、解決すべきissueについて議論をし、検討し、実装してPull Requestを提出し合っていました。それから3年経過しましたが、今でもその時のコード貢献をきっかけに着実に貢献を継続する開発者らがいます。当初の彼らはプロジェクトに対して初学者の立場から関わっていたわけですが、今ではその当時参加された開発者の皆さんがプロジェクトを支えることができるようになっています。

このような姿を見ながらイベントを企画してきた立場としては嬉しいと思いながらも、一方では心配に思うところも多々あります。例えば、先に挙げているように、LINEでは「数多く」のオープンソースを公開していますが、他のプロジェクトでも貢献者を必要としていることもその一つです。

これを踏まえ、今回のSprintイベントでは参加対象をLINEが公開するオープンソースプロジェクト全体に拡大しました。

LINEで公開したオープンソースのほとんどは、社内のニーズに合わせて開発した後、必要に応じてオープンソースで公開することが多いのですが、当然のように最初のユーザーは社内のスタッフになります。 そのため、複数のチームで様々なサービスを開発しながらそれらのオープンソースを使用してみると、新たに追加したい機能が生まれたり、バグを発見するなど、オープンソースプロジェクトに貢献できる課題に容易に接するようになります。また、LINEのオープンソースプロジェクトは、メンテナーがすぐ隣に!(もちろん今はリモート上ですが)存在して、多くの助力を与えることができるという利点もあります。

ということで、下記のように今年のイベントを実施しました。(LINE Open Source Sprint 2021概要)

期間– 参加プロジェクトの募集:1週間
– 解決すべきissueの準備:2週間
– 参加者の募集:1週間
– 実際の開発期間:3週間
参加対象– プロジェクト:LINEとして公開したオープンソース
– プロジェクト参加者:LINEグループ内のエンジニアなら誰でも

どうやって進んだの?

プロジェクト募集

イベントへの参加は参加するプロジェクトとissueに対応する参加者に分け、イベント規模を把握するためにプロジェクト側の募集を先に始めました。このようなイベントに参加することが初めての方々もおられることが予測されましたので、全てのLINEのオープンソースプロジェクトのメンテナーの方々を対象に今回のSprintイベントの概要と趣旨、そしてプロジェクトのメンテナーの方達にはどのような役割が必要かなどといった点を解説するための時間を設けました。その後、どのオープンソースプロジェクトで貢献者が必要か、また今の状況で新規貢献者を受け入れる余裕があるのか、といった需要を調査し、その結果、合計4つのプロジェクト – ArmeriaCentral DogmaDecatonLINE FIDO2 Serverプロジェクトが今回のSprintへ参加しました。

issueの準備

イベントに先立ち、参加するようなエンジニアであれば頑張れば一回でもPRを提出できるようにissueを準備しました。 オープンソースへの貢献に関心が高い人やオープンソースを使用する経験が多い人であったとしても、実際にオープンソースへの貢献という行為に行き着くまでは高いハードルが存在します。そのため、プロジェクトのメンテナー側にて初学者のためのissueを事前に幾つか用意しておき、参加におけるハードルを下げる作業を先に進めました。 このように初学者のためにあらかじめ用意したissueは、「good-first-issue」または「first-timers-only」などのラベルを貼り、分かりやすく表示しました。なお、準備したissueの数、規模によって、最大参加者数を決めることもできました。

余談ですが、good-first-issueに関して興味深い出来事がありました。Sprintイベントのためにあらかじめissueを作っておいたところ、プロジェクトの外部貢献者たちが先にissueに手を付けてしまい、今回のイベントのために準備していたissueがどんどん無くなってしまうハプニングが起こったのです。そこで、再びissueとすべき課題を考えた後、結局はGitHub上でのissueとしては登録せず、参加者だけに説明する方法で取り掛かるべきissueの分配が行われました。

参加者募集

次に、プロジェクト募集と同様に一般の参加者向けのイベント説明会を実施しました。
LINEは様々な国にエンジニアリング組織が分散しているため、韓国語、日本語、中国語、英語で通訳を用意しました。この場を借りて通訳を担当してくださったサポート組織、そして通訳者の皆様に感謝申し上げます! (次回もよろしくお願いします!)

説明会では、このイベントの概要について、そして参加者に期待する役割と成果について説明し、また過去にArmeria Sprintに参加した方の感想も聞いて参加を促す時間も設けました。そして、説明会以降は各プロジェクトごとに先着順で参加申請を受け付け、イベントは3週間の間に勤務時間中を含めて進行することから、各参加者所属の組織長にもイベントの趣旨と進行内容について事前に案内をしました。

開発

これでようやく開発が始まりました。

まず、各プロジェクトごとに参加者とメンテナーが集まって自己紹介し、プロジェクトについて、そしてスケジュール感について話し合う時間を設けました。ただ、COVID-19の状況ですので、やむを得ずお互いの顔を画面を通してだけで見なければなりませんでした。私たちは在宅勤務に完全に適応したこともありますのでコミュニケーションには特段の問題はないと当初は考えておりましたが、そもそもイベントの趣旨が「一人ではどこからどうすべきか分からない人々を助ける」だったこともあり、段々と悩みが深くなりました。ということで、開発の遂行にあたって、私たちは次のようなルールを作りました。

  1. 開発は可能な限り勤務時間内に行う。 → 参加者の所属組織長に事前にお知らせ済み。
  2. 可能であれば、決められた時間にGather Townの仮想空間に集まる。
  3. プロジェクトのメンテナーは仮想空間で待機しつつ、自分の仕事を継続する。
  4. 参加者は待機中のメンテナーに自由に話しかけ、質問と討論をする。
  5. 開発以外のコミュニケーションはSlackチャネルで行う。

初めて全面的に在宅勤務が施行された時にはリモート会議が少しぎこちなかった時代がありましたが、今回もその時のようにGather Town上の仮想空間でのコミュニケーションが少しぎこちなく感じられないのだろうか?と当初は思いました。しかし、そこはやはり一つの共通する関心事で集まった人たちですので、すぐに適応して活発に討論の場を作り上げる様子が見られるようになりました。

活発な議論が行われる様子。「私たちのフレンドリーな隣人」もいましたね!
仮想空間上でもそれぞれの椅子や机を決めて座って開発する姿が印象深かった (スマイル)

まとめ

4週間の開発期間を終えた後、各プロジェクトでは今回のSprintで最も活発に、そして積極的に活動してくださったメンバー一人をMVPに選定しました。 参加者全員が集まってMVP授賞を讃え、お互いの感想と短い回顧を述べ合い、イベントの幕を閉じました。

成果を共有し、参加した感想やイベントの進行について意見を交わしました。

頑張ってくれたメンテナーの方、そしてMVPの方々にはトロフィーをお届けしました。

参加記念品として2022年カレンダーも製作してお届けしました。

なぜこのようなイベントを進めることになったのでしょうか?

今回のイベントは、大きく三つの目標を置いて企画を開始しました。

1. 日常の業務時間中においてもオープンソースを開発し貢献できる環境を設ける

LINEでは様々な分野でオープンソースを活用しています。そのため、私たちはオープンソースの開発と貢献が日常的な業務の過程内で行われることが理想だと考えます。オープンソースを使用、修正、そしてアップストリームに貢献といった行為をしない場合、当該バージョンに足止めされ、結局開発したものがレガシーとして残ることになるかもしれません。貢献していかなければオープンソースの開発方向に何ら影響を及ぼすことはできないのです。

現実的な問題としてはこのようなこともありますが、 日常的に業務としてオープンソースを開発し、貢献することはエンジニアリング文化を形成する側面からも重要です。LINEで強調する開発文化のキーワードはまさに「成長」です。そして、開発者の成長について語るときに欠かせないのがオープンソースです。開発者が成長できる開発文化をつくるためには、業務においてオープンソースを自然に活用し、オープンソースを開発して貢献する雰囲気を作らなければならないと私たちは考えます。

2. オープンソース貢献の施策を周知し、直接体験してもらう

私たちのチームは、オープンソースに関する様々なポリシーとプロセスを作成して運営しています。しかし、いくら良い施策があるとしても、LINERの皆さんが知らなければ全く効果を得ることはできません。私たちは今回のイベントを通じて参加者にLINEのオープンソースポリシーを知らせ、直接体験してみる機会を作りたいと思いました。全従業員数に比べると非常に少ない数の参加者の方だけが私たちの施策によって知見を身につけることになると思うかもしれませんが、このイベントの参加者達が各部署の周辺の同僚らに私たちの施策を周知させる重要な役割を果たしていくと期待しています(信じて、皆さん!)。

3. LINEのオープンソース開発に必要な人的リソースを補充する

オープンソース開発は孤独な戦いになりやすいものです。周辺の期待は大きく、参加する人数は少なく(一人のことも)、やるべきことは常に山積みです。 このような状況でメンテナーたちの力になるのは、心を一つにした仲間が力を貸してくれるのではないかと思いました。今回のイベントは初学者でスタートしつつも、弛まず着実に貢献してくれる仲間を作ることをもう一つの目標にしました。

また、考えてみるといつかは隣の席の同僚ではなく、外部の貢献者を迎えることになることもあるでしょう。今回のイベントを通じて、メンテナーたちは貢献者のために気を使わなければならない部分は何か、文書で提供できなかった部分があったかなど、現状を確認することができました。 このように準備しておけば、潜在的な貢献者が簡単にプロジェクトへ飛び込むことができる礎になることでしょう。

イベントの結果は?

下記が今回のSprintイベントの成果です。

25人の参加者が合計24個のPull Requestを提出し、イベント終了時点までそのうち12個がマージされました! また、イベントが終了した後もPull Requestの消化は着実に進み、私がこの文を書いている2月中旬までに合計20個がマージされたことを確認しました。イベントが終了した後も最後まで諦めなかった参加者と、まだ挑戦している参加者にもう一度拍手を送ります。

次に、参加者が行った貢献の種類を見てみましょう(1つのPull Requestにはさまざまな種類の貢献が含まれる場合があります)。

New featureDefectBreaking changeImprovementDeprecation
175221

やはり新機能を追加する「new feature」関連の貢献が最も多く、問題を解決する「defect」関連の貢献が後に続いています。 パフォーマンスを改善する「improvement」と互換性が変化する「breaking change」、そして既存のものを退化させる「deprecation」関連の貢献は、プロジェクトの構造をもう少し深く把握しなければ進むことができないために新規の貢献者には少し挑戦的かもしれません。今回の機会にここまで達成した方々もいました。

以下は、イベントを終えて実施したアンケート調査の結果です(上位の回答のみ)。

満足度満足できた部分残念だった部分
非常に満足43.8%人との交流、関係62.5%業務時間に参加25%
満足56.3%業務時間に参加37.5%本人の結果に不満足25%

本人の結果物に満足37.5%

同じ要素でも参加者ごとに満足度が異なるという点が興味深かったです。ある人は業務時間に参加した方が良かったと考えたわけですが、他のある人はその点を残念に感じたということが分かりました。 やはり、全ての人を満足させるのは難しいと感じましたね。

最後に

今回のイベントを終え、締め括りとして参加者と一緒にラップアップを行いました。初めての説明会の時とは異なり、お互いにしっかりとした姿が見え、進行者として誇らしく思えました。では、下記にてラップアップにて出された話題を共有します。

  • イベントを通じてオープンソース貢献に挑戦してみることができた。毎年こんなイベントが行われたらいいな。
  • 一度成功してから、他の問題にも挑戦してみたいと思うこともあった。
  • 直接使用しているオープンソースではなかったが、普段から関心を持っていた技術だった。今回を機会に関連技術について知るようになり、業務に役立った。
  • メンテナーの方々が親切に助けてくださって実装が可能になった。とても良い経験で、今後もまた機会があってほしい。
  • 仕事で非常に小さな部分だけを使っていましたが、今回の機会に他の重要な機能についてたくさん理解するようになりました。今後、業務でよりよく使えるきっかけとなり、オープンソース貢献にも自信を得た。
  • 業務中に使っていただけのソースコードを一度読んでみようという動機で参加することになった。作業していたことがまだ終わっていないので、今後も努力してみたい。
  • コミュニケーションに関しては、画面共有を多様していたのでソースコードを直接見せることができ、言語の障壁があまり感じられなかった。
  • 前回のArmeria Sprintの際にはオフラインでイベントが行われたが、その時は一つの会議室空間に閉じ込められて長時間の拘束がされた。ということで、一度の機会に集中しなければならなくて大変だったが、今回は非対面で少しゆったりと進めることができ、やや簡単な感じだった。
  • コミュニケーションのために仮想空間を活用することになった点が興味深かった。実際にその空間に留まって時間をたくさん使い、また個別にやる話があれば別に時間をとったり、チャットもするなど、話をできるだけ多く分けるように努力した。
  • 業務をしながらということで負担があったはずなのに、みんな一生懸命参加していたし、最終的にPull Requestをマージできる場合もあってみんな大変だと思った。
  • 初心者のオープンソースメンテナーなのに、今回の機会を通じてオープンソース運営についてもっと経験してみることができてよかった。
  • 一過性で終わるイベントではなく、着実に貢献するきっかけになってほしい。メンテナーの立場であっても、すべてを知ることはできないが、このような貢献を受けてみると、未だ考慮しなかった部分に気づくことができる。だから、本当にたくさんの助けを受けた。
  • VRでもやってみると面白いんじゃないかな(笑)

    こう振り返ってみると、2022年にも是非!充実したイベントを準備しなければいけないと感じました。オープンソース関連の業務をしながら、最も強く推進力を受ける時がまさにこのような瞬間ではないでしょうか。お互いに応援し、励まし、また頑張ってみようという視線いっぱいの瞬間でした。見守る立場の私たちも楽しかったです。今後、より多くの方々と一緒にできるこのような環境を作り上げるよう努めます。みなさん大変お疲れ様でした!