Journey Through OSS with Go OpenAI.
Dimyo Meetup #2
Yuichi Watanabe at Nulab Inc.
渡邉祐一
SWE at Nulab Inc.
社会人学生
2児の父
観葉植物の板付
ビカクシダ
チランジア
文章生成、テキストの要約、翻訳など、様々なタスクを実行します。
既存のシステムにAIを統合することを容易にします。
共通のインターフェースを通じて、OpenAI APIとAzure OpenAIサービスをサポートします。
6.0Kのスターを獲得し、非常に人気が高いです。
OpenAI APIを使った実験的なツールを作ることへの興味と、Goへの好みから出発し、私は非常に人気のあるGo OpenAIライブラリを選びました。
Go OpenAIのコミュニティは非常に活発でした。しかし、単一のメンテナが数多くのIssueやプルリクエストを処理するのは難しそうでした。
これらの課題を克服するために手助けする意図で、私はGo OpenAIの開発にコントリビュートすることにしました。
最初に、"Good First Issue"とラベル付けされたリファクタリングタスクに取り組みました。
これに続き、サポートされていないAPIの実装やバグ修正を行いました。
また、テストコードに大量のボイラープレートが存在したため、テストのリファクタリングを行い、コード量が大幅に削減しました。
コードへの貢献に加えて、他の人が行ったプルリクエストの議論への参加、Issueへの回答など、コードの貢献以外の他の活動も行いました。
約1ヶ月間の連続的なコントリビュートの後、Go OpenAIの著者であるAlexさんからTwitterでフォローされ、ダイレクトメッセージで感謝のメッセージを受け取りました。
そして、Alexさんからの招待により、私はこのプロジェクトの共同メンテナとして参加することになりました。とても誇りに思います。
IssueとPull Requestのテンプレートの導入
すべてのIssueにラベルを付ける
重複または解決済みのIssueの整理
非ActiveなIssueを自動で閉じるGitHub Actionsの導入
テンプレートの使用により、新たなIssueを作成したりプルリクエストを提出したりする際のフォーマットが標準化され、内容を理解しやすくなりました。
すべてのIssueがラベル付けされて整理され、Issueの種類を一目で理解することが可能になりました。
重複しているか既に解決済みのIssueは閉じられ、OpenなIssueの数が約70個から25個に減少しました。
これらの努力により、プロジェクト管理がより効率的になり、メンテナンスのコミュニケーションコストが削減されました。
今回のコントリビューションはプルリクエストだけではなく、プロジェクト管理の側面でも大きな成果を得ることができました。
最初はGo OpenAIのユーザとして始まり、その後積極的なコントリビューターになり、最終的にはメンテナとなる過程は、ソフトウェア開発の深い理解を得るための重要なステップでした。これは、"CODE TO COMMUNITY"というタイトルのとおり、1行のコードが開発者コミュニティの活動へと変化していく旅のように感じられました。
このプレゼンテーションが皆さんのオープンソースプロジェクトへの参加を考えてみるきっかけになることを願っています。
このプレゼンテーションは、Go OpenAIの著者であるAlexさんの尽力と貢献なしには実現できませんでした。彼に最大の敬意と感謝を表します。
AlexさんのOSS活動を是非チェックしてみてください。
https://github.com/sponsors/sashabaranov