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

[RFC] Separate GUI and worker process #197

Open
irgolic opened this issue Jul 29, 2021 · 0 comments
Open

[RFC] Separate GUI and worker process #197

irgolic opened this issue Jul 29, 2021 · 0 comments

Comments

@irgolic
Copy link
Member

irgolic commented Jul 29, 2021

This issue will likely require work in biolab/orange-widget-base, but I'm opening it here because it mainly pertains canvas.

Here's an idea: instead of implementing biolab/orange-widget-base#86, which seems complex and hard to execute, let's start simple, and separate canvas-core into two processes:

  • the canvas, in which the main window runs,
  • the widgets, in which widget windows and computation run.

Even if widgets are threaded, it's very hard to interact with the application, as inputs are ignored. I find myself spam-clicking something when a widget is doing work in a thread, hoping I will click at just the right time for the event loop to catch it. Let's at least separate the canvas process so if an unwanted link that freezes Orange is made, you don't need to crash the whole application; you can restart the kernel.

Concept image:
Screen Shot 2021-07-29 at 11 34 13 PM

The pause button pauses computation while the restart button shuts down the kernel and starts it anew.

Off the top of my head, this seems relatively straightforward to implement. I'm not sure how easily we can cut canvas-core in half, but it feels like a realistic idea. @ales-erjavec, what do you think?

If we can pull this off, it will fix a massive UX issue. Crash recovery covers up the symptom of crashing and restarting Orange, but a feature like this could bring us to the reliability of a jupyter notebook (which inspired this issue). Imagine if you had to restart the process every time you wanted to cancel computation. It seems unimaginable – I think that's how we'll feel about Orange if we push this through :)

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

No branches or pull requests

1 participant