web-dev-qa-db-ja.com

どうすれば参加できる優れたオープンソースプロジェクトを見つけることができますか?

私は1年前に仕事を始めたばかりで、他の人と同じ理由でオープンソースプロジェクトに参加したいと考えています。役立つものを作成し、スキルをさらに伸ばすために協力してください。

私の問題は、自分が適合するプロジェクトを見つける方法がわからないことです。

初心者に優しいプロジェクトを見つけるにはどうすればよいですか?どの属性を検索する必要がありますか?プロジェクトが適切であることを警告している兆候とは何ですか人々をオープンソースプロジェクトに適合させるのに役立つツールはありますか?

同様の質問 here がありますが、その質問は雇用に関係しており、PHP/Drupalに限定されています。

152
Pops

私が最初にオープンソースに貢献したのは、以前の有料プロジェクトで以前に使用した(そしてそれなしでは大いに苦しんでいた)ライブラリでした。最初の使用中にコードのバグを見つけたので、パッチを作成し、プロジェクトに参加して、レビューのために提出しました。

約8か月後、自由な時間があったので、プロジェクトにもっと貢献することで、恩返し(そして開発スキルの向上)をすることにしました。だから私はリポジトリを複製し、コードベースに慣れ始めました。マイナーなパッチ修正をコードベースに送信し、機能リクエストを監視してから数週間後、私はかなりのモジュールをプロジェクトに追加する機能リクエストをピックアップしました。

多くの個別のパッチ修正を生成することは、重要な開発にとってかなり退屈な作業なので、リポジトリをgit hubのブランチに複製し、コードをパンチし始めました。数週間後、数千行のコードの後、プロジェクトリーダーと私は、コードベースの他の部分と一貫して機能するように、修正をライブラリに統合してテストする作業を行いました。

それは私が多くから学んだ貴重なプロセスでした:

  • 私が始めたとき、Gitの使い方がわからなかったので、結局、リモートトラッキングブランチを巧みに作成し、それらをマスターブランチにマージまたはリベースすることができました。
  • 私はVS 2008で始め、結局LinuxとMonodevelopに移行してコードの作成に取り掛かりました(VSはユニコードの遅延があり、行末がgitで非常に面倒なので)。 * nixでできることは* dowsでできることは多くないことがわかりました。
  • これまでユニットテストを実際に行ったことはありませんでした。Nunitは簡単に使えるものであり、ユニットテストの記述はかなり基本的なものです。
  • 私は舌を飲み込み、耳を傾け、忍耐力を練習することを学ぶ必要がありました。オープンソースプロジェクトでの立場をしっかりと立てるのは意味がありません。関係する誰もが(おそらく自分よりも)知識が豊富で、配信ではなく物質に基づいてアイデアを受け入れたり拒否したりできるからです。それは非常に謙虚であり、同時にやりがいがあります。
  • 私のコードの大規模なベースに他の熟練した開発者の目を向けただけで、今まで考えたことのないスタイルの欠陥が指摘されました(そして彼のコードの欠陥も指摘しました)。私にとって、定数を定義する方が詳細なコメント付きの魔法の数字の束を使用するよりも簡単/良いことを学びました。

その特定のプロジェクトは、ネットワークプロトコルのすべてのレベルでのネットワークパケットの生成とデコードに基づいていました。私は下位レベルのネットワーキングに個人的な興味を持っているので、ドメイン内で共通の興味と知識を持つ他の開発者と話し合うことができて良かったです。

足を濡らしたいだけの場合:すでに使用しているプロジェクトを見つけます。リポジトリのクローンを作成します。いくつかのバグを修正したり、ユニットテストを追加したりできるかどうかを確認します。他人のコードベースを新鮮な目で見るのは怖いようですが、学ぶことは非常に貴重なスキルです。いくつかのパッチを提出してください。最初はコードが綿密に調査されることを期待できます。心配する必要はありません。これは、プロジェクト管理者の信頼を獲得するプロセスの通常の部分です。

プロジェクト管理者とのメリットの基盤を確立した後、管理者は、新しい機能の提案、機能リクエストの実装への割り当てなど、より多くの責任を求め始めます。

メインのオープンソースリポジトリネットワーク(github、sourceforge、googleコード)のいずれかで既存のプロジェクトが見つからない場合は、まだ使用していないアプリを考えて、自分で始めてください。

謙虚に準備し、さらなる改訂を支持して作業が拒否されることを期待してください。誰でもオープンソースプロジェクトにコードを追加できるという神話は完全に誤りです。あなたとプッシュアクセスの間には、常にゲートキーパーがいます。あなたのコードが良いほど、プロジェクト管理者の信頼を得るので、長い目で見られるコードは少なくなります。それがあなたのプロジェクトであれば、あなたはその門番になります。

更新:

