Alternatives to Jupyter

Having tried Jupyter, I was disappointed. It takes too many resources, even for a few simple things, and requires a browser which is extra resources (and probably less efficient than a native binary application). At some point, not having done much in one session, I saw RAM usage quickly rise high for no apparantly good reason. I like their idea, their overall goal, but I abhor their implementation of it. Not just the heavy resource use is a problem, but also that it doesn’t seem to be made with power users in mind. There may be plugins addressing this power user thing (somewhat), but that would still leave the other problems.

I like to use a simple terminal and sometimes a text editor, but I also like the advantages of some sort of IDE (that displays current variables in use e.g., and that especially integrates a fast terminal, a file viewer, etc.), and I like the idea of Jupyter (saving notebook files, reusing them, etc.).

So, if you consider my needs (light on resources, fast, easy setup preferrably offline, preferrably a native application, Jupyter-like, reasonably simple or to-the-point, suitable for power users, with a Vim style of control, and I don’t need pretty non-terminal-like printing for checking a table, etc.), are there good alternatives to Jupyter?

I looked around and so far found these (which require more investigation):

  • Zeppelin;
  • Beaker;
  • nteract;

Do you know any others and what can you tell me in the context of this thread?

Do they properly support Julia, without fiddling around?

Do you have experience with any of them? What was it like?

Since you are mentioning both Jupyter and an IDE in your post it’s not completely clear to me what kind of tool you are looking for. As you might know, Jupyter is a tool to work with interactive computational notebooks, which is great for exploratory/interactive analysis and presentation of results, but it is not supposed (to the best of my knowledge) to act as an IDE.

Could you clarify whether you are looking for a different interactive computational notebook tool or are you looking for a Julia IDE like environment?

EDIT:
From reading your post again I think you are looking for a notebook like replacement for Jupyter.
I don’t have any feedback on the tools you mentioned, but one tool you can try which is definitely suitable for power users is using Emacs org-mode + emacs-jupyter. As the name suggests this still relies on a Jupyter server but allows you to interact with it via a different frontend (Emacs) so you don’t need the browser.

I set it up and used it a bit and it works very nicely, but at the moment I am still using Jupyter lab for my interactive analysis needs and emacs for developing more serious code. Probably by force of habit.

1 Like

It is not clear what you want from this. For what it’s worth I have found jupyterlab very responsive, despite being on a browser.

If you want something so simple, it’s not clear why Sublime Text 3 with a terminal would be so unpleasant. If you are looking for a notebook, trye qtconsole, which is a QT-based notebook.

1 Like

Has anybody made a package that loads a Jupyter notebook with a Blink.jl desktop electron window? If I could launch Jupyter from the REPL with Blink.jl, then I might actually use Jupyter.

1 Like

I don’t know about Blink.jl, but this nteract tool OP mentioned seems to be a desktop app interface to Jupyter notebooks as far as I understand, if that is what you are after.

Yes, a Jupyter-like replacement is what I meant, when I used many words earlier, though with those things to be considered which I mentioned (good fast terminal integration, quick list of variables in use, light on resources, etc.).

@pdeffebach, I never said it wasn’t responsive :wink: It was taking too many resources (for my taste) and even suddenly spiked greatly in RAM use for no apparant reason. Obviously, the simplicity of a terminal and text editor lacks the notebook-like functionality (which you could know from my post).

I will investigate qtnote. Thanks for the suggestion. Maybe it’s for me.

@orialb, yes, you’ve reread correctly. Thanks for the suggestion. I tend to avoid Emacs, but I might have a look at it.

I add, I noticed others speak of Jupyter as though it’s an IDE.

JupyterLab really is an IDE. There is a text editor, etc and both terminal and console modes on top of the notebook interface. Jupyter refers to a range of options.

Maybe I should’ve made my first post shorter and clearer. And you seem correct about Jupyter being a range of options. That was poor word choice on my part.

