temporalio / proposals

Temporal proposals
https://temporal.io
MIT License
69 stars 18 forks source link

Nexus alo #66

Closed rylandg closed 2 years ago

rylandg commented 2 years ago

This is a proposal for Nexus & ALO, two new concepts which can be leveraged by Temporal. This is the second PR for the proposal as the first one was growing too large to work with.

Rendered version

rsnodgrass commented 2 years ago

@rylandg Just a thought, reading texts that mention Arbitrary Length Operation (ALO) doesn't quickly make sense without the additional explanation that the "length" is actually length of time. Calling these Arbitrary Duration Operations (ADO) as terminology might make this much clearer conceptually. Especially for those new to thinking in terms of Durable Execution.

drewhoskins-stripe commented 2 years ago

Especially for those new to thinking in terms of Durable Execution

Or just "Durable operations" I tried "Durable Async Operations" at Stripe but people complained that there's already a DAO concept.

rsnodgrass commented 2 years ago

To be honest, any of those suggested above so are clearer to the intent of the term than "Arbitrary Length Operation (ALO)":

I really liked the original use of "Arbitrary" because it immediately is distinct from pre-conceived notions of what people think when they hear "asynchronous". The definition of arbitrary: based on random choice or personal whim, rather than any reason or system also clearly indicates that execution will likely not occur in order within completely independent execution plans (or workflows).

I still like Arbitrary Duration Operation (ADO) the best about of the above, with Durable Asynchronous Procedure (DAP) a close second, and Durable Operation (DO) third.

Sorry for butting in by the way, I just was reading the proposal and ALO terminology instantly made me scratch my head.

cretz commented 2 years ago

I still like Arbitrary Duration Operation (ADO) the best about of the above

This gives me flashbacks to my old COM/MFC days (ADO). While I can understand the concern that "length" is more ambiguous than "duration" (which is unrelated to "durable" or durability), I personally like "ALO" from a pure acronym/nomenclature POV and am not concerned that the three words that make it up are expected to be descriptive enough on their own.

Basically I see it as "long running operations" (i.e. AIP-151) but "any length" of time instead of "long running".

joebowbeer commented 2 years ago

I still like Arbitrary Duration Operation (ADO) the best about of the above

This gives me flashbacks to my old COM/MFC days (ADO).

I still think that leading with ADO or any other acronym or initialism is creating unnecessary hurdles for initiates, adding conceptual complexity for no gain.

You want to create a world in which this kind of Operation is the only thing anyone cares about, right? So just call it Operation in your context. (Or if you want to make a land grab, call it Cloud Operation.)

If you ever want to talk about the other kinds of operations that programmers used to worry about, create an acronym for that: NADO = Non-Arbitrary-Duration-Operation.

cretz commented 2 years ago

You want to create a world in which this kind of Operation is the only thing anyone cares about, right?

The purpose of denoting an "ALO" is that, yes, there is a separate concept of a fast "sync operation" from a client POV (but not necessarily different API from inside a Temporal workflow, they all look async). When we get to a code generation stage this will be even more stark where some calls will return a value and others will return a promise of a value.

rylandg commented 2 years ago

We are officially closing this proposal and are in the technical design phase.