Skip to content

Commit 88db083

Browse files
committed
Reworks the FAIR RS page
1 parent 92e98a8 commit 88db083

2 files changed

Lines changed: 71 additions & 36 deletions

File tree

_data/sidebars/main.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ subitems:
1414
- title: Three-tier view
1515
url: /three_tier_view
1616
- title: Your role
17-
description: Defnition of the different persona types associated with Research Software.
17+
description: Definition of the different persona types associated with Research Software.
1818
url: /your_role
1919
image_url: /assets/img/section-icons/tick.svg
2020
subitems:
@@ -27,8 +27,8 @@ subitems:
2727
subitems:
2828
- title: Source code
2929
url: /source_code
30-
- title: FAIR
31-
url: /fair
30+
- title: FAIR Research Software
31+
url: /fair_rs
3232
- title: Sustainability
3333
url: /sustainability
3434
- title: Open Source
Lines changed: 68 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: FAIR Research Software
2+
title: FAIR Research Software Principles
33
---
44

55

@@ -24,29 +24,29 @@ closer to the gold standard of fully reproducible research.
2424

2525
### Findable
2626
- Create a description of your software to make it discoverable by search engines and other search tools
27+
- Use standards (such as [CodeMeta][codemeta]) to describe interoperable metadata for your software (see [Research Software Metadata Guidelines][rsmg-1])
2728
- Place your software in a public software repository (and ideally register it in a [general-purpose or domain-specific software registry][software-registries])
2829
- Use a unique and persistent identifier (DOI) for your software (e.g. by depositing your code on [Zenodo][zenodo]),
2930
which is also useful for citations - note that depositing your data/code on GitHub and similar software repositories
3031
may not be enough as they may change their open access model or disappear completely in the future, so archiving your code means it stands a better chance at being preserved
3132

3233
### Accessible
33-
- Make sure people can freely, legally and easily get a copy your software
34-
- Structure your code using common patterns and use coding conventions to make your code readable and understandable by people (once they obtain a copy of it), i.e. make your code accessible in the *intelligible* sense
35-
- The code and its description has to be available even when the software is no longer actively developed (this include previous versions of the software)
34+
- Make sure people can obtain get a copy your software using standard communication protocols (e.g. HTTP, FTP, etc.)
35+
- The code and its description (metadata) has to be available even when the software is no longer actively developed (this includes earlier versions of the software)
3636

3737
### Interoperable
3838
- Explain the functionality of your software and protocols for interaction with it
39-
- Use standard formats for inputs and outputs
39+
- Use community-agreed standard formats for inputs and outputs of your software and its metadata (e.g. [CodeMeta][codemeta])
4040
- Communicate with other software and tools via standard protocols and APIs
4141

4242
### Reusable
43-
- Document your software (including its functionality, and how to install and run it) to make it more understandable by others who may wish to reuse or extend it
44-
- Follow best practices for software development (including structuring your code in reusable functions with a single functionality
45-
that can be built on top of, coding conventions, code readability and verifying its correctness)
46-
- Test your software and make sure it works on different platforms/operating systems to make it more reusable
43+
- Document your software (including its functionality, how to install and run it) to make it more understandable by
44+
others who may wish to reuse or extend it
45+
- Follow best practices for software development, e.g. structure your code using common patterns and use coding
46+
conventions to make your code readable and understandable by people
47+
- Test your software and make sure it works on different platforms/operating systems
4748
- Give a licence to your software clearly stating how it can be reused
4849
- State how to cite your software, so people can give you credit when they reuse it
49-
- Include a contributor policy so that others can contribute to your code and credit for contributions is provided
5050

5151
## Tools and practices for FAIR research software development
5252

@@ -61,15 +61,15 @@ software may be FAIR, but still not very good in terms of its functionality.
6161

6262
### Development environments
6363

64-
Virtual and integrated development environments (IDEs), such as VS Code or PyCharm, help with running, testing, and debugging code.
65-
Virtual environments further enable us to share our working environments with others, making it easier to access, reuse and extend our code.
64+
Virtual and integrated development environments (IDEs), such as VS Code or PyCharm, help with reading, running, testing, and debugging code.
65+
Virtual environments further enable us to share our working environments with others, making it easier to reuse and extend our code.
6666
IDEs often provide integrations with other tools, e.g. version control and command line terminals, enabling you to do many tasks from a single environment,
6767
saving time in switching between different tools.
6868

