Rails開発者になりたての頃、Railsのgemはすべて魔法だと思っていました。賢い人たちが、私が使えるように素晴らしいクラスライブラリを作ってくれていたのです!私はこれらのクラスライブラリをいくつ使えるかわかりませんでしたし、良いものだと思っていました。私が必要とする仕事をしてくれるし、動いてくれます。とても深く考え抜かれているようで、貢献したくてもどうしたらいいのかわからないくらいです!
今日に至るまで、私はまだRailsコミュニティにオープンソースコードを貢献していません。というのも、Railsコミュニティはオープンソースが非常に活発なので、貢献できるものを見つけるのが実は難しいのです!もちろん、問題を掘り下げて解決しようとすることはできますが、率直に言って、たいていは複雑すぎて気が遠くなります。これだけ頭のいい人たちが問題を議論しているのに、自分がその問題を解決できるほど優秀になるとは考えられません!
モバイル・メイカーズ(Mobile Makers)に参加したのは、私がiOSを始めたばかりの頃で、初めてオープンソース・コードに貢献しました!それ以来、私はより多くのことを行い、さらに多くのプロジェクトにコードを貢献することを恐れなくなりました!ここでは、私がどのようにその一歩を踏み出したか、そしてその過程で学んだことを紹介します:
魔法ではありません。
Railsコミュニティから飛び出した私は、オープンソースのクラスライブラリに対するある種の不信感があることをすぐに知りました。私がすべてのCocoaPodsを常に使いたいと考えていたとき、チームのシニアiOSエンジニアは常に外部のクラスライブラリの使用に疑問を投げかけ、可能であれば自分たちで構築することを好みました。
iOSプロジェクトでは、常に使用できるiOSライブラリは非常に少なく、ほとんどのプロジェクトでは最初のうちはいくつかのライブラリしか使用しません!CocoaPodsや、依存関係の削除やアップグレードが簡単にできるようになったおかげで状況は変わりつつありますが、Railsのレベルには達しておらず、ほとんどのプロジェクトはまだプラグアンドプレイのライブラリで構成されています。
従うことは分かち合うこと
オープンソースのプロジェクトを積極的に探して貢献することを勧めている人たちが何人かいますが、私が貢献したプロジェクトはすべて、私自身のコードで実際に使われていることがわかりました。
実際のところ、私は貢献するために積極的にgithubで問題やクラスライブラリを探す時間がありません。でも、自分のプロジェクトでクラスライブラリを使うときは、Xの機能が欲しいとか、Yのバグを解決して欲しいとか思うものです!実際、オープンソースに貢献することを楽しんで以来、このような機会を見つけるととても興奮します!
これは次の議論につながります......。
とても素晴らしい気分です......。
オープンソースへの貢献は本当に病みつきになります!以前はコードの書き方を知っていたので、コンピュータを思い通りに動かすことは信じられないことで、魔法使いになったような気分になります。でも、他の人たちの「魔法のような」コードをより良くすることができ、その人たちもあなたがより良くすることができると同意してくれたとき、この気持ちを表現する言葉はありません。レベル1の魔法使いからレベル10の魔法使いになったような気分です。
小さな始まり
また、私はオープンソースの貢献者を、魔法の杖を持った魔法使いのように見ています。各個人の基本的なアプローチに基づいて累積的に追加され、最終的にはクラスライブラリ全体を変更し、改善するだけなのです。ですから、小さな変化の力を過小評価しないでください!
私が最近貢献しているプロセスの一例です:
READMEの修正
いくつかのライブラリを探した後、この特定のToastライブラリが実際にCocoaPodであることを発見しました!他のiOS開発者にもCocoaPodが利用可能であることを知ってもらうために、ライブラリのREADMEにCocoaPodのインストール手順に関するプルリクエストを提出しました。 マイナーな変更ですが、他の開発者の役に立つことを願っています!
同一機能の追加
しかし、RobotoViewsには含まれていない必須のクラスライブラリがあります。新しいSwitchビューです。Switchビューを追加するのは、他のビューと同じようにコピー&ペーストを繰り返すだけなので、それほど難しくありませんが、別のビューをRobotoViewsとして使うことはできます!
つまり、RobotoViewsの作者は、ほんの少しの修正で新しいビューを追加できるようにするために、あらゆる苦労をしてきたのです。
同様に、私は人気のあるiOS Foursquare client library、元々なかった機能を追加することで貢献しました。
再構築
いくつかのバリエーションを持つ3つの関数が同じコードを持っていることに気づいたとき、ECSlidingViewControllerとても小さな修正を加えて、スライドメニューがスライドしたときにキーボードが隠れるようにしました。そこで、将来的にこの関数を変更する必要がある人が一度だけ変更すれば済むように、3つの関数が異なるパラメータを渡すだけで呼び出せるような関数を作るためにコードをリファクタリングしました。
どうしましょう。
この素晴らしいRailsCastをご覧ください: オープンソースに貢献する方法のステップバイステップガイドです。しかし、基本的には以下のステップがあります:
フォーク
Githubで貢献したいライブラリを見つけて、Forkボタンをクリックするだけです!
クローン
次に、フォークしたいライブラリをクローンしてください!
ブランチ、変更、プッシュ
コードベースをクローンしたら、codebase フォルダに移動します。次に、これから行う変更を反映させた意味のある名前でブランチの新しいコピーをチェックアウトします。変更を加えて、そのブランチを github にプッシュします。
Githubのプロフィールのトップページに行くと、大きな緑色の "Compare and Pull Request "ボタンがあります。ファイルを見て問題がないことを確認し、元のブランチにプルリクエストを送信してください!繰り返しますが、元の作者の master ブランチにプルリクエストを送ったことを確認してください!
ツイート
このステップはもちろん任意ですが、私は作者に変更を知らせるツイートを送るのが好きです。特に最近の変更がほとんどない古いコードベースでは、githubの通知をオンにしていないかもしれません。
彼らは忙しくてMERGEする暇がないかもしれません。プルリクエストがいつまでも残っているわけではありません!
お楽しみください!
本当に、オープンソースに貢献することは本当に楽しく、自分自身のスキルを向上させるだけでなく、****な人々から学ぶ効果的な方法です。このガイドがあなたのオープンソースに対する恐怖心を和らげることを願っています!