For the March release, Brain Simulation and Neuromorphic get in touch with us in order to know how they can programatically create a Collab. @andrew_davison presented the feature as being able to create a collab from a template while Felix Schürmann and @courcol were more thinking about cloning a current collab.
Both idea have strength and weakness that can be discussed here but for the next release, we agreed to found a solution about a scripted way to create a collab with application instantiation as we already have the necessary tool to do so. One of the remaining question is how to do it at the cheapest cost for maximum effectiveness.
After discussion with @brukau, we see three possible ways that needs to be discussed further:
- create a collab from the client side using javascript
- extends the collab template mechanism already present in the collab service (python)
- provides python examples (in a notebook) on how to script collab creation and let anyone interested add this code to their backend
The javascript client (1) is basically working today and can offer the best UX experience. As the creation process can be quite long, being able to code a UI that display the progress can be a nice to have. On the other hands, most team don’t have strong javascript expertise and that might put most of the complexity in the hand of the app owner.
The solution about having python example is almost similar (3), but it might easier to integrate for other teams in their own server.
The collab server is probably cleaner from an architecture standpoint but is hard to test for implementer (python 2.6, nginx for auth, …) and needs to be reviewed by the collab service maintainers as it impact the central code. Another way would be to create a new dedicated backend for this.