How to make your software good enough FAIR? Post based on presentation by Neil Chue Hong.
FAIR
Findable:
Make your software easier to discover by using descriptive metadata.
Publish a citation for your software.
Add it to a community registry, if one exists.
Accessible:
Put your source code in a code repository, and deposit major versions in a preservation repository to get a DOI.
Interoperable:
Describe the functionality of your software.
Use open data formats that meet domain-relevant community standards.
Use libraries for common functionality.
Provide references to associated research objects.
Modularise your code and document design.
Reusable:
Choose a license and apply it to your software.
Document dependencies.
Ensure that others can understand and execute your code.
Software publishing options by Neil Chue Hong
Code repository | Data repository | Produce runnable version | Software registry | Software article | |
---|---|---|---|---|---|
Example | Source code is in GitHub, GitLab or BitBucket with open license | Source code deposited in Zenodo, 4TU.ResearchData | Jupyter Notebook in Binder, Capsule in CodeOcean, Docker or Singularity container, NextFlow workflow. Package for CRAN, PyPI, etc | Create an entry in a community registries e.g. CIG (geodynamics), RRID, swMath (mathematics). NLeSC RSD | Publish software paper in JORS, JOSS, SoftwareX, etc. Publish executable research article in GigaByte |
Advantages | Discoverable Fits with development workflow No waiting before available |
Archived Persistent identifier and metadata Little/no wait before available |
Enable direct reuse Can be given identifiers Makes available in location where users search |
Indexed Easier to find Often provides identifier May show citations |
Easily citable Peer reviewed Can describe software design Easier for developers to write Easy to reach target audience Understood by promotion committees |
Disadvantages | Not archived Harder to cite Not easy to find if poorly described / documented |
Direct software citations not accepted by all journals | Normally requires additional effort / resources | Not available in every domain | Software not always archived Publishing in domain specific journals may take a long time |
More information
- Full presentation +recording of how to publish software (from 23:14 onwards)
- See also the post on licensing