The Azure team is offering a service where you can run code and develop Jypyter notebook called Azure Notebooks. Azure Notebooks is allowing us to build our notebooks in multiple languages (e.g. R, Python 2/3, F#) and run them automatically inside our Azure Subscriptions. We don't need anymore to spin up the resources, manage them and think about how we can deploy the notebook from our machine to different environments.
One of the most common questions that I receive is
How I can share my Notebook with another person from my team?
In most of the cases, you are not the only one that is working on a notebook, you might have a team of people that would like to work on a collection of notebooks from the same project. In other cases, the client would like to own the notebook project and allow external teams to use the notebooks.
The reality is that at this moment in time, sharing notebooks is limited. Why? Let see below.
A notebook project can be private or public.
- Public - Anybody can access it using the public URL
- e.g. https://notebooks.azure.com/vunvulear/projects/rvplayground
- Private - The notebook it is not publicly accessible to anybody. The only person that can access the project is the owner of the project.
You might be now a little bit confuse because as you can see in the above picture, we have a share button with the ability to share it via email or link. There are two things that you might not be so obvious:
- Share button even it is available and works for both Public and Private projects the URL to the notebook project works only for public ones. For private projects, users will receive an error when they want to access it.
- There is no mechanism at this moment in time (June 2020) to provide access to another person to a private notebook project.
Another feature that could be used is the ability to upload a GitHub repository to Azure Notebooks.
It means that in theory, we could create a private GitHub repo with our notebooks that could be imported inside Azure Notebooks. The problem is that only public GitHub repos can be imported. For private ones, there is no ability to import them.
At this moment in time, there is no support of a REST API or CLI that would allow us to manage projects and notebooks from a script. Once we have a REST API for management, we could build script that would clone a project automatically, do the merging and other similar things that would enable collaboration.
Azure Notebooks are great to build and play with Jupyter notebooks. The lack of sharing capability for private notebooks makes them almost impossible to be used by organisations. The current sharing ability can be used only for public projects that limit the ability to use them in commercial projects.
What we are missing at this moment in time? A notebook sharing capability based on AD or integration with private GitHub repos. Why not even support inside Azure DevOps.