From a255b417dabf3f3edc712089897f6c5b92f87fee Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:07:47 +0000 Subject: [PATCH 01/20] fix: merge exclude fields in config --- _config.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/_config.yml b/_config.yml index 6033680..90d707c 100644 --- a/_config.yml +++ b/_config.yml @@ -17,6 +17,7 @@ gtag: G-CNXER21LC6 remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@3.0.0 exclude: + - README.md - .gitignore - var/ - vendor @@ -51,11 +52,3 @@ theme_variables: brand_logo: assets/img/logo-rsec.svg headings: resource-table-all: " " - -exclude: - - README.md - - .gitignore - - var/ - - vendor - - Gemfile* - - LICENSE From bd61833ceca6be4e78274c2385514a0932cf8e80 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:18:48 +0000 Subject: [PATCH 02/20] feat: more accurate submenu --- _data/topnav.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_data/topnav.yml b/_data/topnav.yml index e528ae6..4bebd1e 100644 --- a/_data/topnav.yml +++ b/_data/topnav.yml @@ -15,7 +15,7 @@ subitems: url: /contributors - title: Contacts url: /contacts - - title: Publications and presentations + - title: Publications url: /publications - title: Credits url: /credits From 859433c0a32576320c77b8d1d20f6d985f4db8e0 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:26:18 +0000 Subject: [PATCH 03/20] style: text edits --- applications.md | 2 +- contributors.md | 2 +- licence.md | 5 ++--- sources.md | 4 ++++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/applications.md b/applications.md index c1b186a..4690c5c 100644 --- a/applications.md +++ b/applications.md @@ -5,4 +5,4 @@ title: Applications page_id: applications --- - +RSEc metadata supports a variety of downstream applications, from workflow catalogues to benchmarking dashboards. Browse the applications below to see how the ecosystem is reused. diff --git a/contributors.md b/contributors.md index 2dbe2d9..a4c981c 100644 --- a/contributors.md +++ b/contributors.md @@ -4,7 +4,7 @@ title: Contributors --- - +The Research Software Ecosystem is built by a community across ELIXIR and collaborating organisations. The list below is generated from `_data/CONTRIBUTORS.yml`. {% include contributor-tiles-all.html %} diff --git a/licence.md b/licence.md index 3f8679a..8aeb690 100644 --- a/licence.md +++ b/licence.md @@ -1,8 +1,7 @@ --- # Feel free to add content and custom Front Matter to this file. # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults - +title: License --- - [Code for the Research Software Ecosystem](https://github.com/research-software-ecosystem/utils) is available under the terms of the [MIT license](https://github.com/research-software-ecosystem/utils/blob/main/LICENSE). -- [Contents of the Research Software Ecosystem](https://github.com/research-software-ecosystem/content) is available under the terms of the [Creative Commons Attribution 4.0 International license](https://github.com/research-software-ecosystem/content/blob/master/LICENSE), unless stated otherwise for specific contr -ibutions. +- [Contents of the Research Software Ecosystem](https://github.com/research-software-ecosystem/content) is available under the terms of the [Creative Commons Attribution 4.0 International license](https://github.com/research-software-ecosystem/content/blob/master/LICENSE), unless stated otherwise for specific contributions. diff --git a/sources.md b/sources.md index 09ce142..55bfb39 100644 --- a/sources.md +++ b/sources.md @@ -4,3 +4,7 @@ title: Sources page_id: sources --- + +The RSEc aggregates metadata from the registries and services below. Each source is refreshed regularly through the automated import workflows described in the documentation. + +Explore the sources below to learn how each registry contributes metadata to the ecosystem. For technical details on update schedules and formats, see the Documentation page. From b839531ccc5f60b30dd10bc50a1f5b2c9c2bbc76 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:31:45 +0000 Subject: [PATCH 04/20] feat: improved 404 page --- 404.html | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/404.html b/404.html index 086a5c9..324c556 100644 --- a/404.html +++ b/404.html @@ -1,25 +1,13 @@ --- permalink: /404.html -layout: default +layout: page --- - - -
-

404

- -

