sagemathinc / cocalc

CoCalc: Collaborative Calculation in the Cloud
https://CoCalc.com
Other
1.17k stars 216 forks source link

No obvious way to switch to CoCalc Jupyter from classic in Firefox. #6051

Closed mforbes closed 1 year ago

mforbes commented 2 years ago

If a user accidentally clicks through to the Jupyter classic server in Firefox, they are presented with the following error message requesting the user to "switch to the CoCalc Jupyter notebook", with no obvious way to do this. Perhaps there should be a button "Switch back to CoCalc Jupyter Notebook now." or similar.

Screen Shot 2022-07-14 at 5 15 57 PM

It would actually be very nice to be able to fairly quickly switch to the full Jupyter Notebook server. Is there a convenient way to do this? I know about the following:

  1. Project Settings -> Jupyter Classic Notebook Server (but then one needs to navigate to the notebook again.)
  2. New -> Jupyter Classic Notebook Server: This always seems strange since it is not actually creating anything "new".

(What is the recommended approach to switching back? Visiting the Account Settings page and deselecting "Jupyter classic: use classical Jupyter notebook"? This requires a reload, which is also somewhat confusing.)

mforbes commented 1 year ago

Update: This seems to be somewhat resolved. Now Firefox users get the following screen:

image

However, clicking the "Switch to CoCalc Jupyter Notebook" gives the following:

image

Reloading the page gets back, but is again, not obvious for some users.

(Note: Hanging out on the error page leads to a CoCalc Crash. I have submitted a crash report.)


Somewhat related to this: is there a way to link to the Plain Jupyter Server version of a file within the same project without knowing the project id? (I.e. I want to include a link like this - Jupyter Notebook Server: InteractivePlots.ipynb - from within this file - CoCalc Notebook: InteractivePlots.ipynb - but have that link work appropriately when I distribute the file to students (i.e. the link should point to their own version, not the class version).

It might be good to provide such a link to Firefox users who try to switch to the Jupyter Classical Notebook Server.

mforbes commented 1 year ago

Okay, after reading some more, I am even more confused with the terminology. I think there are three different things. Part of this is confusing because of the two different "File" menus presented in the UI (in addition to a third "Files" menu!):

image

I will refer to the upper file menu as File1, the lower one as File, and the left one as Files in the following.

  1. CoCalc Jupyter Notebooks: This is the usual notebook interface on CoCalc, the one that works on all browsers, and supports colaborative editing, Time Travel, etc.
  2. Classical Jupyter Notebook: This is what you get when you go File->Switch to classical notebook.... This is broken on Firefox and seems to change the setting in Account->Settings labelled "Jupyter classic: use classical Jupyter notebook (DANGER: this can cause trouble...)".

    It seems that the reason for this mode is that it still supports real-time collaboration and Time Travel, but is dangerous if simultaneous users edit both this and 1. Perhaps this should be specified on a per-file basis rather than on a per user basis? That would at least prevent some issues (and makes more sense: this feature is really only needed if a specific notebook needs to use features not supported by 1.)

  3. Plain Jupyter Server: This runs a standalone Jupyter Notebook server without realtime collaboration or Time Travel support, however, it works on Firefox. To get here you need to go to File1->New and click a button called Jupyter Classical Server which sounds an awful lot like option 2. above but is not.

    image

    Clicking this button opens a panel which also appears on the project's settings page and has a link (not a button) called Jupyter Classic Notebook Server. The terms "Classical" and "Classic" here are very confusing as they have the same meaning as in 2. but apply to what is called in the docs "Plain". Perhaps both of these could be renamed to "Plain Jupyter Notebook Server" to avoid confusion, with the second link perhaps becoming either a button "Start Plain Jupyter Notebook Server" or removing the word "start your Jupyter Classic Notebook server" (again "Classic" is confusing with 2.), or maybe, if the "starting" is important, include something that indicates here whether or not the server is already running (probably not needed).

    The nice thing about Plain notebook servers is that you can just link to them and they work (except I don't know how to do this without specifically linking to a project). To me it makes no sense that you should start this with File1->New though.

The docs refer to 1. as CoCalc Jupyter Notebooks, 2. as Classical Jupyter and 3. as both Plain Jupyter Server and Plain Jupyter Classic Server. The double meaning of the words "Classic" and "Classical" are confusing.

mforbes commented 1 year ago

BTW: Is there a closed issue or discussion somewhere which outlines why Firefox is such an issue?

williamstein commented 1 year ago

We had a discussion today and did some renaming so now there aren't basically three "files":

image
williamstein commented 1 year ago

Firefox is such an issue?

I don't remember. For a year or two we couldn't even support Firefox at all with CoCalc (around the 60's in versions), since it was so broken in so many ways. Mozilla was going through some weird times. Now things are of course much better.

williamstein commented 1 year ago

Things work fine now, and Firefox is again supported.

I also agree with your thoughts that this classic sync mode should just be per file, etc. I just haven't gotten a chance to implement that. It's partly for historical reasons, in that I had hoped to just delete this code entirely... except when I did people complained and I brought it back. Also, for a while this classic sync mode was literally the ONLY way to use Jupyter in CoCalc, so there wasn't a sense of switching back and forth.

I now think being able to support legacy software longterm is pretty valuable, as long as the load of doing so isn't too high (on me and on users).

williamstein commented 1 year ago

fixed via e27d5647e84c5dcddab147a768b820061cdfe7cc