Maybe it can be called an IDE, of course it depends on what you mean by an IDE :slight_smile: . I just meant that I don’t think it is the ideal tool to develop packages or navigate large code bases, and I don’t think it is meant to be such a tool (but I might be wrong). For example I don’t think Jupyter lab has a capability for searching all files of a project or jumping to a function definition in a different file (I might be wrong here as well, maybe there are some extensions for it).

If the reason you tend to avoid Emacs is because you like the modal editing style of vim (I saw you mentioned it in the requirements in the original post), note that you can have vim bindings and modal editing in Emacs as well.
Have a look at Doom or Spacemacs. Those are both popular Emacs “distributions” (they are basically just config files for Emacs), whose goal is to provide smoother out of the box experience and make it easy to install packages. Both of them have vim like bindings by default.
Doom is even defined as “An Emacs configuration for the stubborn martian vimmer”

Have you checked out this option: Use LanguageServer.jl on vim 8.1 with vim-lsp plugin? I don’t have any experience I just remembered that something for Vim exists.

Thanks, @orialb, for the interesting links.

Thanks, @Tero_Frondelius. I will check that out.

You may enjoy using marimo as an alternative:

  • batteries-included: replaces jupyter, streamlit, jupytext, ipywidgets, papermill, and more
  • reactive: run a cell, and marimo reactively runs all dependent cells or marks them as stale
  • interactive: bind sliders, tables, plots, and more to Python — no callbacks required
  • reproducible: no hidden state, deterministic execution, built-in package management
  • executable: execute as a Python script, parametrized by CLI args
  • shareable: deploy as an interactive web app or slides, run in the browser via WASM
  • designed for data: query dataframes and databases with SQL, filter and search dataframes
  • git-friendly: notebooks are stored as .py files
  • a modern editor: GitHub Copilot, AI assistants, vim keybindings, variable explorer, and more

Here is the Intro notebook from the online playground

Disclaimer: I am one of the maintainers

P.S. A lot of the inspiration for marimo has come from Pluto.jl :slight_smile:

2 Likes

FYI: Pluto.jl is also a reactive alternative. Stores code simply in a Julia file, like marimo stores in a .py file. I didn’t know of marimo, yet, thanks, not sure if it’s better for Julia users, at least it’s also reactive, unlike Jupter (unless I’m mistaken, something there changed).

I’m not up-to-speed on all it replaces, except I know about streamlit (and it supports Python, not sure it or marimo supports Julia well; you can call all Julia code from Python though, at least usually).

It’s unclear to me marimo supports alternative languages like Julia or R (unlike e.g. Jupter and quarto), though it does support SQL, be design too, i.e. for duckdb at least (seemingly only). I still like knowing of it, though then offtopic here, for Julia users. I’m not sure this new first time user, welcome, knew of it its “Python-first design” so I suppose it doesn’t work for Julia (except with kind of hacks), and at least know Pluto seems very similar.

It seems to require Python 3.11, because it:

adheres to PEP 723. PEP 723 is a Python Enhancement Proposal for “Inline script metadata” that makes it possible to specify the dependencies of a script in the script itself.

This process leaves us with a list of dependencies at the top of the notebook:

# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "marimo",
#     "altair==5.4.1",
#     "polars==1.7.1",
# ]
# ///

It is worth noting that leveraging PEP 723 is only possible because unlike Jupyter notebooks, marimo notebooks are stored as pure Python files, letting marimo take advantage of the exciting new developments in the Python ecosystem.

And trivia, marimo aka “muck balls” aka e. ball of shit, literal translation of kúluskítur, for the cyanobacteria blooms I though only to exist here in one lake in Iceland, and in Japan:

Marimo, known as “muck balls” in Icelandic (kúluskítur) marimo was once extremely common in Mývatn. Mývatn is one of only a handful of lakes in the world which have large marimo colonies. The other major marimo colonies are found in Lake Akan in Japan, while smaller colonies have been found in lakes in Siberia, Estonia, Scotland and Iceland.

Given that this is a julia forum, in a thread asking for a julia notebook solution, it seems relatively offtopic to show up and recommend a Python-only notebook tool (especially when the thread has been dead for 5 years)

11 Likes