Page not found :(

-

The requested page could not be found.

+
+

Page not found

+

The requested page could not be found.

+

+ Back to home + Browse metadata sources +

From 80752d61508e6a82ebccf72a8fa2183f7cc870ba Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:34:16 +0000 Subject: [PATCH 05/20] chore: cleanup unused files --- _posts/2024-04-29-welcome-to-jekyll.markdown | 28 ------------------- assets/img/logo-rsec.bmp | Bin 1161270 -> 0 bytes 2 files changed, 28 deletions(-) delete mode 100644 _posts/2024-04-29-welcome-to-jekyll.markdown delete mode 100644 assets/img/logo-rsec.bmp diff --git a/_posts/2024-04-29-welcome-to-jekyll.markdown b/_posts/2024-04-29-welcome-to-jekyll.markdown deleted file mode 100644 index bc30d3c..0000000 --- a/_posts/2024-04-29-welcome-to-jekyll.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Welcome to Jekyll!" -date: 2024-04-29 22:09:46 +0200 -categories: jekyll update ---- -You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -Jekyll requires blog post files to be named according to the following format: - -`YEAR-MONTH-DAY-title.MARKUP` - -Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -Jekyll also offers powerful support for code snippets: - -{% highlight ruby %} -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -{% endhighlight %} - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: https://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/assets/img/logo-rsec.bmp b/assets/img/logo-rsec.bmp deleted file mode 100644 index 2be6a1b4431d4ab1c6848795067f0cc3612c94b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161270 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�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 Date: Mon, 5 Jan 2026 11:35:24 +0000 Subject: [PATCH 06/20] feat: improve consistency by versioning gemfile lock --- Gemfile.lock | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..bb5aba8 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,308 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (8.1.1) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (4.0.1) + colorator (1.1.0) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + drb (2.2.3) + elixir-toolkit-theme-plugins (0.1.10) + jekyll (~> 4.3, >= 4.3.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + faraday (2.14.0) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.2) + net-http (~> 0.5) + ffi (1.17.3-aarch64-linux-gnu) + ffi (1.17.3-aarch64-linux-musl) + ffi (1.17.3-arm-linux-gnu) + ffi (1.17.3-arm-linux-musl) + ffi (1.17.3-arm64-darwin) + ffi (1.17.3-x86_64-darwin) + ffi (1.17.3-x86_64-linux-gnu) + ffi (1.17.3-x86_64-linux-musl) + forwardable-extended (2.6.0) + gemoji (4.1.0) + google-protobuf (4.33.2) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-aarch64-linux-gnu) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-aarch64-linux-musl) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-x86_64-linux-gnu) + bigdecimal + rake (>= 13) + google-protobuf (4.33.2-x86_64-linux-musl) + bigdecimal + rake (>= 13) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.1) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + jekyll (4.3.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-diagrams (0.10.0) + jekyll (>= 3.8, < 5.0) + jekyll-github-metadata (2.16.1) + jekyll (>= 3.4, < 5.0) + octokit (>= 4, < 7, != 4.4.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.7.0) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + json (2.18.0) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.4.0) + minitest (6.0.1) + prism (~> 1.5) + net-http (0.9.1) + uri (>= 0.11.1) + nokogiri (1.19.0-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.0-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.0-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.0-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.19.0-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.0-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.19.0-x86_64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.0-x86_64-linux-musl) + racc (~> 1.4) + octokit (6.1.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + prism (1.7.0) + public_suffix (7.0.2) + racc (1.8.1) + rake (13.3.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (4.7.0) + rubyzip (2.4.1) + safe_yaml (1.0.5) + sass-embedded (1.97.1-aarch64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-aarch64-linux-musl) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-arm-linux-gnueabihf) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-arm-linux-musleabihf) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-arm64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-x86_64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-x86_64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.97.1-x86_64-linux-musl) + google-protobuf (~> 4.31) + sawyer (0.9.3) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + securerandom (0.4.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.6.0) + uri (1.1.1) + webrick (1.9.2) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + elixir-toolkit-theme-plugins (~> 0.1.10) + jekyll (~> 4.3.2) + jekyll-diagrams + jekyll-github-metadata (~> 2.16.0) + jekyll-redirect-from (~> 0.16.0) + jekyll-relative-links (~> 0.7.0) + jekyll-remote-theme (~> 0.4.3) + jekyll-seo-tag (~> 2.8) + jekyll-sitemap (~> 1.4) + jemoji (~> 0.13.0) + kramdown-parser-gfm (~> 1.1) + webrick (~> 1.9.1) + +CHECKSUMS + activesupport (8.1.1) sha256=5e92534e8d0c8b8b5e6b16789c69dbea65c1d7b752269f71a39422e9546cea67 + addressable (2.8.8) sha256=7c13b8f9536cf6364c03b9d417c19986019e28f7c00ac8132da4eb0fe393b057 + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7 + colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38 + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a + drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 + elixir-toolkit-theme-plugins (0.1.10) sha256=407c6aee929390d3cbc52082b76f2d415ad1f9e80d16fec689ef9b5b0afbd26f + em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8 + eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972 + faraday (2.14.0) sha256=8699cfe5d97e55268f2596f9a9d5a43736808a943714e3d9a53e6110593941cd + faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c + ffi (1.17.3-aarch64-linux-gnu) sha256=28ad573df26560f0aedd8a90c3371279a0b2bd0b4e834b16a2baa10bd7a97068 + ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2 + ffi (1.17.3-arm-linux-gnu) sha256=5bd4cea83b68b5ec0037f99c57d5ce2dd5aa438f35decc5ef68a7d085c785668 + ffi (1.17.3-arm-linux-musl) sha256=0d7626bb96265f9af78afa33e267d71cfef9d9a8eb8f5525344f8da6c7d76053 + ffi (1.17.3-arm64-darwin) sha256=0c690555d4cee17a7f07c04d59df39b2fba74ec440b19da1f685c6579bb0717f + ffi (1.17.3-x86_64-darwin) sha256=1f211811eb5cfaa25998322cdd92ab104bfbd26d1c4c08471599c511f2c00bb5 + ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f + ffi (1.17.3-x86_64-linux-musl) sha256=086b221c3a68320b7564066f46fed23449a44f7a1935f1fe5a245bd89d9aea56 + forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97 + gemoji (4.1.0) sha256=734434020cbe964ea9d19086798797a47d23a170892de0ce55b74aa65d2ddc1a + google-protobuf (4.33.2) sha256=748150d6c642fd655ef39efa23ecf2abe6d616020039a6d1c1764be1da530315 + google-protobuf (4.33.2-aarch64-linux-gnu) sha256=822b2dcb707e94e652cd994642c31035935fca021adfac6164772c511eb7acd4 + google-protobuf (4.33.2-aarch64-linux-musl) sha256=c4b64428183cfd1953ec8c37beec1036668c8ec0865cfb0b18df21181ca397ee + google-protobuf (4.33.2-arm64-darwin) sha256=6d0ac185fed18768e5f16338455b1e4b7c38a97fc46f352e709f7a3007b64e1d + google-protobuf (4.33.2-x86_64-darwin) sha256=87cde586234674562cf099e2b708a65e376e2d39b0f0f48281f4b4ea182b47f8 + google-protobuf (4.33.2-x86_64-linux-gnu) sha256=73cba041477afcac92ff383fcbdec195ea28d96b994876d1deaa944d18f91786 + google-protobuf (4.33.2-x86_64-linux-musl) sha256=97cdf4f772c5540f9274603b00f1474ed5e6e2238b1d8b1585e77f941a36bd2c + html-pipeline (2.14.3) sha256=8a1d4d7128b2141913387cac0f8ba898bb6812557001acc0c2b46910f59413a0 + http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a + i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 + jekyll (4.3.4) sha256=c488282c2819c392d34d3a3784eacde2cde4b61c8e3c9c9295f6c01fb1754404 + jekyll-diagrams (0.10.0) sha256=616e9baf32cc5c05d30fd6354d4e6014e501d1a23cf862e0788569854fb32189 + jekyll-github-metadata (2.16.1) sha256=4cf29988bdaf24774a7bc07fae71e54424ddfaa2895f742d8fa3036d0db65b4c + jekyll-redirect-from (0.16.0) sha256=6635cae569ef9b0f90ffb71ec014ba977177fafb44d32a2b0526288d4d9be6db + jekyll-relative-links (0.7.0) sha256=831e54c348eeae751845c0d4ac4b244bd73b664341f0e8c9f1803b16f4570835 + jekyll-remote-theme (0.4.3) sha256=d3fde726484fb3df04de9e347baf75aaa3d5bfea771a330412e0c52608e54b40 + jekyll-sass-converter (3.0.0) sha256=e2e7674f186e906b9d99b8066e13f9b4d5cb9f806d36f7bc8cf2610053d8c902 + jekyll-seo-tag (2.8.0) sha256=3f2ed1916d56f14ebfa38e24acde9b7c946df70cb183af2cb5f0598f21ae6818 + jekyll-sitemap (1.4.0) sha256=0de08c5debc185ea5a8f980e1025c7cd3f8e0c35c8b6ef592f15c46235cf4218 + jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1 + jemoji (0.13.0) sha256=5d4c3e8e2cbbb2b73997c31294f6f70c94e4d4fade039373e86835bcf5529e7c + json (2.18.0) sha256=b10506aee4183f5cf49e0efc48073d7b75843ce3782c68dbeb763351c08fd505 + kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c + kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 + liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3 + listen (3.9.0) sha256=db9e4424e0e5834480385197c139cb6b0ae0ef28cc13310cfd1ca78377d59c67 + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + mercenary (0.4.0) sha256=b25a1e4a59adca88665e08e24acf0af30da5b5d859f7d8f38fba52c28f405138 + minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb + net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 + nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767 + nokogiri (1.19.0-aarch64-linux-musl) sha256=eb70507f5e01bc23dad9b8dbec2b36ad0e61d227b42d292835020ff754fb7ba9 + nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5 + nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c + nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810 + nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067 + nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c + nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4 + octokit (6.1.1) sha256=920e4a9d820205f70738f58de6a7e6ef0e2f25b27db954b5806a63105207b0bf + pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 + prism (1.7.0) sha256=10062f734bf7985c8424c44fac382ac04a58124ea3d220ec3ba9fe4f2da65103 + public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857 + racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f + rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c + rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe + rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rouge (4.7.0) sha256=dba5896715c0325c362e895460a6d350803dbf6427454f49a47500f3193ea739 + rubyzip (2.4.1) sha256=8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615 + safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848 + sass-embedded (1.97.1-aarch64-linux-gnu) sha256=427e7d90e69ac578a2f2f4460d4ad663ce27abd379ce79d17d8426e05079c8c5 + sass-embedded (1.97.1-aarch64-linux-musl) sha256=11728a50789f6872b548d888fefb7ab0141e277f28038520bf698057acc41ea6 + sass-embedded (1.97.1-arm-linux-gnueabihf) sha256=5484d596693d2018f20a9c46b6d1a234d97308fdd2169f8c6b1d8a9bd0f121dc + sass-embedded (1.97.1-arm-linux-musleabihf) sha256=b99fa71e32e1f7be57cf801ce08f4c1ffb2d1151d31f1134a1c334364c1c3274 + sass-embedded (1.97.1-arm64-darwin) sha256=9da08e5cc569ef62235fc515a87c75a47b0de40d8416c563ba1abfbe60e606d9 + sass-embedded (1.97.1-x86_64-darwin) sha256=f2b65c45bce72bc893511692aa4e4f309cfbe23c035ec688190a0c758c8e77a6 + sass-embedded (1.97.1-x86_64-linux-gnu) sha256=9a294bb0acb1a539ed19f0e511098a9740b4aab4389e169585e8da1337fbd8b4 + sass-embedded (1.97.1-x86_64-linux-musl) sha256=c383026b7a70d52b0ef4be73c45cc1399fc65f95e851b0fc9265c8d89f151556 + sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 + securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 + terminal-table (3.0.2) sha256=f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91 + tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b + unicode-display_width (2.6.0) sha256=12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a + uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 + webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131 + +BUNDLED WITH + 4.0.3 From a1cd851bf6decfd048ec727d65315f6d70320e3e Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:37:03 +0000 Subject: [PATCH 07/20] feat: improved landing page --- index.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 535dce7..e14a77e 100644 --- a/index.md +++ b/index.md @@ -1,10 +1,9 @@ --- -# Feel free to add content and custom Front Matter to this file. -# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults - +title: The Ecosystem ---
+

Discover, trust, and reuse research software metadata

ELIXIR Research Software Ecosystem (RSEc) centralizes and curates high-quality metadata for computational biology software tools, providing a single, trusted resource for researchers. By synchronizing metadata from major software-related services, RSEc enables the discovery, validation and cross-linking of software information. Researchers can use the resource to explore software metadata and improve the consistency and quality of information across the computational biology landscape.

@@ -14,6 +13,10 @@

ELIXIR is a European research infrastructure which manages and safeguards the massive amounts of life science data and tools being generated by publicly-funded research. RSEc has been developed as part of the ELIXIR Tools Platform.

+

+ View metadata sources + Read the documentation +

RSEc diagram From ff9e59263f63c85172eb810d8880009dd87759c3 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 11:38:31 +0000 Subject: [PATCH 08/20] docs: added some sections --- docs.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs.md b/docs.md index 266e6ea..8e9c6d4 100644 --- a/docs.md +++ b/docs.md @@ -7,6 +7,12 @@ title: Documentation ## Introduction The RSEc version-controlled repository federates metadata for research software, predominantly within the life sciences domain. These metadata cover a wide spectrum of use cases, spanning software discovery, evaluation, deployment, and execution. Centralised in an open and version-controlled repository, these metadata can be used to cross-link multiple services, to facilitate curation, and to provide insights on bioinformatics software through their aggregation and analysis. This page contains the information and links to access and understand the software metadata provided by the Research Software Ecosystem, as well as contribution guidelines and support channels. +## Quick start +- Browse metadata directly in the [RSEc content repository](https://github.com/research-software-ecosystem/content) (see `data` and `imports`). +- Check the [imports workflow](https://github.com/research-software-ecosystem/content/tree/master/.github/workflows/import.yaml) to see when each source is refreshed. +- Use the cross-links in the table below to jump between sources (e.g. bio.tools IDs, Bioconda packages, Galaxy tool IDs). +- Open an issue in the [content repo issue tracker](https://github.com/research-software-ecosystem/content/issues) if you spot a metadata problem. + ## Metadata Repository contents The RSEc metadata can be accessed on [the GitHub dedicated repository](https://github.com/research-software-ecosystem/content). The main folders to access metadata are: the `imports` folder, which contains one subfolder per metadata source, and the `data` folder, which contains one subfolder for each of the bio.tools entries, combining bio.tools tools and metadata files which are directly linked to it. An example of this organisation is illustrated in Figure 1. @@ -41,6 +47,12 @@ The RSEc metadata can be accessed on [the GitHub dedicated repository](https://g

+## How to use the metadata +- **Discover tools**: search `data/` folders to see aggregated metadata across registries. +- **Validate metadata**: compare entries across sources (e.g. bio.tools vs OpenEBench) and file PRs to fix discrepancies. +- **Integrate programmatically**: consume the raw JSON/YAML from the repository or mirror it to your own services. +- **Automate updates**: use the weekly imports as a stable schedule for downstream synchronisation. + ## Supported Formats Details about the specific formats for each of the federated resources can be found in the following places: From 2baa396f53815bb2fddb9ae47a41998141eca9cc Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 12:22:56 +0000 Subject: [PATCH 09/20] chore: add myself as contributor --- _data/CONTRIBUTORS.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_data/CONTRIBUTORS.yml b/_data/CONTRIBUTORS.yml index 6532fa0..7a46c16 100644 --- a/_data/CONTRIBUTORS.yml +++ b/_data/CONTRIBUTORS.yml @@ -42,3 +42,7 @@ Veit Schwämmle: email: veits@bmb.sdu.dk orcid: 0000-0002-9708-6722 affiliation: Department of Biochemistry and Molecular Biology, University of Southern Denmark +Mihail Anton: + git: mihai-sysbio + orcid: 0000-0002-7753-9042 + affiliation: ELIXIR \ No newline at end of file From b14abc543f045e3bd7f14157fc419483d9d667d2 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 14:06:04 +0000 Subject: [PATCH 10/20] fix: update gemfile lock --- Gemfile.lock | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Gemfile.lock b/Gemfile.lock index bb5aba8..73b623f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,6 +92,9 @@ GEM jekyll-github-metadata (2.16.1) jekyll (>= 3.4, < 5.0) octokit (>= 4, < 7, != 4.4.0) + jekyll-octicons (19.8.0) + jekyll (>= 3.6, < 5.0) + octicons (= 19.8.0) jekyll-redirect-from (0.16.0) jekyll (>= 3.3, < 5.0) jekyll-relative-links (0.7.0) @@ -144,6 +147,7 @@ GEM racc (~> 1.4) nokogiri (1.19.0-x86_64-linux-musl) racc (~> 1.4) + octicons (19.8.0) octokit (6.1.1) faraday (>= 1, < 3) sawyer (~> 0.9) @@ -205,6 +209,7 @@ DEPENDENCIES jekyll (~> 4.3.2) jekyll-diagrams jekyll-github-metadata (~> 2.16.0) + jekyll-octicons jekyll-redirect-from (~> 0.16.0) jekyll-relative-links (~> 0.7.0) jekyll-remote-theme (~> 0.4.3) @@ -251,6 +256,7 @@ CHECKSUMS jekyll (4.3.4) sha256=c488282c2819c392d34d3a3784eacde2cde4b61c8e3c9c9295f6c01fb1754404 jekyll-diagrams (0.10.0) sha256=616e9baf32cc5c05d30fd6354d4e6014e501d1a23cf862e0788569854fb32189 jekyll-github-metadata (2.16.1) sha256=4cf29988bdaf24774a7bc07fae71e54424ddfaa2895f742d8fa3036d0db65b4c + jekyll-octicons (19.8.0) sha256=b9913d6521b0b6f4ef753d859523fdb61c30f4b9a92aceba764abd7632630b4d jekyll-redirect-from (0.16.0) sha256=6635cae569ef9b0f90ffb71ec014ba977177fafb44d32a2b0526288d4d9be6db jekyll-relative-links (0.7.0) sha256=831e54c348eeae751845c0d4ac4b244bd73b664341f0e8c9f1803b16f4570835 jekyll-remote-theme (0.4.3) sha256=d3fde726484fb3df04de9e347baf75aaa3d5bfea771a330412e0c52608e54b40 @@ -276,6 +282,7 @@ CHECKSUMS nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067 nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4 + octicons (19.8.0) sha256=392e5ab6705451d87816350f51a2295fcb44efb4a8d60a16a21e9a0d72c2afd0 octokit (6.1.1) sha256=920e4a9d820205f70738f58de6a7e6ef0e2f25b27db954b5806a63105207b0bf pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 prism (1.7.0) sha256=10062f734bf7985c8424c44fac382ac04a58124ea3d220ec3ba9fe4f2da65103 From 4ff856e87ba8f15398fd553ec6695fda093440d8 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 5 Jan 2026 13:38:35 +0000 Subject: [PATCH 11/20] feat: minor redesign of home and sources pages --- _data/tool_and_resource_list.yml | 6 +- _data/topnav.yml | 10 +- applications.md | 6 +- contacts.md | 26 ++++ contributors.md | 17 +++ credits.md | 22 +--- docs.md | 201 +++++++++++++++++++------------ index.md | 58 +++++++-- publications.md | 5 + sources.md | 67 ++++++++++- 10 files changed, 300 insertions(+), 118 deletions(-) diff --git a/_data/tool_and_resource_list.yml b/_data/tool_and_resource_list.yml index 0da6eff..5eb1c62 100644 --- a/_data/tool_and_resource_list.yml +++ b/_data/tool_and_resource_list.yml @@ -21,7 +21,7 @@ and BioContainers. related_pages: - applications -- id: galaxy_codex +- id: galaxy name: Galaxy Codex url: https://github.com/galaxyproject/galaxy_codex description: @@ -31,7 +31,7 @@ - sources - id: bioconda name: Bioconda - url: https://bioconda.github.io/ + url: https://bioconda.github.io description: Bioconda is a bioinformatics channel for the Conda package manager registry: @@ -60,7 +60,7 @@ biotools: openebench related_pages: - sources -- id: debianmed +- id: debian-med name: Debian Med url: https://www.debian.org/devel/debian-med/index.en.html description: diff --git a/_data/topnav.yml b/_data/topnav.yml index 4bebd1e..f8b3034 100644 --- a/_data/topnav.yml +++ b/_data/topnav.yml @@ -7,17 +7,15 @@ subitems: url: /sources - title: Applications url: /applications +- title: Documentation + url: /docs +- title: Get support + url: /contacts - title: About subitems: - title: Licence url: /licence - title: Contributors url: /contributors - - title: Contacts - url: /contacts - title: Publications url: /publications - - title: Credits - url: /credits - - title: Documentation - url: /docs diff --git a/applications.md b/applications.md index 4690c5c..ce03fd4 100644 --- a/applications.md +++ b/applications.md @@ -5,4 +5,8 @@ title: Applications page_id: applications --- -RSEc metadata supports a variety of downstream applications, from workflow catalogues to benchmarking dashboards. Browse the applications below to see how the ecosystem is reused. +RSEc metadata supports a variety of downstream applications, from workflow catalogues to benchmarking dashboards. Browse the examples below to see how the ecosystem is reused and get inspiration for your own integrations. + + diff --git a/contacts.md b/contacts.md index 6ccebd1..021762e 100644 --- a/contacts.md +++ b/contacts.md @@ -4,3 +4,29 @@ title: Contacts --- +We are here to help you use, contribute to, and integrate the RSEc metadata. + +
+
+
+
+
Community support
+

Chat with the team and community, ask questions, and share feedback.

+ Join the Gitter channel +
+
+
+
+
+
+
Report metadata issues
+

Spotted an inconsistency or missing link? Let us know.

+ Open a GitHub issue +
+
+
+
+ + diff --git a/contributors.md b/contributors.md index a4c981c..6360fe4 100644 --- a/contributors.md +++ b/contributors.md @@ -8,3 +8,20 @@ The Research Software Ecosystem is built by a community across ELIXIR and collab {% include contributor-tiles-all.html %} +## Funding + +The ELIXIR Research Software Ecosystem is supported and coordinated by [ELIXIR Europe](https://elixir-europe.org/). + +## Credits + +### Framework + +This website uses the [Jekyll framework](https://jekyllrb.com). + +### Theme + +This website uses the [![theme badge](https://img.shields.io/badge/ELIXIR%20toolkit%20theme-jekyll-blue?color=0d6efd)](https://github.com/ELIXIR-Belgium/elixir-toolkit-theme). + +### Icons + +Network icons created by Freepik - Flaticon diff --git a/credits.md b/credits.md index 311fe3e..a603215 100644 --- a/credits.md +++ b/credits.md @@ -1,21 +1,7 @@ --- -# Feel free to add content and custom Front Matter to this file. -# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults - -title: Funding +--- +title: Credits (moved) +redirect_to: /contributors --- -The ELIXIR Research Software Ecosystem is supported and coordinated by [ELIXIR Europe](https://elixir-europe.org/). - -## Credits - -### Framework - -This website uses the [Jekyll framework](https://jekyllrb.com) - -### Theme - -This website uses the [![theme badge](https://img.shields.io/badge/ELIXIR%20toolkit%20theme-jekyll-blue?color=0d6efd)](https://github.com/ELIXIR-Belgium/elixir-toolkit-theme) - -### Icons -Network icons created by Freepik - Flaticon +This page has been merged into the Contributors page. You are being redirected. diff --git a/docs.md b/docs.md index 8e9c6d4..d18c676 100644 --- a/docs.md +++ b/docs.md @@ -5,13 +5,79 @@ title: Documentation --- ## Introduction -The RSEc version-controlled repository federates metadata for research software, predominantly within the life sciences domain. These metadata cover a wide spectrum of use cases, spanning software discovery, evaluation, deployment, and execution. Centralised in an open and version-controlled repository, these metadata can be used to cross-link multiple services, to facilitate curation, and to provide insights on bioinformatics software through their aggregation and analysis. This page contains the information and links to access and understand the software metadata provided by the Research Software Ecosystem, as well as contribution guidelines and support channels. +The RSEc version-controlled repository federates metadata for research software, predominantly within the life sciences domain. These metadata cover a wide spectrum of use cases, spanning software discovery, evaluation, deployment, and execution. + +Centralised in an open and version-controlled repository, the metadata enable cross-linking between services, facilitate curation, and provide insights through aggregation and analysis. This page collects key links to access and understand the software metadata provided by the Research Software Ecosystem, plus contribution guidelines and support channels. ## Quick start -- Browse metadata directly in the [RSEc content repository](https://github.com/research-software-ecosystem/content) (see `data` and `imports`). -- Check the [imports workflow](https://github.com/research-software-ecosystem/content/tree/master/.github/workflows/import.yaml) to see when each source is refreshed. -- Use the cross-links in the table below to jump between sources (e.g. bio.tools IDs, Bioconda packages, Galaxy tool IDs). -- Open an issue in the [content repo issue tracker](https://github.com/research-software-ecosystem/content/issues) if you spot a metadata problem. + +
+
+
+
+
1) Browse
+