6969
### Command line terminals
7070

7171
Command line terminals (e.g. Bash, GitBash) enable us to run and test our code without graphical user interfaces (GUI) afforded to us by IDEs -
72-
this is sometimes needed for accessing and running our code remotely on servers and high-performance systems without a GUI provision, where time,
72+
this is sometimes needed for running our code remotely on servers and high-performance systems without a GUI provision, where time,
7373
memory and processing power are expensive or in high demand.
7474

7575
Version control systems are typically provided as command line tools, making them often only accessible from command line terminals to enter commands and access
@@ -106,7 +106,31 @@ correctly on their machine - helping with code understanding and reusability.
106106
Following coding conventions and guides for your programming language that is agreed upon by the community and other programmers
107107
are important practices to ensure that others find it easy to read your code, reuse or extend it in their own examples and applications.
108108

109-
### Software- and project- level documentation
109+
110+
### Code licensing
111+
112+
A licence is a legal document which sets down the terms under which the creator of work (such as written text,
113+
photographs, films, music, software code) is releasing what they have created for others to use, modify, extend or exploit.
114+
115+
It is important to state the terms under which software can be reused - the lack of a licence for your software
116+
implies that no one can reuse the software at all.
117+
A common way to declare your copyright of a piece of software and the license you are distributing it under is to
118+
include a file called LICENSE in the root directory of your code repository.
119+
120+
Some good resources to check out for choosing a licence for your code:
121+
122+
- [The open source guide][opensource-licence-guide] on applying, changing and editing licenses.
123+
- [choosealicense.com][choosealicense] has some great resources to help you choose a license that is appropriate for your needs,
124+
and can even automate adding the LICENSE file to your GitHub code repository.
125+
126+
### Code citation
127+
128+
We should add a citation file to our repository to provide instructions on how and when to cite our code.
129+
A citation file can be a plain text (CITATION.txt) or a Markdown file (CITATION.md), but there are certain benefits
130+
to using use a special file format called the [Citation File Format (CFF)][cff], which provides a way to include richer
131+
metadata about code (or datasets) we want to cite, making it easy for both humans and machines to use this information.
132+
133+
### Code- and project- level documentation
110134

111135
Documentation comes in many forms - from **software-level documentation** including descriptive names of variables and functions and
112136
additional comments that explain lines of your code, to **project-level documentation** (including README, LICENCE, CITATION, CONTRIBUTING, etc. files)
@@ -124,46 +148,48 @@ You should check the rules or guidelines of your institution, grant or domain on
124148

125149
Some examples of commonly used software repositories and registries include:
126150

127-
- general-purporse software repositories - [GitHub][github] and [GitLab][gitlab]
151+
- general-purpose software repositories - [GitHub][github] and [GitLab][gitlab]
128152
- programming language-specific software repositories - [PyPi][pypi] (for Python) and [CRAN][cran] (for R)
129-
- software registries - [BioTools][biotools] (for biosciences) and [Awesome Research Software Registries][awesome-rs-registries], providing a list of research software registries (by country, organisation, domain and programming language) where research software can be registered to help promote its discovery
153+
- software registries - [BioTools][biotools] (for biosciences) and [Awesome Research Software Registries][awesome-rs-registries], providing a list of research software registries (by country, organisation, domain and programming language) where research software can be registered to help promote its discovery
130154

131155
### Persistent identifiers
132156

133-
Unique persistent identifiers, such as Digital Object Identifiers (DOIs) provided by Zenodo, FigShare and similar digital archiving services, and commits/tags/releases used by GitHub and similar code sharing platforms,
157+
Unique persistent identifiers, such as **Digital Object Identifiers** (DOIs) provided by [Zenodo][zenodo],
158+
[FigShare][figshare], etc., or **SoftWare Heritage persistent IDentifiers** ([SWHID](swhid)) provided by [Software Heritage][software-heritage],
159+
and similar digital archiving services, and commits/tags/releases used by GitHub and similar code sharing platforms,
134160
help with findability and accessibility of your software, and can help you get credit for your work by providing citable references.
135161

