Skip to content

Conversation

@cretz
Copy link
Member

@cretz cretz commented Jul 22, 2025

What was changed

RENDERED (as of this PR, will go away when PR merged)

Added fairly limited section on migration from Coinbase Ruby which notes the sample, that workflows are incompatible, and a table showing the differences for commonly used features.

@cretz cretz requested a review from a team as a code owner July 22, 2025 19:35
how to disable API class loading on the Coinbase Ruby side if needing to use both dependencies in the same project since
two sets of API classes cannot both be present.

Migration cannot be done on a live, running workflow. Overall, Coinbase Ruby workflow events are incompatible with

Choose a reason for hiding this comment

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

Would our SDK be able to replay history from Coinbase's SDK? or are we just able to translate WF code from one SDK to another, as in our SDK can run Coinbase workflows and vise versa.

Copy link
Member Author

@cretz cretz Jul 23, 2025

Choose a reason for hiding this comment

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

Would our SDK be able to replay history from Coinbase's SDK?

No, Coinbase Ruby workflow events are incompatible with Temporal Ruby workflow events at runtime. Our SDK can start and interact with Coinbase workflows and vice-versa, yes.

Copy link
Member Author

Choose a reason for hiding this comment

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

Added a bit of clarity here

README.md Outdated
two sets of API classes cannot both be present.

Migration cannot be done on a live, running workflow. Overall, Coinbase Ruby workflow events are incompatible with
Temporal Ruby workflow events at runtime, so a live workflow migration cannot occur, an alternative task queue would be

Choose a reason for hiding this comment

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

I think more information could be helpful here. What does a closed workflow migration look like? Why is an alternative task queue needed?

Copy link
Member Author

@cretz cretz Jul 23, 2025

Choose a reason for hiding this comment

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

We don't have a specific answer here on how they migrate a workflow from one set of code to another (whether that's for code versioning reasons or SDK change reasons (be it this one or switching languages)). I think that's more of a whole-workflow-versioning problem I would rather not delve into here and leave that to whole-workflow-versioning docs. I will see if there are whole-workflow-versioning docs I can link to (probably https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning).

Choose a reason for hiding this comment

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

sounds good, maybe worth removing "an alternative task queue needed" bit? Not sure what value that adds, unless we dive further into what that statement means

Copy link
Member Author

Choose a reason for hiding this comment

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

I think knowing that you can just put new stuff on an alternative task queue is plenty valuable on its own. But I may be able to add a bit more to the sentence.

Copy link
Member Author

Choose a reason for hiding this comment

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

Added some more detail here

| Handle signal/query/update in workflow | `workflow.on_signal`/`workflow.on_query`/update-unsupported | Decorate with `workflow_signal`/`workflow_query`/`workflow_update` |
| Run worker | `Temporal::Worker.new` + `start` | `Temporalio::Worker.new` + `run` |

This is just a high-level overview, there are many more differences on more specific Temporal components.

Choose a reason for hiding this comment

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

Is there already info on the more specific differences, or does that still need to be written

Copy link
Member Author

@cretz cretz Jul 23, 2025

Choose a reason for hiding this comment

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

There are thousands (...er...hundreds maybe heh) of differences from option names to method names to interceptor approaches, we don't want to write every difference. This is a small documentation section as a courtesy for a handful of non-Temporal-Ruby-SDK users. It'd be like documenting every difference between Go and Java SDKs just to help users do a Go-to-Java migration.

how to disable API class loading on the Coinbase Ruby side if needing to use both dependencies in the same project since
two sets of API classes cannot both be present.

Migration cannot be done on a live, running workflow. Overall, Coinbase Ruby workflow events are incompatible with

Choose a reason for hiding this comment

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

Is it redundant to say "live" and "running"? Is there ever a running workflow that isn't "live"?

Copy link
Member Author

Choose a reason for hiding this comment

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

Technically yes, a workflow running on the server may never have reached worker code. Also there are "live" workflows that are not running (e.g. closed workflows that get queried). But in general, both adjectives are needed to clarify that you can't do the migration with live code.

Choose a reason for hiding this comment

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

sounds good, thanks

@cretz cretz merged commit f3b34b4 into temporalio:main Jul 24, 2025
8 checks passed
@cretz cretz deleted the coinbase-guide branch July 24, 2025 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants