参加する優れたオープンソースプロジェクトを見つけるにはどうすればよいですか?[閉まっている]


152

私は1年前に働き始めたばかりですが、他の誰かと同じ理由でオープンソースプロジェクトに参加したいと思っています。何か役に立つものを作成し、自分のスキルをさらに高めてください。

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

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

ここにも同様の質問がありますが、その質問は雇用に関するものであり、PHP / Drupalに限定されています。


9
クール、私はArsTechnicaを見て、この質問が記事として取り上げられているのを見ました。こちらがリンクです。arstechnica.com/business/guides/2012/03/...
エヴァンアカガレイ

回答:


111

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

約8か月後、空き時間ができたときに、プロジェクトにさらに貢献することで、私は還元する(そして開発スキルに取り組む)ことを決めました。そこで、リポジトリを複製し、コードベースに慣れ始めました。コードベースにマイナーパッチ修正を送信し、機能要求を監視して数週間後、機能要求をピックアップして、かなり実質的なモジュールをプロジェクトに追加しました。

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

これは非常に貴重なプロセスであり、次のことから多くを学びました。

  • 始めたときはGitの使い方がわからなかったので、最後にはリモートトラッキングブランチを巧みに作成し、汗をかくことなくそれらをマスターブランチにマージまたはリベースできました。
  • 私はVS 2008で始め、LinuxとMonodevelopに移行してコードの作成に取り組みました(VSはユニコードが遅延しており、行末はgitでは非常に苦痛だからです)。* dowsでできることは* nixでできないことはほとんどありません。
  • 私は以前にユニットテストを実際に行ったことがありませんでした。Nunitは使用するケーキであり、ユニットテストを書くことはかなり基本的なものです。
  • 舌を飲み込み、聞くだけでなく忍耐を練習する必要がありました。オープンソースプロジェクトのあなたの立場に確固たる地位を築くことは意味がありません。関係者全員が知識があり(おそらくあなたよりも)、実質ではなく物質に基づいてあなたのアイデアを受け入れ/拒否できるからです。同時に非常に謙虚でやりがいがあります。
  • 他の熟練した開発者が私のコードの大部分に目を向けるだけで、これまで考えたことのないスタイルの欠陥が指摘されました(そして彼のコードの欠陥も指摘されました)。私にとっては、定数を定義するほうが、詳細なコメントを付けた多数の魔法の数字を使用するよりも簡単であることがわかりました。

この特定のプロジェクトは、ネットワークプロトコルのすべてのレベルでネットワークパケットを生成およびデコードすることに基づいています。私は低レベルのネットワーキングに個人的な関心を持っているので、ドメインの関心と知識を共有している別の開発者と議論するのは素晴らしいことでした。

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

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

メインのオープンソースリポジトリネットワーク(github、sourceforge、google code)のいずれかに既存のプロジェクトが見つからない場合は、まだ存在しない本当に使用したいアプリを考えて、自分で起動します。

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

更新:

私はそれについて考えただけで、私の答えの多くが参照しているプロジェクトを言及することを気にしていないことに気付きました。知りたい人のために、それはSharpPcapです。主任開発者のクリス・モーガンは非常に専門的であり、適切です。彼はプロジェクトを管理するという大変な仕事をしており、OSSプロジェクトを成熟させるために必要なことについて多くを教えてくれました。

個人的な時間の制約のため、私は1年以上コードを提供することができませんでしたが、スタックオーバーフローに潜んでいて、SharpPcapに関する質問に時々答えることで、まだ還元しようとしています。


この点で人気のあるサイトを提案できますか?
アディティアP

2
@AdityaGameProgrammerオープンソースホスティングサイトではなく、特定のプロジェクトを探すことにもっと重点を置きます。ホスティングサイトは、オープンソースプロジェクトの単なるゴミ捨て場であり、より優れた機能(特定のライセンスのサポート、バージョン管理のサポート、バグトラッカーの改善など)が見つかると、一部のプロジェクトは別のサイトに移行します。すでにいくつかの名前を付けました。私見、github、googleコード、sourceforgeが最も人気があります。Launchpad(bazaarバージョン管理を使用)は、ほとんどのUbubtu / linux開発が行われている場所です。
エヴァンプライス

2
@AdityaGameProgrammer(続き)Github、sourceforge、およびgoogleコードはすべて、プロジェクトの熱狂的な塊です。sourceforgeの方が長い間使用されているため、おそらくより多くのデッド/孤立プロジェクトが見つかるでしょう。最初に興味のあることを検討するために時間をかけると、参加するプロジェクトを見つけるのがずっと簡単になります。例外は、独自のプロジェクトをホストする場合です。次に、通常の開発ワークフローに最適な機能を探し回ってください。
エヴァンプライス

ありがとう。sourceforgeでそれを見つけようとする以前の試みは、膨大な数のデッド/オーファンプロジェクトにつながりました。
アディティアP

