Skip to content

Commit 721b6ce

Browse files
authored
Merge pull request #40 from LinkedEarth/containers
Update contributor_guide.rst
2 parents 12ead0d + a2cc8c1 commit 721b6ce

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

doc/contributor_guide.rst

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ To make a great contribution you need to:
88

99
#. :ref:`write-your-book`
1010
#. :ref:`build-your-book`
11+
#. :ref:`run-remote` [Optional]
1112
#. :ref:`Prepare your book to be added to the library<prepare-for-joining-the-library>`
1213
#. :ref:`Submit a request to have your book added<submit-a-library-request>`
1314

@@ -19,10 +20,10 @@ To make a great contribution you need to:
1920
Write your book
2021
-----------------
2122

22-
Each library contribution needs well organized content and a landing page (a readme or intro).
23+
Each library contribution needs well organized content and a landing page (a readme or intro). A template repository is available `here <https://github.com/jordanplanders/paleobook_template>`_.
2324

2425
Content:
25-
*****************
26+
*********
2627

2728
Structure your content into one or more sections, each addressing specific themes or topics.
2829
Each section contains one or more notebooks (chapters) that delve into the details of the respective theme.
@@ -41,7 +42,7 @@ How you organize your book is up to you. We have found Lifehacks and Science Bit
4142
Every notebook must have a level 1 header (one #). This header will be used in your JupyterBook table of contents. If your book has multiple level 1 headers, the first one will be used in your JupyterBook table of contents. You will have the opportunity to assign different names for the purpose of the gallery.
4243

4344
Landing Page:
44-
*****************
45+
**************
4546

4647
There isn't a required structure for your landing page, but we have found that the following elements are appropriate (bolded items are common section titles):
4748

@@ -84,6 +85,25 @@ A couple of notes:
8485
.. _look here: https://github.com/LinkedEarth/citrace_paleobook/blob/main/_toc.yml
8586
.. _these instructions about personal access tokens: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic
8687

88+
.. _run-remote:
89+
90+
Running your Notebooks in the cloud [Optional]
91+
----------------------------------------------
92+
93+
Imagine a world where every time you opened a scientific notebook, it just worked. No dependency conflicts, no version mismatches, no endless troubleshooting. You could explore, run, and reproduce the analysis exactly as the original author intended—whether it was written yesterday or five years ago. That’s the power of containers. They capture the full computational environment—Python version, libraries, even system dependencies—ensuring that your workflow is portable, consistent, and reproducible across time and platforms. By wrapping science in containers, we free ourselves from the "it works on my machine" trap and pave the way for truly sharable, reliable computational research.
94+
95+
Now imagine a plaftfrom that would tkae this container and allow anyone to run it in the cloud. That's the beauty of `MyBinder <https://mybinder.org>`_. They can take a container and render the notebooks into a JupyterLab environment.
96+
97+
The beauty of it is that it does not require much work on your part.
98+
99+
* **Step 1**: Create a container and put in a container registry such as `DockerHub <https://hub.docker.com>`_ or `quay.io <https://quay.io>`_. We recommend to use quay.io as it offers more free options for open science. You can follow `this tutorial <https://2i2c.org/community-showcase/admin/howto/environment/hub-user-image-template-guide.html>`_ on how to create custom images. Note that this step is technically optional as `myBinder` can create containers from the environment or requirements file in your repository directly. Hpwever, as time goes by, this file may become obsolete and not use the correct versions of the packages.
100+
* **Step 2**: Create a `binder` folder in your repository and place a DockerFile and `config.json` file to indicate to myBinder where to get the container from. You can find an example of these files in `this repository <https://github.com/khider/coral-visualization>`_.
101+
* **Step 3**: Link your repository to `myBinder <https://mybinder.org>`_ following the instructions on their website.
102+
103+
If you need some help with these steps, have a look at the following `webpage <https://linked.earth/LeapFROGS/module6>`_ and `YouTube tutorials <https://www.youtube.com/watch?v=E3VQC6GyKzM>`_.
104+
105+
* **Step 4**: in your `_config.yml` enable the section about interactive computing following `these instructions <https://jupyterbook.org/en/stable/interactive/launchbuttons.html>`_.
106+
87107
.. _prepare-for-joining-the-library:
88108

89109
Prepare for joining the library
@@ -206,4 +226,4 @@ Once you have a fully built and published JupyterBook with extra metadata, `subm
206226
#. Host for the JupyterBook: *e.g., https://khider.github.io NOT https://khider.github.io/DISK-proxyComposite/intro.html*
207227
#. User: *e.g., khider*
208228
#. Landing suffix (name of the page you want users to land on): *e.g., intro.html*
209-
#. Landing page url: *e.g., https://khider.github.io/DISK-proxyComposite/intro.html*
229+
#. Landing page url: *e.g., https://khider.github.io/DISK-proxyComposite/intro.html*

0 commit comments

Comments
 (0)