Requirements to add Jupyter notebook support into an IDE like vscode / pycharm called CodeEdit

I develop a lot of apps which use shell and python scripts for data engineering and data science.

I have been using jupyter notebook / lab for years on my macbook. I switched to pycharm for a while because they finally got jupyter support and with its interpreter I could use various conda environments and easily switch, run python scripts and run jupyter notebooks for fast prototyping.

Only problem with pycharm was that it used a lot of CPU and ram, so when vscode finally got jupyter support i switched over.

Now I see that these guys here GitHub - CodeEditApp/CodeEdit: CodeEdit App for macOS – Elevate your code editing experience. Open source, free forever. are developing a native IDE called CodeEdit that combines xcode and the textedit app with extensions.

Like how vscode and pycharm created extensions, I want to one day be able to run python code and jupyter notebooks inside the IDE hopefully by way of an extension.

I am thinking of contributing to the app, my question is, what are the requirements for the IDE so that it can have interpreter and jupyter notebook / lab support so that an extension can be created one day and be fully supported.

Is there documentation somewhere for this? I only found documentation to create jupyterlab extensions not put jupyterlab into another IDE.

1 Like

For the services:

You’d certainly need at least a working

  • python
  • jupyter-server
  • the jupyterlab application itself

I can’t really recommend using the system python for anything interactive, though homebrew might be a fine option. But a jupyter tool (even first-party tools) that ignores conda, virtualenv, etc. does so at its own peril, so you might want to plan to ship a custom miniforge-style installer that carries a known-good constellation of those. And indeed, that’s precisely what jupyterlab-desktop. What they also do is ship a big stack of other packages like numpy, which I can’t really recommend, as well as some specific extensions… you’ll likely need some custom extensions, but about that…

For the stuff in the GUI and extensions, you can do one of:

  • implement everything against the native gui toolkit and networking stack
    • good luck!
    • this is basically not feasible.
  • embed a web frame and reuse the jupyterlab components
    • this is spirtually not to dissimilar from jupyterlab-desktop
    • it maps the “main menu” to the application menu be re-implementing that extension
  • a mix of the two, e.g. have a dedicated frame just for outputs.

vscode and pycharm

Indeed, going and seeing how those tools implemented it is probably worthwhile. If they’re not open source (even in name)… well, good luck!

2 Likes