Feature Request: Option to tolerate long load times + Progress bar
- Dominant language
- Jupyter Notebook
- Stars
- 13.3k
- Forks
- 5.8k
- Avg merge
- 6d 11h
- Merged PRs (30d)
- 7
Description
I love three completely incompatible things about Jupyter:
- Nbextensions
- Mathjax
- Very large notebooks
In fact, the lovely Nbextensions TOC is one thing that makes large notebooks so easy to use and therefore so attractive, but it is completely impossible to enjoy all of these features in a large notebook, because Nbextensions times out on loading large notebooks with lots of markup. Nbextensions might even timeout for a large notebook with Mathjax disabled (`--no-mathjax`), and even without Nbextensions, a very large notebook with lots of Latex markup can appear to hang on startup, disconcerting someone new to Jupyter, and even those of us familiar with the problem.
I propose a popup dialog that gives you options:
* Am I willing to tolerate a lengthy load time? Yes / No
* Do I want to load Mathjax? Yes / No
And then a **progress** **bar** that sets your mind at rest when you think the notebook is hanging.
Last but not least, for those who have willingly, knowingly and explicitly chosen to tolerate a long load time, TURN OFF THE GODDAM TIMEOUTS.
I've tried turning off Mathjax with `--no-mathjax` and bumping up the `waitseconds` parameter into the stratosphere (currently 2000 seconds) in the file `.jupyter/custom/custom.js`:
```
window.requirejs.config({
waitseconds: 2000, // default is 30s
});
```
but Nbextensions still times out for large notebooks, so I am constantly breaking up notebooks that I would prefer to keep whole, just so everything will load.
What if some of us are willing to wait 10 minutes for a notebook to load? In many cases, I am.
I fear that this problem will persist until someone figures out how to solve the much more difficult technical problem of improving load performance. That would be really unfortunate. Some of us would be extremely grateful for a practical workaround, even if that offends some people's sense of elegant design. Long wait times do not reflect badly on the app when users explicitly choose to endure them in order to get the benefits of loading all the nice features we want.
Lots of applications have lengthy load times and no one is scandalized by that. I suspect that in the case of Jupyter, people view that as intolerable simply because they are using text editors as benchmarks. IMO, we should shift gears mentally, revise our idea of what Jupyter is and view it, instead, as a piece of publishing software with built-in hooks to python interpreters.
Contributor guide
Research direction
Start by tracing Nbextensions and MathJax loading behavior, including the `--no-mathjax` option and the `waitseconds` setting shown in `.jupyter/custom/custom.js`. Define how an explicit long-load choice, progress indication, and disabled or extended timeouts should behave; the issue provides no named tests or implementation files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter-notebook
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100