Skip to content

Consider an org-mode frontend via ob-ipython #87

@dangirsh

Description

@dangirsh

Org mode has lots to offer over Jupyer notebooks / JupyterLab / EIN. Off the top of my head:

Code cells in Org mode can execute in Jupyter kernels (for various languages) via the ob-ipython package. This gives the user:

  • dynamic completion from the kernel
  • doc lookup from the kernel
  • access to remote kernels

By virtue of using Org, "notebooks" written this way:

The scimax project has very interesting additions (video demo) to ob-ipython, including:

  • emulating most Jupyter notebook's commands + their keybindings (see the scimax-jupyter-command-mode hydra in here)
  • multiple kernels in one Org file
  • live editable LaTeX previews

Here are some ways Pynt could be more powerful with Org:

  1. Org manages sessions (kernels) per-document, per-subtree, and per-cell, with the most specific taking precedence. This means that any operations which spawn new kernels could just inject a new subtree into the current document. You could then capture the complete history with multiple code variants attached to different kernels, all within one document.
  2. Features like branch unpacking could benefit from having powerful tree manipulation facilities, which are the heart of Org. I assume you're relying on the markdown headings to manage the tree structure in the ipynb. According to this spec, you're limited to a depth of 6. Org has no limit that I can find and, more importantly, it gives the user powerful tools to navigate the tree. These tools open the door to more sophisticated cell generation facilities. For example, imagine generating a cell for each intermediate definition within a function trace of depth 5. Maybe I'd like to do that for 10 different invocations and then poke around in the tree of ~50 generated cells. Being forced to work at the top-level of a notebook would make this unwieldy, if not impossible.
  3. Future proof. The ideas in Pynt are not Jupyter-specific, and ipynb can be generated from Org files ;)

I don't know the Pynt code well enough to guess the level of effort for this. It likely mainly depends on how much experience the contributor has with automating Org.

I thought the best first step would be to discuss the pros/cons here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions