Last updated:
In this section, information is organised around regular research software development, sharing, deploying and maintenance tasks or challenges.
- Best practices and guidelines for each software-related task.
- A list of all the considerations to be taken into account when performing a software-related task.
- Links to task-specific training materials.
- A summary table of tools and resources relevant for the specific task and recommended by communities.
This is the list of tasks in alphabetical order.
What practices and tools can help improve FAIRness of software?
How to decide which programming languages, tools and infrastructures to use?
How to use computational workflows to automate and reproduce data pipelines?
How can you use CI/CD in software development?
Guidance on creating a CodeMeta file for software projects.
Guidance on making software contributions visible, citable and verifiable, and building the evidence needed for career progression for people who write research code.
How to write technical documentation to explain to other developers and administrators how your code works internally?
How to write clear and useful software project documentation for end-users and collaborators?
How to use 'Read The Docs' tool for software documentation?
How to design and build research software so that it remains usable and reproducible years after the initial project ends
How to measure and improve environmental sustainability of software?
How to improve the security of research software by managing repository risks, secrets, dependencies, static analysis, CI/CD checks, and vulnerability reporting.
Guidance on keeping research software functioning, understandable, and usable over time — covering ongoing maintenance practices, dependency management, documentation, versioning, and the management of technical debt.
Efficiently test research software across multiple compilers, libraries, architectures, and platforms while managing CI resource constraints and maintaining fast feedback loops
How to profile research software to find performance bottlenecks and apply targeted optimisation techniques, with pointers to language-specific profiling and optimisation guidance.
How to create a development environment for your software so others can run and contribute to your software?
How do you document your software (code and project) for use by various different audiences?
How to set up GitHub Actions on software repositories for task automation
How to use and set up GitLab CI/CD for your GitLab repository
Leverage local GitLab CI runners and specialized hardware for GitHub-hosted projects when standard CI resources are insufficient
How to use static analysis tools to detect bugs, enforce coding standards, check types, and improve the quality of research software before it runs.
How do you choose and implement version control for your research software?
Capturing the context, community, and practices around a research software project.