未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

OSS Hack Weekendに参加した

楽天もスポンサーになっているOSS Hack Weekendという学生向けのワークショップ形式の勉強会に参加した。プログラミングが好きな学生のための成果発表 OSS Hack Weekend | SEゼミ

一応、学生向けということもありスポンサーからはバリバリのハッカーがメンターとして参加して、ハンズオンを支援する。学生は経験豊富なエンジニアからメンタリングを受けられ、企業は優秀な学生とのコンタクトを得られる。Win-Winな関係がある。

(会場)

勉強会エバンジェリストのわたしとしては会社枠で物見遊山的に参加した。(メンターじゃないのかよ>自分)

4回シリーズになっていて、

  • Readable Code (6月6日)
  • GitHub (6月20日)
  • OSS Hack 4 Beginners (6月27日)
  • OSS Hack Weekend (7月11日、12日)←今回

という構成だ。

須藤さんが講師役で、大まかな作業の流れを示す。ゴールとしてはOSSへPull Request (PR) を出す。出し方を学ぶ、実際に経験してみるというのが今回の特徴である。参加者(学生)が選んだOSSをそれぞれの参加者が実際に動かしてみて、問題を発見し、githubのissueを書いて、可能であれば、パッチなどを書き、pull requestをupstreamに送るという作業をする。

言語ごとにグループ分けをして、それぞれのグループにメンターがつく。直すOSSは学生が自分で決める。興味のあるOSSを選ぶというのが最初のポイントになる。

わたしはC言語にはちょっと土地勘があるので、というか、C言語くらいしか土地勘がないので、C/C++のグループに座ってみた。

今回担当した学生さんが選んだのが、Gnu EmacsとかRustとかbhyveとか、非常に骨のあるプロダクトだ。

前回のOSS Hack 4 Beginnersで、OSS開発の大まかなワークフローは学んだので、今回はそれの実践編になる。前々回で、GitとGithubの基礎を学んだので、PRがどうだとかIssueがどうだとかいうリテラシーはある。今回は、それらの基礎的な知識を駆使して、実際に本家へPRを出すと言う経験をしてみる。

この手のワークショップは学校では教えてくれないし、企業でも現場で経験するしかなくて、研修コースとして整備されているものはほとんどない。

OSSにどう貢献するかということに関して言語化されたものとして、例えば下記のUpstream Trainingが有名である。どうしても断片的なコミュニティー特有の事情が出てしまうのだが、それでもないよりは遥かによい。
https://wiki.openstack.org/wiki/OpenStack_Upstream_Training/Info/ja

問題を発見してコミュニティとのやり取りの最初は多くの場合、質問をコミュニティに投げることになる。自分の期待する動きと違うことを発見したときに、それをいきなりバグだと声だかに言うのではなく、開発者の意図を確認するために質問する。それが意図したものであれば、その意図を聞く。

意図したものでない場合に初めてバグの可能性があることになる。

パッチを作成してPRを投げる。

もっといい方法があるかもしれないし、すぐに取り込まれることもあればリジェクトされることもある。それをオープンに議論する。

問題と認識していることを言語化して何が問題で、それをどう直したかなどを説明する。これらは平易な英語で書く。

GNU Emacsなど老舗のFLOSSはGithubホスティングされていない。メーリングリストでやりとりをするのが開発プロセスである。PRという言葉が出てくる前から存在するので、そこのお作法に則った作業が必要になる。

GithubによってPRというパラダイムシフトが起こったということを再度認識した次第である。

でもって、各参加者がもくもくと作業をしている間、試しにGNU EmacsやRUSTのソースをgit cloneしたりした。ついでにREADMEやらINSTALLなどを読んで $ ./configure; make; make installなどをする。

(ワタシハリナックスガチョットデキル)

わたしのMacのCPUがぶんぶん回っている感じがいい。

わたしが何か指導をするとか言うことも特になく、そもそもGNU Emacsについて一家言持つなんて言うのは百年早い感じがするので、作業を眺めているくらいしか、貢献できない。rustなんかは初見だし、bhyveに至っては初めて聞いた。

ということで、適度にお茶を飲みながら雑談をする。おじさんてきにはOSSいいよねー、楽しいよねー、みたいな毒にも薬にもならない話ばっかりで申し訳ないっす。

一方でメールの書き方くらいは相談に乗れないこともないので、PRの構成についてあれやこれやアドバイスらしきことをした。

パッチそのものの説明ではなくて、何が問題かということを説明する。それがWhyである。それをきちんと説明できれば勝ったも同然である。別に勝ち負けを争っているわけではないけど。

GNU Emacsに果敢にチャレンジした学生さんは、大きなプロダクトなので、ドキュメントの不具合などを発見して、それに対する提案を書いた。

そんなこんなでそれぞれがPRを書いていた。PRを出すと、☆のシールを参加証にはって貰う。

OSSの開発のプロセスの一端を経験したことになる。怖くないということを知って経験を積んだのがこのイベントのハイライトである。

参加者40名くらいに30名くらいのメンターがいて、ワークショップの環境としては素晴らしいものであった。メンタリングがほぼマンツーマンで受けられる。

この手のワークショップイベントが増えて行けばOSSの貢献も増えて行くのではないかと思った。

学生向けだけではなく社会人向けのワークショップが強く望まれるのだが、コストをどう回収するのかとか課題は多い。そもそもメンターを30名も集められないし、スケールする方法も思いつかない。持続可能なビジネスモデルを発見できればすごいことになると思う。

おまけ

なかなか学生さんと打ち解けることが難しい感じだったんだけど、昼休みになぜかIngressの話題になって、 hyoshiokさんイングレスやってんすか?リチャでオニキスっすか、まじすげー、A15なんすか、ちょーすげーっす、と筑波の学生さんとの距離がイングレスのおかげで急激に近づいた。筑波のポータル密度と東京のそれとは随分違うので全く異なるゲームをやっている気分なんだろうなあと思った。