From dea7ed7eecd5505d9f42bf973e55f235eed9fdc6 Mon Sep 17 00:00:00 2001 From: Chris Holdgraf Date: Mon, 25 Apr 2022 17:21:14 +0200 Subject: [PATCH 1/3] Update support binder page --- doc/_static/custom.css | 5 + doc/about/{about.rst => faq.rst} | 30 +--- doc/about/index.md | 5 +- doc/about/status.rst | 4 +- doc/about/support.md | 74 ++++++++ doc/about/user-guidelines.md | 2 +- doc/conf.py | 14 +- doc/config_files.rst | 278 ----------------------------- doc/doc-requirements.txt | 6 +- doc/examples/examples.md | 62 +++++-- doc/federation/data-federation.txt | 62 ++++--- doc/federation/gen_federation.py | 20 ++- doc/howto/badges.rst | 6 +- doc/index.md | 2 +- 14 files changed, 206 insertions(+), 364 deletions(-) rename doc/about/{about.rst => faq.rst} (94%) create mode 100644 doc/about/support.md delete mode 100644 doc/config_files.rst diff --git a/doc/_static/custom.css b/doc/_static/custom.css index b8a55d7..81a2b45 100644 --- a/doc/_static/custom.css +++ b/doc/_static/custom.css @@ -1,3 +1,8 @@ +:root { + --sd-color-primary: #579aca; + --sd-color-secondary: #f5a252; +} + div.body p.caption { font-size: 1.2em; } diff --git a/doc/about/about.rst b/doc/about/faq.rst similarity index 94% rename from doc/about/about.rst rename to doc/about/faq.rst index 1731eb0..4e03de7 100644 --- a/doc/about/about.rst +++ b/doc/about/faq.rst @@ -1,8 +1,6 @@ -.. _about: - -====================== -About ``mybinder.org`` -====================== +================================ +Frequently Asked Questions (FAQ) +================================ mybinder.org is a deployment of the BinderHub technology. It is run as a public service for those who'd like to share their interactive repositories publicly. @@ -11,6 +9,7 @@ It is used by the Binder project to demonstrate the "cutting edge" of its techno This page explains some of the teams and organizations behind mybinder.org, as well as common questions about using mybinder.org +.. _about: About ``mybinder.org`` ====================== @@ -40,7 +39,7 @@ If you publish work that uses Binder, please consider citing the Here is a citation that you can use: -.. code-block:: raw +.. code-block:: Jupyter et al., "Binder 2.0 - Reproducible, Interactive, Sharable Environments for Science at Scale." Proceedings of the 17th Python @@ -59,21 +58,10 @@ the `Binder team `. -Who pays for mybinder.org? +Who supports mybinder.org? -------------------------- -The service at mybinder.org is provided by a federation of BinderHub deployments -that are maintained by several members and organizations in the Binder community. -For information about who runs and pays for these deployments, see :doc:`The BinderHub Federation `. - -Is there dedicated funding for the Binder Project? --------------------------------------------------- - -The Binder Project currently has no dedicated funding (beyond the time and hardware costs -provided by :doc:`The BinderHub Federation members `). - -In 2017 the Binder Project received a 1-year grant from the -`Moore Foundation `_. +See :doc:`support`. What technology runs mybinder.org? ---------------------------------- @@ -298,8 +286,8 @@ documentation for how to customize the user environment. Other tools in the Binder ecosystem ----------------------------------- -.. panels:: - :card: text-center +.. card:: + :text-align: center Google Chrome extension: `Open in Binder `_. diff --git a/doc/about/index.md b/doc/about/index.md index 7f57b51..772feb9 100644 --- a/doc/about/index.md +++ b/doc/about/index.md @@ -6,7 +6,8 @@ This is a collection of pages about the Binder service running at mybinder.org. :maxdepth: 1 user-guidelines -status -about +support +faq federation +status ``` diff --git a/doc/about/status.rst b/doc/about/status.rst index 3d3d5f5..385b9a7 100644 --- a/doc/about/status.rst +++ b/doc/about/status.rst @@ -1,5 +1,5 @@ -Status of ``mybinder.org`` -========================== +Status page +=========== This page displays several graphics that give an idea for the current status of the `mybinder.org `_ service. You can find diff --git a/doc/about/support.md b/doc/about/support.md new file mode 100644 index 0000000..82b4d0f --- /dev/null +++ b/doc/about/support.md @@ -0,0 +1,74 @@ +# Support the project + +The Binder community gets support from many different people and in many different forms. +This page describes the kinds of support that Binder receives, as well as how you can support the Binder project. + +:::{admonition} Who supports mybinder.org? + +- [The mybinder.org landing page](https://mybinder.org) has list of organizations that financially support mybinder.org. +- {external+tc:doc}`team` has a list of personnel that support the project. + +::: + +## Our major costs + +In addition to developing and maintaining the many open source tools built by this project, we also have a few extra costs: + +- **Cloud expenses for mybinder.org**: The service at mybinder.org serves tens of thousands of sessions each week, each of which run in the cloud. + We pay for this infrastructure via donations of credits and money from the community. +- **Personnel to operate mybinder.org**: Running a heavily-used and complex cloud service requires expertise in cloud infrastructure development and operation. + We receive in-kind contributions from several individuals and organizations to help us sustain these operations. + +## Donate to our cloud operations fund + +The easiest way to support the mybinder.org team is to provide a financial contribution to our cloud operations fund. +This is administered by [NumFocus](https://numfocus.org) and is used to pay for the cost of developing, operating, and paying the cloud bill for Binder. + +```{button-link} https://numfocus.salsalabs.org/donate-to-binder +:color: primary + +Donate funds to mybinder.org +``` + +## Provide cloud credits for mybinder.org + +If you are a cloud provider, or have credits that can be donated to run mybinder.org's infrastructure, please send us an email about making a donation of cloud infrastructure. + +```{button-link} mailto:binder-team@googlegroups.com +:color: primary + +Donate cloud credits to mybinder.org +``` + +## Operate cloud infrastructure with us + +The Binder team operates a variety of BinderHub deployments across many cloud providers via [the BinderHub Federation](federation.md). +If you have cloud infrastructure, or the skills to operate cloud infrastructure, we invite you to join the BinderHub Federation by offering to assist with running a BinderHub deployment. +Even better, you can offer to [deploy and operate a new BinderHub Federation member](federation/joining)! + +```{button-link} https://github.com/jupyterhub/team-compass/issues/new/choose +:color: primary + +Reach out about operating infrastructure +``` + +## Help with our open source efforts + +Finally, all of the techology behind mybinder.org is built by an open community. +We welcome any kind of contributions and support. +You can find many ways to contribute to the Binder community, codebase, and services at [](../contribute.md). + +## Attribution for team members + +We wish to recognize the contributions that individuals and organizations make on behalf of Binder. +For this reason, we define a few key contribution areas below, and explicitly recognize these contributions in our mybinder.org pages. + +- *mybinder.org federation members* - Institutions that deploy, fund, and staff their own BinderHub in the federation. +- *mybinder.org partner institutions* - Institutions that employ individuals that operate any hubs in the mybinder.org federation (if not full federation members). +- *mybinder.org major supporters* - Institutions that provide significant financial resources or credits for any hubs in the mybinder.org federation ("significant" is defined as anything greater than $10,000 annually). + +## Previous grants and major support + +- From 2019 through 2021, `gke.mybinder.org` was supported by cloud credits from [Google Cloud](https://cloud.google.com/). +- In 2017 the Binder Project received a 1-year grant from the +`Moore Foundation `_. diff --git a/doc/about/user-guidelines.md b/doc/about/user-guidelines.md index 22f81ee..ee4ddbc 100644 --- a/doc/about/user-guidelines.md +++ b/doc/about/user-guidelines.md @@ -1,4 +1,4 @@ -# `mybinder.org` Usage Guidelines +# Fair use guidelines This page details some guidelines and policies that we follow at ``mybinder.org``. diff --git a/doc/conf.py b/doc/conf.py index 7525399..b16224d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -6,11 +6,6 @@ from pathlib import Path import requests - -def setup(app): - app.add_stylesheet("custom.css") - - # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -23,7 +18,7 @@ def setup(app): extensions = [ "sphinx_copybutton", "myst_parser", - "sphinx_panels", + "sphinx_design", "sphinxext.rediraffe", "sphinx.ext.intersphinx", ] @@ -54,7 +49,8 @@ def setup(app): release = "0.1b" intersphinx_mapping = { - "repo2docker": ("https://repo2docker.readthedocs.io/en/2021.03.0/", None), + "r2d": ("https://repo2docker.readthedocs.io/en/latest/", None), + "tc": ("https://jupyterhub-team-compass.readthedocs.io/en/latest/", None), } # The language for content autogenerated by Sphinx. Refer to documentation @@ -109,9 +105,11 @@ def setup(app): # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] +html_css_files = ["custom.css"] rediraffe_redirects = { "about.rst": "about/index.md", + "cotntribute.md": "about/support.md", "examples.rst": "examples/examples.md", "index-repo-reference.rst": "examples/index.rst", "sample_repos.md": "examples/sample_repos.md", @@ -130,8 +128,6 @@ def setup(app): "deflist", ] -panels_add_bootstrap_css = False - # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. diff --git a/doc/config_files.rst b/doc/config_files.rst deleted file mode 100644 index 317d365..0000000 --- a/doc/config_files.rst +++ /dev/null @@ -1,278 +0,0 @@ -.. ################################################## -.. DO NOT EDIT THIS FILE, IT IS IMPORTED IN `conf.py` -.. ################################################## - -.. _config-files: - -=================== -Configuration Files -=================== - -``repo2docker`` looks for configuration files in the repository being built -to determine how to build it. In general, ``repo2docker`` uses the same -configuration files as other software installation tools, -rather than creating new custom configuration files. - -As explained in :ref:`the repo2docker documentation `, -the configuration files can be placed in: - -- A folder named ``binder/`` in the root of the repository. -- A folder named ``.binder/`` in the root of the repository. -- The root directory of the repository. - -A number of ``repo2docker`` configuration files can be combined to compose more -complex setups. - -The `binder examples `_ organization on -GitHub contains a list of sample repositories for common configurations -that ``repo2docker`` can build with various configuration files such as -Python and R installation in a repository. - -A list of supported configuration files (roughly in the order of build priority) -can be found on this page (and to the right). - -.. _environment.yml: - -``environment.yml`` - Install a conda environment -================================================= - -``environment.yml`` is the standard configuration file used by `conda `_ -that lets you install any kind of package, -including Python, R, and C/C++ packages. -``repo2docker`` does not use your ``environment.yml`` to create and activate a new conda environment. -Rather, it updates a base conda environment `defined here `_ with the packages listed in your ``environment.yml``. -This means that the environment will always have the same default name, not the name -specified in your ``environment.yml``. - -.. note:: - - You can install files from pip in your ``environment.yml`` as well. - For example, see the `binder-examples environment.yml - `_ - file. - -You can also specify which Python version to install in your built environment -with ``environment.yml``. By default, ``repo2docker`` installs -|default_python| with your ``environment.yml`` unless you include the version of -Python in this file. ``conda`` supports all versions of Python, -though ``repo2docker`` support is best with Python 3.7, 3.6, 3.5 and 2.7. - -.. warning:: - If you include a Python version in a ``runtime.txt`` file in addition to your - ``environment.yml``, your ``runtime.txt`` will be ignored. - -.. _Pipfile: - -``Pipfile`` and/or ``Pipfile.lock`` - Install a Python environment -================================================================== - -`pipenv `_ allows you to manage a virtual -environment Python dependencies. When using ``pipenv``, you end up with -``Pipfile`` and ``Pipfile.lock`` files. The lock file contains explicit details -about the packages that has been installed that met the criteria within the -``Pipfile``. - -If both ``Pipfile`` and ``Pipfile.lock`` are found by repo2docker, the former -will be ignored in favor of the lock file. Also note that these files -distinguish packages and development packages and that repo2docker will install -both kinds. - -.. _requirements.txt: - -``requirements.txt`` - Install a Python environment -=================================================== - -This specifies a list of Python packages that should be installed in your -environment. Our -`requirements.txt example `_ -on GitHub shows a typical requirements file. - - -.. _setup.py: - -``setup.py`` - Install Python packages -====================================== - -To install your repository like a Python package, you may include a -``setup.py`` file. repo2docker installs ``setup.py`` files by running -``pip install -e .``. - -.. _Project.toml: - -``Project.toml`` - Install a Julia environment -============================================== - -A ``Project.toml`` (or ``JuliaProject.toml``) file can specify both the -version of Julia to be used and a list of Julia packages to be installed. -If a ``Manifest.toml`` is present, it will determine the exact versions -of the Julia packages that are installed. - - -.. _REQUIRE: - -``REQUIRE`` - Install a Julia environment (legacy) -================================================== - -A ``REQUIRE`` file can specify both the version of Julia to be used and -which Julia packages should be used. The use of ``REQUIRE`` is only -recommended for pre 1.0 Julia versions. The recommended way of installing -a Julia environment that uses Julia 1.0 or newer is to use a ``Project.toml`` -file. If both a ``REQUIRE`` and a ``Project.toml`` file are detected, -the ``REQUIRE`` file is ignored. To see an example of a Julia repository -with ``REQUIRE`` and ``environment.yml``, visit -`binder-examples/julia-python `_. - - -.. _install.R: - -``install.R`` - Install an R/RStudio environment -================================================ - -This is used to install R libraries pinned to a specific snapshot on -`MRAN `_. -To set the date of the snapshot add a runtime.txt_. -For an example ``install.R`` file, visit our `example install.R file `_. - - -.. _apt.txt: - -``apt.txt`` - Install packages with apt-get -=========================================== - -A list of Debian packages that should be installed. The base image used is usually the latest released -version of Ubuntu. - -We use ``apt.txt``, for example, to install LaTeX in our -`example apt.txt for LaTeX `_. - - -.. _DESCRIPTION: - -``DESCRIPTION`` - Install an R package -====================================== - -To install your repository like an R package, you may include a -``DESCRIPTION`` file. repo2docker installs the package and dependencies -from the ``DESCRIPTION`` by running ``devtools::install_git(".")``. - -You also need to have a ``runtime.txt`` file that is formatted as -``r---
``, where YYYY-MM-DD is a snapshot of MRAN that will be -used for your R installation. - - -.. _manifest.xml: - -``manifest.xml`` - Install Stencila -=================================== - -`Stencila `_ is an open source office suite for reproducible research. -It is powered by the open file format `Dar `_. - -If your repository contains a Stencila document, repo2docker detects it based on the file ``manifest.xml``. -The required `execution contexts `_ are extracted from a Dar article (i.e. -files named ``*.jats.xml``). - -You may also have a ``runtime.txt`` and/or an ``install.R`` to manually configure your R installation. - -To see example repositories, visit our -`Stencila with R `_ and -`Stencila with Python `_ examples. - - -.. _postBuild: - -``postBuild`` - Run code after installing the environment -========================================================= - -A script that can contain arbitrary commands to be run after the whole repository has been built. If you -want this to be a shell script, make sure the first line is ``#!/bin/bash``. - -Note that by default the build will not be stopped if an error occurs inside a shell script. -You should include ``set -e`` or the equivalent at the start of the script to avoid errors being silently ignored. - -An example use-case of ``postBuild`` file is JupyterLab's demo on mybinder.org. -It uses a ``postBuild`` file in a folder called ``binder`` to `prepare -their demo for binder `_. - - -.. _start: - -``start`` - Run code before the user sessions starts -==================================================== - -A script that can contain simple commands to be run at runtime (as an -`ENTRYPOINT `_ -to the docker container). If you want this to be a shell script, make sure the -first line is ``#!/bin/bash``. The last line must be ``exec "$@"`` -or equivalent. - -Use this to set environment variables that software installed in your container -expects to be set. This script is executed each time your binder is started and -should at most take a few seconds to run. - -If you only need to run things once during the build phase use :ref:`postBuild`. - - -.. TODO: Discuss runtime limits, best practices, etc. - -.. _runtime.txt: - -``runtime.txt`` - Specifying runtimes -===================================== - -Sometimes you want to specify the version of the runtime -(e.g. the version of Python or R), -but the environment specification format will not let you specify this information -(e.g. requirements.txt or install.R). -For these cases, we have a special file, ``runtime.txt``. - -.. note:: - - ``runtime.txt`` is only supported when used with environment specifications - that do not already support specifying the runtime - (when using ``environment.yml`` for conda or ``Project.toml`` for Julia, - ``runtime.txt`` will be ignored). - -Have ``python-x.y`` in ``runtime.txt`` to run the repository with Python version x.y. -See our `Python2 example repository `_. - -Have ``r----
`` in ``runtime.txt`` to run the repository with R version RVERSION and libraries from a YYYY-MM-DD snapshot of `MRAN `_. -RVERSION can be set to 3.4, 3.5, 3.6, or to patch releases for the 3.5 and 3.6 series. -If you do not specify a version, the latest release will be used (currently R 3.6). -See our `R example repository `_. - -.. _default.nix: - -``default.nix`` - the nix package manager -========================================= - -Specify packages to be installed by the `nix package manager `_. -When you use this config file all other configuration files (like ``requirements.txt``) -that specify packages are ignored. When using ``nix`` you have to specify all -packages and dependencies explicitly, including the Jupyter notebook package that -repo2docker expects to be installed. If you do not install Jupyter explicitly -repo2docker will no be able to start your container. - -`nix-shell `_ is used to evaluate -a ``nix`` expression written in a ``default.nix`` file. Make sure to -`pin your nixpkgs `_ -to produce a reproducible environment. - -To see an example repository visit -`nix binder example `_. - - -``Dockerfile`` - Advanced environments -====================================== - -In the majority of cases, providing your own Dockerfile is not necessary as the base -images provide core functionality, compact image sizes, and efficient builds. We recommend -trying the other configuration files before deciding to use your own Dockerfile. - -With Dockerfiles, a regular Docker build will be performed. - -.. note:: - If a Dockerfile is present, all other configuration files will be ignored. - -See the `Advanced Binder Documentation `_ for -best-practices with Dockerfiles. diff --git a/doc/doc-requirements.txt b/doc/doc-requirements.txt index f618d2d..f04db72 100644 --- a/doc/doc-requirements.txt +++ b/doc/doc-requirements.txt @@ -1,13 +1,13 @@ myst_parser -sphinx<4 -sphinx-panels +sphinx +sphinx-design sphinx_copybutton traitlets jupyterhub memory_profiler pytest PyGitHub -git+https://github.com/pandas-dev/pydata-sphinx-theme +pydata-sphinx-theme sphinxext-rediraffe sphinx-autobuild tqdm diff --git a/doc/examples/examples.md b/doc/examples/examples.md index 800c143..82b6f69 100644 --- a/doc/examples/examples.md +++ b/doc/examples/examples.md @@ -8,9 +8,10 @@ discuss adding it! ## Textbooks and teaching -`````{panels} -:container: + example-repos +`````{grid} +:class-container: example-repos +````{grid-item-card} **Kalman and Bayesian filters in Python** @@ -19,7 +20,10 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master ``` ---- + +```` + +````{grid-item-card} **Interactive Binders for a workshop on Deep Learning** @@ -28,7 +32,10 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/pacm/dl-workshop/master ``` ---- + +```` + +````{grid-item-card} **Elegant Scipy** @@ -37,7 +44,10 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/elegant-scipy/elegant-scipy/master ``` ---- + +```` + +````{grid-item-card} **Allen Downey's "Think DSP" book on signal processing** @@ -46,7 +56,9 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/AllenDowney/ThinkDSP/master ``` ---- +```` + +````{grid-item-card} **Numerical Computing is Fun - an interactive textbook for kids** @@ -55,7 +67,10 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/mikkokotila/jupyter4kids/master ``` ---- + +```` + +````{grid-item-card} **Resonance: Learning Mechanical Vibration Engineering Through Computation** @@ -64,7 +79,10 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/moorepants/resonance/master ``` ---- + +```` + +````{grid-item-card} **Learn You a Haskell for Great Good!** @@ -73,14 +91,17 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/jamesdbrock/learn-you-a-haskell-notebook/master?urlpath=lab/tree/learn_you_a_haskell/00-preface.ipynb ``` + +```` ````` ## Open source software -`````{panels} -:container: + example-repos ---- +`````{grid} +:class-container: example-repos + +````{grid-item-card} **ipyvolume** - 3d interactive plotting in Jupyter environments @@ -90,7 +111,9 @@ discuss adding it! :target: https://mybinder.org/v2/gh/maartenbreddels/ipyvolume/master ``` ---- +```` + +````{grid-item-card} **Geospatial analytics in Python with Geopandas** @@ -99,13 +122,18 @@ discuss adding it! ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/jorisvandenbossche/geopandas-tutorial/master ``` + +```` ````` ## Scientific research and reproducibility -`````{panels} -:container: + example-repos +`````{grid} +:class-container: example-repos + +````{grid-item-card} + Using the `nix` package manager for reproducible environments. ^^^ @@ -114,11 +142,15 @@ Using the `nix` package manager for reproducible environments. :target: https://mybinder.org/v2/gh/costrouc/nix-binder-example/master ``` ---- +```` + +````{grid-item-card} + An R Shiny app ^^^ [![](https://img.shields.io/github/stars/pablobernabeu/Modality-switch-effects-emerge-early-and-increase-throughout-conceptual-processing?label=github%20repo&style=social)](https://github.com/pablobernabeu/Modality-switch-effects-emerge-ear-and-increase-throughout-conceptual-processing/tree/master/Shiny-app) ```{image} https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/pablobernabeu/Modality-switch-effects-emerge-early-and-increase-throughout-conceptual-processing/cd4ea149820fd48c9247191a4d5670c5fa34961d?urlpath=shiny/Shiny-app/ ``` +```` ````` diff --git a/doc/federation/data-federation.txt b/doc/federation/data-federation.txt index 5ddf0da..55761b6 100644 --- a/doc/federation/data-federation.txt +++ b/doc/federation/data-federation.txt @@ -1,56 +1,74 @@ -````{panels} -:card: +text-center federation-members +````{grid} 1 1 2 2 +:class-container: federation-members +:gutter: 4 ---- -```{link-button} https://gke.mybinder.org -:classes: stretched-link -:text: gke.mybinder.org -``` + +```{grid-item-card} +:link: https://gke.mybinder.org +:text-align: center +:class-header: bg-light +:class-footer: bg-light + +gke.mybinder.org ^^^ ![The Binder Team](https://binderhub.readthedocs.io/en/latest/_static/logo.png) +++ Run by [The Binder Team](https://jupyterhub-team-compass.readthedocs.io/en/latest/team.html#binder-team) Funded by [Google Cloud Platform](https://cloud.google.com/) +``` ---- -```{link-button} https://ovh.mybinder.org -:classes: stretched-link -:text: ovh.mybinder.org -``` + +```{grid-item-card} +:link: https://ovh.mybinder.org +:text-align: center +:class-header: bg-light +:class-footer: bg-light + +ovh.mybinder.org ^^^ ![The OVH Team](https://www.ovh.com/fr/images/logos/logo-ovh-twitter.jpg) +++ Run by [The OVH Team](https://www.ovh.com/world/) Funded by [OVH](https://www.ovh.com/world/) +``` ---- -```{link-button} https://gesis.mybinder.org -:classes: stretched-link -:text: gesis.mybinder.org -``` + +```{grid-item-card} +:link: https://gesis.mybinder.org +:text-align: center +:class-header: bg-light +:class-footer: bg-light + +gesis.mybinder.org ^^^ ![The GESIS Notebooks Team](https://notebooks.gesis.org/static/images/logo/logo_text_2.png) +++ Run by [The GESIS Notebooks Team](https://notebooks.gesis.org/about/) Funded by [GESIS](https://www.gesis.org/en/home) +``` ---- -```{link-button} https://turing.mybinder.org -:classes: stretched-link -:text: turing.mybinder.org -``` + +```{grid-item-card} +:link: https://turing.mybinder.org +:text-align: center +:class-header: bg-light +:class-footer: bg-light + +turing.mybinder.org ^^^ ![The Turing Way team](https://www.turing.ac.uk/sites/default/files/inline-images/Turing%20logo_0.png) +++ Run by [The Turing Way team](https://www.turing.ac.uk/research/research-projects/turing-way-handbook-reproducible-data-science#organisers) Funded by [The Alan Turing Institute](https://turing.ac.uk) +``` + ```` diff --git a/doc/federation/gen_federation.py b/doc/federation/gen_federation.py index d49784f..c37d866 100644 --- a/doc/federation/gen_federation.py +++ b/doc/federation/gen_federation.py @@ -10,17 +10,21 @@ # Code to generate the HTML grid template_binderhub = """ ---- -```{{link-button}} {URL_BINDERHUB} -:classes: stretched-link -:text: {BINDERHUB_SUBDOMAIN} -``` +```{{grid-item-card}} +:link: {URL_BINDERHUB} +:text-align: center +:class-header: bg-light +:class-footer: bg-light + +{BINDERHUB_SUBDOMAIN} ^^^ ![{RUN_BY}]({LOGO}) +++ Run by [{RUN_BY}]({RUN_BY_LINK}) Funded by [{FUNDED_BY}]({FUNDED_BY_LINK}) +``` + """ # Run the function @@ -46,8 +50,10 @@ entries = "\n".join(entries) directive = f""" -````{{panels}} -:card: +text-center federation-members +````{{grid}} 1 1 2 2 +:class-container: federation-members +:gutter: 4 + {entries} ```` """ diff --git a/doc/howto/badges.rst b/doc/howto/badges.rst index b0c8164..ff6681c 100644 --- a/doc/howto/badges.rst +++ b/doc/howto/badges.rst @@ -90,14 +90,14 @@ Your **badge** Badge image **URL** -.. code:: raw +.. code:: :name: badgeimageurl https://img.shields.io/badge/launch-binder-579aca.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC Badge link code in **reStructuredText** -.. code:: raw +.. code:: :name: rst .. image:: https://img.shields.io/badge/launch-binder-579aca.svg?logo=data:image/png;base64,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 @@ -105,7 +105,7 @@ Badge link code in **reStructuredText** Badge link code in **markdown** -.. code:: raw +.. code:: :name: markdown [![badge](https://img.shields.io/badge/launch-binder-579aca.svg?logo=data:image/png;base64,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)](mybinder.org) diff --git a/doc/index.md b/doc/index.md index 8917452..711d3ea 100644 --- a/doc/index.md +++ b/doc/index.md @@ -16,7 +16,7 @@ A Binder service is powered by [BinderHub](https://github.com/jupyterhub/binderh an open-source tool that runs on Kubernetes. One such deployment lives at [mybinder.org](https://mybinder.org), and is free to use. For more information about the mybinder.org deployment and the team that runs it, see -[](about/about.md). +[](about/faq.md). :::{admonition} Other documentation in the Binder ecosystem :class: tip From ff6b9f87a4b9aa0bfe2c8b0eaf81eadc99ef28c0 Mon Sep 17 00:00:00 2001 From: Chris Holdgraf Date: Mon, 25 Apr 2022 17:24:42 +0200 Subject: [PATCH 2/3] More updates --- doc/{ => about}/contribute.md | 4 ++++ doc/about/index.md | 3 ++- doc/conf.py | 2 +- doc/index.md | 10 ---------- 4 files changed, 7 insertions(+), 12 deletions(-) rename doc/{ => about}/contribute.md (89%) diff --git a/doc/contribute.md b/doc/about/contribute.md similarity index 89% rename from doc/contribute.md rename to doc/about/contribute.md index afb70a7..03e69e1 100644 --- a/doc/contribute.md +++ b/doc/about/contribute.md @@ -16,3 +16,7 @@ information. ## Contribute to the codebase of the Binder Project Most of the code used by the Binder Project is not hosted in this repository. If you'd like to contribute to the code, check out [the JupyterHub Team Compass guide to contributing](https://jupyterhub-team-compass.readthedocs.io/en/latest/team/skills.html). + +## Contribute financial or cloud resources to the project + +See our [supporting mybinder.org page](support.md) for more information. diff --git a/doc/about/index.md b/doc/about/index.md index 772feb9..c9c9569 100644 --- a/doc/about/index.md +++ b/doc/about/index.md @@ -6,8 +6,9 @@ This is a collection of pages about the Binder service running at mybinder.org. :maxdepth: 1 user-guidelines -support faq +support +contribute federation status ``` diff --git a/doc/conf.py b/doc/conf.py index b16224d..ab1716e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -109,7 +109,7 @@ rediraffe_redirects = { "about.rst": "about/index.md", - "cotntribute.md": "about/support.md", + "contribute.md": "about/contribute.md", "examples.rst": "examples/examples.md", "index-repo-reference.rst": "examples/index.rst", "sample_repos.md": "examples/sample_repos.md", diff --git a/doc/index.md b/doc/index.md index 711d3ea..b10268d 100644 --- a/doc/index.md +++ b/doc/index.md @@ -78,16 +78,6 @@ about/index See the [Binder Examples](https://github.com/binder-examples) GitHub organization for more Binder repositories demonstrating its functionality. -## Contribute to Binder - -For information about contributing to Binder, see the following page: - -```{toctree} -:maxdepth: 2 - -contribute -``` - ## Cite Binder For information on how to cite Binder, see [](citing). From e9ca9918bd24ff916ea3e629481ef0f2bb68a186 Mon Sep 17 00:00:00 2001 From: Chris Holdgraf Date: Mon, 25 Apr 2022 17:35:26 +0200 Subject: [PATCH 3/3] Add support button --- doc/_static/custom.css | 7 +++++++ doc/conf.py | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/doc/_static/custom.css b/doc/_static/custom.css index 81a2b45..0a58db3 100644 --- a/doc/_static/custom.css +++ b/doc/_static/custom.css @@ -3,6 +3,13 @@ --sd-color-secondary: #f5a252; } +/* Header */ +i.fa.fa-heart { + color: #e66783; +} + +/* Text elements */ + div.body p.caption { font-size: 1.2em; } diff --git a/doc/conf.py b/doc/conf.py index ab1716e..0592e73 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -91,6 +91,13 @@ "google_analytics_id": "UA-101904940-3", "github_url": "https://github.com/jupyterhub/binder", "twitter_url": "https://twitter.com/mybinderteam", + "icon_links": [ + { + "name": "Support", + "url": "https://mybinder.readthedocs.io/en/latest/about/support.html", + "icon": "fa fa-heart", + } + ] } html_context = {