Diary over Finite Fields

515ひかるの日記と雑文

OSS 活動の形

はじめに

この記事は LAPRAS Fans Advent Calendar の 9 日目です。前日は tomato360 さんの 今年一番のアウトプットについて で、明日は Ryusuke Takahama さんの「今年のアウトプットまとめ」です。

adventar.org

テーマはアウトプットとのことなので、最近意識している OSS 活動でのアウトプットについて書きます。

OSS 活動を始めた

最近は OSS 活動を気が向いた時にちまちまとやっています。日常的に「やらないといけない」とか考え出すと辛いですし、長続きしないと思っているので、基本的に誰からも強制されない内容をコミットしています。

始めたのは今年の秋くらいなので、まだ日常になってから 3 ヶ月も経っていませんし、機能追加だとかバグ修正だとかにはあまり貢献できていません。大体 README を読んでいて見つけた typo を直すとか、初心者向け Issue を直すとか、落ちている CI を直すとか些細な修正です。

例えば、

などの PR を出しました。これらのツールは自分が見つけたり、ツイッターやブログなどで誰かがシェアしていて知ったものです。そこで GitHub のページを開いて Star 付けて終わるのでなく、動かす、そして(たいてい気になることがあるので)より良くするために自分が何ができるか考えて行動する、という行動をした結果です。

OSS 活動を始めるまでの心境の変化

このような行動を始めるまでには、いくつかの発想の転換がありました。わたし自身は、昨年の 12 月に 1 度機会があってとある OSS に Contribute していますが、それが続くことはありませんでした。

このタイミングで再開に至れたのは、様々な転機が重なったのもありますが、何よりもこの半年間でソフトウェア開発に対する考え方が少しずつ変わったことが大きいです。以下には、そうした心境の変化と、それに伴う自分の行動の変化について書きます。

ひとりで行動するのをやめる

まず一番大きかったのは「自分ひとりで大きなことを成そうとするのをやめよう」と思ったことです。

わたしも開発者の端くれ。天才プログラマーでもなければ有名人でさえないですが、いつか自分でソフトウェアを作って世界中で広く使われるなんて未来が来たらいいなぁと漠然と思っていましたし、今も思っています。

しかしわたしはそうした幻想を基に行動をするのをやめました。 Linux カーネルは Linus Torvalds ひとりだけで今ほど成長したのではありません1し、それ以外のどんなソフトウェアであってもひとりだけでメンテナンスをし続け、広く使われ続けているものはおそらく存在しないでしょう。

結局複数人で行動しなければ、社会のためにあるいはより多くの人のためになるようなツールやソフトウェアを作るのは難しいです。そもそも、SaaS 事業をしている会社がエンジニア採用に多大なコストを払ってでも採用しているのは、サービスを作るためには開発者のチームが不可欠であるということを認識しているからでしょう。

わたしは天才ではない。だから 1 人で開発するのではなく、皆と協力したり、既に作られたものをより良くする方向にアウトプットをするほうがより多くの人のためになる。知っていましたが、それを認めた上で行動するにはそれなりの時間がかかってしまいました。

既製品をよりよくすることへの喜びを感じる

自分がツールなどソフトウェアを作る、ということを以前は考えていました。しかし最近は休止しています。もちろん、作りたいものができたら作るとは思いますが、無理に作る必要はないと考えています。

OSS では、みんな直したいけど忙しくて直せていないもの、いつでも直せるからと放置されているものが思っているほどたくさんあります。そうした課題には GitHub の Issues でチケットが管理されている場合は、"good first issue" というラベルがついていることが多いです。このプロジェクトに最初に Contribute するのにオススメの Issue ということです。

そんなに頻繁にこなしているわけではないですが、こうした Issue をこなしているだけでもやることは山積みという感覚が湧いてきますし、何より PR すると感謝されます。何度言われても、 PR で Thank you だとか Good だとか Great だとかありがとうございますだとか言われるのは嬉しいものです。

気軽にコメントする

今まではなんとなく自分が Contribute したことないソフトウェアの Issue にコメントしたりするのは控えていました。特に理由はなかったんですが、重複している Issue の指摘2や、動作や回避策の検証はむしろ積極的にコメントするべきだとこの頃は思っています。というのも、メンテナの方はあちらこちらから Mention が飛んできていて普通に通知を見逃している(と思われる)からです。悪意があるわけではなく。

なのでただ Watch しているだけのリポジトリで、自分が知っている Issue と重複していたり、すぐに指摘できるようなことはコメントをしてしまったほうが良いと思います。GitHub 上ではなんの Contribution にもなりませんが、これも OSS への貢献のひとつなんじゃないかと思います。

まとめ

総合すると、わたしの最近の OSS 活動で意識していることは以下の 3 つです。

  • 自分ひとりで考えるのではなく誰かと協力する
  • 簡単なバグ修正など忙しくて手が回っていないところを助ける
  • コードによる貢献以外にもひたすら Issue Tracker を読んでいるだけでできる貢献もある

あくまでわたしはこうやっているというだけで、ものを作るのが好きで得意な人も居るでしょうし、もっとコミッター、メンテナとして深く関わる道へ進みたい、そのために努力していきたい(している)という人も居るでしょう。そしてそういう人のほうがやはり目立ちますし、説得力もあります3

ですが、たとえ説得力なんて皆無だったとしても、あまり可視化されない「気張らずにやっている人」という立場で何かを伝えられたらなと思い書きました。OSS 活動を何かしようと思っていてもまだ踏み切れていない人4に、何か参考になることがひとつでもあれば幸いです。


  1. 『Team Geak ―Google のギークたちはいかにしてチームを作るのか』 pp.4-5

  2. 重複していると指摘したことがあり、すぐに Close してくれたことがありました。

  3. 例えば、 Node.jsへのコントリビュート解説、そしてOSSへ貢献するということ - 別にしんどくないブログ という記事にいたってはわたしのこの記事の上位互換なのではないかという気さえします。

  4. 自分自身がそうだったように。