I’m excited to announce ReviewNB, a tool that helps in version controlling Jupyter Notebooks. I have been working on this for the past few months and pretty happy with how it turned out.
Jupyter is great for data exploration but it’s hard to go beyond that & do any kind of collaborative work with it. Specifically, there are some challenges in using Jupyter Notebooks with modern version control system like Git:
- Notebook diffs are hard to read. Hence we can’t do code reviews on GitHub
- Merging in remote changes is hard due to JSON format of Notebook files (.ipynb)
- No easy way to share feedback & have a discussion around Notebooks
- It’s not easy to reproduce Notebook environment & play with Notebooks shared by others
ReviewNB aims to tackle some of these problems starting with diff. We built a best in class visual diff for Notebooks stored on GitHub. See the examples on our homepage.
How does it work?
- ReviewNb is a GitHub App. We communicate with GitHub APIs to fetch the notebook changes made in a commit or a pull request.
- We process these changes (git patches) and detect the event occurred at each cell/output. These events could be – cell is modified, inserted, deleted, split, merged and so on.
- We show these changes to user in a side-by-side diff format. All notebook contents (markdown, code, images, formulas) are rendered as you would see in the Jupyter UI.
My aim is to keep ReviewNb super simple to use. It does not require any installation or configuration. One can start using it on their GitHub repositories in under a minute.
- Anyone can login via GitHub and select repositories that ReviewNb will have access to (takes ~30 seconds).
- Once logged in, you can browse Commits or Pull Requests on your repositories.
- Then you can start seeing visual diff for any commit or pull request that you choose
Contribute to our Roadmap
We’re building in the open. That means you can view upcoming features, vote on them, and even request a new one. With the help of early users, I have shortlisted 4 major pain points that we can tackle. These are open as feature requests on our support repo. Each feature request clearly mentions the problem, solution, and benefits for the user. Request to Jupyter users, it would be great if you can upvote/downvote the following feature requests depending on their usefulness.
- Instantly play with Notebooks shared by anyone
- Write comments and have a discussion about Notebook contents
- Automatically clear cell output at merge time
- Sharing private Notebook with third party
That’s all for now! There’s more information on our website along with an elaborate FAQ section for other questions you might have. I’m available on firstname.lastname@example.org if you want to get in touch. Try out ReviewNb and let me know what you think of it!