Skip to aside Skip to content Skip to footer

tasks: Creating software metadata with CodeMeta

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 referencePublication property to link to the corresponding journal article, including the paper’s DOI as its identifier.
  • Detail Contributors: Use the Person schema 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.json file 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.json as an identifier.
  • 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

EVERSE TeSS search results:
Skip tool table

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