オープンソースプロジェクトやLinux全般に貢献する方法を学び始めることに興味があります。私は最初の1年です。今年はコンピュータサイエンスの学生で、主なプログラミング言語としてc ++を使用しています。
典型的なGPLアプリケーションをどのように構成すべきかはどこで学べますか?これは、ソースファイルのレイアウトを意味します。たとえば、GPLv3に準拠させるには、すべてのファイルに何を含める必要がありますか。
どのプロジェクトにコーダーが必要で、正確に何を行う必要があるかをどのようにして見つけますか?私は本当に参加したいのですが、参加する方法についての手がかりはありません。私がティーボーイになれるとしたら、
FOSSの世界には、多くのコミュニティ、コーディングのさまざまな標準、さまざまな哲学があることを理解してください。プログラムのライセンスと参加のためのコーディング標準およびエチケットを関連付けているようですが、常にそうであるとは限りません。
GNU Project と Linux kernel の2つの最大のコミュニティを見てみましょう。私はBSDを除外するつもりはありません。私はそれについて説明します。私はあなたの質問に(主に)質問した順序で対処しているだけです。
GNUプロジェクト、 Free Software Foundation)が所有するプロジェクト は多くのものを提供します:
GNUには非常に高い コーディング標準 のセットがあります(これらの標準は複雑すぎると言う人もいます)GNUソフトウェアは、さまざまなシステムでのビルドおよび実行で悪名高く、アーキテクチャ。どのように動作するかを理解するには、 GNU Hello、World! プログラムをご覧ください。「Hello、World!」の実装がアクティブに維持されているという事実は、何かを教えてくれるはずです。
FSFはGNUプロジェクトのニーズを処理するだけでなく、すべてのコンピュータユーザーが持つべき本質的な自由であると感じているものを擁護しています。彼らは特許戦争の溝にいます、 [〜#〜] eff [〜#〜] および [〜#〜] sflc [〜#〜] と密接に関係し、テクノロジー製品に対するキャンペーンを頻繁に組織します。彼らはコンピュータユーザーから本質的な自由を奪うと感じています。
GNUプロジェクトで作業したい場合は、最初の良い方法は、彼らのフロントページに行き、新しいメンテナを必要とするいくつかのプロジェクトを探すことです。あるいは、バグとパッチの送信。それらは非常にアイデアのあるコミュニティであることを理解してください。したがって、彼らが情熱を持っているものについて読むように注意してください。たとえば、GNU program "を呼び出すのは賢明ではありませんGNUメーリングリストのオープンソース "、彼らは"フリーソフトウェア "という言葉をずっと好む。
Linuxは Linux Foundation の傘下で開発されています。彼らは私たちに与えます:
FSFとは異なり、The Linux Foundationは、多くの人が政治的に考えるものではありません。はい、プログラマーが最近直面している技術的な問題(特許など)については声高に主張していますが、敵対的であってもめったにありません。
カーネル開発は、カーネル開発者によって実力主義と表現されています。そのようなシステムが現実的である可能性があることを疑う人もいますが、パッチで導入する技術的な決定を徹底的に吟味する必要があります。 そのガイドライン に続く優れたコードを送信すると、実際の問題が解決されれば、パッチ(またはおそらくその改訂版)は受け入れられるでしょう。開始するのに最適な場所は kernel newbies です。興味のあるサブシステムで管理用の作業をいくつかピックアップし、その保守担当者との良好な関係を築いてください。必要であれば、より大きな魚に目を向けてください。
カーネルハッカーは、理想主義と政治をリストから除外することを好み、一般的にこれをノイズと見なします。時々、FSFはGPLの変更を提案します。これが発生すると、カーネルハッカーがそれについてどう思うかについてのサイドバーの議論を見るかもしれません。
現在、両方のプロジェクトでGPLを使用していますが、LinuxがGPL3に移行したことはありません。 FSFはすべての寄稿者からの著作権の割り当てを要求しますが、Linuxはそうではありません。 GPL3はカーネルフォークにとって制限が多すぎたため、採用されませんでした。それでも、要点は、プロジェクトがGPLを使用しているからといってGNU標準が適用されることを意味するわけではありません。
さまざまな OSI承認済みライセンス とその本質的な互換性の問題を理解することは、Free/Openソフトウェアを真剣に取り組んでいる誰もが行っていることです。 GNUプロジェクトはかなり包括的な GPL互換性リスト を維持しており、他のライセンスとの互換性がない可能性がある特定のライセンスの癖を強調しています。ここで覚えておくべき重要な点は、 100%互換のライセンスであっても、コードを混在させると、最も制限の厳しいライセンスが優先されます。
これにより、活気に満ちた BSDコミュニティ につながります。 OpenSSHのセキュリティを楽しんだことがあるなら、感謝します OpenBSD があります。
BSDとGNUコミュニティの間には亀裂がありました。これは、BSDコードがGPLプロジェクトで使用され、改善されたためですが、これらの改善は、BSDキャンプが継承する必要があることを意味するため、往復できませんでした。追加のライセンス制限。
Linux/GNUディストリビューションはすべてのキャンプのソフトウェアを組み合わせたものです。彼らが好むライセンスの下で彼らに改善を戻すようにしてください。
つまり、プロプライエタリ企業は「共有は悪だ!」と言う傾向があり、BSDの人々は「共有は悪いNOT--evil! "while GNU人々は"NOTを共有する傾向がある! "。違いを理解することが重要です。
始める場所を見つけることは、あなたの個性と目標に最も適したコミュニティ内で、解決する興味深い問題を見つけるのと同じくらい簡単です。ライセンスの選択は常に理想的であるとは限らず、非常に戦略的であることも覚えておいてください。特定のプロジェクトが使用しているライセンスのみに基づいて仮定を行わないように注意してください。
autotoolsチュートリアルスライド にあります:
http://www.gnu.org/prep/standards/
GNUプロジェクトのパッケージが従うべきプラクティス:
そこにもっと詳しい情報があると思います。少なくともスライドの説明は、そこに情報があることを示しているようです。
自問してみてください:
上記の回答に基づいて、Googleにアクセスして、興味のある同様のプロジェクトのホームページを見つけてください。探すべきいくつかの要因:
これらの要素をどのように評価するかはあなた次第です。個人的には、自分の仕事が目立つ小さめのプロジェクトを好みますが、開発者が新しい顔を受け入れることに興味がないかもしれない小さすぎるプロジェクトは好みません。
「Xで作業したいので、ここにいます」という紹介メールを送信しないでください。あなたが改善できるものを選ぶだけです。それは何でもかまいませんが、できれば非常に小さく、明らかに改善されます。パッチまたはマージのリクエストを、簡潔で控えめな紹介とともに送信します。小さなことを続け、だんだんと大きくしていきます。
特に最初は、他の人が使用しているコーディングスタイルを採用します。同意しない場合は、コアコントリビューターになってから後でコンテストに参加できます。
我慢して。早く希望を高くしないでください。メンバーとの付き合いには時間がかかり、性格の相性を事前に知ることはできません。自分に適したプロジェクトがたくさんあることは確かですが、1位や2位に落ちる必要はありません。
ロケット手術ではありません。
数年前に同じ質問がありましたが、正直なところ、明確な答えはありません。私が気付いたのは、使用しているプログラムのいくつかについて読み続け、「参加する」または「貢献する方法」というリンクをクリックすることです。メーリングリストにサインアップし、プロジェクトにメンターがいるかどうかを確認します。彼らのバグリストを調べて、バグの責任者にパッチを送ってください。私の意見では、それは長いプロセスです。あなたが学生なら、探求する別の手段は「 Google Summer of Code 」です。
Githubとsourceforge以外に、求めている情報を見つけることができる別のWebサイトは Ohloh.net です。
オープンソースのレイアウトについて@LiKaoが良いヒントを与えてくれたと思います。
投稿を開始する方法について Freshmeat 、 Source Forge 、Savannah、GitHubおよびBitbucketは、オープンソースを見つけるのに適した場所ですプロジェクトあなたは興味があるかもしれません(interestが主なポイントです貢献する)。
また、Google Summer of Codeは、オープンソースプロジェクトの興味深いsourceであり、生徒が役立つようにいくつかのことを定義します。通常、各プロジェクトにはアプリケーションを作成する学生が実行できるタスクを説明するページがあります。これらのタスクのいずれも、出発点として適しています。