From b09b8f276912018a211efce6098cc6538785b156 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Thu, 19 Dec 2024 00:56:47 +0100 Subject: [PATCH 01/11] added a task page to publish to Zenodo from GitLab --- .../{zenodo_doi.md => github_zenodo.md} | 12 +-- pages/your_tasks/gitlab_zenodo.md | 78 +++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) rename pages/your_tasks/{zenodo_doi.md => github_zenodo.md} (93%) create mode 100644 pages/your_tasks/gitlab_zenodo.md diff --git a/pages/your_tasks/zenodo_doi.md b/pages/your_tasks/github_zenodo.md similarity index 93% rename from pages/your_tasks/zenodo_doi.md rename to pages/your_tasks/github_zenodo.md index 226d12c1..19efb0c2 100644 --- a/pages/your_tasks/zenodo_doi.md +++ b/pages/your_tasks/github_zenodo.md @@ -1,11 +1,11 @@ --- -title: Obtaining a DOI for software -description: How to obtain a DOI via Zenodo for your code releases -contributors: ["Shoaib Sufi", "Daniel Garijo"] -page_id: zenodo_doi -related_pages: [] +title: Obtaining a DOI for software hosted on GitHub +description: How to obtain a DOI via Zenodo for your code releases on GitHub +contributors: ["Shoaib Sufi", "Daniel Garijo", "Thomas Vuillaume"] +page_id: github_zenodo +related_pages: [gitlab_zenodo, releasing_code] --- -## How can I get a Digital Object Identifier (DOI) for my code release? +## How can I get a Digital Object Identifier (DOI) for my code release on GitHub? ### Description Obtaining a DOI (a type of persistent identifier) for your software has become [increasingly popular][datacite-doi-software] to indicate others how to cite your software (either in a publication or as an independent way of referring to your software versions). In this document we describe how to obtain a DOI to refer to your software releases. diff --git a/pages/your_tasks/gitlab_zenodo.md b/pages/your_tasks/gitlab_zenodo.md new file mode 100644 index 00000000..a114a391 --- /dev/null +++ b/pages/your_tasks/gitlab_zenodo.md @@ -0,0 +1,78 @@ +--- +title: Obtaining a DOI for software hosted on GitLab +search_exclude: true +description: How to obtain a DOI via Zenodo for your code releases on GitLab +contributors: ["Thomas Vuillaume"] +page_id: gitlab_to_zenodo +related_pages: [releasing_code, github_zenodo, codemeta] +keywords: [zenodo, gitlab, code release] +# More information on which page id you can use can be found at https://rdmkit.elixir-europe.org/website_overview +--- + + + +## How can I get a Digital Object Identifier (DOI) for my code release on GitLab? + +### Description + +Publishing your code to Zenodo is a valuable practice that enhances the visibility, citability, and long-term preservation of your research software. By linking your code repository to Zenodo, you can: + +1. Obtain a Digital Object Identifier (DOI) for your software, making it easier to cite and track. +2. Ensure long-term preservation of your code, even if the original repository becomes unavailable. +3. Increase the discoverability of your software through Zenodo's search functionality and metadata. +4. Comply with funding agency requirements for open science and data sharing. +5. Provide a stable, versioned archive of your software for reproducibility purposes. + +In this document, we describe how to automatically archive a snapshot of your code repository on Zenodo whenever you create a new release on GitLab. + +### Considerations + +* You use a GitLab instance (either on gitlab.com or self-hosted) as your software repository +* You make software releases (e.g. using [semantic versioning][semantic-versioning]) +* You use or are happy to make an account on the [Zenodo][zenodo] archive +* You would like to archive your code on Zenodo and obtain a DOI for each software release that people can use to cite your work +* You can provide metadata for your software in a `.zenodo.json` file or a `codemeta.json` file in the root of your repository to specify the metadata for your Zenodo deposit. +* Your GitLab repository can run CI/CD pipelines. + +### Solutions + +* Provide software metadata in a `.zenodo.json` or `codemeta.json` file. + * Create a `.zenodo.json` file in the root directory of your repository following the [Zenodo's metadata schema](https://developers.zenodo.org/#metadata). + * Use the [Zenodo's sandbox](https://sandbox.zenodo.org/) to test your metadata. + +* Get a [Zenodo token](https://zenodo.org/account/settings/applications/tokens/new/) with publishing rights (`deposit:actions` and `deposit:write` scopes). + +* Add the [eossr](https://escape-ossr.gitlab.io/eossr/gitlab_to_zenodo.html) or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. + +* [Create a GitLab release](https://everse.software/RSQKit/releasing_code) in your repository. + * Go to your repository + * Click on releases and then on New release + * Use the same version number as specified in your metadata (e.g. `1.0.0`). + * Add release notes + * Click on Create release + +* The CI pipeline will automatically push your code on Zenodo. + +* Get the DOI: + * After the GitLab release, go to Zenodo, where you will see your repository archived with a DOI assigned to it. Your badge is available in "Details": + +![Badge in Zenodo](../../images/badge_zenodo.png) + +* Copy the badge in your README file: + * Now you can add the Zenodo badge in your GitHub repository. Click on the blue DOI and copy the markdown in your README. It will show as follows: + +![Badge in your repository](../../images/badge_in_repo.png) + +## Tools and resources + +* Tools: [GitLab][gitlab], [Zenodo][zenodo], [eossr](https://escape-ossr.gitlab.io/eossr/), [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) + +## References + +[calver]: (https://calver.org/) +[datacite-doi-software]: (https://datacite.org/blog/doi-registrations-software/) +[doi]: (https://www.doi.org/) +[semantic-versioning]: (https://semver.org/) +[what-are-pids]: (https://support.orcid.org/hc/en-us/articles/360006971013-What-are-persistent-identifiers-PIDs) +[zenodo]: (https://zenodo.org/) +[gitlab]: (https://gitlab.com/) From 868d4c2f0fa45c07a90b220f85ac993a5a49782d Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Thu, 19 Dec 2024 01:17:49 +0100 Subject: [PATCH 02/11] eddited titles in sidebar accordingly --- _data/sidebars/main.yml | 6 ++++-- pages/your_tasks/codemeta.md | 4 ++-- pages/your_tasks/github_zenodo.md | 2 +- pages/your_tasks/gitlab_zenodo.md | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/_data/sidebars/main.yml b/_data/sidebars/main.yml index 9839696b..ab317f0c 100644 --- a/_data/sidebars/main.yml +++ b/_data/sidebars/main.yml @@ -54,8 +54,10 @@ subitems: url: /codemeta - title: Licensing software url: /licensing_software - - title: Obtaining a DOI for software - url: /zenodo_doi + - title: Publishing software from GitHub to Zenodo + url: /github_zenodo + - title: Publishing software from GitLab to Zenodo + url: /gitlab_zenodo - title: Reproducible virtual software development environments url: /virtual_dev_environments - title: Testing code diff --git a/pages/your_tasks/codemeta.md b/pages/your_tasks/codemeta.md index fa00d8a4..3ccef9c1 100644 --- a/pages/your_tasks/codemeta.md +++ b/pages/your_tasks/codemeta.md @@ -3,7 +3,7 @@ title: Writing a CodeMeta file description: What is CodeMeta and how to write a CodeMeta file for your software contributors: ["Daniel Garijo"] page_id: codemeta -related_pages: [zenodo_doi] +related_pages: [github_zenodo] --- ## What is CodeMeta? [CodeMeta](https://codemeta.github.io/terms/) is a community standard for interchanging software metadata records. It consists on a set of properties that extend [Schema.org](https://schema.org) (a popular vocabulary designed to describe Digital Objects on the Web) with software-specific metadata (e.g., maintainer, build instructions, software documentation, etc.) @@ -12,7 +12,7 @@ related_pages: [zenodo_doi] ### Description -By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](https://everse.software/RSQKit/zenodo_doi), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like [Zenodo](https://zenodo.org/) ([Invenio RDM](https://inveniosoftware.org/products/rdm/)) and [Software Heritage](https://www.softwareheritage.org/). +By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](https://everse.software/RSQKit/github_zenodo), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like [Zenodo](https://zenodo.org/) ([Invenio RDM](https://inveniosoftware.org/products/rdm/)) and [Software Heritage](https://www.softwareheritage.org/). But how to create a `codemeta.json` file? diff --git a/pages/your_tasks/github_zenodo.md b/pages/your_tasks/github_zenodo.md index 19efb0c2..167b8643 100644 --- a/pages/your_tasks/github_zenodo.md +++ b/pages/your_tasks/github_zenodo.md @@ -1,5 +1,5 @@ --- -title: Obtaining a DOI for software hosted on GitHub +title: Publishing software from GitHub to Zenodo description: How to obtain a DOI via Zenodo for your code releases on GitHub contributors: ["Shoaib Sufi", "Daniel Garijo", "Thomas Vuillaume"] page_id: github_zenodo diff --git a/pages/your_tasks/gitlab_zenodo.md b/pages/your_tasks/gitlab_zenodo.md index a114a391..e5014a88 100644 --- a/pages/your_tasks/gitlab_zenodo.md +++ b/pages/your_tasks/gitlab_zenodo.md @@ -1,5 +1,5 @@ --- -title: Obtaining a DOI for software hosted on GitLab +title: Publishing software from GitLab to Zenodo search_exclude: true description: How to obtain a DOI via Zenodo for your code releases on GitLab contributors: ["Thomas Vuillaume"] From 76823b2183465b8a20f1e1bb7cda147ac0814d23 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Thu, 19 Dec 2024 01:22:04 +0100 Subject: [PATCH 03/11] small edits --- pages/your_tasks/gitlab_zenodo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/your_tasks/gitlab_zenodo.md b/pages/your_tasks/gitlab_zenodo.md index e5014a88..173ddba3 100644 --- a/pages/your_tasks/gitlab_zenodo.md +++ b/pages/your_tasks/gitlab_zenodo.md @@ -58,8 +58,8 @@ In this document, we describe how to automatically archive a snapshot of your co ![Badge in Zenodo](../../images/badge_zenodo.png) -* Copy the badge in your README file: - * Now you can add the Zenodo badge in your GitHub repository. Click on the blue DOI and copy the markdown in your README. It will show as follows: +* You may copy the badge in your README file: + * Now you can add the Zenodo badge in your GitLab repository. Click on the blue DOI and copy the markdown in your README. It will show as follows: ![Badge in your repository](../../images/badge_in_repo.png) From 044404369ef34a66f41b04b2f23794a523490b21 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 16:52:37 +0100 Subject: [PATCH 04/11] merge gitlab into zenodo_doi and answer Daniel's comment --- pages/your_tasks/gitlab_zenodo.md | 78 ---------------- pages/your_tasks/zenodo_doi.md | 150 ++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+), 78 deletions(-) delete mode 100644 pages/your_tasks/gitlab_zenodo.md create mode 100644 pages/your_tasks/zenodo_doi.md diff --git a/pages/your_tasks/gitlab_zenodo.md b/pages/your_tasks/gitlab_zenodo.md deleted file mode 100644 index 173ddba3..00000000 --- a/pages/your_tasks/gitlab_zenodo.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Publishing software from GitLab to Zenodo -search_exclude: true -description: How to obtain a DOI via Zenodo for your code releases on GitLab -contributors: ["Thomas Vuillaume"] -page_id: gitlab_to_zenodo -related_pages: [releasing_code, github_zenodo, codemeta] -keywords: [zenodo, gitlab, code release] -# More information on which page id you can use can be found at https://rdmkit.elixir-europe.org/website_overview ---- - - - -## How can I get a Digital Object Identifier (DOI) for my code release on GitLab? - -### Description - -Publishing your code to Zenodo is a valuable practice that enhances the visibility, citability, and long-term preservation of your research software. By linking your code repository to Zenodo, you can: - -1. Obtain a Digital Object Identifier (DOI) for your software, making it easier to cite and track. -2. Ensure long-term preservation of your code, even if the original repository becomes unavailable. -3. Increase the discoverability of your software through Zenodo's search functionality and metadata. -4. Comply with funding agency requirements for open science and data sharing. -5. Provide a stable, versioned archive of your software for reproducibility purposes. - -In this document, we describe how to automatically archive a snapshot of your code repository on Zenodo whenever you create a new release on GitLab. - -### Considerations - -* You use a GitLab instance (either on gitlab.com or self-hosted) as your software repository -* You make software releases (e.g. using [semantic versioning][semantic-versioning]) -* You use or are happy to make an account on the [Zenodo][zenodo] archive -* You would like to archive your code on Zenodo and obtain a DOI for each software release that people can use to cite your work -* You can provide metadata for your software in a `.zenodo.json` file or a `codemeta.json` file in the root of your repository to specify the metadata for your Zenodo deposit. -* Your GitLab repository can run CI/CD pipelines. - -### Solutions - -* Provide software metadata in a `.zenodo.json` or `codemeta.json` file. - * Create a `.zenodo.json` file in the root directory of your repository following the [Zenodo's metadata schema](https://developers.zenodo.org/#metadata). - * Use the [Zenodo's sandbox](https://sandbox.zenodo.org/) to test your metadata. - -* Get a [Zenodo token](https://zenodo.org/account/settings/applications/tokens/new/) with publishing rights (`deposit:actions` and `deposit:write` scopes). - -* Add the [eossr](https://escape-ossr.gitlab.io/eossr/gitlab_to_zenodo.html) or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. - -* [Create a GitLab release](https://everse.software/RSQKit/releasing_code) in your repository. - * Go to your repository - * Click on releases and then on New release - * Use the same version number as specified in your metadata (e.g. `1.0.0`). - * Add release notes - * Click on Create release - -* The CI pipeline will automatically push your code on Zenodo. - -* Get the DOI: - * After the GitLab release, go to Zenodo, where you will see your repository archived with a DOI assigned to it. Your badge is available in "Details": - -![Badge in Zenodo](../../images/badge_zenodo.png) - -* You may copy the badge in your README file: - * Now you can add the Zenodo badge in your GitLab repository. Click on the blue DOI and copy the markdown in your README. It will show as follows: - -![Badge in your repository](../../images/badge_in_repo.png) - -## Tools and resources - -* Tools: [GitLab][gitlab], [Zenodo][zenodo], [eossr](https://escape-ossr.gitlab.io/eossr/), [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) - -## References - -[calver]: (https://calver.org/) -[datacite-doi-software]: (https://datacite.org/blog/doi-registrations-software/) -[doi]: (https://www.doi.org/) -[semantic-versioning]: (https://semver.org/) -[what-are-pids]: (https://support.orcid.org/hc/en-us/articles/360006971013-What-are-persistent-identifiers-PIDs) -[zenodo]: (https://zenodo.org/) -[gitlab]: (https://gitlab.com/) diff --git a/pages/your_tasks/zenodo_doi.md b/pages/your_tasks/zenodo_doi.md new file mode 100644 index 00000000..80c2f8ac --- /dev/null +++ b/pages/your_tasks/zenodo_doi.md @@ -0,0 +1,150 @@ +--- +title: Digital Software Identifiers (DOI) for Software +description: Obtaining a DOI via Zenodo for software hosted on GitHub +contributors: ["Shoaib Sufi", "Daniel Garijo", "Thomas Vuillaume"] +page_id: zenodo_doi +related_pages: + your_tasks: [releasing_code] +--- + +## What is a Digital Object Identifier? + +A Digital Object Identifier (DOI) is a [persistent identifier][what-are-pids] or a handle used to uniquely identify +various objects, such as journal articles, research reports, dataset or software, standardised by the International +Organization for Standardisation (ISO). + +A DOI fits within the URI (Uniform Resource Identifier) system, and also resolves to its target - the information +object to which the DOI refers. +This is achieved by binding the DOI to metadata about the object, such as a URL where the object is located. + +Obtaining a DOI for software has become [increasingly popular][datacite-doi-software] to indicate to others how to +cite your software (either in a publication or as an independent way of referring to your software). + +There are many services that can "mint" DOIs, i.e. perform the process of creating and assigning a DOI to an object. +We will explore how you can do that for your software using {% tool "zenodo" %}, a general-purpose open archive and +publishing repository developed under the European OpenAIRE program and operated by CERN. + +Zenodo's DOI versioning feature allows users to create a **concept DOI** (which represents the software package as a +whole, including all its versions) and multiple **release DOIs** for software packages (with each DOI representing a +specific version of the software package). +In other words, the concept DOI is a reference to a software project as a whole, while the software version DOI is a +reference to a particular software release. + +## Why is it important? + +Publishing your code to Zenodo is a valuable practice that enhances the visibility, citability, and long-term preservation of your research software. By linking your code repository to Zenodo, you can: + +1. Obtain a Digital Object Identifier (DOI) for your software, making it easier to cite and track. +2. Ensure long-term preservation of your code, even if the original repository becomes unavailable. +3. Increase the discoverability of your software through Zenodo's search functionality and metadata. +4. Comply with funding agency requirements for open science and data sharing. +5. Provide a stable, versioned archive of your software for reproducibility purposes. + +In this document, we describe how to automatically archive a snapshot of your code repository on Zenodo whenever you create a new release of your software. + + +## How can I get a Digital Object Identifier (DOI) for code hosted on GitHub using Zenodo? + +Here we describe how to obtain a DOI for your software hosted on {% tool "github" %} using Zenodo. + +### Considerations + +* While this is not mandatory, using {% tool "github" %} as your software repository can help with issuing DOIs for your software due to its integration with {% tool "zenodo" %}. +* You want to publish a software release of your code (e.g. using [semantic versioning][semantic-versioning]). +* You need an account on {% tool "zenodo" %} and you can create it using your {% tool "github" %} account (effectively linking the two). +If you already have a {% tool "zenodo" %} account that is not linked to your {% tool "github" %} account - you can always link them from {% tool "zenodo" %} later. + +### Solutions + +* If you do not have a Zenodo account - create a Zenodo account now preferably with your GitHub account. +* If you already have a Zenodo account, link your GitHub account to Zenodo as follows: + * Go to Zenodo website. + * Navigate to your [Zenodo profile page](https://zenodo.org/account/settings/profile). + * Select the `GitHub` tab, then click on `Connect`. + * Authorise Zenodo to access your GitHub account + * Choose which repository you would like to create a DOI for under the repositories sections + * You may need to scroll down to find the repository if you have access to many repositories +* From Github, [create a release](./releasing_code) for the software repository you have enabled: + * Go to your repository software repository on GitHub. + * Click on `Releases` and then `Draft a new release` button. + * Remember to use a version number ([semantic versioning][semantic-versioning] is commonly used but there are other schemes such as [CalVer][calver] which is date based) +* Zenodo will automatically archive this release due to its integration with GitHub: + * Once your GitHub repository is linked to Zenodo, any new release you publish on GitHub will be archived by Zenodo. + * Zenodo will automatically issue a DOI for each new release. +* Get the DOI: + * After making the release in GitHub, go back to the [GitHub option on Zenodo for your account][your-zenodo-github] where you will see + your repository archived with a DOI assigned to it. If you click on it - you will be taken to the Zenodo record for + your software. You can see the Zenodo DOI badge under `Details`: + +![Badge in Zenodo](../../images/badge_zenodo.png) + +* Copy the badge to the README file in your software repository in GitHub: + * Click on the blue DOI badge - a window will pop up with badge in various formats. + * Copy the Markdown version to your README. It will show in GitHub as follows: + +![Badge in GitHub repository](../../images/badge_in_repo.png) + +Also check: + +- [GitHub's Documentation on Referencing and Citing Content][github-referencing-and-citing-content] +- [GitHub Integration FAQ on Zenodo][github-faq-zenodo] +- [Making code citable with Zenodo and GitHub][citable-github-ssi] guide from Software Sustainability Institute + + +## How can I get a Digital Object Identifier (DOI) for code hosted on GitLab using Zenodo? + +Here we describe how to obtain a DOI for your software hosted on {% tool "gitlab" %} using Zenodo. + + +### Considerations + +* You use a {% tool "gitlab" %} instance (either on gitlab.com or self-hosted) as your software repository +* You make software releases (e.g. using [semantic versioning][semantic-versioning]) +* You use or are happy to make an account on {% tool "zenodo" %} +* You would like to archive your code on {% tool "zenodo" %} and obtain a DOI for each software release that people can use to cite your work +* You can provide metadata for your software in a `.zenodo.json` file or a `codemeta.json` file in the root of your repository to specify the metadata for your Zenodo deposit. +* Your {% tool "gitlab" %} repository can run CI/CD pipelines. + +### Solutions + +* Provide software metadata in a `codemeta.json` file at the root of your repository. See [codemeta](https://everse.software/RSQKit/codemeta) for more information. + +* Get a [Zenodo token](https://zenodo.org/account/settings/applications/tokens/new/) with publishing rights (`deposit:actions` and `deposit:write` scopes). + +* Add the [eossr](https://escape-ossr.gitlab.io/eossr/gitlab_to_zenodo.html) or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. + * Note that if using gitlab2zenodo, you will need to convert your `codemeta.json` file to a `.zenodo.json` file, e.g. using the eossr. + +* [Create a GitLab release](https://everse.software/RSQKit/releasing_code) in your repository. + * Go to your repository + * Click on releases and then on New release + * Use the same version number as specified in your metadata (e.g. `1.0.0`). + * Add release notes + * Click on Create release + +* The CI pipeline will automatically push your code on Zenodo. + +* Get the DOI: + * After the GitLab release, go to Zenodo, where you will see your repository archived with a DOI assigned to it. Your badge is available in "Details": + +![Badge in Zenodo](../../images/badge_zenodo.png) + +* You may copy the badge in your README file: + * Now you can add the Zenodo badge in your GitLab repository. Click on the blue DOI and copy the markdown in your README. It will show as follows: + +![Badge in your repository](../../images/badge_in_repo.png) + + + + +[calver]: https://calver.org/ +[citable-github-ssi]: https://www.software.ac.uk/blog/making-code-citable-zenodo-and-github +[datacite-doi-software]: https://datacite.org/blog/doi-registrations-software/) +[doi]: https://www.doi.org/ +[github]: https://github.com/ +[github-faq-zenodo]: https://support.zenodo.org/help/en-gb/24-github-integration +[github-referencing-and-citing-content]: https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content +[semantic-versioning]: https://semver.org/ +[what-are-pids]: https://support.orcid.org/hc/en-us/articles/360006971013-What-are-persistent-identifiers-PIDs +[your-zenodo-github]: https://zenodo.org/account/settings/github/ + + From 1a6cfe4e287f8a870486aa108faf1e6f50463040 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:02:38 +0100 Subject: [PATCH 05/11] remove github_zenodo page --- pages/your_tasks/github_zenodo.md | 93 ------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 pages/your_tasks/github_zenodo.md diff --git a/pages/your_tasks/github_zenodo.md b/pages/your_tasks/github_zenodo.md deleted file mode 100644 index 19586c9b..00000000 --- a/pages/your_tasks/github_zenodo.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Digital Software Identifiers (DOI) for Software -description: Obtaining a DOI via Zenodo for software -contributors: ["Shoaib Sufi", "Daniel Garijo"] -page_id: zenodo_doi -related_pages: - your_tasks: [releasing_code] ---- - -## What is a Digital Object Identifier? - -A Digital Object Identifier (DOI) is a [persistent identifier][what-are-pids] or a handle used to uniquely identify -various objects, such as journal articles, research reports, dataset or software, standardised by the International -Organization for Standardisation (ISO). - -A DOI fits within the URI (Uniform Resource Identifier) system, and also resolves to its target - the information -object to which the DOI refers. -This is achieved by binding the DOI to metadata about the object, such as a URL where the object is located. - -Obtaining a DOI for software has become [increasingly popular][datacite-doi-software] to indicate to others how to -cite your software (either in a publication or as an independent way of referring to your software). - -There are many services that can "mint" DOIs, i.e. perform the process of creating and assigning a DOI to an object. -We will explore how you can do that for your software using {% tool "zenodo" %}, a general-purpose open archive and -publishing repository developed under the European OpenAIRE program and operated by CERN. - -## How can I get a Digital Object Identifier (DOI) for code using Zenodo? - -### Description - -Zenodo's DOI versioning feature allows users to create a **concept DOI** (which represents the software package as a -whole, including all its versions) and multiple **release DOIs** for software packages (with each DOI representing a -specific version of the software package). -In other words, the concept DOI is a reference to a software project as a whole, while the software version DOI is a -reference to a particular software release. - -### Considerations - -* While this is not mandatory, using {% tool "github" %} as your software repository can help with issuing DOIs for your software due to its integration with Zenodo. -If you are not using GitHub, you will need to upload each software version to Zenodo manually. -* You want to publish a software release of your code (e.g. using [semantic versioning][semantic-versioning]). -* You need an account on {% tool "zenodo" %} and you can create is using your GitHub account (effectively linking the two). -If you already have a Zenodo account that is not linked to your GitHub account - you can always link them from Zenodo later. - -### Solutions - -* If you do not have a Zenodo account - create a Zenodo account now preferably with your GitHub account. -* If you already have a Zenodo account, link your GitHub account to Zenodo as follows: - * Go to Zenodo website. - * Navigate to your [Zenodo profile page](https://zenodo.org/account/settings/profile). - * Select the `GitHub` tab, then click on `Connect`. - * Authorise Zenodo to access your GitHub account - * Choose which repository you would like to create a DOI for under the repositories sections - * You may need to scroll down to find the repository if you have access to many repositories -* From Github, [create a release](./releasing_code) for the software repository you have enabled: - * Go to your repository software repository on GitHub. - * Click on `Releases` and then `Draft a new release` button. - * Remember to use a version number ([semantic versioning][semantic-versioning] is commonly used but there are other schemes such as [CalVer][calver] which is date based) -* Zenodo will automatically archive this release due to its integration with GitHub: - * Once your GitHub repository is linked to Zenodo, any new release you publish on GitHub will be archived by Zenodo. - * Zenodo will automatically issue a DOI for each new release. -* Get the DOI: - * After making the release in GitHub, go back to the [GitHub option on Zenodo for your account][your-zenodo-github] where you will see - your repository archived with a DOI assigned to it. If you click on it - you will be taken to the Zenodo record for - your software. You can see the Zenodo DOI badge under `Details`: - -![Badge in Zenodo](../../images/badge_zenodo.png) - -* Copy the badge to the README file in your software repository in GitHub: - * Click on the blue DOI badge - a window will pop up with badge in various formats. - * Copy the Markdown version to your README. It will show in GitHub as follows: - -![Badge in GitHub repository](../../images/badge_in_repo.png) - -Also check: - -- [GitHub's Documentation on Referencing and Citing Content][github-referencing-and-citing-content] -- [GitHub Integration FAQ on Zenodo][github-faq-zenodo] -- [Making code citable with Zenodo and GitHub][citable-github-ssi] guide from Software Sustainability Institute - - -[calver]: https://calver.org/ -[citable-github-ssi]: https://www.software.ac.uk/blog/making-code-citable-zenodo-and-github -[datacite-doi-software]: https://datacite.org/blog/doi-registrations-software/) -[doi]: https://www.doi.org/ -[github]: https://github.com/ -[github-faq-zenodo]: https://support.zenodo.org/help/en-gb/24-github-integration -[github-referencing-and-citing-content]: https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content -[semantic-versioning]: https://semver.org/ -[what-are-pids]: https://support.orcid.org/hc/en-us/articles/360006971013-What-are-persistent-identifiers-PIDs -[your-zenodo-github]: https://zenodo.org/account/settings/github/ - - From dc52d4ac3061e80373ad3e522ecf4dde6d3f7213 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:08:27 +0100 Subject: [PATCH 06/11] formatting --- pages/your_tasks/codemeta.md | 2 +- pages/your_tasks/zenodo_doi.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/your_tasks/codemeta.md b/pages/your_tasks/codemeta.md index 2ee968ea..17d030e5 100644 --- a/pages/your_tasks/codemeta.md +++ b/pages/your_tasks/codemeta.md @@ -4,7 +4,7 @@ description: What is CodeMeta and how to write a CodeMeta file for your software contributors: ["Daniel Garijo"] page_id: codemeta related_pages: - your_tasks: [github_zenodo] + your_tasks: [zenodo_doi] --- ## What is CodeMeta? [CodeMeta](https://codemeta.github.io/terms/) is a community standard for interchanging software metadata records. It consists on a set of properties that extend [Schema.org](https://schema.org) (a popular vocabulary designed to describe Digital Objects on the Web) with software-specific metadata (e.g., maintainer, build instructions, software documentation, etc.) diff --git a/pages/your_tasks/zenodo_doi.md b/pages/your_tasks/zenodo_doi.md index 80c2f8ac..d8a199f9 100644 --- a/pages/your_tasks/zenodo_doi.md +++ b/pages/your_tasks/zenodo_doi.md @@ -111,7 +111,7 @@ Here we describe how to obtain a DOI for your software hosted on {% tool "gitlab * Get a [Zenodo token](https://zenodo.org/account/settings/applications/tokens/new/) with publishing rights (`deposit:actions` and `deposit:write` scopes). -* Add the [eossr](https://escape-ossr.gitlab.io/eossr/gitlab_to_zenodo.html) or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. +* Add the {% tool "eossr" %} or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. * Note that if using gitlab2zenodo, you will need to convert your `codemeta.json` file to a `.zenodo.json` file, e.g. using the eossr. * [Create a GitLab release](https://everse.software/RSQKit/releasing_code) in your repository. From d629264cc64da65b4890f505489e56315555066c Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:09:45 +0100 Subject: [PATCH 07/11] fix url --- pages/your_tasks/codemeta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/your_tasks/codemeta.md b/pages/your_tasks/codemeta.md index 17d030e5..db65d59a 100644 --- a/pages/your_tasks/codemeta.md +++ b/pages/your_tasks/codemeta.md @@ -13,7 +13,7 @@ related_pages: ### Description -By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](https://everse.software/RSQKit/github_zenodo), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like {% tool "zenodo" %}, {% tool "inveniordm" %} and {% tool "softwareheritage" %}. +By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](https://everse.software/RSQKit/zenodo_doi), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like {% tool "zenodo" %}, {% tool "inveniordm" %} and {% tool "softwareheritage" %}. But how to create a `codemeta.json` file? From 35d919d7c563ef461527727bbddda0a47ef57095 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:13:52 +0100 Subject: [PATCH 08/11] fix sidebar --- _data/sidebars/main.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/_data/sidebars/main.yml b/_data/sidebars/main.yml index fa332456..3e25afe3 100644 --- a/_data/sidebars/main.yml +++ b/_data/sidebars/main.yml @@ -54,10 +54,8 @@ subitems: url: /codemeta - title: Licensing software url: /licensing_software - - title: Publishing software from GitHub to Zenodo - url: /github_zenodo - - title: Publishing software from GitLab to Zenodo - url: /gitlab_zenodo + - title: Obtaining a DOI via Zenodo for software + url: /zenodo_doi - title: Reproducible virtual software development environments url: /virtual_dev_environments - title: Testing code From d2bcbd3231a9e271b1a0f1a81c8983213d905539 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:14:36 +0100 Subject: [PATCH 09/11] fix title --- pages/your_tasks/zenodo_doi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/your_tasks/zenodo_doi.md b/pages/your_tasks/zenodo_doi.md index d8a199f9..1c1b3433 100644 --- a/pages/your_tasks/zenodo_doi.md +++ b/pages/your_tasks/zenodo_doi.md @@ -1,6 +1,6 @@ --- title: Digital Software Identifiers (DOI) for Software -description: Obtaining a DOI via Zenodo for software hosted on GitHub +description: Obtaining a DOI via Zenodo for software contributors: ["Shoaib Sufi", "Daniel Garijo", "Thomas Vuillaume"] page_id: zenodo_doi related_pages: From e8d19f9508bf2d0a64c32908d5ab148b63b07e63 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:16:31 +0100 Subject: [PATCH 10/11] use relative url --- pages/your_tasks/codemeta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/your_tasks/codemeta.md b/pages/your_tasks/codemeta.md index db65d59a..7485f861 100644 --- a/pages/your_tasks/codemeta.md +++ b/pages/your_tasks/codemeta.md @@ -13,7 +13,7 @@ related_pages: ### Description -By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](https://everse.software/RSQKit/zenodo_doi), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like {% tool "zenodo" %}, {% tool "inveniordm" %} and {% tool "softwareheritage" %}. +By adding a `codemeta.json` file in your root source code repository, you will ease metadata propagation between different archival infrastructures. For example, when [obtaining DOIs for your code releases](./zenodo_doi), you won't need to fill in the corresponding software metadata again. CodeMeta is recognised and used by major code repositories and registries like {% tool "zenodo" %}, {% tool "inveniordm" %} and {% tool "softwareheritage" %}. But how to create a `codemeta.json` file? From 2612ac9dbeca5b5d27795b6d9f2a3872660746a1 Mon Sep 17 00:00:00 2001 From: Thomas Vuillaume Date: Fri, 10 Jan 2025 17:17:13 +0100 Subject: [PATCH 11/11] use relative url --- pages/your_tasks/zenodo_doi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/your_tasks/zenodo_doi.md b/pages/your_tasks/zenodo_doi.md index 1c1b3433..778d2305 100644 --- a/pages/your_tasks/zenodo_doi.md +++ b/pages/your_tasks/zenodo_doi.md @@ -107,14 +107,14 @@ Here we describe how to obtain a DOI for your software hosted on {% tool "gitlab ### Solutions -* Provide software metadata in a `codemeta.json` file at the root of your repository. See [codemeta](https://everse.software/RSQKit/codemeta) for more information. +* Provide software metadata in a `codemeta.json` file at the root of your repository. See [codemeta](./codemeta) for more information. * Get a [Zenodo token](https://zenodo.org/account/settings/applications/tokens/new/) with publishing rights (`deposit:actions` and `deposit:write` scopes). * Add the {% tool "eossr" %} or the [gitlab2zenodo](https://gitlab.com/sbeniamine/gitlab2zenodo) libraries in your [GitLab-CI pipeline](https://docs.gitlab.com/ee/ci/yaml/) to automatically archive your code on Zenodo whenever you create a new release. * Note that if using gitlab2zenodo, you will need to convert your `codemeta.json` file to a `.zenodo.json` file, e.g. using the eossr. -* [Create a GitLab release](https://everse.software/RSQKit/releasing_code) in your repository. +* [Create a GitLab release](./releasing_code) in your repository. * Go to your repository * Click on releases and then on New release * Use the same version number as specified in your metadata (e.g. `1.0.0`).