I’m working at GitHub and I’m looking at improving experience of Jupiter notebooks on our favorite website. As many of you surely experienced, Jupyter, while can be previewed and rendered in GH, is notoriously hard to review, diff and resolve conflicts. That complexity comes largely from .ipynb format itself, namely json with metadata.
What I was experimenting with is to create custom content manager to completely change format notebooks would be saved in. I was experimenting with notebooks-as-markdown that will retain all metadata needed to restart kernel from it and keep working on it, while being easy to read in raw text format. This raw text readability gives us ability to review, diff and resolve conflicts with native git manner.
Example markdown - https://gist.github.com/inc0/ff98d4eab2159a1fe8617e4799092611
As you can see there are some wrinkles to fix (for example, figures don’t render automatically from b64), but that can be handled later during implementation. Another idea would be to create brand new format thats comprehensible in raw text and not constrained with markdown that will then be rendered in GitHub as regular notebook.
Next step would be to provide nbconvert target to quickly migrate old style .ipynb files to new format.
I would love to hear your comments and maybe point me to previous discussions if there were any or criticism of this idea.