-
Notifications
You must be signed in to change notification settings - Fork 80
Description
nbgitpuller components
Note
Draft in progress here
It is useful to think about the various abstract functional components nbgitpuller has, so we can separate the various improvements and changes we need to make. It has five functional parts:
- Fetch content (currently this is
gitonly) - Resolve conflicts between changes in the upstream content and the user's changes (uses
git, currently entangled with (1)) - A web UI to show progress of this fetching and conflict resolution
- A commandline UI to automatically do fetching and conflict resolution
- A web UI to generate links (https://nbgitpuller.readthedocs.io/en/latest/link.html)
This is one of 4 separate but related SOWs we are producing, so they can be discussed, funded and worked on clearly.
The Problem
nbgitpuller's core purpose was to remove the accidental complexity of using git for consuming content from the user side. But it left the possible accidental complexity of having to use git for creating content from the producer side. As we expand to more and more users, this starts becoming a problem.
Currently, git is used for both fetching the content (1) as well as resolving conflicts (2). We want to support multiple different sources for (1) while still supporting using git for (2).
Definition of Done
The SOW should propose implementation plans for:
- A mechanism to provide for alternate sources where the content can come from.
- two additional implementations for a new content source to make sure we have added an extensible method for future content sources. Pick sources that do not require authentication.
- Improvements to the url builder (5) to support additional content sources.
- Improvements to the command line UX (4) to make sure that also supports additional content sources
Out of scope
- The mechanism design should be left open to possibly support authenticated sources (as part of a different SOW, but the implementations only necessarily need to work with content sources that don't require authentication.
- nbgitpuller is focused on distributing content (notebooks, code files, etc) rather than data. So let's focus on content providers that are predominantly used for sharing content rather than data.
Prior Art
Four years ago, I spent time trying to make this happen with jupyterhub/nbgitpuller#194. It failed for a variety of primarily social reasons that I'm happy to provide context for to whoever is working on this project.