序章

オープンソースのソフトウェアリポジトリを維持するとき、あなたはリーダーシップの役割を担っています。 使用と貢献のためにプロジェクトを公開したプロジェクトの創設者であるか、チームで作業していてプロジェクトの特定の側面を維持している場合でも、大規模なプロジェクトに重要なサービスを提供することになります。開発者コミュニティ。

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

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

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

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

とにかく作成しているコードを検討し、メモを書き留めている場合もあるので、ドキュメントを開発プロセスの一部として取り入れることは、頭の中で新鮮なうちに行う価値があります。 最初に機能を文書化し、それらが何をするかを書き留めた後にそれらの機能を開発するという文書主導の開発アプローチの哲学に従って、コードの前に文書を書くことを検討することもできます。

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

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

  • プロジェクトをユーザーに紹介する一般ガイド
  • チュートリアルさまざまなユースケースを紹介します
  • FAQ は、ユーザーが抱く可能性のあるよくある質問に対応します
  • トラブルシューティングガイドユーザーが問題を解決するのに役立ちます
  • APIリファレンスは、API情報をすばやく見つける方法をユーザーに提供します
  • リリースノートには既知のバグがあり、各リリースで何が期待できるかをユーザーに知らせます
  • 今後の予定を追跡して説明するための計画された機能
  • ビデオウォークスルーを使用して、ソフトウェアへのマルチメディアアプローチをユーザーに提供します

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

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

英語はテクノロジーの分野で世界共通の言語になりましたが、それでも、予想されるユーザーが誰であり、どのようにそれらに到達するかを検討する必要があります。 幅広いユーザーベースにアクセスするには英語が最善の選択かもしれませんが、多くの人が英語を母国語としない人としてドキュメントにアプローチしていることを覚えておいてください。読者を混乱させないアクセス可能な言語を優先するように努めてください。または視聴者。

現在のプロジェクトのスピードを上げる必要がある共同作業者に手紙を書いているかのように、ドキュメントを書いてみてください。 結局のところ、潜在的な貢献者にプロジェクトへのプルリクエストを行うように勧めたいと思うでしょう。

問題を整理する

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

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

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

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

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

ユーザーが問題を報告するときはいつでも、できるだけ親切で優雅になるようにしてください。 問題は、ユーザーがあなたのソフトウェアを気に入って、それをより良くしたいという指標です!

プロジェクトを最新の状態に保ち、ユーザーのコミュニティに関連するように、問題をできる限り整理するように努めます。 プロジェクトの範囲外または古くなった問題を削除し、他の問題に優先順位を付けて、継続的に進行できるようにします。

タスクの自動化

メンテナンスタスクとテストを自動化することで、プロジェクトの効率と品質を向上させることができます。 自動化されたメンテナンスとテストにより、コードの正確性を継続的にチェックし、寄稿者の提出を承認するためのより正式なプロセスを提供できます。 これは時間を解放するのに役立ち、プロジェクトの最も重要な側面に集中できます。 最高のニュースは、すでに開発されており、プロジェクトのニーズを満たす可能性のあるツールがたくさんあることです。

  • ステータスチェックを要求することにより、着信コントリビューションの自動テストを設定します。 プロジェクトのテストの仕組みに関する情報をCONTRIBUTING.mdファイルに必ず含めてください。

  • メンテナンスタスクを自動化するために開発されたツールをチェックしてください。 いくつかの可能性には、リリースとコードレビューの自動化、または情報が要求されたときに作成者が応答しない場合の問題の解決が含まれます。

少ないほど多いことを覚えておいてください。 プロジェクト、自分自身、および貢献者の効率、生産、および品質を最適化できる方法で自動化することを選択したプロセスとタスクについて意図的にしてください。

貢献する報酬を作る

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

貢献に関する優れたファイルには、開発者としてプロジェクトに取り組み始める方法の概要が記載されています。 ステップバイステップガイドを提供するか、開発者が従うべきチェックリストを提供して、プルリクエストを介してコードをプロジェクトに正常にマージする方法を説明することをお勧めします。

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

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

コミュニティを構築する

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

さらに、さまざまな方法でプロジェクトを宣伝することができます。

  • ブログ
  • 概要またはウォークスルービデオのリリース
  • メーリングリストの維持
  • ソーシャルメディアチャネルで積極的に活動する
  • 類似または関連するプロジェクトと協力し、それらをクロスプロモーションする

プロジェクトの範囲と、一緒に仕事をしているアクティブなチームメンバーと貢献者の数に合わせてプロモーションを調整する必要があります。

コミュニティが成長するにつれて、寄稿者、ユーザー、およびメンテナが対話するためのより多くのスペースを提供できます。 検討できるオプションには、次のものがあります。

  • コミュニティレベルで維持されるドキュメントを提供できるWiki
  • 可能な機能について話し合い、質問に答えるためのフォーラム
  • 電子メールベースのコミュニティエンゲージメントのためのlistserv

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

何よりも、コミュニティとのすべてのやり取りにおいて、親切で愛情を示すことが重要です。 優雅なメンテナになるのは難しいかもしれませんが、それはあなたのプロジェクトに利益をもたらすでしょう。

結論

リポジトリメンテナは、より大きなオープンソースコミュニティ内で非常に重要です。 それは多大な投資と努力を必要としますが、それはあなたが開発者と貢献者として成長することを可能にするやりがいのある経験であることがよくあります。 親しみやすく親切なメンテナーであることは、あなたが気にかけているプロジェクトの開発を進めるのに大いに役立ちます。