Skip to content

Reproducibility Checklist: Software #4

@aidan-axiom

Description

@aidan-axiom

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions