Introduction


Research Software includes source code files, algorithms, scripts, computational workflows and executables that were created during the research process or for a research purpose. Software components (e.g., operating systems, libraries, dependencies, packages, scripts,etc.) that are used for research but were not created during or with a clear research intent should be considered software in research and not Research Software. This differentiation may vary between disciplines.

  • Findable: Software, and its associated metadata, is easy for both humans and machines to find.

  • Accessible: Software, and its metadata, is retrievable via standardised protocols.

  • Interoperable: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via Application Programming Interfaces (APIs), described through standards.

  • Reusable: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software).

Why should you care?


Code structure


The Zen of Python


Principles of Code design


Don't touch your code anymore!