オープンソースソフトウェアプロジェクトの保守方法

前書き

オープンソースのソフトウェアリポジトリを維持すると、リーダーシップの役割を果たします。 あなたがプロジェクトの創始者であり、使用と貢献のために一般に公開したか、チームで作業してプロジェクトの特定の側面を維持しているかにかかわらず、あなたはより大きな人々に重要なサービスを提供しようとしている開発者コミュニティ。

開発者コミュニティからのオープンソースcontributions through pull requestsは、ソフトウェアがエンドユーザーにとって可能な限り有用であることを保証するために重要ですが、メンテナはプロジェクト全体の形成に大きな影響を与えます。 リポジトリのメンテナーは、日々の組織や開発から、一般の人々との対話や貢献者への迅速で効果的なフィードバックの提供に至るまで、管理するオープンソースプロジェクトに非常に関与しています。

このガイドでは、オープンソースソフトウェアの公開リポジトリを維持するためのヒントを紹介します。 オープンソースプロジェクトのリーダーになるには、プロジェクトの周りのユーザーベースとコミュニティの育成に役立つ技術的および非技術的な責任が伴います。 メンテナーの役割を引き受けることは、他の人から学び、プロジェクト管理の経験を得て、ユーザーが投資貢献者になるにつれてプロジェクトが成長し、変化するのを見る機会です。

役に立つドキュメントを書く

綿密で組織化されたプロジェクトの目的のコミュニティに役立つドキュメントは、ユーザーベースの拡大に役立ちます。 時間が経つにつれて、あなたのユーザーベースはあなたのオープンソースプロジェクトへの貢献者になります。

とにかく作成しているコードを熟考し、メモを書き留めていることもあるので、開発プロセスの一部としてドキュメントを組み込むことは価値があります。 最初に機能を文書化し、その機能を記述した後にそれらの機能を開発するという文書駆動型開発アプローチの哲学に従って、コードの前に文書を書くことを検討することもできます。

コードに加えて、トップレベルのディレクトリに保存したいドキュメントのファイルがいくつかあります。

  • プロジェクトと目標の要約を提供するREADME.mdファイル。

  • 貢献命令を含むCONTRIBUTING.mdファイル。

  • より多くの貢献を促すことができるソフトウェアのライセンス。 Read more about choosing an open-source license here

ドキュメントにはさまざまな形式があり、さまざまな対象者を対象とすることができます。 ドキュメントの一部として、また作業の範囲に応じて、次の1つ以上を実行することを決定できます。

  • ユーザーにプロジェクトを紹介するためのgeneral guide

  • Tutorialsは、さまざまなユースケースを人々に説明します

  • FAQsは、ユーザーが抱く可能性のあるよくある質問に対応します

  • Troubleshooting guidesは、ユーザーが問題を解決するのに役立ちます

  • API referenceは、API情報をすばやく検索する方法をユーザーに提供します

  • 各リリースで何を期待するかをユーザーに知らせる既知のバグのあるRelease notes

  • Planned featuresは、将来何が起こるかを追跡して説明します

  • Video walkthroughsは、ソフトウェアへのマルチメディアアプローチをユーザーに提供します

プロジェクトは他のドキュメントよりも特定の種類のドキュメントに適している場合がありますが、ソフトウェアに複数のアプローチを提供することで、ユーザーベースが作業と対話する方法をよりよく理解するのに役立ちます。

ドキュメントを作成するとき、またはビデオの音声を録音するときは、できるだけ明確にすることが重要です。 視聴者の技術的能力について何も仮定しないことが最善です。 また、詳細に進む前に、ドキュメントを上から下にアプローチします。つまり、ソフトウェアの一般的な方法(サーバータスクの自動化、Webサイトの構築、ゲーム開発用のスプライトのアニメーション化など)を説明します。

英語はテクノロジー分野では普遍的な言語になりましたが、期待されるユーザーとは何か、どのように連絡をとるかを検討したいと思うでしょう。 幅広いユーザーベースにアクセスするには英語が最善の選択肢かもしれませんが、多くの人が英語を母国語としない人としてドキュメントに近づいていることを覚えておく必要があります。読者または視聴者。

現在のプロジェクトの速度を上げる必要がある共同編集者に書いているかのようにドキュメントを作成してください。結局、潜在的な貢献者がプロジェクトにプルリクエストを行うように奨励する必要があります。

問題を整理する

Issuesは通常、バグを追跡または報告したり、コードベースに追加する新機能を要求したりする方法です。 GitHub、GitLab、Bitbucketなどのオープンソースリポジトリホスティングサービスは、リポジトリ内の問題を追跡するためのインターフェイスを提供します。 オープンソースのコードを一般に公開するとき、ユーザーのコミュニティによって問題が開かれることを期待する必要があります。 問題を整理して優先順位を付けると、プロジェクトの今後の作業の優れたロードマップが得られます。

すべてのユーザーが問題を報告できるため、すべての問題がバグを報告したり機能のリクエストになるわけではありません。課題追跡ツールを介して質問を受け取ったり、たとえば、ユーザーインターフェイスの小規模な機能強化のリクエストを受け取ったりする場合があります。 これらの問題をできる限り整理し、これらの問題を作成しているユーザーとコミュニケーションをとることが最善です。