28

ここであなたの完璧なマッチを見つけるために私がすることを提案します:

  1. すでに使用し、知っており、気にかけているオープンソースプロジェクトがある場合は、最初に試してみてください。それ以外の場合は、一般的にやりたいことを考えて、この分野のプロジェクトを検索します。

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

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

考え出す:あなたはあちこちにぶらぶらしているのを楽しんでいますか?このプロジェクトは、元気で良いコミュニティを持っているように感じますか、それともゆっくりと死んでいきますか?そこにいる中核の人々は、新参者を励まし、指導するように思われますか?

潜在的に異なる分野の複数のプロジェクトに対してこれらの手順を実行すると、間違ったチームに参加したときに失望する可能性が低くなります。そのような経験は、将来あなたが再びそれをすることを潜在的に落胆させる可能性があります。

さらにいくつかの考え:

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

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

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

最後の、そして最も重要なこと:あなたが一カ所でやけどを負ったら、先に進んでください。あきらめないでください。

お役に立てば幸いです。


2
「サポートロールから開始することを検討する」ための+1。テストの作成は非常に簡単で、テストをよく見ると、コードが何を達成しようとしているのかがわかります。文書化は「全体像」を理解するための良い方法であり、バグを検証することは、氷を突破するための良い障壁の入り口です。開発者が通常無視するものに取り組むことは、あなたの焦点がプロジェクトを改善することであり、あなたの貢献が単なる自我駆動ではないことを示しています。自我の問題は、プロジェクトのメンテナーにとって人生を困難にする可能性があるため、そのようなことに注意してください。
エヴァンプライス

9

あなたの誠実な興味を持つオープンソースプロジェクトを見つけて、あなたが積極的に使用することを強くお勧めします。

理由は簡単です:それは雑用と趣味の違いになります。

お使いのコンピューターをご覧ください。オープンソースのソフトウェアは何ですか?推測は、ChromeやFirefox、あるいはOpen OfficeやInstant Messengerクライアントでしょう。それらは完璧ですか、それとも可能であれば変更したい小さなものがありますか?

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


8

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

また、「関与」するためだけにハッキングしないでください。Linuxカーネルへの私のパッチの95%は決して日の目を見ることはありません。私以外の誰も望んでいないことは確かです。しかし、私はまだpiglatin_printk()数年前に4月1日のギャグとして開始された実装を楽しんでいます:)

はい、他の多くの有能な人々の前であなたのコードと思考プロセスを取得することは非常に貴重です。ソロプロジェクトは、やってはいけないことを示す素晴らしい方法です。ヒント、バージョン管理ソフトウェア、メーリングリスト、バグトラッカーを使用するだけではありません。

はじめに、Ohlohを掘り下げ、最初にを使用興味のあるソフトウェアを見つけることをお勧めします。ダウンロードして、ビルドして、遊んでください。それから何か他のものをつかんでください。最終的には、何かを改善したい、またはあなたが見つけたものとは完全に異なるものを実装する衝動があることに気付くようになります。

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


+1 piglatin_printk()?陽気ですね。私はそれが実際に動作するのを見たいです。Linuxカーネルパッチの大部分が拒否されたことは驚くことではありません。重要なプロジェクトには楽しみ/創造性の余地があまりありません。幸いなことに、コードを受け入れるためのエントリの障壁がはるかに低い小規模なプロジェクトがたくさんあります-貢献がコミットされる前に何らかの作業が必要な場合でも。
エヴァンプレイス

1
@EvanPlaice彼らは拒否されず、提出されなかっただけです;)
ティムポスト

7

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

引用するには:

OpenHatchは、無料のソフトウェア貢献者候補をコミュニティ、ツール、教育とマッチングすることに特化した非営利団体です。

タイプ、テクノロジー、必要なスキルレベルなどでプロジェクトを参照し、レベルに合ったものを見つけることができます。


一つは、また、チェックアウトすることができ:)偉大な小さなサイトfreecode.comを
ニャチャン

4

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

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


3

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

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


1
私はそれを調査してきましたが、追加すべきメモがいくつかあります。Code52は、「マイクロソフトの2012年パートナーオブザイヤー」というタイトルを獲得したと主張するReadify社の3人の開発者が率いています。プロジェクトはGitHubでホストされていますが、プロジェクトはすべて WinJS(つまり、ターゲットWin8)で記述されており、Microsoft Public Licenseを保持しています。大まかな外観からMPLはコピーレフトですが、デリバティブが同じまたは同様のライセンスを継承することを要求する特定の制限があります。すなわち、はるかに制限の少ないMITライセンスよりもGPLライセンスに似ています。
エヴァンプライス

