Redash で OSS Contribution について語るときに僕の語ること
どこかで聞いたことのあるようなタイトルですね。このエントリは Redash Advent Calendar 2017 15日目の記事です。
今年の10月から Redash にコミットしていて、いくつかの PR がマージされたり、Issue を書いて Contribution できたので、自分がやってきた事や意識してきた事を書いてみます。
Redash とは?
Redash はデータの集計および可視化が行えるツールです。
対応しているデータソースは PostgreSQL や MySQL といった代表的なデータベースから、Google Spreadsheets や JIRA、さらには Python の実行結果にも対応しています(すべてのデータソースはこちら)。
Redash は OSS(Open Source Software) で、行動規範を守れば、だれでも機能追加の要望やバグレポートなどの Contribution が行えます。
Contribution の内容
Redash に Contribution した内容は次のとおりです。
PR
マージされた PR です。
- 💪【機能追加】ページを開いた直後に最初の入力項目にフォーカスを当てる
- 💪【機能追加】ユーザのプロフィールアイコンを表示する
- 💉【修正】ユーザが所属していたグループを削除した際に、ユーザ情報から該当のグループが削除されない問題を修正
- 💉【修正】クエリをフォーク時にパラメータの値が消える問題を修正
- 💉【修正】PostgreSQL 10.0 を使ったインストールに失敗する問題を修正
- 💉【修正】日付文字列への変換フィルタで変換できずに「Invalid date」が表示される問題を修正
- 💉【修正】集計結果に配列を含んでいると Excel 出力に失敗する問題を修正
現在オープン状態になっている PR です。
- 💪【機能追加】クリップボードにコピーにする機能の追加
- 💪【機能追加】1ページあたりの集計結果表示数を設定で変更できるようにする
- 💪【機能追加】ダッシュボードに説明を表示できるようにする
残念ながらクローズされた PR です。
- 💪【機能追加】集計結果で数値を右揃え表示する
- 💉【修正】ダッシュボードに追加されているクエリをアーカイブすると、そのダッシュボードに新たに追加できなくなる問題を修正
- 💉【修正】ダッシュボードでフルスクリーン表示が行えない問題を修正
Issue
解決済み Issue です。
未解決の Issue です。
1. 😰【問題】反映されていない環境設定がある
PR は一覧にすると多く見えますが、ひとつひとつは単純な内容で、ほとんどが簡単な修正でした。
OSS に Contribute したい、でもどうすれば?
OSS に何か Contribution したい、と考えている方は多いと思いますので、自分がそのネタをどうやって探しているのかを紹介します。
こんな機能があったらいいのに
普段サービスを使っていると「こんな機能があったら便利なのに!」と思うはずです。もうちょっとアグレッシブに表現すると「こんな機能がないのはおかしい!」です。
Contribution のチャンスですね。
バグを発見する
特に開発中(master ブランチ)のコードはいろいろな機能が追加されてまだ時間が経っていないので、追従して使っているとバグを発見する事があります。
Contribution のチャンスですね。
ユーザの報告から
自分では思いつかなかったような使い方をして問題が発見されるというケースです。
Github の Issue には「Bug」のタグが付いているオープン状態の Issue が執筆時点で22件あります。すでにバグであると判断されているので、仕様なのかな?バグなのかな?と迷うことなく取り組むことが出来ます。
Redash ではその他に Discourse のフォーラム、Gitter のチャットルームでユーザからのバグ報告や機能追加要望を受け付けています。
Contribution のチャンスですね。
英語について
PR や Issue は特別な理由がない限り英語で書きます。日本語で書くよりもたくさん時間をかけて提出しても、自分の意図が伝わらなかったらヘコみますね。
自分が前に出した PR を読み返すと時制や前置詞が間違っているのに気づくという事がよくあります。
ただし、メンテナの立場からすると今ある課題を解決したり問題提起してくれるものであれば、多少おかしな英語であってもレビューするメリットがあるはずです。
高校卒業程度の英語の読み書きが出来ていれば十分だと割り切って、まずはじめてみるのはどうでしょうか。サンプルコードやスクリーンショットを貼り付けて補足をしつつ、実戦で学習した方が効率がよいと考えています。
これは英語に限った話ではないのですが、必要以上に恐れて行動に移せない方がよっぽど問題だと思います。
なぜ OSS Contribution を行うか
会社のみんなが大切にしている行動指針のひとつに「自らとサービスの成長を同時に実現する」というものがあります。
自分の成長だけを目指すのはエゴですし、チームとしてあまり面白くなさそうです。
また、会社からサービスの成長だけ期待されているのは、よっぽどの好待遇でない限り、いわゆる”やりがい搾取”だと思います。
自分はこのふたつを同時に実現するための手段のひとつが OSS Contribution だと考えています。
まず、OSS プロダクトにコミットすることで自身の技術的な成長が期待できます。設計を理解したり、どういう時にバグが出るのかというのはなかなか経験しないと身につかないと思います。
また、プロダクトが採用している言語やライブラリ、手法が優れていればそれを自分たちのサービスに取り入れる提案をしたり、実際に改善までつなげる事ができます。逆に残念ながらプロダクトが失敗した場合でもそのパターンを経験することで失敗を未然に防げる可能性は高くなります。
ひとつのサービスばかり見ていると当然そのサービスについて詳しくなりますが、視野が狭くなり世の中の開発トレンドから遅れるのは間違いないでしょう。
これからどうしたいか
将来的にインパクトのあるコミットをしたい、という思いはありますが、まずは小さくてもいいので継続的に Contribution を行っていきたいです。
Redash だけでなく、他の OSS にもどんどん挑戦して、その時のノウハウを共有していければと思います。その結果、自分とサービスの成長を実現できたらとてもうれしいですね。