問題は、ソースコードで実行する必要がある具体的なタスクを表す必要があり、それに応じて優先順位を付ける必要があります。 あなたとあなたのチームは、あなたまたは貢献者が提出された問題に費やすことができる時間とエネルギーの量を理解し、協力して意思決定を行い、実行可能な計画を作成することができます。 短い時間内に特定の問題に到達できないことがわかっている場合でも、問題にコメントして、ユーザーに問題を読んだこと、および可能なときに問題に到達することを知らせることができます。また、できる場合は、問題を再度確認できる時期の予想されるタイムラインを提供できます。

機能のリクエストまたは機能強化である問題については、問題を報告した人にコードを提供できるかどうかを尋ねることができます。 それらをCONTRIBUTORS.mdファイルおよびその他の関連ドキュメントに送ることができます。

質問は具体的なタスクを表すものではないことが多いため、問題をコメントして、関連するドキュメントにユーザーを丁寧に誘導することは、やり取りを専門的かつ親切に保つための良い選択肢です。 この質問のドキュメントが存在しない場合は、関連するドキュメントを追加し、この見落としを特定してくれたユーザーに感謝する絶好の機会です。 問題を介して多くの質問を受け取っている場合は、ドキュメントのFAQセクションを作成するか、他の人が質問への回答に参加するためのwikiまたはフォーラムを作成することを検討してください。

ユーザーが問題を報告するたびに、できる限り親切で礼儀正しくしてください。 問題は、ユーザーがソフトウェアを気に入っており、改善したいという指標です。

できる限り最善の方法で問題を整理することにより、プロジェクトを最新の状態に保ち、ユーザーのコミュニティに関連するようにします。 プロジェクトの範囲外にある問題や陳腐化した問題を削除し、他の問題に優先順位を付けて、継続的に進捗できるようにします。

貢献する報いをする

プロジェクトへの貢献者を歓迎し、その努力に報いるほど、より多くの貢献を奨励する可能性が高くなります。 人々が始めるには、リポジトリのトップレベルにCONTRIBUTING.mdファイルを含め、README.mdファイルにそのファイルへのポインタを含める必要があります。

貢献に関する優れたファイルは、開発者としてプロジェクトに取り組む方法を概説します。 ステップバイステップガイドを提供するか、プルリクエストを使用してコードをプロジェクトに正常にマージする方法を説明するチェックリストを開発者に提供することをお勧めします。

プロジェクトへの貢献方法に関するドキュメントに加えて、コード全体の一貫性と読みやすさを維持することを忘れないでください。 コメントと明確で一貫した使用によって理解しやすいコードは、貢献者がプロジェクトに飛び込めるように感じるのに大いに役立ちます。

最後に、寄稿者または著者のリストを維持します。 コントリビューターを招待して、自分のコントリビューションに関係なく自分自身をリストに追加することができます(タイプミスを修正することは価値があり、将来さらにコントリビューションにつながる可能性があります)。 これにより、プロジェクトの作業に対する貢献者を、彼らが指し示すことのできる公開された方法で認識し、他の人に貢献者がどれだけうまく扱われているかを知らせることができます。

コミュニティを構築する

ドキュメントを通じてユーザーを支援し、問題に対応し、参加を促すことで、オープンソースプロジェクトを中心としたコミュニティを構築するための手段をすでに確立しています。 あなたが幸せを保ち、協力者として扱うユーザーは、ソフトウェアを宣伝します。

さらに、さまざまな方法でプロジェクトを促進できます。

  • ブログ

  • 概要またはウォークスルービデオのリリース

  • メーリングリストの管理

  • ソーシャルメディアチャンネルで積極的に活動する

  • 類似または関連するプロジェクトとのコラボレーションおよびそれらの相互プロモーション

プロジェクトの範囲と、活動しているチームメンバーと協力者の数に合わせてプロモーションを調整する必要があります。

コミュニティが成長するにつれて、貢献者、ユーザー、メンテナーが交流できるスペースを増やすことができます。 あなたが考慮するかもしれないいくつかのオプションが含まれます:

  • コミュニティレベルで維持されるドキュメントを提供できるWiki

  • 可能な機能について議論し、質問に答えるためのフォーラム

  • メールベースのコミュニティエンゲージメントのリストサーブ

これらの潜在的なスペースを展開する前に、コアユーザーベースとプロジェクトの範囲(プロジェクトを維持している人の数や利用可能なリソースを含む)を考慮し、それらの機能についてコミュニティからフィードバックを求めてください。

何よりも、親切であり、コミュニティとのすべてのやり取りに愛を示すことが重要です。 優雅なメンテナーになることは必ずしも容易ではありませんが、プロジェクトの最終的な成果につながります。

結論

リポジトリのメンテナーは、より大きなオープンソースコミュニティの中で非常に重要です。 多大な投資と努力が必要ですが、多くの場合、開発者および貢献者として成長することができるやりがいのある経験です。 親しみやすく親切なメンテナーであることは、あなたが関心を持っているプロジェクトの開発を前進させるのに大いに役立ちます。