29
$\begingroup$

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?

$\endgroup$
0

10 Answers 10

17
$\begingroup$

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.

$\endgroup$
2
  • 5
    $\begingroup$ Colab doesn't allow realtime collaborative editing anymore unfortunately. $\endgroup$
    – daknowles
    May 20, 2020 at 17:19
  • $\begingroup$ I have often setup a quick notebooks server for hosting some work but unless you want to that publicly, it's a bit of a pain to do that securely. It's not do difficult just not plug and ply and you need to be comfortable with server config and some ssh setup. If you want to provide a server publicly though, through native Jupyter you should just use binder. It's worth noting though that binder and your own jupyter server are strictly single player, including your own server solution being multiple users in a single environment which can get unmanagable quickly. $\endgroup$ Mar 18, 2021 at 11:07
24
$\begingroup$

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).

$\endgroup$
4
  • 1
    $\begingroup$ I'm not seeing an open-source CoCalc server, just a free intro plan and paid-for services. $\endgroup$
    – Spacedman
    Apr 29, 2020 at 12:31
  • 2
    $\begingroup$ It's here: github.com/sagemathinc/cocalc-docker You can very easily install this yourself on your own hardware or VM. There's also github.com/sagemathinc/cocalc-kubernetes $\endgroup$ Apr 30, 2020 at 13:17
  • $\begingroup$ Wow! Linked at the very bottom of the last page of the documentation! Almost like they don't want you to find it. I can't undo my downvote unless you make an edit - add a link to the docker image and docs maybe? $\endgroup$
    – Spacedman
    Apr 30, 2020 at 14:07
  • 2
    $\begingroup$ We very much want people to find cocalc-docker (e.g., it leads to many commercial support contracts). I also made an edit so maybe you can change your downvote. $\endgroup$ May 1, 2020 at 15:17
3
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

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

$\endgroup$
2
$\begingroup$

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

$\endgroup$
2
$\begingroup$

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

$\endgroup$
1
$\begingroup$

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...

$\endgroup$
1
$\begingroup$

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:

$\endgroup$
0
$\begingroup$

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.

$\endgroup$
0
$\begingroup$

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

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.