Manjusaka

Manjusaka

私が愛するオープンソースコミュニティ

今日は良い日です。最初に私を nerdctl コミュニティに導いてくれた @yuchanns が、その活発な活動によりプロジェクトの主要メンテナー @AkihiroSuda に推薦され、プロジェクトのメンテイナーになりました。詳細は nerdctl#PR1540 を参照してください。そして私もこのプロジェクトでコミッターに指名されました。詳細は nerdctl#1539 を参照してください。さらに、今日の公益グループではオープンソースに関する多くの議論があったので、自分の経験を記録する記事を書きたいと思います。これがより多くの人々がオープンソースを愛し、オープンソースを受け入れる手助けになることを願っています。

なぜ私はオープンソースに参加するのか#

私が参加した最初のオープンソースプロジェクトは、16 年に遡ることができ、当時私はまだ学士号を取得していませんでした。その時、私は 稀土掘金翻訳計画 に参加しました(スローガンにある「最高の英語技術情報翻訳プロジェクト」と言っても過言ではありません)。このプロジェクトで私は初めて Git Workflow に触れ、世界最大の同性愛者の交流コミュニティである GitHub に完全に接触しました(大雲(ただし、今でも私にとって非常に助けになっている数人の親友はこのプロジェクトを通じて知り合った人たちです)。私が最初に参加したコードプロジェクトは、17 年 3 月に遡ることができ、私は Sanic プロジェクトに Code Example を追加しました。詳細は Sanic#PR558 を参照してください。

その後、私はオープンソースコミュニティに参加し続け、今までに多くのオープンソースプロジェクトに貢献してきました。CPython、Docker/Moby、Taichi、Logseq、Kubernetes、Dubbo、TiDB、nerdctl などです。私はオープンソースコミュニティの働き方を学び続け、文化を学び続け、技術を学び続けています。(最後の文は GitHub Copilot によって自動的に完成されました)(XD

さて、この章のタイトルに戻りますが、なぜ私はオープンソースコミュニティに参加するのか?あるいはもっと利己的に言えば、オープンソースコミュニティは私にどのような利益をもたらしてくれたのか?

それは、私自身の全方位的な成長です。

まず、オープンソースコミュニティに参加することは、私にとって非常に素晴らしい向上のプロセスです。ここでは多くのことを学ぶことができます。

  1. 他人を効果的に説得する方法
  2. 良い UT を書く方法
  3. コードスタイルを磨く方法
  4. 他の新しい人を助ける方法

以前のリンクはさておき、皆さんは私が 2022 年に nerdctl プロジェクトに貢献したことを見てください nerdctl#ZheaoLi。私の PR は最初から後にかけて、質やスタイルがかなり向上していることが明らかにわかります。これは実際にオープンソースコミュニティが私にもたらした最も直感的な成長です。私は素晴らしいコミュニティメンターが私の PR を決して甘やかさず、レビューが非常に厳格であることに感謝しています。これが私を成長させる原動力となっています。

同時に、私は自分の考えを表現し、提案を行い(例えば nerdctl#Issue1387)、オーナーになる方法を学び、より多くの新しい人々が参加できるように助ける機会を得ました。

ある意味で、これは日常の仕事では得られない特別な体験です。オープンソースコミュニティは相対的に利益の絡みが少なく、相互利益の行動がより純粋で自然になります。これにより、人々はより大きな利益を得ることができます。ここで @yuchanns の今夜の発言を引用します。

私は皆さんがプログラミングを学び始めたときにこのようなジレンマを抱えることがあると思います:学んだ後に何をすればいいのかわからない、何も学んでいないように感じるので、実践的なチュートリアルを探して体験を深めようとします。
この現象は、実際に仕事を始めるとすぐに解消されます。なぜなら、実際のアプリケーションシナリオがあるからです。
しかし、他の分野のことに興味を持つと、またこのような混乱が生じます。これは仕事ではあまり接触する機会がないものです。仕事を変えない限り、仕事の経験を通じてこのジレンマから抜け出すことはできません。
そんなときにオープンなコミュニティに参加するのはとても良いことです。他の人の仕事から生まれたニーズが実践の機会を提供してくれます。
あなたは具体的な仕事に一つ一つ関わる必要はなく、彼らが引き起こしたニーズを解決するだけで、学んだことを活用する機会が得られます。

もちろん、利己的な観点から言えば、オープンソースコミュニティに積極的に参加することで、多くの面白い人々と出会い、キャリアをよりスムーズに進めることができるという利点もあります(

では、どうやってオープンソースコミュニティに参加するのか#

オープンソースコミュニティに参加する方法は主に二つあります。

  1. 自分でプロジェクトのオープンソースコミュニティを立ち上げる
  2. 既存のオープンソースコミュニティに参加する

私は主に後者について議論します。

多くの人がオープンソースの三つの質問をします。「オープンソースコミュニティに参加したいが、どうすればいいかわからない」「オープンソースコミュニティに参加したいが、プロジェクトを見つける方法がわからない」「オープンソースコミュニティに参加したいが、私が未熟すぎるのはどうすればいいのか」

実際、これらの問題はあなたが想像するほど難しくはありません。少しの行動力と好奇心があれば解決できます。

実際、現在に至るまで、オープンソースコミュニティは非常に大規模になっています。あなたの技術スタックが何であれ、参加するのに適したプロジェクトを見つけることができます。また、オープンソースコミュニティへの参加のハードルも低くなっています。プロジェクトのコード全体を理解する必要はありません。プロジェクトの Issue を理解し、それを解決することでオープンソースコミュニティに参加できます。では、プロジェクトを見つけるにはどうすればいいのでしょうか?

私の方法は二つあります。

  1. GitHub の Explore ページを通じて、新しいプロジェクトを探し、そのプロジェクトが私の痛点に触れるかどうかを確認する
  2. ソーシャルメディアでの皆の宣伝

nerdctl このプロジェクトの実際の出所は、当時の友人@Junnplusが Twitter で宣伝したことです。

当時のスクリーンショット

そして、私はこのプロジェクトのポジショニングを見て、このプロジェクトが私の痛点に触れていることを発見し、環境でこのプロジェクトを使用し始めました。

実際、興味のあるプロジェクトを見つけることは難しいことではありません。少しの好奇心があれば十分です。

では、プロジェクトを見つけた後、どのように参加すればよいのでしょうか?

実際、ここで少しの行動力が必要です。私の方法は次のようになります。

  1. Issue セクションをスキャンし、プロジェクトを購読します。プロジェクトの Issue は、そのプロジェクトの発展方向をある程度理解するのに役立ちます。
  2. このプロジェクトを使い続け、使用中の問題を Issue に変換し、さらに PR に変換します。
  3. 既存の知識を活用し、新しい潜在的な問題を発見できるかどうかを試みます。

nerdctlを例にとると、Issue セクションでは時折 Good First Issue が出現します。この時、あなたは積極的に対応する Issue を引き受けて貢献することができます(私の視点から見ると、プロジェクトのメンテナーが Good First Issue にどれだけ関心を持つかが、プロジェクトの長期的な発展を決定します)。@yuchanns の最初の PR nerdctl#PR1331 は、実際に私が提案した Good First Issue nerdctl#1330 に由来しています。もちろん、すでに一定の規模を持つプロジェクトの場合、Good First Issue を待つだけでは運が必要かもしれません。では、どうすればいいのか?答えは第二、第三のポイントです。

私が nerdctl に最初に貢献した PR nerdctl#PR790 は、私が提起した Issue nerdctl#Issue775 に由来します。この Issue は、私が使用中に発見したバグで、簡単に言えば、プライベートイメージリポジトリでの認証に関する問題です。そして、その Issue を対応する PR に変換しました。このプロジェクトでの他の貢献も、私が直面した問題を修正することから来ています。

もう一つの方法は、既存の知識を活用して、新しい潜在的な問題を発見できるかどうかを試みることです。私は Affine(非常に素晴らしいノートプロジェクト)に提案した PR Affine#PR403 は、私がローカルで Affine を構築する際に、彼らの Dockerfile をちらっと読んだときに、キャッシュを効率的に利用していないことに気づき、PR を提案してビルドを加速しました。これは、異なる分野からプロジェクトを見ることで、異なる視点を得て、プロジェクトへの貢献を促進することができます。

さて、オープンソースの三つの質問の最後の質問、「オープンソースコミュニティに参加したいが、私が未熟すぎるのはどうすればいいのか?」

まず言いたいのは、オープンソースコミュニティの本質は、実践しながら学び、成長することです。例えば、@yuchannsnerdctl#PR1407 を作成したとき(この PR はコンテナに MacAddress をバインドできるオプションを追加するものでした)、彼は当時 CNI についてあまり詳しくなく、実践しながら学びました。私も彼とグループで何度か提案について議論しました。最終的に PR は非常にスムーズにマージされました。これはある意味でオープンソースコミュニティの楽しさと魅力の一つです。

もしあなたが今、背景知識が不足していて、もう少し学んでからコードを書きたいと思っているなら、貢献することはできますか?もちろんです。@tison の名言を借りれば、「コミュニティの活動は絶対に多様です」。私が bytebase にバグを提起したとき、彼らのチケットテンプレートが使いにくいことに気づき、Bytebase#PR3050 で彼らの Issue テンプレートを再構築しました。その後、彼らは私の基盤の上にさらに改善を加えました。したがって、Issue、ドキュメントの改善、ユースケースの改善など、すべてがオープンソースコミュニティに参加する素晴らしい方法です。

もちろん、新しく参加した人たちには、拒否されたらどうしようという懸念があるかもしれません。しかし、それは実際には非常に一般的です。私が思いつきで lima に提案した lima#Issue1087 は非常にひどく拒否されました。しかし、拒否されることも学びの一環であり、この議論の過程から自分の考えが不十分だった点を振り返ることができます。

このようにして、オープンソースコミュニティに参加することは本当に難しくないことがわかります。必要なのは、ほんの少しの行動力と好奇心だけです。

まとめ#

インターネットの誕生以来、オープンソースという理想主義的な行動は実際にこの世界を変えてきました。世界中の人々がオープンソースの旗の下で、自分の創造性を自由に発揮し、この世界を少しずつ変えていっています。時々、私がこのような素晴らしい活動に参加する機会を得たことを考えると、自然と震えが来ます。私は初期のキャリアの中でこの偉大な事業に参加できたことを非常に嬉しく思っており、私の周りにもますます多くの人々が参加し、一緒に汗を流し、この素晴らしい世界で自分の心の約束の地を見つけられることを願っています。

オープンソース万歳!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。