私はそれについて考えただけで、私の答えの多くが参照しているプロジェクトについて言及するのは面倒だと気づきませんでした。知りたい人は SharpPcap です。リード開発者のChris Morganは非常に専門的で的確です。彼はプロジェクトを管理する仕事を地獄で行い、OSSプロジェクトを成熟させるために必要なことについて多くのことを教えてくれました。

個人的な時間の制約により、1年以上コードを提供することはできませんでしたが、それでもスタックオーバーフローに潜入し、時々SharpPcapに関する質問に答えることで、返済を試みています。

111
Evan Plaice

ここで私はあなたの完全な一致を見つけるために何をすべきかを提案します:

  1. すでに使用していて、知っており、気にかけているオープンソースプロジェクトがある場合、それは最初に試す候補になるはずです。それ以外の場合は、一般に何をしたいかについて考え、この領域でプロジェクトを検索します。

  2. 潜在的なプロジェクトを見つけたら、急いでそれを行わないでください。自分で使ってみてください。説明とレビューから見えたのと同じくらい、それは実際にうまくいっていますか?そうでなければ、それは完全なショーストッパーではありません。多分それはあなたが飛び込んで本当に違いを生む機会です。結局のところ、完璧な製品のために別の開発者を必要とする人はいません。しかし、このプロジェクトに参加したいかどうか、また、関心のある分野で新しいテクノロジーを直接体験しながら、重要な洞察を得ることができます。

  3. また、プロジェクトにあまりにも多くの時間を費やしてその内外を学ぶ前に、プロジェクトのメーリングリスト、フォーラム、さらにはバグ追跡システムに数週間滞在することを検討してください。定期的にプロジェクトへの貢献を開始する場合、そこで多くの時間を費やすことになります。

考え出す:あなたはそこにぶら下がって楽しんでいますか、それともあなたのための抗力ですか?このプロジェクトには良いエネルギッシュなコミュニティがあるように感じますか、それともゆっくりと消えていきますか?そこにいるコアな人々は、新規参入者を励まし、指導しているように見えますか、それともあなた自身でいますか?

複数のプロジェクトで、場合によっては異なる領域でこれらの手順を実行すると、間違ったチームに参加したときに来る失望を経験する可能性が低くなります。そのような経験は、将来再びそれをすることを思いとどまらせる可能性があります。

さらにいくつかの考え:

あなたが本当に興味を持っているプロジェクトが、多くの開発者とその周りの活動を伴う有名なプロジェクトである場合、おそらく、権限やコミュニティでの興味深い役割を得るために十分な評判を確立するのに苦労するでしょう。この場合、関連性の低いスピンオフプロジェクトに参加することを検討してください。たとえば、jQueryへの貢献を開始するのではなく、自分に適したjQueryプラグインを見つけてください。後で「上に移動」することを検討できます。

プロジェクトが好きで、そのサイズ、複雑さ、またはコード品質の要件に不安を感じている場合は、テスト、ドキュメントのメンテナンス、バグレポートの検証など、サポートの役割から始めることを検討してください。プロジェクトのメーリングリストで、現時点で彼らが最も必要としている支援の種類を尋ねると、彼らは喜んであなたを案内してくれます。 :)

このようにして、準備ができるまで何度も拒否される標準以下のパッチを提出し始めた場合よりも、プロジェクトを学び、評判を高めながら、プロジェクトに貢献します。

最後で最も重要なもの:1か所でやけどを負った場合は、先に進んでください。あきらめないでください。

お役に立てば幸いです。

28
kdubinets

誠実なinterestを備えたオープンソースプロジェクトを見つけ、積極的にseすることを強くお勧めします。

理由は簡単です。それは雑用と趣味の違いを生みます。

コンピュータを見てください。オープンソースのソフトウェアは何ですか?推測はChromeまたはFirefox、あるいはおそらくOpen Officeまたはインスタントメッセンジャークライアントです。それらは完璧ですか、それとも、可能であれば変更したい小さなことだけですか?

もしあれば、今こそそれについて何かをする時です。

9
user1249

人々が何年も前からやっているように、プロジェクトを見つけて(または始めて)、オープンソースソフトウェアを使って物事を始めることをお勧めします。これは、おそらく単純化されていても、些細なことのように思えるかもしれません。それでも、何かを使用したり、バグを見つけたり、ソースを取得して修正したりすることの満足度を説明するのは非常に困難です。または、おそらくそれを変更して、希望どおりに機能するようにします。

また、「関与」するためにハッキングするだけではありません。 Linuxカーネルへの私のパッチの95%は、決して日の目を見ることはありません。私はsureで私以外の誰もそれらを望んでいないことを知っています。他の有能なカーネルハッカーがそれを見た場合、おそらく精神医学的評価を受けることを余儀なくされるでしょう。しかし、数年前に4月1日のギャグとして始まったpiglatin_printk()の実装を今でも楽しんでいます:)

そうですが、コードと思考プロセスを他の多くの有能な人々の前に配置することは貴重なことです。そのため、コミュニケーションとコラボレーションの方法を学ぶことも重要です。ソロプロジェクトは、何をしてはいけないかを示す優れた方法です。ヒント、バージョン管理ソフトウェア、メーリングリスト、バグトラッカーを使用するだけではありません。