136162
### Tools for assessing FAIRness of software
137163

138-
Here are some tools that can check your software and provide an assessment or measurement of its FAIRness:
164+
Here are some tools that can check your software and provide an assessment of its FAIRness:
139165

140166
- [FAIRsoft evaluator][fair-rs-evaluator]
141167
- [FAIR software test][fair-rs-test]
168+
- [`How FAIR is your software` - command line tool to evaluate a software repository's compliance with the FAIR principles][howfairis]
169+
170+
### Summary
142171

143172
The table below provides a summary of how different tools and practices help with the FAIR software principles.
144173

145174
| Tools and practices | Findable | Accessible | Interoperable | Reusable |
146-
| ---------------------------------------------------------------------------------------------------- | -------- | ---------- | ------------- | -------- |
147-
| Virtual development environments | | x | | x |
148-
| Integrated development environments/IDEs | | | | x |
175+
|------------------------------------------------------------------------------------------------------|----------|------------|---------------| -------- |
176+
| Virtual development environments | | | | x |
177+
| Integrated development environments (IDEs) | | | | x |
149178
| Command line terminals - automated and reproducible pipelines | | | x | x |
150-
| Standard formats - e.g. for data exchange (CSV, YAML) | | x | x | x |
151-
| Communication protocols - Command Line Interface (CLI) or Application Programming Interface (API) | | x | x | x |
179+
| Standard data exchange formats - e.g. for data exchange (CSV, YAML) | | | x | x |
180+
| Communication protocols - Command Line Interface (CLI) or Application Programming Interface (API) | | | x | x |
152181
| Version control tools | x | | | |
153-
| Testing - code correctness and reproducibility | | x | | x |
154-
| Coding conventions | | x | x | x |
155-
| Software-level documentation (comments and docstrings, explaining functionality) | | x | x | x |
156-
| Project-level documentation (READMEs, explaining functionality/installation/running) | | x | x | x |
157-
| License - code sharing and reuse | | x | | x |
158-
| Citation - code reuse and credit | x | | | x |
159-
| Software repositories and registries | x | x | | |
182+
| Code testing & correctness | | | | x |
183+
| Coding conventions | | | | x |
184+
| Code-level documentation (comments and docstrings, explaining functionality) | | | | x |
185+
| Project-level documentation & metadata (README, explaining functionality/installation/running, etc.) | | | x | x |
186+
| License - code sharing & reuse | | | | x |
187+
| Citation - code reuse & credit | | | | x |
188+
| Software repositories & registries | x | x | | |
160189
| Unique persistent identifiers | x | x | | |
161190

162191

163192

164-
TODO: cross link with other pages talking about specific tools or practices, e.g. version control, code readability, documentation, etc.
165-
166-
167193
[fair-principles-research-software]: https://www.nature.com/articles/s41597-022-01710-x
168194
[fair-data-principles]: https://www.nature.com/articles/sdata201618
169195
[zenodo]: https://zenodo.org/
@@ -176,3 +202,12 @@ TODO: cross link with other pages talking about specific tools or practices, e.g
176202
[awesome-rs-registries]: https://github.com/NLeSC/awesome-research-software-registries
177203
[fair-rs-evaluator]: https://openebench.bsc.es/observatory/Evaluation
178204
[fair-rs-test]: https://github.com/marioa/fair-test?tab=readme-ov-file
205+
[codemeta]: (https://codemeta.github.io/)
206+
[rsmd-1]: https://fair-impact.github.io/RSMD-guidelines/1.General/
207+
[software-heritage]: https://www.softwareheritage.org/
208+
[swhid]: https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html
209+
[figshare]: https://figshare.com/
210+
[howfairis]: https://github.com/fair-software/howfairis/
211+
[cff]: https://citation-file-format.github.io/
212+
[opensource-licence-guide]: https://opensource.guide/legal/#which-open-source-license-is-appropriate-for-my-project
213+
[choosealicense]: https://choosealicense.com/

0 commit comments

Comments
 (0)