Execution Modes, Configuration Modes and Play Buttons #5964
-
This discussion is to clarify what we should do for the execution mode and the play button support. Currently, we have three contexts a function can be in The design, as it stands now, adds "execution modes" to control the state of these contexts. Two modes are currently proposed "development" ( This is mixing two concepts which should not be joined. Execution ModesWe need to control the different behavior of contexts when designing a workflow (i.e. interactively within the IDE) and when running in a script mode (i.e. when executing within the CLI or a job in the cloud). The current naming of "development" and "production" combines the concept with the idea of different databases and datasets. More precisely naming "interactive" and "batch" would make the two modes' behaviors obvious. This would also remove users needing to add new modes, as these two modes would be all required. The IDE would run in "interactive" mode and the CLI in "batch" mode - this would mean a behavior difference between the two worlds, but this feels more like the natural behaviors. Within "batch" mode everything would be enabled. Within the "interactive" mode, we would disable the "Output" context. The use and meaning of the "Input" context is not currently well designed. It is imagined, it might be something like a cached value if disabled and live value if enabled, but this would need significantly more design and is not planned within the "Beta" release schedule. Individual node control of contexts would still be needed. However, with the simplified behaviors, the ## Enable a specific context in the runtime.
Arguments:
- context: Name of the context to enable.
Runtime.enable_context : Text -> (Any -> Any) -> Any
Runtime.enable_context context ~action =
## Implementation out of scope for design.
## Disable a specific context in the runtime.
Arguments:
- context: Name of the context to disable.
Runtime.disable_context : Text -> Any -> Any) -> Any
Runtime.disable_context context ~action =
## Implementation out of scope for design. For the current planned releases, any context other than "Output" for these functions would result in an The CLI and IDE would not need additional arguments to control these modes as they would execute as specified above. Configuration ModesThe drop-down with modes would still be an essential feature of the IDE and would be needed to drive the configuration of connections. The set of these modes would be heavily driven by the user and integrated into the cloud-based configuration system. We could also enable it within the The suggested CLI argument of ## Gets the value of the current configuration mode.
Runtime.get_configuration_mode : Text
Runtime.get_configuration_mode =
## Implementation out of scope for design. This would be a useful feature but would be a lower priority than "interactive" / "batch" and play button support (described below). Workflow Level Play Button (Design Partners)The idea of the play button is to execute the workflow within the IDE in a "batch" mode. The behavior should be as follows:
Ideally, the play button would become a stop button while this is running giving the user the ability to abort. Not required for Design Partners but ideally developed soon after. This would allow the user to run the workflow in a "batch" mode and then interactively edit the workflow without the need to re-run the workflow. The user would be able to see the workflow results in the IDE. Eventually, we would want to be able to execute with a single context being enabled. This is not expected for the "Design Partners" or "Beta" release. You could, for example, enable the "Input" context and re-evaluate the workflow without running the outputs. This is only mentioned as it might affect the design of the language server protocol for the above process. An additional similar button (🔃) is needed to re-evaluate the workflow in the "interactive" mode, effectively this refreshes the inputs and recalculates. This would be a simpler process of invalidating the cache and then evaluating the nodes from top to bottom, similar to opening the workflow in the first place. Node Level Play Button (Beta Release)Clicking the node behavior should be as follows:
This would allow the user to run a specific node in a "batch" mode and then work with results downstream. The user would be able to see the node results in the IDE. They can also use this button to refresh a single nodes value (for example, re-read an input file) as enabling "Output" would have no effect on other nodes. The longer-term goal would be to enable it on a connection-by-connection basis, such as updating all the tables in a specific database. This would be a more complex design and need to be designed later. For example, triggering an update to the production database with the current values as cached being written to the target tables. |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 10 replies
-
cc: @sylwiabr @NedHarding ahead of our meeting today |
Beta Was this translation helpful? Give feedback.
-
A few comments on my end. But basically, this drastically changes the way contexts work and I do not like the new idea. I think we should get back on a call to discuss it again. But basically, I believe that what we had designed until now is way better than what's proposed here. (some of the points below describe why I think so). Anyway, we should not change so important things when the development started, as it will cause delays and confusion in our team. So this needs to be sorted out ASAP.
To sum this up, we need to have a call about it ASAP. Until then, the development should either follow the previous specification or should be frozen. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
This is getting more and more complicated and is holding back development of the prodoct. I have so many thoughts. Random thoughts:
Requirements:
I think that's it, right? Why so complicated? |
Beta Was this translation helpful? Give feedback.
-
The final design was posted here! https://github.com/enso-org/design/pull/55 😄 |
Beta Was this translation helpful? Give feedback.
The final design was posted here! enso-org/design#55 😄