Open the content repository and explore `data/` (by tool) or `imports/` (by source).

+
+
+
+
+
+
+
2) Check freshness
+

See when imports run in the GitHub Actions workflow.

+
+
+
+
+
+
+
3) Cross-link
+

Use identifiers in the cross-link table below (e.g. bio.tools IDs, Bioconda packages, Galaxy tool IDs).

+
+
+
+
+
+
+
4) Report
+

Open an issue in the content repo tracker if you spot a problem.

+
+
+
+
+ +## How to use the metadata + +
+
+
+
+
Discover tools
+

Search `data/tool-id` folders to see aggregated metadata across registries.

+
+
+
+
+
+
+
Validate metadata
+

Compare entries across sources (e.g. bio.tools vs OpenEBench) and file PRs to fix discrepancies.

+
+
+
+
+
+
+
Integrate programmatically
+

Consume raw JSON/YAML from the repository, mirror it, or automate updates with the weekly imports.

+
+
+
+
+ + ## Metadata Repository contents @@ -19,40 +85,30 @@ The RSEc metadata can be accessed on [the GitHub dedicated repository](https://g
Fig. 1: Example organisation of the metadata files imported in the RSEc metadata repository -

-

- {% mermaid %} - graph LR - root[https://github.com/research-software-ecosystem/content]; - root--> /imports[imports]; - /imports--> /imports/biotools[biotools]; - /imports/biotools--> /imports/biotools/software1[software1.biotools.json]; - /imports/biotools--> /imports/biotools/software2[software2.biotools.json]; - /imports/biotools--> /imports/biotools/software3[software3.biotools.json]; - /imports--> /imports/bioconda[bioconda]; - /imports/bioconda--> /imports/bioconda/software1[bioconda_software1.yaml]; - /imports/bioconda--> /imports/bioconda/software2[bioconda_software2.yaml]; - /imports/bioconda--> /imports/bioconda/software4[bioconda_software4.yaml]; - root--> /data[data]; - /data--> /data/software1[software1]; - /data/software1--> /data/software1/software1biotoolsjson[software1.biotools.json]; - /data/software1--> /data/software1/software1biocondayaml[bioconda_software1.yaml]; - /data--> /data/software2[software2]; - /data/software2--> /data/software2/software2biotoolsjson[software2.biotools.json]; - /data/software2--> /data/software2/software2biocondayaml[bioconda_software2.yaml]; - /data--> /data/software3[software3]; - /data/software3--> /data/software3/software3biotoolsjson[software3.biotools.json]; - {% endmermaid %} -
-

+ {% mermaid %} + graph LR + root[https://github.com/research-software-ecosystem/content]; + root--> /imports[imports]; + /imports--> /imports/biotools[biotools]; + /imports/biotools--> /imports/biotools/software1[software1.biotools.json]; + /imports/biotools--> /imports/biotools/software2[software2.biotools.json]; + /imports/biotools--> /imports/biotools/software3[software3.biotools.json]; + /imports--> /imports/bioconda[bioconda]; + /imports/bioconda--> /imports/bioconda/software1[bioconda_software1.yaml]; + /imports/bioconda--> /imports/bioconda/software2[bioconda_software2.yaml]; + /imports/bioconda--> /imports/bioconda/software4[bioconda_software4.yaml]; + root--> /data[data]; + /data--> /data/software1[software1]; + /data/software1--> /data/software1/software1biotoolsjson[software1.biotools.json]; + /data/software1--> /data/software1/software1biocondayaml[bioconda_software1.yaml]; + /data--> /data/software2[software2]; + /data/software2--> /data/software2/software2biotoolsjson[software2.biotools.json]; + /data/software2--> /data/software2/software2biocondayaml[bioconda_software2.yaml]; + /data--> /data/software3[software3]; + /data/software3--> /data/software3/software3biotoolsjson[software3.biotools.json]; + {% endmermaid %}
-## How to use the metadata -- **Discover tools**: search `data/` folders to see aggregated metadata across registries. -- **Validate metadata**: compare entries across sources (e.g. bio.tools vs OpenEBench) and file PRs to fix discrepancies. -- **Integrate programmatically**: consume the raw JSON/YAML from the repository or mirror it to your own services. -- **Automate updates**: use the weekly imports as a stable schedule for downstream synchronisation. - ## Supported Formats Details about the specific formats for each of the federated resources can be found in the following places: @@ -72,14 +128,14 @@ Most metadata formats for a given source include cross-links to other sources: | Destination / **Source** | bio.tools | OpenEBench | Bioconda | Biocontainers | Galaxy Codex | Debian Med | BIII | Bioconductor | |--------------|-----------|------------|----------|---------------|--------------|------------|-----------|------------| -| **bio.tools** | XXXXXXXXX | | url entries of the `download` key where `url` starts with `"https://anaconda.org/bioconda/"`, the remainer of the url being the Bioconda package name | | | url entries of the `download` key where `url` starts with `"https://tracker.debian.org/pkg/"`, the remainer of the url being the Debian package name | | | -| **OpenEBench** | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/biotools"` |XXXXXXXXX | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/bioconda"` | | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/galaxy"` | | | | -| **Bioconda** | YAML list `extra.identifiers`, CURIEs starting with `"biotools:"` | | XXXXXXXXX| | | For _usegalaxy.eu_, YAML list `extra.identifiers`, CURIEs starting with `"usegalaxy-eu:"` | | | -| **Biocontainers** | | | | XXXXXXXXX | | | | | -| **Galaxy Codex** | 'bio.tool_id' key in the JSON file | | 'Conda_id' key in the JSON file | | XXXXXXXXX | | | | -| **Debian Med** | YAML list registries, CURIES are in `entry` key when `name` is `"bio.tools"` | | YAML list registries, CURIES are in `entry` key when `name` is `"conda:bioconda"` | | | XXXXXXXXX | | | -| **BIII** | | | | | | | XXXXXXXXX | | -| **Bioconductor** | | | | | | | | XXXXXXXXX | +| **bio.tools** | n/a | | url entries of the `download` key where `url` starts with `"https://anaconda.org/bioconda/"`, the remainer of the url being the Bioconda package name | | | url entries of the `download` key where `url` starts with `"https://tracker.debian.org/pkg/"`, the remainer of the url being the Debian package name | | | +| **OpenEBench** | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/biotools"` |n/a | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/bioconda"` | | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/galaxy"` | | | | +| **Bioconda** | YAML list `extra.identifiers`, CURIEs starting with `"biotools:"` | | n/a| | | For _usegalaxy.eu_, YAML list `extra.identifiers`, CURIEs starting with `"usegalaxy-eu:"` | | | +| **Biocontainers** | | | | n/a | | | | | +| **Galaxy Codex** | 'bio.tool_id' key in the JSON file | | 'Conda_id' key in the JSON file | | n/a | | | | +| **Debian Med** | YAML list registries, CURIES are in `entry` key when `name` is `"bio.tools"` | | YAML list registries, CURIES are in `entry` key when `name` is `"conda:bioconda"` | | | n/a | | | +| **BIII** | | | | | | | n/a | | +| **Bioconductor** | | | | | | | | n/a | ## Metadata Import Workflow @@ -90,42 +146,37 @@ The metadata is imported and updated using a [GitHub actions workflow](https://g - commits this version of the metadata. The outline of this workflow is illustrated in Fig. 2. -| Resource Description | CI code location | -|-----------------------|------------------| -| Bio.tools | [https://github.com/research-software-ecosystem/utils/tree/main/biotools-import](https://github.com/research-software-ecosystem/utils/tree/main/biotools-import) | -| OpenEBench | [https://github.com/research-software-ecosystem/utils/tree/main/openebench-import](https://github.com/research-software-ecosystem/utils/tree/main/openebench-import) | -| Bioconda | [https://github.com/research-software-ecosystem/utils/tree/main/bioconda-import](https://github.com/research-software-ecosystem/utils/tree/main/bioconda-import) | -| Biocontainers | [https://github.com/research-software-ecosystem/utils/tree/main/biocontainers-import](https://github.com/research-software-ecosystem/utils/tree/main/biocontainers-import) | -| Galaxy Codex | [https://github.com/research-software-ecosystem/utils/tree/main/galaxytool-import](https://github.com/research-software-ecosystem/utils/tree/main/galaxytool-import) | -| Debian Med | [https://github.com/research-software-ecosystem/utils/tree/main/debian-med-import](https://github.com/research-software-ecosystem/utils/tree/main/debian-med-import) | -| BIII | [https://github.com/research-software-ecosystem/utils/tree/main/biii-import](https://github.com/research-software-ecosystem/utils/tree/main/biii-import) | +
+
+
Weekly cadence
+
All sources refreshed via GitHub Actions
+
+
+
Source-specific jobs
+
Isolated workflows per source for traceability
+
+
+
Version controlled
+
Every import is committed for full history
+
+
CI Import workflows in the repository -

- {% mermaid %} - graph TB - A[bio.tools] --> Y(metadata import) - B[OpenEBench] --> Y(metadata import) - C[BioConda] --> Y(metadata import) - D[BIII] --> Y(metadata import) - E[BioContainers] --> Y(metadata import) - F[Galaxy CoDeX] --> Y(metadata import) - G[Debian Med] --> Y(metadata import) - Y(metadata import) --> Z[RSEc] - {% endmermaid %} -

+ {% mermaid %} + graph TB + A[bio.tools] --> Y(metadata import) + B[OpenEBench] --> Y(metadata import) + C[BioConda] --> Y(metadata import) + D[BIII] --> Y(metadata import) + E[BioContainers] --> Y(metadata import) + F[Galaxy CoDeX] --> Y(metadata import) + G[Debian Med] --> Y(metadata import) + Y(metadata import) --> Z[RSEc] + {% endmermaid %}
## Contributing guidelines We welcome any contribution to the project. Please refer to the [governance document](https://github.com/research-software-ecosystem/content/blob/master/GOVERNANCE.md), and get in contact with us (see _Contact Information_). - -## Citation - -Ienasescu H, Capella-Gutiérrez S, Coppens F _et al._ The ELIXIR research software ecosystem [version 1; not peer reviewed]. _F1000Research_ 2023, 12:988 (slides) [https://doi.org/10.7490/f1000research.1119585.1](https://doi.org/10.7490/f1000research.1119585.1) - -## Contact Information - -A public channel is available on gitter to get in contact with the project team: [https://app.gitter.im/#/room/#bio-tools_ecosystem:gitter.im](https://app.gitter.im/#/room/#bio-tools_ecosystem:gitter.im) diff --git a/index.md b/index.md index e14a77e..587b814 100644 --- a/index.md +++ b/index.md @@ -3,22 +3,54 @@ title: The Ecosystem ---
-

Discover, trust, and reuse research software metadata

-

- ELIXIR Research Software Ecosystem (RSEc) centralizes and curates high-quality metadata for computational biology software tools, providing a single, trusted resource for researchers. By synchronizing metadata from major software-related services, RSEc enables the discovery, validation and cross-linking of software information. Researchers can use the resource to explore software metadata and improve the consistency and quality of information across the computational biology landscape. -

-

- RSEc is open, version-controlled and hosted on GitHub. This centralized approach facilitates curation, promotes interoperability and supports the development of new services, ultimately enhancing the reliability and utility of research software. -

-

- ELIXIR is a European research infrastructure which manages and safeguards the massive amounts of life science data and tools being generated by publicly-funded research. RSEc has been developed as part of the ELIXIR Tools Platform. -

-

- View metadata sources - Read the documentation +

Reliable metadata for research software

+

+ ELIXIR Research Software Ecosystem (RSEc) curates trusted, cross-linked metadata for computational biology tools so you can discover, validate, and integrate software with confidence.

+
    +
  • Single entry point for metadata from major registries.
  • +
  • Open, version-controlled, and reusable by design.
  • +
  • Purpose-built for researchers, curators, and tool developers.
  • +
+
RSEc diagram
+ +
+

How it helps

+
+
+
+
+
Discover
+

Find the right tool faster with unified identifiers and registry cross-links.

+ Browse sources → +
+
+
+
+
+
+
Validate
+

Compare metadata across services to spot gaps or conflicts before publishing.

+ See validation tips → +
+
+
+
+
+
+
Integrate
+

Use the open repository in workflows, dashboards, and registries without lock-in.

+ View applications → +
+
+
+
+
diff --git a/publications.md b/publications.md index 28db3ce..c6b0eab 100644 --- a/publications.md +++ b/publications.md @@ -4,6 +4,11 @@ title: Publications --- +## Citation + + +## Presentations + * BOSC 2023 Presentation (slides) [Ienasescu H, Capella-Gutiérrez S, Coppens F et al. The ELIXIR research software ecosystem [version 1; not peer reviewed]. F1000Research 2023, 12:988 (slides) (https://doi.org/10.7490/f1000research.1119585.1) ](https://doi.org/10.7490/f1000research.1119585.1) * BOSC 2023 Poster (slides): [Ienasescu H, Capella-Gutiérrez S, Coppens F et al. The ELIXIR research software ecosystem: an open software metadata commons (BOSC track) [version 1; not peer reviewed]. F1000Research 2023, 12:1044 (slides) (https://doi.org/10.7490/f1000research.1119604.1)](https://doi.org/10.7490/f1000research.1119604.1) * ELIXIR All Hands 2023 Poster: [Capella-Guttierez S, Grüning B, Gustafsson J et al. The ELIXIR tools ecosystem [version 1; not peer reviewed]. F1000Research 2023, 12(ELIXIR):608 (poster) (https://doi.org/10.7490/f1000research.1119451.1)](https://doi.org/10.7490/f1000research.1119451.1) diff --git a/sources.md b/sources.md index 55bfb39..4ce8966 100644 --- a/sources.md +++ b/sources.md @@ -5,6 +5,69 @@ title: Sources page_id: sources --- -The RSEc aggregates metadata from the registries and services below. Each source is refreshed regularly through the automated import workflows described in the documentation. +The RSEc aggregates metadata from the registries and services below. Each source is refreshed regularly through the automated import workflows described in the documentation. Pick a source to see what is covered and where to dive into example records. -Explore the sources below to learn how each registry contributes metadata to the ecosystem. For technical details on update schedules and formats, see the Documentation page. +{% assign source_items = site.data.tool_and_resource_list | where_exp:"item","item.related_pages contains 'sources'" | sort:"name" %} + +
+ {% for resource in source_items %} + {% assign import_slug = resource.id %} + {% assign view_url = resource.url %} + {% if import_slug %} + {% assign view_url = "https://github.com/research-software-ecosystem/content/tree/master/imports/" | append: import_slug %} + {% assign workflow_url = "https://github.com/research-software-ecosystem/utils/tree/main/" | append: import_slug | append: "-import" %} + {% endif %} + +
+
+
+
+
+
{{ resource.name }}
+ {% assign display_url = resource.url | remove: "https://" | remove: "http://" | remove: "www." | replace: "/" ,"" %} + +
+
+ {% if resource.registry.fairsharing %} + + Standards/Databases + + {% endif %} + {% if resource.registry.biotools %} + + Tool info + + {% endif %} + {% if resource.registry.tess %} + + Training + + {% endif %} +
+
+

{{ resource.description | strip_newlines | replace: " ", " " }}

+
+ View metadata + {% if import_slug %} + Import workflow + {% endif %} +
+
+
+
+ {% endfor %} +
+ + From 7c327f3e02dce0e6f855d35f29d7ba48467d9301 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Wed, 21 Jan 2026 04:52:26 +0000 Subject: [PATCH 12/20] chore: upgrade ETT --- _config.yml | 2 +- index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 90d707c..1f3f6b9 100644 --- a/_config.yml +++ b/_config.yml @@ -14,7 +14,7 @@ description: >- # this means to ignore newlines until "baseurl:" gtag: G-CNXER21LC6 # Google analytics tag -remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@3.0.0 +remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@5.0.0 exclude: - README.md diff --git a/index.md b/index.md index 587b814..40dceaf 100644 --- a/index.md +++ b/index.md @@ -23,7 +23,7 @@ title: The Ecosystem
-

How it helps

+

How it helps

From a60e3d87007105c3e9cc706c73bfff34823e45ec Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Wed, 21 Jan 2026 05:37:54 +0000 Subject: [PATCH 13/20] fiz: title for Contributors and credits page Co-authored-by: Johan Gustafsson <50811354+supernord@users.noreply.github.com> --- contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributors.md b/contributors.md index 6360fe4..365c0d6 100644 --- a/contributors.md +++ b/contributors.md @@ -1,7 +1,7 @@ --- # Feel free to add content and custom Front Matter to this file. # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults -title: Contributors +title: Credits --- The Research Software Ecosystem is built by a community across ELIXIR and collaborating organisations. The list below is generated from `_data/CONTRIBUTORS.yml`. From 4cd1ffd18ea4f6ee7e1891ff8c24804907d79753 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Wed, 21 Jan 2026 05:39:19 +0000 Subject: [PATCH 14/20] fix: Contributors section Co-authored-by: Johan Gustafsson <50811354+supernord@users.noreply.github.com> --- contributors.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contributors.md b/contributors.md index 365c0d6..e14daef 100644 --- a/contributors.md +++ b/contributors.md @@ -4,6 +4,8 @@ title: Credits --- +## Contributors + The Research Software Ecosystem is built by a community across ELIXIR and collaborating organisations. The list below is generated from `_data/CONTRIBUTORS.yml`. {% include contributor-tiles-all.html %} From 8bc9b5a2187a6543c6f97faf36fc7239dc71e40f Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Wed, 21 Jan 2026 05:40:25 +0000 Subject: [PATCH 15/20] fix: crefits becomes acknowledgements Co-authored-by: Johan Gustafsson <50811354+supernord@users.noreply.github.com> --- contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributors.md b/contributors.md index e14daef..73cc1d0 100644 --- a/contributors.md +++ b/contributors.md @@ -14,7 +14,7 @@ The Research Software Ecosystem is built by a community across ELIXIR and collab The ELIXIR Research Software Ecosystem is supported and coordinated by [ELIXIR Europe](https://elixir-europe.org/). -## Credits +## Acknowledgements ### Framework From 7decb2ff3762d9d1bd5e860f941c6a2aeaeb647a Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Fri, 23 Jan 2026 08:38:38 +0000 Subject: [PATCH 16/20] fix: typos Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs.md b/docs.md index d18c676..b395284 100644 --- a/docs.md +++ b/docs.md @@ -128,7 +128,7 @@ Most metadata formats for a given source include cross-links to other sources: | Destination / **Source** | bio.tools | OpenEBench | Bioconda | Biocontainers | Galaxy Codex | Debian Med | BIII | Bioconductor | |--------------|-----------|------------|----------|---------------|--------------|------------|-----------|------------| -| **bio.tools** | n/a | | url entries of the `download` key where `url` starts with `"https://anaconda.org/bioconda/"`, the remainer of the url being the Bioconda package name | | | url entries of the `download` key where `url` starts with `"https://tracker.debian.org/pkg/"`, the remainer of the url being the Debian package name | | | +| **bio.tools** | n/a | | url entries of the `download` key where `url` starts with `"https://anaconda.org/bioconda/"`, the remainder of the url being the Bioconda package name | | | url entries of the `download` key where `url` starts with `"https://tracker.debian.org/pkg/"`, the remainder of the url being the Debian package name | | | | **OpenEBench** | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/biotools"` |n/a | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/bioconda"` | | List elements that have and `@id` key starting with `"https://openebench.bsc.es/monitor/metrics/galaxy"` | | | | | **Bioconda** | YAML list `extra.identifiers`, CURIEs starting with `"biotools:"` | | n/a| | | For _usegalaxy.eu_, YAML list `extra.identifiers`, CURIEs starting with `"usegalaxy-eu:"` | | | | **Biocontainers** | | | | n/a | | | | | @@ -179,4 +179,4 @@ The outline of this workflow is illustrated in
{{ resource.name }}
- {% assign display_url = resource.url | remove: "https://" | remove: "http://" | remove: "www." | replace: "/" ,"" %} + {% assign display_url = resource.url | remove: "https://" | remove: "http://" | remove: "www." %}
From 1fbeafe8755c4c1cd5ece1aad5a9e19a67dfecf6 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 26 Jan 2026 10:00:03 +0000 Subject: [PATCH 19/20] fix: frontmatter delimiters Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- credits.md | 1 - 1 file changed, 1 deletion(-) diff --git a/credits.md b/credits.md index a603215..68b3e89 100644 --- a/credits.md +++ b/credits.md @@ -1,5 +1,4 @@ --- ---- title: Credits (moved) redirect_to: /contributors --- From e71a911980133684dd59500975d80a10c3313cb4 Mon Sep 17 00:00:00 2001 From: Mihail Anton Date: Mon, 26 Jan 2026 10:13:35 +0000 Subject: [PATCH 20/20] fix: undo wrong id change in sources list Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- _data/tool_and_resource_list.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_data/tool_and_resource_list.yml b/_data/tool_and_resource_list.yml index 172f3a1..c7640c7 100644 --- a/_data/tool_and_resource_list.yml +++ b/_data/tool_and_resource_list.yml @@ -21,7 +21,7 @@ and BioContainers. related_pages: - applications -- id: galaxy +- id: galaxy_codex name: Galaxy Codex url: https://github.com/galaxyproject/galaxy_codex description: