Description
CodeMeta is a community-developed metadata standard designed to describe and exchange metadata about research software projects in a structured way.
It provides a machine-readable JSON-LD format (in the form of codemeta.json file attached to your software project) for storing metadata about software, including authorship, licensing, dependencies, versioning, and more.
It consists of a set of properties that extend Schema.org (a popular metadata vocabulary designed to describe Digital Objects on the Web) with software-specific metadata (e.g. maintainer, build instructions, software documentation, etc.).
Creating a codemeta.json file is like giving your software a passport. It was created to standardise metadata across different repositories and programming ecosystems, making it easier to share, discover, and cite software.
See the CodeMeta terms to understand which terms are used to describe software.
Who uses CodeMeta?
- GitHub & GitLab code repositories support it to help document software for better discoverability.
- Researchers use it to cite research software in academic papers.
- Software repositories & archives like Zenodo, FigShare, InvenioRDM and Software Heritage, as well as many institutional repositories use it as a standardised metadata format across platforms.
- FAIR data initiatives support the use of CodeMeta format to help with findability.
Considerations
When you’re setting up a codemeta.json file, keep these things in mind:
- Keep It Current: Update the file whenever your software changes. New version? New contributor? Make sure it’s reflected.
- Check for Errors: Use a JSON-LD validator to catch any mistakes, e.g., JSON-LD validator.
- Use Persistent Identifiers: Add a Digital Object Identifier (DOI) for the software release itself for long-term citation (e.g., from Zenodo). Ensure ORCID iDs are included for all people.
- Link to a Publication: Use the
referencePublicationproperty to link to the corresponding journal article, including the paper’s DOI as itsidentifier. - Detail Contributors: Use the
Personschema and include ORCID iDs (the persistent identifier for people) for authors and contributors. - Clarify Licensing: Use a Software Package Data Exchange (SPDX) identifier to make the license clear.
- Acknowledge Funders: Include funder details with identifiers like Crossref Funder IDs.
For more on software metadata, check out the Software Metadata page.
Solutions
- Do It Yourself: You can manually create the file using the CodeMeta schema. Check out the example below, or use the CodeMeta template as a reference. JSON-LD files can be validated with services like JSON-LD validator
- Use Tools:
- CodeMeta Generator for a manual form-based approach
- Auto CodeMeta generator for an interactive tool that helps you create a
codemeta.jsonfile step by step by retrieving existing metadata in your code repository. - SOMEF for command-line generation
-
SOMEF Vider will allow you to download auto-generated CodeMeta files (remember to double check the results).
- Always review and add details like ORCID iDs and funder information.
- Archive Your Work: Release your software on a platform that assigns DOIs, like Zenodo. Add the DOI to your
codemeta.jsonas anidentifier. - Validate: Use a service like JSON-LD validator to ensure everything is correct.
Example Template
Here’s a sample codemeta.json file to get you started:
{
"@context": "https://w3id.org/codemeta/3.0",
"@type": "SoftwareSourceCode",
"name": "Your Software Name",
"description": "A brief description of your software.",
"version": "1.0.0",
"referencePublication": {
"@type": "ScholarlyArticle",
"headline": "A New Algorithm for Applied Mathematics using Python and NumPy",
"identifier": "https://doi.org/10.1016/j.jsc.2023.10.001"
},
"author": [
{
"@type": "Person",
"givenName": "First",
"familyName": "Author",
"email": "first.author@example.com",
"identifier": "https://orcid.org/0000-0002-1825-0097",
"affiliation": {
"@type": "Organization",
"name": "University of Edinburgh"
}
},
{
"@type": "Person",
"givenName": "Second",
"familyName": "Author",
"identifier": "https://orcid.org/0000-0003-0000-0000"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Key",
"familyName": "Contributor",
"identifier": "https://orcid.org/0000-0001-9999-9999"
}
],
"license": "https://spdx.org/licenses/MIT",
"codeRepository": "https://github.com/yourusername/your-repo",
"issueTracker": "https://github.com/yourusername/your-repo/issues",
"programmingLanguage": "Python",
"keywords": ["software", "example", "codemeta"],
"dateCreated": "2023-10-01",
"dateModified": "2023-10-10",
"softwareRequirements": [
"numpy = 2.5.2",
"pandas = 3.0.5"
],
"relatedLink": "https://yourwebsite.com",
"identifier": "https://doi.org/10.1234/exampledoi",
"funder": [
{
"@type": "Organization",
"name": "Funder Name",
"identifier": "https://doi.org/10.13039/100000001"
}
],
"funding":"Grant number"
}
By following these steps, you can provide complete bibliographic metadata for your software project in a CodeMeta file, enhancing its discoverability and citation.
Related pages
Training
Tools and resources on this page
| Tool or resource | Description | Related pages |
|---|---|---|
|
Auto CodeMeta generator View on TechRadar |
The Auto CodeMeta generator is a web application designed to simplify the creation of codemeta.json files, which are used to provide structured metadata for research software and code. | |
|
CodeMeta |
CodeMeta is a community standard and initiative focused on creating a minimal metadata schema for scientific software and code, promoting their findability, preservation, and reuse through machine-readable metadata in JSON-LD format. | Phoenix2 Credit and recognition... Adopting FAIR research... Software identifiers Software metadata |
|
CodeMeta Generator View on TechRadar |
A free, open-source project that creates a minimal metadata schema for research software and code | |
|
FigShare |
Figshare is a provider of open research repository infrastructure for sharing, showcasing and managing all research outputs in a discoverable, citable, reportable and transparent way. | Credit and recognition... Adopting FAIR research... |
|
InvenioRDM |
InvenioRDM is a turn-key research data management (RDM) repository based on Invenio Framework and Zenodo | |
|
JSON-LD validator |
Service to validate JSON-LD files | |
|
Software Heritage View on TechRadar |
Software Heritage archive is the largest public collection of source code in existence. It Collects, preserves, curates and makes available software in source code form as cultural heritage | Archiving software Adopting FAIR research... |
|
SOMEF View on TechRadar |
Software Metadata Extraction Framework (SOMEF) is a command line tool for automatically extracting relevant software information from README files | Creating a good README |
|
SOMEF Vider View on TechRadar |
Somef Vider is a web application that retrieves the metadata of the given GitHub repository through the Software Metadata Extraction Framework (SOMEF) and shows it in a user-friendly way. | |
|
Zenodo View on TechRadar |
Zenodo is a general-purpose open repository developed under the European OpenAIRE program and operated by CERN. It allows researchers to deposit research papers, data sets, research software, reports, and other research-related digital artefacts. | DOME Registry Phoenix2 Archiving software Citing software Credit and recognition... Documenting code Adopting FAIR research... Releasing software Software identifiers |