22
$\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$
12
$\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
  • 2
    $\begingroup$ Colab doesn't allow realtime collaborative editing anymore unfortunately. $\endgroup$ – daknowles May 20 '20 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$ – stevejpurves Mar 18 at 11:07
21
$\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 '20 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$ – William Stein Apr 30 '20 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 '20 at 14:07
  • 1
    $\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$ – William Stein May 1 '20 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$
0
$\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$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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