ありがとうございます、皆さん。
以前もその話を見ていましたが、アップグレードが完了するまで Ember アドオンを追加できないという確認ができて嬉しいです。つまり、アップグレードが完了すれば間もなく Ember アドオンの追加が可能になるということですね。それは素晴らしいことです。
これは興味深い問いかけだと思います。私の見解を少し述べさせていただきます。
Discourse の「抽象化された部分」を使うか、Ember アドオンを使うかという点について:もしかしたら間違っているかもしれませんが、プラグイン内で特定のタスクを行う際に Ember アドオンを使用する方が、Discourse が既に実装していることとは異なることを目指す場合、保守が容易になると思います。その考え方は以下の通りです。
例として、プラグイン内で全く新しいドロップダウンを追加したい場合を考えます。この区別が重要かもしれません。ここでは、Discourse のコードベースには存在しない新しいことをプラグインで実装しようとする場合について話しており、Discourse のメソッドから始めるか、それとも別のアドオンから始めるべきかという問いです。
多くの場合、選択の余地はありません。例えば、トピックにカスタムフィールドを追加したい場合、常に Discourse の既存のメソッドやコードをベースにカスタマイズすることになります。
しかし、ドロップダウンのように特定の機能に特化した場合、Discourse のメソッドを使用すると、それらが本来意図されていない用途に合わせて調整することになります。
オプション 1:カテゴリ選択器(category-chooser)などで見られる select-kit コードを取得し、新しい場所(カテゴリとは無関係な場所)に挿入し、それをカテゴリ選択ではなく自分の目的に合わせてカスタマイズしようとします。これは以前述べたように、少しトリッキーな作業です。
また、保守が困難になる可能性があります。もし Discourse チームがカテゴリ選択器の select-kit コードの動作を変更した場合、それが私のカスタマイズした新しいドロップダウンにも影響を与え、予期せぬ形で動作が変わってしまうかもしれません(なぜなら、実際のカテゴリ選択器とは少し異なる動作になるようにカスタマイズしていたためです)。
オプション 2:Ember 製の堅牢でありながらカスタマイズも容易なものを挿入する方法です。コードの仕組みを比較的明確に把握できます。この場合、Discourse がドロップダウンに追加するかもしれない新しい便利な機能を見逃す可能性はありますが、自分のドロップダウンの動作をより簡単に追跡・管理できるようになります。可能であれば、これが最も良い選択肢だと思います。
オプション 3:最初から完全に自作する。これが私がこれまで辿り着いてきた方向性です。コーディングが完了すれば、自分が完全に理解し、カスタマイズできるコードを持っているのは気持ちの良いものです。しかし、もちろん時間がかかり、(少なくとも初期バージョンは)Discourse チームや Ember チームが構築したものほど強力で堅牢ではないでしょう。