このプロジェクトは非常に魅力的に見えますが、これはMicrosoftが新たに設立したOpen Source Developer Digital Sharecroppingプログラムであり、1ドルもかけずに新しいWindows 8エコシステムにデータを追加するという気持ちを揺るがすことはできません。ネックベアダーを身に着けているアルミ箔の帽子のようには聞こえませんが、MSはオープンソースとの統合に関しては最高の評判を得ているわけではありません。
エヴァンプライス

1
-1このサイトは、基本的に1年以上前に死んだ(更新はありません)
Michael Durrant

3

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

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

それに失敗したら、あなたに共鳴するミッションを持つプロジェクトを見つけるか、あなたに既に役立つプロジェクトに分岐して貢献してください。

幸運を。


3

私が始めたとき、私はオプションをオンラインで検索しました、そして、あなたが初心者としてあなたの歯を沈めることができる何かを見つけることは挑戦的であるとわかりました。

一部のプロジェクトは、あまりにも高度であるためではなく、コミュニティが歓迎していないために貢献するのが困難です。だから、壁にぶつかってもがっかりしないでください。

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

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

役立つと思いますし、かっこいいものを見つけたらいつでも追加できることを願っています!


それが何をするのか、そして尋ねられた質問に答えるのになぜそれをお勧めするのか、もっと説明してもらえますか?Stack Exchange では「リンクのみの回答」は歓迎されません
-gnat

2

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

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

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

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


1
これは素晴らしいアイデアだと思いますが、初心者プロジェクトとしてそれを行うのは恐ろしいことです。特に、コードレビューや入力を追加できる他の人がいない場合。私自身のプロジェクトは多くの書き直しと数千行のコードを経てきました。なぜなら、Xの方が優れているとは誰も言わなかったからです。確立されたプロジェクトに参加することで、学習が大幅に加速されます
TheLQ

@TheLQ:それはあなたの経験レベルに依存します。最初から何かをすることは、すでに多くのことを行っているチームに参加することによって多くの教訓と学べないことを教えてくれます。私の意見では、あなた自身のプロジェクトや他の誰かのプロジェクトについて、商品や不良があります。
ブライアンR.ボンディ

@TheLQ私は完全に同意します。既存のプロジェクトに参加することは非常に貴重な経験です。なぜなら、オープンソースプロジェクトがどのように管理され、組織がどのように構成されているかを知ることができるからです。他の誰かの成功したプロジェクトに取り組んだ後、自分のプロジェクトを作成することへの飛躍は公園を散歩することでした。
エヴァンプライス

2

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

あなたは最初のものを見つける必要があるでしょうあなたがに興味が「再。その後に関連するいくつかの分野でいくつかの専門知識を開発し、あなたの興味。次に専門知識が要求され、必要とされるプロジェクトを見つけます。

プロジェクトが小さければ小さいほど、すでに貢献者が少ないほど、貢献者が求められる可能性が高くなり、作成者/プロジェクト所有者に直接連絡することができます。a)あなたの専門知識を教えてくださいb)プロジェクトでそれを適用できると思われる場所c)あなたが達成できると思うもの。

覚えておいてください。1つまたは2つの主流のプログラミング言語を知っているだけでは専門知識ではありません


興味のあることを判断したり、それらの分野の専門知識を蓄積したりするには、どのようにすればよいでしょうか?
アダムリア

2
@Annaあなたの質問を理解したかどうかわかりません。ネットワークプロトコルやGPUの内部動作などの低レベルのものから、非常に抽象的でほぼ数学的なトピック(解析、型システム、カテゴリ理論など)まで、何百ものトピックがあります。最も偉大な天才はそれらすべてを習得するわけではなく、天才である彼がそうではない分野の専門家である誰かを喜んで持つでしょう。しかし、あなたが本当に興味を持っているのは、あなた以外の誰にそれを伝えることができるのですか?
インゴ

1
ええ、興味を発見することはおそらくかなり個人的なことです(またはアドバイスは「さまざまなことを試して、好きなものを見る」ことになります)が、専門知識を獲得することについてはどうですか?あなたは、それがいくつかの言語を知っているだけではないという。では、新しいトピック/主題を考えて、その専門知識を得るために何をしますか?私にとっては、OSSプロジェクトへの参加はそのプロセスの一部になりますが、私があなたを正しく読んでいるなら、プロジェクトに参加する前に専門家であるべきだと提案しています。
アダム・リア

どうしましょう?本を読む。PDFを読む。知り合いやネットで話し合う。試してみてください。練習。そのトピックに関して出てくるSOに関するすべての質問に答えてください。そしてある日、あなたよりもよく知っている人がほとんどいないことに気づきます。-「専門家」に関して文字通り私を連れて行ってはいけませんが、オープンソースプロジェクトでは、それは自発的であるため、誰かに仕事を強制する方法はありません-したがって、自分が何をしていて欲しいかを知っている人それを行うこと は大歓迎です。
インゴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.