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

BREAKING CHANGE: rename from FarClass to ExoClass, etc #6323

Merged
merged 1 commit into from
Jan 21, 2023

Conversation

erights
Copy link
Member

@erights erights commented Sep 25, 2022

Fixes endojs/endo#1193 .

@dtribble and I were brainstorming name alternatives to FarClass (which we both hate for somewhat different reasons). There are three salient differences from normal object programming, where FarClass only suggests the first and third.

  • It is a remotable, meaning it is exposed to messages from outside the vat (hence "Far")
  • Related, it is protected by an interfaceGuard that does the first type-like phase of input validation
  • It is programmed in a class-like manner, with inline methods in the concise-method syntax, accepting their instance-specific access via their this binding (hence "Class")

We also need to name the instance case, and FarInstance is way too awkward. The instance case has the first two features but not the third.

New aha: "Exo" does double duty.

  • As a prefix meaning "outside", it suggests the remotable meaning. That was why I suggested Exo in the first place.
  • It lets us introduce the metaphor of the ExoSkeleton without being confused with the exoskeleton itself. "An exo is a creature with an exoskeleton" is a memorable explanation, even if there is no RL noun "Exo".

Also

  • It is short, so for the class case "ExoClass" still works.
  • It is distinct from our current "Far" and so the "Instance" qualifier isn't needed for the protective instance case.

But this last bullet (distinct from "Far") means that it isn't an answer to our first search for a term, since it doesn't cover remotable objects without a protective exoskeleton (currently, "Far objects" and "remote presences"). Oh well. I think the rename is still worth it.

@erights erights requested a review from turadg as a code owner September 25, 2022 23:52
@erights erights self-assigned this Sep 25, 2022
@erights erights force-pushed the markm-rename-to-exo-reopen branch 2 times, most recently from 87d3cb8 to fb3219e Compare September 29, 2022 03:39
@turadg turadg removed their request for review September 29, 2022 15:24
@erights erights force-pushed the markm-rename-to-exo-reopen branch 3 times, most recently from f9e8c82 to 11e1aa8 Compare October 9, 2022 04:26
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 11e1aa8 to b9dbf1e Compare October 11, 2022 04:15
Copy link
Member

@kriskowal kriskowal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mechanical to me. I’m warming to the idea that this name change is a net improvement and, stew as I have on this question for long enough, have not found a more positive improvement.

@kriskowal
Copy link
Member

Caveat: this appears to be a breaking change and I do not know how it affects upgrade. However, the commit message should be framed like:

refactor(ertp)!: Rename etc

*BREAKING CHANGE*: How to update dependencies

This will ensure that Lerna generates a changelog and the appropriate version bumps.

@erights erights requested a review from mhofman October 11, 2022 23:55
@erights erights force-pushed the markm-rename-to-exo-reopen branch from b9dbf1e to 75374ac Compare October 19, 2022 00:04
@erights
Copy link
Member Author

erights commented Oct 19, 2022

See previous discussion at #6118
See table of options at https://docs.google.com/spreadsheets/d/1yhKgzMOfmZOTnvP3Bh4p16H9RyYq_WhOlxZ3Qicx_Oc/edit#gid=0

@erights erights force-pushed the markm-rename-to-exo-reopen branch from 75374ac to 7f2a764 Compare October 19, 2022 01:27
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 7f2a764 to 0d88a80 Compare November 5, 2022 03:14
@erights erights force-pushed the markm-rename-to-exo-reopen branch 2 times, most recently from 2d23251 to 1c121e5 Compare November 9, 2022 21:57
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 1c121e5 to a74084a Compare November 19, 2022 05:36
@erights erights force-pushed the markm-rename-to-exo-reopen branch 2 times, most recently from 1c24718 to 68894d4 Compare December 4, 2022 08:54
Copy link
Member

@gibson042 gibson042 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think "Exo" is a big improvement over "Far", and even the isolated noun usage works pretty well.

@erights erights force-pushed the markm-rename-to-exo-reopen branch 4 times, most recently from a14bebf to 1158b73 Compare December 23, 2022 23:25
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 1158b73 to f941e0b Compare January 20, 2023 06:30
@erights
Copy link
Member Author

erights commented Jan 20, 2023

Please look at #6818 for another candidate. I think I like that one better.

Copy link
Member

@turadg turadg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Late in the day, I confused this and #6818 and even #6118.

@turadg turadg self-requested a review January 21, 2023 00:28
Copy link
Member

@turadg turadg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This simple change looks good to me. As I wrote on #6323 (review) I ask that the naming rationale be documented within the codebase. E.g. packages/store/docs/terminology.md.

@erights erights force-pushed the markm-rename-to-exo-reopen branch 2 times, most recently from b9ad4cb to 906d4a7 Compare January 21, 2023 07:42
@erights erights changed the base branch from master to markm-rename-vivify-to-prepare January 21, 2023 07:42
@erights erights changed the title fix: rename from FarClass to ExoClass, etc BREAKING CHANGE: rename from FarClass to ExoClass, etc Jan 21, 2023
Base automatically changed from markm-rename-vivify-to-prepare to master January 21, 2023 08:30
@erights erights force-pushed the markm-rename-to-exo-reopen branch 2 times, most recently from 8dd496d to 223af54 Compare January 21, 2023 10:58
@erights erights added automerge:squash Automatically squash merge and removed automerge:squash Automatically squash merge labels Jan 21, 2023
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 223af54 to 49aeb37 Compare January 21, 2023 11:18
@erights erights added the automerge:squash Automatically squash merge label Jan 21, 2023
@erights erights force-pushed the markm-rename-to-exo-reopen branch from 49aeb37 to e071e13 Compare January 21, 2023 11:21
@mergify mergify bot merged commit da96c7c into master Jan 21, 2023
@mergify mergify bot deleted the markm-rename-to-exo-reopen branch January 21, 2023 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge:squash Automatically squash merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

revise terminology of Far
4 participants