As discussed with @ccordoba12
Note: Check which preferences require a restart and which can be applied without it. For now:
Needs a restart (although sometimes could be optional):
Doesn't need a restart:
Graphics and Inline backend options
I think this one doesn't need a restart, as long as you're not switching between the Tk and Qt backends, for instance.
Thinking about how the preferences should impact currently running consoles: should the preferences that doesn't need a restart be applied to every console or only the current selected console? what do you guys think @bcolsen @ccordoba12 @goanpeca @impact27 ?
Are these things
1.) Changed on the Preferences dialog? or
2.) on the IPython Optiones Menu (hamburguer) button?
If 1 then we probably will need to ask the user if apply to current or apply to all.
If 2 then current only makes sense.
Yep in the preferences dialog, thanks @goanpeca for the feedback :+1:
@isabela-pf will help us to decide a good option to implement this! (Please post your ideas here)
First, here's how the dialog looks now for quick comparison:
Based on our meeting yesterday, I mocked up the idea of breaking up the three buttons into a confirmation of the default "apply to new" and including checkboxes for the destructive options. I this still might have some issues to work out, but this is the idea.
I also rewrote the text as follows (for easy copy and paste):
By default, some IPython console preferences will be applied to new consoles only. To apply preferences to existing consoles, select from the options below.
Please note: applying changes to running consoles will force a kernel restart and all current work will be lost.
Apply to current console and restart kernel
Apply to all existing consoles and restart all kernels
The only other thing that I thought might be useful is if the button lists what the result will be based on what is or isn't checked in the dialog. So nothing checked says what the default does "Apply to New Consoles" while checking the first box says "Apply to Current Console." I don't know if this is possible, but it's an idea.
Thanks a lot @isabela-pf for your help! The message is still long but reads much better now. Besides, I hope people will read it with care once, then they won't give it too much thought.
Do you plan to work on it a bit more? There's no problem if not, just let us know so @dalthviz can proceed with the implementation.
The only other thing that I thought might be useful is if the button lists what the result will be based on what is or isn't checked in the dialog. So nothing checked says what the default does "Apply to New Consoles" while checking the first box says "Apply to Current Console." I don't know if this is possible, but it's an idea.
I love this idea! It's a very good suggestion! And it's technically feasible, so @dalthviz could make it a reality.
@dalthviz, what do you think about @isabela-pf's proposal?
The only concern I have is how the user will interpret the dialog in the case they change simultaneously options that require a restart and options that can be applied without it (that case is kind of being handled by adding the some
but maybe the phrasing of the buttons could be misleading? ).
Maybe instead of Apply ..
could be Restart ...
when the checkboxes are selected, and in the case neither of them are selected something like Dissmis restart
? (I'm seeing the dialog like if it was asking some of options need a restart to be applied, do you want to restart something?
)
Otherwise, this looks good to me :+1:
Thanks @isabela-pf for figuring out a better approach than the previous dialog! Let us know if you have more suggestions :)
That's great feedback, thanks! I mocked up each of the options for a dialog with changing button text so that we can see how this plays out in full. I also changed button text accordingly, though there's still a few questions here.
restart kernel
or restart console
.I've mocked the options up with restart kernel
language here.
apply to new consoles
is more informative (this is what I showed in my last comment). Either could work, but there's probably an answer that is more accurate for you. I've mocked up both for you to choose.Responding to @dalthviz 's comment that this could be misleading when applying multiple preferences with some that do require restart and others that don't, is this because ones that don't require restart have already been applied? Or is it a problem of users potentially thinking all the options require restart when they don't, maybe making them more hesitant of that preference in the future?
Unless you have more questions for me, I think this is ready to implement once you decide which language is more technically accurate.
Thanks @isabela-pf! I like the Keep existing kernels
(maybe I would add state
-> Keep existing kernels state
but that seems like a rather long button).
About my concern, yep it is because independently of the selection done in the dialog, the options that do not require a restart will be applied to all the consoles. So, if someone clicks the button saying Apply to New Consoles
maybe will cause the expectation that all the preferences changed will apply only to new consoles (all the running consoles will remain unchanged).
And just in case, I think the relation between consoles and kernels is like:
What do you think @ccordoba12 ?
I like the
Keep existing kernels
I also like Keep existing kernels
instead of Apply to new consoles
because that would make that the text shown in the button of that dialog to always mention something about kernels.
(maybe I would add state ->
Keep existing kernels state
but that seems like a rather long button).
On the hand, I also think that's too long. And on the other, a kernel restart implies a new kernel process (i.e. it's not that it's state is reset; it's that the kernel is killed and a new one is started instead). So Keep existing kernels
is more appropriate in the technical sense too.
And just in case, I think the relation between consoles and kernels is like:
- A console is connected to just one kernel at the same time.
- A kernel can be connected to multiple consoles at the same time.
@dalthviz is totally right about this.
Most helpful comment
That's great feedback, thanks! I mocked up each of the options for a dialog with changing button text so that we can see how this plays out in full. I also changed button text accordingly, though there's still a few questions here.
restart kernel
orrestart console
.I've mocked the options up with
restart kernel
language here.apply to new consoles
is more informative (this is what I showed in my last comment). Either could work, but there's probably an answer that is more accurate for you. I've mocked up both for you to choose.Responding to @dalthviz 's comment that this could be misleading when applying multiple preferences with some that do require restart and others that don't, is this because ones that don't require restart have already been applied? Or is it a problem of users potentially thinking all the options require restart when they don't, maybe making them more hesitant of that preference in the future?
Unless you have more questions for me, I think this is ready to implement once you decide which language is more technically accurate.