Skip to article frontmatterSkip to article content

Welcome to the guide for notebooks EiC of the EDS book!

Before you begin this process, please be sure to understand how the publication process works.

We have a code of conduct which is mandatory for everyone involved in the review process of our notebooks.

Below you will find the main steps we suggest to follow to moderate, validate and publish a notebook to EDS book.

Scope and Aims

Thank you for considering leading the publication process of a notebook to EDS book. Our review process aims to be open, collaborative, transparent and inclusive.

Notebook Idea

In this step, we suggest providing feedback to the notebook idea.

Preparation

EiC validate how reproducible is the notebook and its feasibility for the reviewing stage. This process is aided by the Binder badge in a PR in the corresponding author’s notebook repository.

After validating a minimal working version, EiC fork the notebook repository to the Environmental Data Science book organisation.

The forked notebook should generate the same outputs as the initial repository hosted in the GitHub account of the corresponding author.

Before moving to PRE-REVIEW, EiC open a new issue Preparation in the notebook repository and complete the checklist below:

# Check notebook repository
- [ ] The notebook repository is available in a public personal repository
- [ ] The notebook runs in Binder according to the PR indicated by the author

# Initial configurations
- [ ] Create and checkout a new branch `preparation`
- [ ] Activate the conda environment containing Jupyter Book v2 and run `jupyter book init` to create myst.yml file.
- [ ] Move environment.yml file to `.binder` folder
- [ ] Rename the `name` field in `.binder/environment.yml` with project id defined in `myst.yml` file

# Set up Quay.io
- [ ] Create a new Quay.io repository with the same name as the project id defined in `myst.yml` file and another including the suffix `_preview` (e.g., `my-project-id` and `my-project_preview-id`)
- [ ] Assign in settings the `edsbook+github_actions` bot as a collaborator with write access to the Quay.io repository

# GitHub repository settings
- [ ] Set `QUAY_PASSWORD` and `QUAYUSERNAME` keys and values from the bot in the repository secrets (go to the repository settings, left panel > Secret and variables > Actions)
- [ ] Check that the GitHub pages are enabled in the repository settings using actions.

# README (python)
- [ ] Rename the filename of the template to notebook.ipynb
- [ ] Copy README template (python) and replace the fields in the following lines:
- [ ] replace `[repository name]` in 
  - [ ] L20, `git clone https://github.com/eds-book/[repository name].git`
  - [ ] L25, `cd [repository name]`
  - [ ] L31, `conda activate [repository name]`
    
# Validate preview
- [ ] Commit and push changes to the `preparation` branch
- [ ] Open a PR to the `main` branch with the title `preparation` and the description
- [ ] Check the publish action in the Actions tab runs successfully
- [ ] Validate the preview in GitHub pages at `https://eds-book.github.io/[repository name]/`
- [ ] If OK, merge the PR to the `main` branch.

The myst.yml file should be created in the root of the notebook repository, and some fields should be filled.

    # See docs at: https://mystmd.org/guide/frontmatter
    version: 1
    extends:
       - https://raw.githubusercontent.com/eds-book/edsbook-config/main/edsbook.yml
    project:
      id: [KEEP-THE-ORIGINAL-ID]
      title: [NOTEBOOK-TITLE] (Jupyter Notebook) published in the Environmental Data Science book
      short_title: [NOTEBOOK-SHORT-TITLE]
      abstract: Notebook developed to [SHORT-ABSTRACT].
      authors:
        - id: [SHORT-ID]
          name: [FIRST-AND-LAST-NAME]
          orcid: [ORCID]
          corresponding: true
          email: [EMAIL]
          github: [GITHUB-HANDLE]
          roles:
            - Investigation
            - Software
            - Visualization
          affiliations:
            - [ID-AFFILIATION]
    #  reviewers:
    #    - id: TBA
    #      name: TBA
    #      orcid: TBA
    #      github: TBA
    #      roles:
    #        - Writing – review & editing
    #      affiliations:
    #        - TBA
    #  editors:
    #    - id: TBA
    #      name: TBA
    #      orcid: TBA
    #      github: TBA
    #      roles:
    #        - Writing – review & editing
    #      affiliations:
    #        - TBA
      affiliations:
        - id: [ID-AFFILIATION]
          name: [AFFILIATION-NAME]
          department: [AFFILIATION-DEPARTMENT]
      subject: [SUBJECT] #according to Earth Engine Data Catalog categories, https://developers.google.com/earth-engine/datasets/categories
      keywords:
        - [SUBJECT]
        - [THEME]
        - [SUBMISSION]
        - [LANGUAGE]
      venue:
        title: Environmental Data Science Book
        short_title: EDS Book
        url: https://www.edsbook.org
      issue:
        name: [SUBMISSION-TYPE]
    #  thumbnail: images/thumbnail.png
      requirements:
        - .binder/environment.yml
      #doi: 10.5281/zenodo.XXXXXXX
      github: https://github.com/eds-book/[KEEP-THE-ORIGINAL-ID]
      jupyter:
        binder:
          repo: eds-book/[KEEP-THE-ORIGINAL-ID]
      open_access: true
      license:
        content: CC-BY-4.0
        code: MIT
      date: YYYY-MM-DD
      toc:
        - file: README.md
        - file: notebook.ipynb
    site:
      template: book-theme

Pre-review

EiC open a PRE-REVIEW issue containing all relevant information of the notebook including a link to the notebook idea issue.

