Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a GUI that builds repo2docker config files #702

Open
choldgraf opened this issue Jun 12, 2019 · 4 comments
Open

Implement a GUI that builds repo2docker config files #702

choldgraf opened this issue Jun 12, 2019 · 4 comments

Comments

@choldgraf
Copy link
Member

choldgraf commented Jun 12, 2019

Proposed change

It would be useful if we had a lightweight GUI that let people build repo2docker configuration files. It would have sections for each type of configuration file, and UI elements that helped populate the most common relevant fields. e.g.:

image

There would also be a "download" button that would create a bunch of config files according to what was placed inside this form, and download a ZIP file with all of them inside.

It could be a good way to show off the different configuration options, and to let people quickly create their own.

This could either be a page on something like readthedocs, or a jupyterlab extension. Something very similar to https://github.com/jupyterlab/jupyterlab-celltags but on a whole page and for the purposes of generating repo2docker config files

Here's a Discourse thread that prototypes this with the ipywidgets ecosystem

Alternative options

I think the only alternative here is to have people manually create these files, which can be a burden for some researchers who are just learning about reproducibility and coding. I suppose another alternative is to use a different service for reproducibility that does provide these kinds of UIs.

edit 2021: A nice implementation of something like this is here in the CodeOcean docs: https://help.codeocean.com/en/articles/1197548-the-package-management-system

Who would use this feature?

I think primarily people who are new-ish to Binder or to coding, or who in general are more comfortable working from a form than from hand-coding things in a text editor.

How much effort will adding it take?

I think it wouldn't be too hard for somebody that was familiar with building UI components in a javascript framework. It's largely a question of figuring out the right kind of UI/UX to provide, but in terms of the code itself I bet there are many libraries for building simple forms.

Who can do this work?

Ideally, somebody with experience in React or some other kind of framework that can build simple-ish forms. Whoever did the work on https://github.com/jupyterlab/jupyterlab-celltags might be able to provide some guidance! (e.g. @Zsailer do you know if one of the calpoly interns worked on this?)

@betatim
Copy link
Member

betatim commented Jun 13, 2019

I think this would be very cool. Especially for exposing the more exotic config options like install.R or how to select RStudio as UI.

It would be cool if there was a repo2docker --gui option that lets you run this locally and directly writes the files into the repo. It would start up a simple webserver and show the JS application.

Some previous discussion/thoughts on a related topic: https://discourse.jupyter.org/t/what-would-a-repo2docker-gui-look-like/205

We might have other issues too but I couldn't find them :-/

@nuest
Copy link
Contributor

nuest commented Sep 4, 2019

Hello from the eLife Sprint! We (@sje30, @nuest) have been approached by @innovationchef and ended up with a project idea to work on a user interface for generating Dockerfiles, title pending... "Easy Docker"?.

I then suggested to see what you have thought about here and instead make it a UI to generate configuration files. A first breakthrough would be to prototype a GUI: a user selects R or Python, then selects an existing version, selects some packages, and the app spits out either a requirements.txt or a install.R+runtime.txt.

@betatim
Copy link
Member

betatim commented Sep 4, 2019

That would be a super cool tool! It should also be easier to build than something that generates Dockerfiles as that would be kinda what repo2docker does so an estimate of how much code would be needed is the size of repo2docker :D

@choldgraf
Copy link
Member Author

In case it's helpful, I had made a little bit of progress on this using Jupyter Widgets to create the form, you can see the latest version of this here:

https://github.com/choldgraf/binder_builder_gui

Feel free to copy/modify/do whatever you like to any of that code if it's helpful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants