# JupyterHub/Binder Oslo workshop, September 2019 Agenda/notes for JupyterHub workshop in Olso ## Logistics min can be reached at +4794124910 (phone, text, whatsapp) Venue is the [Grand Hotel](https://goo.gl/maps/z8j1Ffct3MVJFMdAA) in downtown Oslo Karl Johans gate 31, 0159 Oslo we will be in the Michelsen room in konferanseavdeling (conference center). There should be signs marked Simula/Jupyter to point the way. ### Arriving from OSL Arriving by train from Oslo airport is easiest. The hotel is closest to the Nationaltheatret (National Theatre) station (train, bus, metro), but walkable from Oslo S (Sentralstasjon). There are two train lines from the airport, one operated by Vy, three every hour, and the heavily advertised "Flytoget." The Vy (aka NSB) trains are three every hour (L12 Kongsberg, R10 Drammen, R11 Skien). All Vy trains toward Oslo will take you to Nationaltheatret. Every train headed in the Oslo direction is the right train. There are several ticket kiosks near the train platform, probably still labeled NSB. The more expensive Flytoget is advertised as the "airport express," but it's not really "express" at all. It takes precisely the same amount of time as the Vy trains. The main advantage is that it's less crowded and has more room for luggage. The F2 and F1x trains stop at Nationaltheatret, while the F1 train stops at Oslo S. Oslo S is slightly farther from the hotel, but still walkable (~850m). If you'd rather minimize walking with luggage, you can take the metro (T-bane) one stop to Stortinget, which is right in front of the hotel. For this, you need to purchase a Ruter ticket, which you can get at Oslo S (follow (T) signs for T-bane or metro). Stortinget is one stop to the West (retning vest). ### Venue We have the space from 09:00-18:00 every day. There will be coffee provided at 10:30 and 14:30, and lunch at 13:00 (diets: vegetarian=1). Folks are mostly on their own for dinner. There are loads of restaurants nearby. I may try to organize a group dinner on Friday or Saturday evening if there's interest. I (min) plan to be there about 10-17:00 each day (09:00 on Thursday), but we have the room from 9-18:30 for folks who want to start early / stay late. ## Who's here when? add yourself! I've added folks based on what I've received, update if it's wrong ### Thursday 5/9 - Min - Georgiana - Sarah - Carol - Richard - Erik - Gladys - - - - - ### Friday 6/9 - Min - Georgiana - Daniel - Sarah - Carol - Richard - Erik - Arnim - Tim (~10 or 11, landing at 9am) - Kenan (~4 pm, adding myself here, in case you want to organize a group event) - Gladys - Lex Nederbragt (from lunch) ### Saturday 7/9 - Min - Georgiana - Daniel - Sarah - Tim - Carol - Richard - Erik - Arnim - Kenan - Gladys - ### Sunday 8/9 - Min - Daniel - Tim - Carol - Richard - Erik - Anne - Arnim - Kenan - Gladys - Sarah - Lex ### End of Workshop Recap [Summary of What We Accomplished](https://hackmd.io/N-uffNhvRdOgt1OvTuoq5w) ## Agenda The plan is a very loose collaboration. Please add what you'd like to work on here, and we'll talk through topics and plans to see who wants to work on what and when. Remote participation for folks not in Oslo (via GitHub, Gitter, etc.) is encouraged! It is AOK to have more ideas than you plan to work on. We always have more good ideas than time. We will check in at the beginning of the day each day, make introductions, and come up with a plan to work in teams or separately on whatever excites us. I started filling this out from the discourse, but please add anything you like, with links, notes about time, etc. - general JupyterHub hacking and development - Erik (followup all PRs of the z2jh repo) - binder API v3, awesome bar - Min - Tim - Kenan - Carol - Sketch a new BinderHub UI (Make it more mobile friendly) https://hackmd.io/teR1MefxSjW9mLJTLSSCjw - Tim - Arnim - Carol - - Traefik in z2jh - Min - Erik - Georgiana - - batchspawner/kubespawner/wrapspawner maintenance and relationship - Richard - - documentation - Min - Richard - Tim - Erik - Sarah - Carol - Anne (Sunday only) - Binder documentation (like the above but different) - list all documentation sites we have, figure out what should be documented where, improve directions on each site to point people at other sites, reduce duplication, develop a cheatsheet (perhaps 2 sided with the visual how to create a binder on one side and tech commands/info on other side) - Tim - Sarah - Carol - Locked down BinderHub for on-premise deployments - Write documentation and examples to make it easier to deploy a locked down BinderHub - - promoting JH as an interface to existing resources, not a separate platform - Richard - - export an image to a data repository from BinderHub, and loading an image instead of running r2d > https://github.com/jupyter/repo2docker/pull/778 - Daniel needs this for [binder-based CODE CHECK](https://discourse.jupyter.org/t/jupyterhub-binder-workshop-in-oslo-sept-5-8/1419/41?u=nuest) - support more data repositories via DOIs ([Figshare](https://github.com/jupyterhub/binderhub/issues/938), [OSF](https://github.com/jupyterhub/binderhub/issues/216), Dryad, [b2share](https://b2share.eudat.eu/help/api), [EOSC](https://www.eosc-portal.eu/)...) - Daniel - Arnim - Anne (definitely interested but know nothing...) - Sarah's RSE Con presentation (Saturday?) - Sarah! - Erik - Carol - Tim - - GKE button - Sarah - Carol - Jupyter strategy in Nordic countries and/or Europe (Sunday is best) - Min - Arnim - Tim - Richard - Anne (Sunday only) - Learning about kube-lego/nginx for HTTPS/Lets Encrypt & generate docs - Sarah - Daniel - - Private repo access & storing/using GitHub credentials - Sarah - Hopefully Min too who contributed some great stuff to [the hackmd](https://hackmd.io/X_Hkb4YkRmiLp74IpZKkMA?view)! :smile: - - federation redirection based on which repo is being launched, send the same repo to the same cluster as often as possible ([github issue](https://github.com/jupyterhub/mybinder.org-deploy/issues/1066)) - Tim - Kenan - Arnim - - custom k8s scheduler to assign build pods to nodes in a cluster. Goal is to send the same repo to the same node as often as possible - Tim - Erik - - support different versions of R in repo2docker. Discussion of different options, pros&cons, maybe converge on one - Tim - Daniel - - A tool that generates `requirements.txt` etc for you from a GUI or otherwise lowers the bar of getting started even further - Tim - - Composability of build packs (Should build packs advertise if they can be composed?) - Daniel - BinderHub: pass query parameters to spawner ([issue](https://github.com/jupyterhub/binderhub/pull/819)) - kenan - - Propagate informative spawn failure messages from spawner to BinderHub UI ([related PR](https://github.com/jupyterhub/binderhub/pull/819)) - use JupyterHubP progress API ([min's comment](https://github.com/jupyterhub/binderhub/pull/819#issuecomment-486601180)) - kenan - - Jupyter/JupyterHub in education [Hackmd](https://hackmd.io/5HG5cIq0Qk-nWwzEpBOF_g) - Lex - Richard ## Notes on Jupyter Documentation * Before getting into the technical aspect, describe the functionality of the different aspects of Jupyter, eg, notebook, Lab, nteract, Hub.... * Particularly disambiguate single user vs Hub * What is where right now? * Jupyter.org * Blog posts (Medium) * JupyterHub readthedocs (technical) * Zero to JupyterHub (k8s, Kubespawner) - this is a JupyterHub "distribution" (to use Yuvi's word) * The Littlest JupyterHub * READMEs - authenticator and spawner repos (some have proper docs, other just readme) * Configurable HTTP proxy README * BinderHub readthedocs * Need something to explain all the levels within JupyterHub * Explicit entry point to allow a user to navigate the landscape * Communicate conceptual understanding * Consistent terminology * Managing consistency with, eg, cloud providers' terminology ??? (minimum goal: be aware of it) * Reference glossary * JupyterWorld * What is a notebook * What is a working environment * How can universities leverage this * Distinguish between Jupyter _user_ and Jupyter _installer_ * Who wants to use a notebook * Who wants to serve multiple notebooks * JupyterHub the "Hard Way" * Step-by-step, by-hand deployment of JupyterHub * You did this, now what's happening? * A tutorial, by the end of which you understand what the pieces are and do * Start goal: So you want to build a JupyterHub * End goal: understand vocab and moving parts, know which "further reading" docs to search for answers for their own deployments * Min's JupyterHub tutorial * [JupyterHub Thing Explainer High Level](https://www.slideshare.net/willingc/jupyterhub-a-thing-explainer-overview) * [Old JupyterHub tutorial docs](https://jupyterhub-tutorial.readthedocs.io/en/latest/) * Timeline of Min's London tutorial * [Cheatsheet](https://jupyterhub-tutorial.readthedocs.io/en/latest/jhubcheatsheet.html) * What kind of installation? * Single machine * DockerSpawner * GitHub OAuthentication * Setup as a service/HTTPS * "What is JupyterHub" - conceptual overview of all levels * https://hackmd.io/3tgC3V5RTbyWCiFukqm40Q * "JupyterHub the Hard Way" - [hackmd](https://hackmd.io/l24rjBfIT7Gi_0i1iMGz_g?both) # What did you work on? https://hackmd.io/N-uffNhvRdOgt1OvTuoq5w - Tim: selecting R version in repo2docker - Erik: traefik, cert-manager, binderhub scheduling of build pods -