- [ ] Open a PRE-REVIEW issue
- [ ] Fill the required fields.
- [ ] Provide details of the notebook using [cloc](https://github.com/AlDanial/cloc).
- [ ] Notify about the PRE-REVIEW issue to the author in the notebook idea issue.
- [ ] Validate reviewers interest and availability
- [ ] Close the PRE-REVIEW

EiC assign an editor to moderate the review and find reviewers.

After the editor acceptance, EiC will update the heading at the top of the issue with [EDITOR GITHUB HANDLE] next to Editor: section. Once reviewers agreed on the revision, EiC open a REVIEW issue.

Review

The REVIEW issue aims to be a space where editor will moderate timings and conversation between authors and reviewers.

- [ ] Create and checkout a new branch `review`
- [ ] Add a custom message in the first markdown cell of the notebook after the title indicating "Authors and Reviewers. This is the notebook version for review. We will remove this markdown cell after the peer-review."
- [ ] Commit and push changes to the `review` branch
- [ ] Open a REVIEW issue
- [ ] Fill the required fields   
- [ ] Add reviewers
- [ ] Provide details of the notebook using [cloc](https://github.com/AlDanial/cloc).
- [ ] Moderate the discussion between authors and reviewers
- [ ] Check suggested changes by reviewers are implemented in the notebook repository
- [ ] If changes are implemented, merge the PR to the `main` branch

To facilitate the discussion, EiC creates a new branch review with a custom message at the first markdown cell indicating “Authors and Reviewers. This is the notebook version for review. We will remove this markdown cell after the peer-review.” Then EiC commit and push changes to create a PR in the notebook repository. The PR will trigger ReviewNB, a third-party plugin in GitHub for displaying and commenting Jupyter Notebooks (see further details here). EiC should reminder the authors to implement changes in their personal repository and not in the forked repository. The authors should open a PR to the forked repository to update the notebook version for review. EiC merges the PR in the review branch and suggest to the editor to ask the reviewers to re-evaluate the notebook.

Once reviewers recommend the notebook for publication, EiC will be notified by the editor to start the post-print stage.

Post-print

EiC will lead publishing asking authors to proof-read the notebook and indicate any remaining typos, badly formed citations, awkward wording, etc.

# Initial configurations
- [ ] Create and checkout a new branch `postprint`
- [ ] Remove files in the `images` folder
- [ ] Create and add `thumbnail.png` to the `images` folder
- [ ] Set `.bumpversion.cfg`

# Archive in Zenodo
- [ ] Create a Zenodo record for the notebook repository
- [ ] Use the nomenclature of the .bumpversion.cfg file to set the version number

# Notebook 
- [ ] Add `Citing this Notebook` section to the notebook before the `Additional Information` section. 
    ```markdown
    ## Citing this Notebook
    
    Please see [CITATION.cff](https://github.com/eds-book/[repository-name]/blob/main/CITATION.cff) for the full citation information. The citation file can be exported to APA or BibTex formats (learn more [here](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files)).
    ```

# myst.yml file
- Complete missing fields in the `myst.yml` file:
    ```yaml
    project:
      reviewers:
        - id: TBA
          name: TBA
          orcid: TBA
          github: TBA
          roles:
            - Writing – review & editing
          affiliations:
            - TBA
      editors:
        - id: TBA
          name: TBA
          orcid: TBA
          github: TBA
          roles:
            - Writing – review & editing
          affiliations:
            - TBA
       thumbnail: images/thumbnail.png
       doi: 10.5281/zenodo.XXXXXXX
       date: YYYY-MM-DD
       exports:
        - format: cff
          version: [version]
          identifiers:
            - description: "Open review report for this notebook"
              type: url
              value: "https://github.com/eds-book/notebooks-reviews/issues/[review-issue]"
       bibliography:
        - references.bib
    ```
  
- Change the version in the cell `print('Notebook repository version: [version]')`

# README 
- [ ] Between the title and how to run sections, add the following lines replacing `[repository-name]`, `[zenodo-doi]`, `[zenodo-badge]` and `[review-issue]` in:
    ```markdown
    <p align="center">
        <a href="https://github.com/eds-book/[repository name]/actions/workflows/monthly-build.yaml/badge.svg">
            <img alt="Continuous integration badge" src="https://github.com/eds-book/[repository name]/actions/workflows/monthly-build.yaml/badge.svg">
        </a>
        <a href="http://mybinder.org/v2/gh/eds-book/[repository name]/main?labpath=notebook.ipynb">
            <img alt="Binder" src="https://mybinder.org/badge_logo.svg">
        </a>
        <a href="https://doi.org/10.5281/zenodo.[zenodo-doi]">
            <img alt="doi" src="https://zenodo.org/badge/[zenodo-badge].svg">
        </a>
        <a href="https://github.com/eds-book/notebooks-reviews/issues/[review-issue]">
            <img alt="notebook review" src="https://img.shields.io/badge/view-review-purple">
        </a>
    </p>
    
    <p align="center">
    <img src="images/thumbnail.png" alt="thumbnail" width="500"/>
    </p>
    ```

# Validate preview
- [ ] Commit and push changes to the `postprint` branch
- [ ] Open a PR to the `main` branch with the title `postprint` and the description
- [ ] Check the publish action in the Actions tab runs successfully
- [ ] Validate the preview in GitHub pages at `https://eds-book.github.io/[repository name]/`
- [ ] If OK, merge the PR to the `main` branch.

Publication

EiC will announce the notebook in the EDS book social accounts and tag authors accounts according to their authorization.

Post-publication

EDS book community and other practitioners in GitHub could suggest changes in the notebook. Where relevant, EiC will notify authors about proposed changes and their acceptance. If the authors consider suggestions as a substantial contribution, EiC will acknowledge it by adding the contributor’s name to the citation of the notebook.