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

C2A 用語のリネーム: v4.0.0 まで #8

Closed
5 tasks done
Tracked by #2
meltingrabbit opened this issue Jul 18, 2023 · 12 comments
Closed
5 tasks done
Tracked by #2

C2A 用語のリネーム: v4.0.0 まで #8

meltingrabbit opened this issue Jul 18, 2023 · 12 comments
Assignees
Labels
priority::high priorityg high
Milestone

Comments

@meltingrabbit
Copy link
Member

meltingrabbit commented Jul 18, 2023

詳細 (v4.0.0まで)

C2A 用語がわかりにくいので,一般的な CS 用語に変換していく
これに伴い,ディレクトリ構造も変更する

詳細 (v4.0.0以降)

close条件

上のチェックリストが完了したら

備考

過去の議論: ut-issl/c2a-core#454

@meltingrabbit meltingrabbit added the priority::high priorityg high label Jul 18, 2023
@meltingrabbit meltingrabbit self-assigned this Jul 18, 2023
@meltingrabbit
Copy link
Member Author

meltingrabbit commented Jul 18, 2023

うーん,2文字は結構衝突するので,name space 切る略語は3, 4文字ぐらいにしたさがあるな...

@meltingrabbit meltingrabbit changed the title C2A 用語のりネーム C2A 用語のリネーム Jul 18, 2023
@sksat
Copy link
Member

sksat commented Jul 25, 2023

C2A は CS 文脈の言葉で雑に表現すると C2A プロトコルのフレームワークであり,libOS な microkernel 的物体でもあるので,それに即した命名・分割・概念の借用を行っていきたい.その観点から考えると,Application は microkernel の server が一番近い.

@sksat
Copy link
Member

sksat commented Jul 25, 2023

まあ server と呼ぶとそれ以外の普通の "サーバー" と被るし,別に microkernel 文脈でもディレクトリ名を server にしてがちみたいな慣習があるわけでもないので,service ぐらいでいいか.そうすると component service とかの案とも整合が取れる.問題はかなり色々なものがこの枠組みに乗っていて,乗っていること自体はよいのだがそのカテゴリの区別が明確でないこと.

@sksat
Copy link
Member

sksat commented Sep 27, 2023

DriverSuper はフレームの encode/decode を扱っているやつ,として Framing にする(後で encoder とか decoder みたいな名前で分割するなどはありえるかもしれない).略称は FRM

@meltingrabbit
Copy link
Member Author

framing はありかもしれんな.packetつくりはしてないわけだし(たまにしてるけど)

@sksat
Copy link
Member

sksat commented Sep 27, 2023

たまにしちゃってるのは後から追い出しましょう

@meltingrabbit
Copy link
Member Author

meltingrabbit commented Oct 5, 2023

core/Driversは

core/framing/framing.c
core/framing/framing_common_tlm_cmd_packet.c
core/framing/data_link_layer_definition.h

に.
そして関数名も

EB90_PACKET_get_version_from_dssc
→
FRM_EB90_PACKET_get_version

@sksat
Copy link
Member

sksat commented Oct 11, 2023

DriverSuper は元の目的は Driver の抽象化で,実際そのように使われてもいて,しかし8割方の責務はフレームの encode/decode の共通化,というような状態になっている.また,DriverSuper のメンバ関数的実装が何故か別のディレクトリ(Driver/Protocol)にあって分かりにくい.

@sksat
Copy link
Member

sksat commented Oct 11, 2023

そして,v4 での大規模な rename の目的は,既存の慣れによる C2A 用語でのコミュニケーションを破壊してでも,一般的な CS 用語に寄せて新規参入者に対する分かりにくさを低減すると共に,責務に対して明らかな命名をすることで現在でもよく発生しているミスリードを減らすこと.最も breaking change なのはここであり,だからこそ現状 minor update でも breaking change をしている c2a-core でも major update としている.

また,主目的は人間の認識に対する breaking change であるからこそ,それ以外の変更はできるだけしていない.つまり,多くの変更はあくまで機械的な rename であって,実装の互換性はできるだけ保っている.そのため,ほとんどの変更は各 C2A user で migration script による移行が可能となっている.

@sksat
Copy link
Member

sksat commented Oct 11, 2023

ここで,DriverSuper -> Framing の rename は実装の責務を明らかにするための命名変更となる.が,DriverSuper 自体の実装の主な責務は Framing の名前に相当するものであるものの,これの感覚的な役割はやはり各 Driver のスーパークラス的なモノであるという別の事実も存在する.それを踏まえると,仮に DriverSuper -> Framing の rename をするのであれば,この「継承関係」も同時に破壊する必要がある.そこまでのリファクタを実施するのは人間からの認知的にも実装的にも breaking change が大きすぎ,v4 の目的もスケジュールも逸脱してしまう.

その上で,DriverDriverSuper 関連でやるべきことを優先度順に並べると,以下のようになると思われる.

  1. c2a-core/Driver のディレクトリを snake_case にする: ディレクトリ名の CamelCase をやめたい #10
  2. DriverComponentDriver に,現 DriverInstanceComponentService に rename する
  • "driver" という語は何を drive するのかまったくわからないし,C2A 以外でも使われる語なので,(特に口頭で)雑に「ドライバー」と言われた時にとても confusing であり,この rename の優先度はかなり高い
  1. DriverSuper の実装が行っているフレームの encode/decode を framing ライブラリとして分割する
  2. DriverSuper - Driver の「継承関係」をリファクタする

このうち,1,2 はこれまでの v4 rename と同じように実装可能であり,かつ,優先度が高い.そのため,v4.0.0 では 1,2 までを行うこととしたい.

@meltingrabbit
Copy link
Member Author

極めてわかりやすい整理なので,違和感ないです.では1,2お願いしたいです

@sksat
Copy link
Member

sksat commented Oct 13, 2023

v4.0.0 以降での rename は #151 でやる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority::high priorityg high
Projects
Status: Done
Development

No branches or pull requests

2 participants