Skip to content

Reproducibility Checklist: Software #4

Description

@cpsarason

Extra resources:

  • Is your software publicly available?
    - Make sure all code stored locally is pushed to GitHub. You can use git diff to compare the differences.
  • Is your software under version control?
    - You can use git tags and GitHub releases to mark important versions.
  • Can your software run on different operating systems?
    - Test among the team members with different OS.
    - Use Github Actions to test on different OS.
  • Is it easy to install all the dependencies for your software?
    - Is the one file that can encompass all dependencies (requirements.txt, conda env, or mamba env`)?
    - If not, can you provide the users with a pre-built environment (Docker)?
  • Does your software have a license?
    - Choose Your License
  • Does your software use other software: are their licenses compatible with yours?
    - Read about copy-left licenses, such as GPL.
  • Do you have a way to test whether adding new code features or library updates preserves the software’s functionality?
    - As you are testing whether the code works, store those tests and integrate the with continuous integration framework (like GitHub Actions) so they are run automatically.
  • Is it obvious from the folder structure where the code is and what it is doing?
    - Reorganize your folders/files so that new users can find content quickly (get inspired from the Cookiecutter Folder Structure)
    - add .gitignore file so you do not add unnecessary files from the repo
    - use git rm to remove files which you have already added. Never use git add . to avoid this
  • Does your code follow good style practices and conventions?
    Follow general guidance for good code style.
    - Check and select the style conventions for your language.
    - Install an automatic style checker for your editor.
  • Do you have a lot of repetitive code?
    - Move repetitive code into functions.
    - Move repetitive functions out of notebooks and put them into a module.
    - Organize modules into a package, so it is installable.
  • Do you guide how new users can contribute to your repo?
    - Make a contributer's guide

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions