新機能の提案¶
新しい機能やBeeWareのドキュメントに関するご提案やアイデアは、いつでも歓迎しております。では、ご提案を審査対象として提出するには、どのように進めればよいでしょうか?
始める前に¶
実装したい機能のリストは非常に長く、リソースは限られています。もしBeeWareをより良くするアイデアをお持ちでしたら、ぜひお聞かせください。同じ要望が多数寄せられた場合、コアチームがそのアイデアを実装する可能性があります。ただし、単なる機能リクエストだけでは、近い将来にその機能が実装される可能性は低いでしょう。
BeeWareはオープンソースコミュニティです。機能を確実に実装する最も効果的な方法は、自ら実装することです。私たちは、貢献者が追加を希望する機能を実装できるよう、可能な限りの支援を行います。コアチームに無料で機能を実装するよう要求することは、好意的に受け取られない可能性が高いでしょう。
ご自身で機能を実装できない場合、開発を加速する別の方法は、誰かに実装を依頼することです。特定の機能開発を優先させるための費用についてご相談されたい場合は、BeeWareチームまでご連絡ください。
新機能の提案¶
最も明らかな提案は、新しいAPIや機能です。現在BeeWareがサポートしていないユースケースがある場合、またはBeeWareが現在利用できないネイティブプラットフォーム機能がある場合、そのギャップを埋めるための変更を提案することをお勧めします。
新機能の提案にあたっては、BeeWareツールスイートが複数のプラットフォームをサポートしていることを念頭に置いてください。これは、新機能が以下の条件を満たす必要があることを意味します:
- すべてのプラットフォームで適切かつ実装可能であること(例:すべてのGUIツールキットには「ボタン」という概念が存在する);または
- 同じ「タイプ」のプラットフォームに適しており、他のプラットフォームでは無視するのが適切であること(例:すべての携帯電話には加速度センサーが搭載されているが、デスクトップにはほとんど搭載されていない。したがって、加速度センサーAPIはiOSやAndroid向けに存在しても理にかなっているが、デスクトップやWebプラットフォーム向けには存在しないのが妥当である);または
- 公開APIを変更せずに内部プラットフォーム機能へのアクセスを許可する(例:明らかにAndroid固有の機能を追加することはできないが、エンドユーザーが自身のコードからAndroid固有の機能にアクセスしやすくすることは可能)。
これは、すべてのプラットフォームで機能の実装を担当する必要があるという意味ではありません。Appleハードウェアへのアクセス権がない場合、macOSやiOS向けの機能実装を期待するのは不合理です。ただし、設計プロセスの一環として、ご提案いただいた方法で機能の実装が可能であることを確認する必要があります。
新しいドキュメントの提案¶
もう一つ提案したいのは、ドキュメントの改善です。BeeWareのドキュメント改善案がある場合、考慮すべき点は以下の通りです:
- ご提案は既存のドキュメントと重複していますか?新しいガイドを提案されているのか、既存のガイドへの追加を提案されているのか?
- このプロジェクトはBeeWareエコシステム全体の中でどのように位置づけられるのでしょうか?このアイデアを文書化するのに適切な場所はここでしょうか?それとも、別のプロジェクトで機能を文書化し、そのドキュメントへリンクを張るべきでしょうか?
- 具体的な指示を理解する前に、説明が必要な高次概念はありますか?
- このトピックは私たちが説明するのに適切でしょうか?それとも、既に他の誰かがどこかで説明しており、それを参照できるでしょうか?
もし何か分からないことがあっても、心配しないでください!アイデアを提出し、最初の打ち合わせで不明点を伝えてください。私たちがあなたのアイデアをBeeWareのドキュメントに適した形に整えるお手伝いをします。
機能提案の提出¶
新機能の提案
BeeWareの改善案をお持ちですか?そのアイデアをどのように提案すれば検討してもらえますか?
調査を行ってください¶
最初のステップは、BeeWareの課題トラッカーで既存の機能課題(「enhancement」タグ付き)、ドキュメント課題(「documentation」タグ付き)、またはディスカッションスレッドを検索し、そのアイデアが以前に提案されていないか確認することです。 既に存在する場合、新たな情報またはアイデアを追加できる場合は、既存のスレッドにそれらを含めてください。調査の支援が必要な場合は、BeeWare Discordの#devチャンネルでお尋ねください。既存スレッドの方向性を示したり、ご存知ないかもしれない背景情報を提供したり、一見関連性がないと思われる別のアイデアとあなたのアイデアを結びつけることができるかもしれません。
その考えについて話し合う¶
既存のアイデアに関する参照が見つからない場合は、ディスカッションスレッドを開始してください。アイデアの目的とユースケースについて概要を説明してください。実装された場合の機能の外観に関する考え(APIの一般的な形状、機能の視覚的表現、追加されるドキュメントなど)も記載してください。 該当する場合は、アイデアが異なるプラットフォームでどのように実現されるかについての調査結果も記載してください。
ディスカッションスレッドが開設されると、BeeWareチームとコミュニティの他のメンバーが対応します。コアチームは、ご提案いただいたアイデアについて、少なくとも2営業日以内に最初の印象を提供することを目指します。アイデアが特に複雑な場合、より詳細な分析には最大1週間かかる可能性があります。休日やカンファレンスなどのイベントにより、これらのスケジュールが若干遅れる場合があります。
これはあなたのアイデアについて議論に参加する機会です。詳細や背景情報の提供をお願いする場合があります。コミュニティの他のメンバーも議論に加わり、異なる視点や提案、対案を提示することがあります。この議論の結果が今後の進め方を決定します。
すべてのアイデアが受け入れられるわけではないことを理解することが重要です。このプロセスが提案から始まるのは、変更が受け入れられない理由があるのに気づくまで、すべての作業を無駄にさせないためです。
これは良いアイデアではなかったという意味ではありません!技術的な理由で実装できない場合もあるのです。例えば、次のような理由でアイデアを却下する可能性があります:
- すべてのサポート対象プラットフォームで確実に実装することは困難、あるいは不可能である;または
- 維持が困難であるか、あるいはその維持には広く普及していない技術やソフトウェアへのアクセスが必要となる。
- 特定のユーザー層にサービスを提供するが、他のユーザーに大きな負担を強いる。
もしあなたのアイデアが適切でないと判断した場合でも、必ずしもそのアイデアを諦める必要はありません。特定のアイデアを却下する一方で、プラグインインターフェースやその他の拡張ポイントを追加することで、同じ機能を外部ライブラリとして維持できるようにする案には、はるかに柔軟に対応できる可能性があります。そうすれば、その機能自体は維持しつつ、特定のメンテナンス上の懸念や、機能がプロジェクト自体の制約となるような制限を回避できるのです。
正式な機能リクエストに変換する¶
機能の形式について議論が合意に達したら、beeware課題管理システムで新しい機能リクエスト課題を作成し、議論を要約するとともに、背景説明として議論へのリンクを記載してください。
ご自身の機能提案を必ずしもご自身で実装する必要はありません。提案内容の詳細を記載したイシューを開くことができます。ただし、単にイシューを投稿したからといって、それが必ず実装されるわけではありません。 同じ機能に関心を持つ他のコミュニティメンバーやコアチームメンバーが取り上げてくれる可能性を待つ必要があります。ただし、それが必ず実現する保証はありません。確実に実装したい場合は、ご自身で実装するか、他の人に実装を依頼する必要があります。