You might find it useful to have some tools for an online interactive classroom using your library. Online notebooks can be run with My Binder, while setting up more persistent features could be desirable during educational activities such as workshops and classroom coursework.
My Binder
allows to run Jupyter Notebooks interactively from the cloud.
Anyone will be able to run notebooks from your repository, simply with an Internet connection, by clicking on the binder
icon.
All you need to do to make binder
active is:
-
Create a file specifying the notebook requirements in the notebooks folder, say
mylibrary/notebooks
. The requirements will likely be equal to the library requirements. This can be arequirements.txt
usingpip
as default package manager, or aenvironment.yml
file if you wish to useconda
as package manager (you can also specify to usepip
in theenvironment.yml
file). If you use LaTeX, including a text fileapt.txt
allows you to plot with your typographic preferences. -
Go to https://mybinder.org/, paste the name of the repository where the notebooks are collected, say
mylibrary/notebooks
. My Binder will generate a link that you can embed in the README.md file on Github or in other places. Clicking this link will activate My Binder, which will install the dependencies and library according to the requirements file.
There has been quite some development in the Project Jupyter community toward this end, which led to JupyterHub and more recently to BinderHub, an overlay of JupyterHub focused on notebook hosting.
For the server there are mainly two options:
-
Setting up your own (institutional) server to do this, which would require initially more time and commitment (you need to worry about the security of the network, to start);
-
Using cloud services (such as Google Cloud), which might be easier at first but can quickly become too expensive if you have a large user community.
There are now a couple of guides to deploy JupyterHub, such as the The Littlest JupyterHub.
For the services, there are possibly two features for the community:
-
Set-up of a cloud service for library-based workshops, which can be used temporarily by instructors and students / participants.
-
Set-up of a continuously running cloud service for the library users community.
Features allowing to flesh out your library live could be also implemented in a website with a live interface, such as for live.sympy.org, built upon Google App Engine, or the similar project Sympy Gamma.
If you would like your software capabilities to be used by a delocalized team, without even requiring someone to download the software of install it, this can be done with JupyterHub as well as private services offered by some startups. JupyterHub and BinderHub allow to run notebooks interactively, also setting up specific servers (as a machine at a research institution) or using online cloud services (such as Google and AWS).
This is the end of this introductory course to making your own open-source scientific library from scratch.
A list of Useful Links cited in these pages, plus additional others, is collected for your convenience.
If you found some passages wrong, inaccurate or incomplete, or would like to contribute to this project, you can raise an issue or open a pull request.