28

I have prepared Jupyter Notebook with some findings and I shared it with other team members through GitHub to get their feedback in a written form. It used to work like this when working together on a piece of code but does not work for Jupyter Notebook. In GitHub that would mean commenting on HTML or JSON level (internal markup for .ipynb files), not on the document level. An alternative would be for team members to clone the repo and puts inline comments in the document. That's an additional effort for other team member I would like to avoid.

What is the way you collaborate, peer review and provide feedback when working on Jupyter Notebooks?

dzieciou
  • 687
  • 2
  • 6
  • 16

10 Answers10

24

CoCalc provides Jupyter notebooks with realtime collaboration, unlike Colab, Kaggle, etc. You just make a project drag and drop ipynb and data files, add collaborators, and everybody can edit everything simultaneously. You can also share content publicly at the share server. I think CoCalc is currently the overall most mature of the realtime Jupyter collaboration platforms (and it is the only open source one 4), but Deepnote is another option that is more focused on data science (but is closed source).

Note, while CoCalc has very flexible payment plans in order to use the real-time collaboration (RTC) functionality via internet, Deepnote is for free for students, e.g. via the Github Student Developer Pack.

William Stein
  • 341
  • 2
  • 5
17

There are several collaboration platforms with hosted notebooks that can be shared like:

However the base idea of collaborating and sharing notebooks is actually a base function of jupyter. As you might have noticed it is a server-hosted application which by default opens a local server for you to work on.

By simply hosting that server (e.g. on AWS, your internal servers, etc.) you can collaborate on the notebooks directly and interactively.

mdahlman
  • 103
  • 3
Fnguyen
  • 1,773
  • 6
  • 15
3

Using a notebook, you can always convert it to a python script if you just go to "File > Download as > Python (.py)". Then, you can share it with your teammates and have handwritten comments on a printed form of it, regardless of how unusual this practice sounds.

pcko1
  • 4,030
  • 2
  • 17
  • 30
2

Try JetBrains Datalore. It's free up to 120 hours of computation per month on a small CPU and up to three collaborators (editors), and unlimited viewers.

Top features (all included in the free plan):

  • Python auto-complete (like in PyCharm)
  • Secrets management, ability to access your AWS S3 storage
  • Slider widgets, interactive plots
  • Online collaborative editing
  • History checkpoints and the ability to track changes in files
  • The ability to publish static copies of notebooks and share them by a link
  • Cells from Datalore can be embedded in Medium posts and other publishing/writing platforms that support embedding

enter image description here

leventov
  • 121
  • 3
2

In GitHub that would mean commenting on HTML or JSON level (internal markup for .ipynb files), not on the document level.

This is the crux of the problem. I built ReviewNB specifically to peer review Jupyter Notebooks on GitHub. It integrates directly with your repositories on GitHub and provides visual diff and commenting support (see screenshot below).

For straight up multi-user collaboration you can also setup JupyterHub so everyone can login to the same server, although I'd recommend using GitHub and installing Jupyter locally.

enter image description here

amirathi
  • 121
  • 1
2

Here is the latest work on JupyterLab. Shared editing with collaborative notebooks in JupyterLab

To try it → install the alpha release: 3.1.0a7 & set the flag --collaborative

https://github.com/jupyterlab/jupyterlab/pull/10118

Neeraj V
  • 21
  • 1
2

I've seen a tool https://github.com/jupytercalpoly/jupyterlab-comments in https://youtu.be/L36omEBu2HU?t=1837 which aims at providing real-time collaboration comments for Jupyter notebooks.

Gere
  • 425
  • 2
  • 5
1

From JupyterLab 3.1, file documents and notebooks have collaborative editing using the Yjs shared editing framework. Editors are not collaborative by default; to activate it, start JupyterLab with the --collaborative flag.

So what you need to do is to just install Jupyer Lab in your environment and then call it in this way:

jupyter lab --collaborative

Source: https://jupyterlab.readthedocs.io/en/stable/user/rtc.html

1

OP has raised some real pain points with Jupyter. Fortunately, now, in 2023, there are lots of good options to choose from.

Noteable

Noteable is definitely my go-to because its really versatile and free...

  • its 100% free, unlimited projects, unlimited notebooks, unlimited data
  • Native SQL (on pretty much any database)
  • Native SQL on CSV and JSON
  • Use SQL to aggregate and work with pandas dataframes
  • Use Python and SQL in the same notebook however you would like
  • Share, Collaborate with real time editing and commenting
  • Interactive visualizations (like a BI tool)

There are other options as pointed out by @mdahlman's response.

12 Best Jupyter Notebook Alternatives In 2023 is a good article to look for Google Drive like alternatives to Jupyter Notebooks:

1

You could take a look at Curvenote it is different from many of the tools listed above as it focusses on the collaboration and communication part of research work and integrates with Juptyer. It doesn't ask you to change your computational environment.

curvenote and jupyter integration

It's true that Jupyter is based around creating notebooks that can stand alone (in terms of content+code+results) and be shared with more context than just the code. But it can still be difficult to collaborate around or to communicate with, especially when that involves communicating to different audiences e.g non coding stakeholders and collaborators.

Curvenote gives you version control, real time commenting, sharing and writing tools that make it much easier to present and share results to others and get feedback on them.

Also it allows you to keep working in Jupyter like before, whether that's locally, on an organisation's JupyerHub or one of the hosted Jupyter environments like Sagemaker, Coiled, Pangeo, etc...

stevejpurves
  • 113
  • 3