ngshare: A Solution for Using nbgrader with JupyterHub and Kubernetes

285 views
Skip to first unread message

Eric Li

unread,
Jun 5, 2020, 1:16:41 PM6/5/20
to Teaching with Jupyter Notebooks
Hi, teachers and administrators who use nbgrader:

We're team KALE, and we want to introduce to you a service we have created that lets you use nbgrader in a JupyterHub cluster.

nbgrader is a tool that facilitates creating and grading assignments in the Jupyter notebook. It allows instructors to easily create notebook-based assignments that include both coding exercises and written free-responses. nbgrader also provides a streamlined interface for quickly grading completed assignments.

nbgrader was known to use an exchange directory to release and collect assignment, submission and feedback files. nbgrader by default does not work when used in combination with JupyterHub and Kubernetes because on a Kubernetes setup users have their own private filesystem.

We have spent a couple of months creating ngshare, a service that handles course management and exchanging assignments between instructor and students without an underlying shared filesystem. It can be installed in Kubernetes easily using a helm chart. Even if you aren’t using a container orchestration platform, you can still install ngshare as a JupyterHub managed service and streamline course creation rather than having to play with filesystem permissions. Installation guides are available on Read the Docs. Any suggestions or feedback would be greatly appreciated.

Please see this video for a brief overview of our work: https://www.youtube.com/watch?v=FdK0AGwxkSw

We have also done some work on porting the nbgrader nbextensions to JupyterLab. The relevant GitHub issue is https://github.com/jupyter/nbgrader/issues/1006, and you can find some sample screenshots in https://ngshare.readthedocs.io/en/user-guide/appendix/jupyterlab_extensions.html. We are looking for contributors who want to take over our project.

We would like to thank Professor Christopher Nitta and Professor Jason K. Moore from UC Davis for their advice on this project. We would also like to thank the Jupyter community for their help (https://github.com/jupyterhub/zero-to-jupyterhub-k8s/issues/1556).

Team KALE

Wes Turner

unread,
Jun 6, 2020, 8:06:52 AM6/6/20
to Eric Li, Teaching with Jupyter Notebooks
https://github.com/lxylxy123456/ngshare



> ngshare Course Management
> To manage students in your course, please don't use formgrader's web interface since it doesn't use ngshare. Instead, use the ``ngshare-course-management`` command that gets installed with this package. Please read the documentation for instructions on how to use this tool.

Are there changes in formgrader that would enable use of the web interface in conjunction with ngshare?

Would the LTI API be useful for authentication and authorization?
What sort of interface could nbgrader / otter provide for auth and authz if there's not something like Spawner or Authenticator already?

https://groups.google.com/forum/m/#!msg/jupyter-education/yqRH4sNqcvo/uYBldydlBAAJ mentions LTI Authenticator support in illumidesk/illumidesk (IllumiDesk's implementation of JupyterHub + nbgrader + docker). AFAIU, illumidesk can also post grades from nbgrader to an LMS gradebook through the LTI API?

https://github.com/jupyterhub/ltiauthenticator mentions LTI Authenticator support. IDK what sort of support commitment it takes to migrate a repo to a JupyterHub/ or JupyterLab/ organization?

Thanks for sharing this work.

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/8a0b7410-0771-4490-b76d-438f7dace8d3o%40googlegroups.com.

Wes Turner

unread,
Jun 6, 2020, 8:10:05 AM6/6/20
to Eric Li, Teaching with Jupyter Notebooks
You could add a link to your GitHub repo to https://github.com/quobit/awesome-python-in-education/blob/master/README.md#jupyter

Possibly next to either or both links to
jupyterhub/jupyterhub-deploy-teaching

IDK if there's a list of nbgrader deployment configs in the nbgrader docs and/or README?
Reply all
Reply to author
Forward
0 new messages