はじめに、まず Ohloh を調べて、usingで興味があると思われるソフトウェアを見つけることをお勧めします。ダウンロードして、ビルドして、遊んでください。次に、他のものをつかみます。やがて、何かを改善したいと思うようになったり、発見したものとはまったく異なるものを実装したいという衝動があることに気づくでしょう。

役立つもう1つのことは、オープンフレンドリーな企業で働くことです。私の会社ではXenを多用しているので、興味深いバグを見つけて修正することに問題はありません。とにかくそうする必要があるからです。最終的に結果を使用するため、RFCやドラフト仕様などに参加している従業員も問題ありません。

8
Tim Post

OpenHatch これのために特別に作成されました。

引用するには:

OpenHatchは、将来のフリーソフトウェアの貢献者とコミュニティ、ツール、および教育とのマッチングを専門とする非営利団体です。

タイプ、テクノロジー、必要なスキルレベルなどでプロジェクトを閲覧し、自分のレベルに一致するものを見つけることができます。

7
phw

オープンソース開発を始めようとしている人に関して、私が繰り返し気づいたことの1つは、大規模なプロジェクトの複雑さと規模に圧倒されていることです。私は数年前に同じ問題に直面しました。私の経験から、大きなプロジェクトをすぐに見ないことが最善です。

自分が好きかもしれないプロジェクトを時々見た後、私はそれらがまだ私の手の届かないところにあることに気づき、そして自分で非常に小さなプロジェクトに取り組み始めました。私はそれが本当に関係があるかどうか、または他の人がそれを使い始めるかどうかに関係なく、Githubでコードをリリースすることをポイントにします。結局、人々はあなたがしていることに興味を持ち始めるかもしれません。それ以外の場合でも、大きくて人気のあるプロジェクトにゆっくりと移行するための自信と技術的能力を得ることができます。

4
Checksum

私が始めたとき、私はオンラインでオプションを検索しましたが、初心者として歯を磨くことができるものを見つけるのは困難であることがわかりました。

いくつかのプロジェクトは、あまりに進んでいるためではなく、コミュニティが歓迎されていないために貢献することが困難です。したがって、壁にぶつかったときに落胆しないでください。

検索の最中、私は初心者がストレスの少ないプロセスでサポートを開始できる10のオープンソースプロジェクトのリストをまとめることにしました。使用するリンクは次のとおりです。

初心者がサポートして学ぶ10のプロジェクト

お役に立てば幸いです。クールなものがあれば、いつでも追加できます。

3
Eenvincible

私は読むことをお勧めします http://open-advice.org/

これは、コミュニティを作成して維持する人々、およびどのコミュニティに参加したいのか、またはどのように参加するのかについて自信がない人々を支援することを目的としています。

それができない場合は、あなたと共鳴する使命を持つプロジェクトを見つけるか、フォークしてすでにあなたに役立つプロジェクトに貢献してください。

幸運を。

3
user549213

これに特化した Code 52 と呼ばれる新しいWebサイトがそこにあり、毎週新しいOSSプロジェクトを開始することにより、新しい開発者がオープンソースに参加することを奨励しています。

これは、これまでオープンソースに関与したことがない人にとってはそれほど難しくないように思われ、他のOSSプロジェクトにも関与したいと思うようになると思います。

3
Marcus Swope

興味のあるトピックについて、自分でプロジェクトを始めることをお勧めします。

プロジェクト全般に取り組むことで、多くのことを学ぶことができます。より良いコーディング方法を学ぶために他の誰かがどのようにコーディングするかを見る必要はありません。また、他の人はあなたよりも経験が浅いことが多いため、実際に何をすべきでないかを実際に目にすることがあります。

通常、他の人のコードを確認するのに役立ちますが、使用するライブラリとコンポーネントを介して、自分のプロジェクトで他の人のコードに遭遇します。

経験から、良いことと悪いことを教えてくれます。

2
Brian R. Bondy

私はGoogleコードのプロジェクトオーナーであり、貢献者を探しています。 (しかし、私はnotこの回答を広告に誤用します。)したがって、私の意見はあなたにとって興味深いかもしれません。

最初に、あなたが何に興味があるかを見つける必要があります。次に、あなたの興味に関連するいくつかの分野の専門知識を身に付けます。次に、your専門知識が要求され、必要とされるプロジェクトを見つけます。

プロジェクトが小さければ小さいほど、すでにそこにいる寄稿者が少なくなるほど、寄稿者が求められる可能性が高くなり、著者/プロジェクトオーナーに直接連絡することができます。 a)あなたの専門知識が何であるかb)それがプロジェクトに適用できると思う場所c)あなたが達成できると思うこと.

覚えておいてください:1つまたは2つの主流のプログラミング言語を知ることはnot専門知識です。

2
Ingo