Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1つの言語にだけ機能実装するようなプルリクエストをどうするか #631

Closed
Hiroshiba opened this issue Oct 7, 2023 · 5 comments · Fixed by #632
Closed
Labels
機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 7, 2023

内容

いろんな言語でコアを展開しようとしていますが、おそらく1つの言語だけで機能実装するようなプルリクエストが飛んでくると思います。
僕たちの都合的には1つの言語でだけ機能実装されることはあまり良くない(言語ごとに入っている機能が異なってすごくややこしくなる)けど、プルリクエスト送ってくださった方にとってはそんなこと知らないので、温度感に違いが発生してしまうかもしれません。

あらかじめこの辺りをルール化しておくと不要な衝突を避けられる気がします。
どういうルールにするか考えたいです。

Pros 良くなる点

不要な衝突を避けられる

方法

Rust以外の1つの言語でだけ特別に機能実装してリリースされることはない、ということをルール化する

その他

長いことをOSSやってて思ったんですが、この辺りの気持ちを明文化しておかないと結構事故るので、こういうのは気づいた時に早めにルール作っていくのが良さそうに思ってます。
特に意見なさそうだったら↑の方法に書いた感じでプルリクエスト出そうと思います。

@Hiroshiba Hiroshiba added 機能向上 要議論 実行する前に議論が必要そうなもの labels Oct 7, 2023
@qryxip
Copy link
Member

qryxip commented Oct 8, 2023

方針には賛成です。しいて言うなら、やめてほしいラインの例は行数を割いて入れるのが親切かなという程度です。
(PydanticとかZodとかserdeとかのチェックの強化だったり、Pythonでだけstyle_idNewType化するとかであれば受け入れてよいのではと私は思ってます)

@sevenc-nanashi
Copy link
Member

sevenc-nanashi commented Oct 8, 2023

(機能追加をVoicevox Core自体の機能追加、例えばユーザー辞書とかと想定。)コントリビュータによっては実装が難しい(例えば自分はSwift APIを書ける気がしない)ので、少しつらくなる気がします。
プロジェクトルートに、

機能名 Rust C Python Java
tts(kana: false)
tts(kana: true) 🚧

みたいな感じの機能リストを置いて、機能追加時に書かせるのはどうでしょう?

@y-chan
Copy link
Member

y-chan commented Oct 8, 2023

あ、@.sevenc-nanashi さんは少し勘違いされているかもです...!

このIssueでは、Rustコア(エンジン)で実装されていない(しない)機能を他言語ラッパーにのみ実装する事例を考えていると思います。
他言語ラッパーにおいて、工事中が起きうるのは仕方ないのかなと。
そして、このIssueでは工事中に関しては考えていないと思います。(もし考えていたらすみません...)

私もこのIssueで述べられている方針に賛成です。
ラッパーのフォルダのREADMEとか、各ファイルのコメントなどに書いてあげれば親切そうには見えますが、メンテナンスが面倒なので簡易でもいいかなという気持ちです(結局の目的は、PRが来たときに「うちはこういう方針だ」と示せればいいと思うので)
実際、コア本体ができること以上のことをいずれかの言語のラッパーができる状態は望ましくないと思います。
ただ、 @.qryxip さんの言うような、各言語の特性を汲んだ機能実装などは許容してもいいのかなと思いました。

@Hiroshiba
Copy link
Member Author

Rust以外の言語で実装されていない機能に関してどうするかに関しても取り決めがあったほうが良さそうに思います!
(機能リスト、良い感じなのではと個人的には思いました。)

僕も型チェックの強化とかはまあ各言語のライブラリ等の状況によって追加実装があっても良い気がしています。
とりあえず、Rust以外の1言語でのコア機能(定義が難しい)追加実装はマージできない方針なことを追記するプルリクエストを書いてみようと思います!

@Hiroshiba
Copy link
Member Author

#632

qryxip added a commit that referenced this issue Nov 11, 2024
#632 に続く形で、独立した"APIデザイン ガイドライン"を追加する。内容とし
てはとりあえず"Rust 以外の言語の API"とし、newtype以外にも言及したものを
用意する。

Refs: #631, #632
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
4 participants