- annotate a repository in the static web interface or by opening an issue or in bulk on your local machine
- view this research software, taxonomy, and criteria
- Use the api to see repos, taxonomy, and criteria
coming soon annotate statically on the GitHub pages here, and automated weekly annotation prompts on social media and slack.
What is research software? Simply stated, research software exists to support research. If we want to pursue better research, we then must understand it [3]. This leads us to ask some basic question:
- What is research software
- What are criteria that might help to identify research software?
- How do we organize research software?
While we could make an attempt to derive a holistic definition, this approach would be limited in not taking into account the context under which the definition is considered. For example, needing to define research software to determine eligibility for a grant is a different scenario than a journal needing to decide if a piece of software is in scope for publication, and both are different from an effort to study research software. In all cases, the fundamental need for a context-specific definition is not only important in these scenarios, but also for basic communication. If I am to call something research software, it's essential that you know the criteria that I am using to consider it, how highly I consider each of those criteria, and a possibly classification that I am using to further drive my choices.
This repository, paired with the document that prompted its original thinking, takes the stance that it would be very challenging if not possible to create a single definition for research software. However, it's very reasonable to derive criteria, or questions that we can easily answer, that can be used to determine a relative strength of a piece of software on a dimension of "strongly yes" to "strongly no." We can also derive a taxonomy, or categorization of research software types that might further filter this decision making. Both of these classifications, a scoring and location in the taxonomy, can then be transparently stated and used to answer if a specific piece of software is indeed research software. Importantly, while the choice of threshold for scoring and taxonomy filter is subjective, the classification and answers to the criteria are not. We have a transparent, methodic way to define pieces of software, and we leave some final definition up to the individual or group that warrants needing the definition.
An understanding of the qualities of software that are required to support this research life-cycle is essential to continue and maximize the potential for discovery. In this light, research software is also about people, namely the developers and community that utilizes it. If we can better characterize this community to better understand how its needs map to research software, we can again better support scientific discovery.
[3] C. Goble, "Better Software, Better Research," in IEEE Internet Computing, vol. 18, no. 5, pp. 4-8, Sept.-Oct. 2014, doi: 10.1109/MIC.2014.88.
- Taxonomy and Criteria are served programaticaly from the Research Software Engineering (rseng) repository. If you want to contribute to either of those, that's the repository you should contribute to.
- Database: the Research Software Encyclopedia drives generation and update of the database here.
- Update is automated using GitHub Workflows that are run on a weekly bases.
- Annotate via the command line or web interface by cloning the repository to and following instructions in the annotate docs. Your contribution is recorded in the git history, and your avatar is added to the contributor graphic. Other methods of annotation will also be available.
A static web interface of the software database is generated automatically and served by the repository at https://rseng.github.io/software/. If you want to generate this manually you can do:
rse export --type static-web docs/
rse export --type static-web docs/ --force # if exists
Further, a static API is exported to https://rseng.github.io/software/data.json that provides a listing of your software repositories for some programmatic usage.
For previous development work, see the devel folder.