commonmeta-ruby 3.0.9 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -3
  3. data/Gemfile.lock +42 -43
  4. data/commonmeta.gemspec +1 -2
  5. data/lib/commonmeta/crossref_utils.rb +4 -7
  6. data/lib/commonmeta/metadata.rb +4 -10
  7. data/lib/commonmeta/metadata_utils.rb +2 -0
  8. data/lib/commonmeta/readers/json_post_reader.rb +78 -0
  9. data/lib/commonmeta/utils.rb +19 -0
  10. data/lib/commonmeta/version.rb +1 -1
  11. data/lib/commonmeta.rb +0 -1
  12. data/spec/author_utils_spec.rb +10 -0
  13. data/spec/cli_spec.rb +21 -1
  14. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref/to_crossref_xml.yml +107 -0
  15. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref_xml/to_crossref_xml.yml +52 -0
  16. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref_xml/to_crossref_xml_refresh.yml +107 -0
  17. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_from_id/schema_org/to_crossref_xml.yml +2189 -0
  18. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/blogger_post.yml +94 -0
  19. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post.yml +117 -0
  20. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post_with_doi.yml +117 -0
  21. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/jekyll_post.yml +170 -0
  22. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/wordpress_post.yml +163 -0
  23. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/blogger_post.yml +94 -0
  24. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/ghost_post_with_doi.yml +117 -0
  25. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/jekyll_post.yml +87 -0
  26. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/wordpress_post.yml +163 -0
  27. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/license.yml +221 -0
  28. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/url.yml +221 -0
  29. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_rogue_scholar_with_doi.yml +163 -0
  30. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_upstream_blog.yml +243 -0
  31. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_rogue_scholar_with_doi.yml +163 -0
  32. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_upstream_blog.yml +243 -0
  33. data/spec/metadata_spec.rb +1 -1
  34. data/spec/readers/datacite_reader_spec.rb +1 -1
  35. data/spec/readers/json_post_reader_spec.rb +89 -0
  36. data/spec/utils_spec.rb +330 -314
  37. data/spec/writers/crossref_xml_writer_spec.rb +183 -137
  38. metadata +24 -25
@@ -0,0 +1,94 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rogue-scholar.org/api/posts/1jgo59el
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - rogue-scholar.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Age:
22
+ - '0'
23
+ Cache-Control:
24
+ - public, max-age=0, must-revalidate
25
+ Content-Length:
26
+ - '5576'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Sat, 03 Jun 2023 20:04:27 GMT
31
+ Etag:
32
+ - '"r6tc4lxjtm4ak"'
33
+ Server:
34
+ - Vercel
35
+ Strict-Transport-Security:
36
+ - max-age=63072000
37
+ X-Matched-Path:
38
+ - "/api/posts/[slug]"
39
+ X-Vercel-Cache:
40
+ - MISS
41
+ X-Vercel-Id:
42
+ - fra1::iad1::z7sjr-1685822666479-acd9f9ad8646
43
+ Connection:
44
+ - close
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"id":"https://iphylo.blogspot.com/2023/05/ten-years-and-million-links.html","short_id":"1jgo59el","url":"https://iphylo.blogspot.com/2023/05/ten-years-and-million-links.html","title":"Ten
48
+ years and a million links","summary":"As trailed on a Twitter thread last
49
+ week I’ve been working on a manuscript describing the efforts to map taxonomic
50
+ names to their original descriptions in the taxonomic literature. Putting
51
+ together a...","date_published":"2023-05-31T17:26:00Z","date_modified":null,"authors":[{"url":null,"name":"Roderic
52
+ Page"}],"image":null,"content_html":"<p>As trailed on a Twitter thread last
53
+ week I’ve been working on a manuscript describing the efforts to map taxonomic
54
+ names to their original descriptions in the taxonomic literature.</p>\n<blockquote
55
+ class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Putting together a manuscript
56
+ on linking taxonomic names to the primary literature, basically “um, what,
57
+ exactly, have you been doing all these years?”. TL;DR Across fungi, plants,
58
+ and animals approx 1.3 million names have been linked to a persistent identifier
59
+ for a publication.</p>— Roderic Page (@rdmpage) <a href=\"https://twitter.com/rdmpage/status/1661714128413573120?ref_src=twsrc%5Etfw\">May
60
+ 25, 2023</a></blockquote> \n<p>The preprint is on bioRxiv <a href=\"https://doi.org/10.1101/2023.05.29.542697\">doi:10.1101/2023.05.29.542697</a></p>\n<blockquote>\n<p>A
61
+ major gap in the biodiversity knowledge graph is a connection between taxonomic
62
+ names and the taxonomic literature. While both names and publications often
63
+ have persistent identifiers (PIDs), such as Life Science Identifiers (LSIDs)
64
+ or Digital Object Identifiers (DOIs), LSIDs for names are rarely linked to
65
+ DOIs for publications. This article describes efforts to make those connections
66
+ across three large taxonomic databases: Index Fungorum, International Plant
67
+ Names Index (IPNI), and the Index of Organism Names (ION). Over a million
68
+ names have been matched to DOIs or other persistent identifiers for taxonomic
69
+ publications. This represents approximately 36% of names for which publication
70
+ data is available. The mappings between LSIDs and publication PIDs are made
71
+ available through ChecklistBank. Applications of this mapping are discussed,
72
+ including a web app to locate the citation of a taxonomic name, and a knowledge
73
+ graph that uses data on researcher’s ORCID ids to connect taxonomic names
74
+ and publications to authors of those names.</p>\n</blockquote>\n<p>Much of
75
+ the work has been linking taxa to names, which still has huge gaps. There
76
+ are also interesting differences in coverage between plants, animals, and
77
+ fungi (see preprint for details).</p>\n\n<div class=\"separator\" style=\"clear:
78
+ both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdWsSQhqi1DErXMIHm28g37-fiALNIsI5eQZmvoX_Fe03ZSwtKHbYt-LCsCCAUop0AGcwy_w7NpIjylVH1hNrM9oW-6j9e6tHASha49TTqFvDg2_tEx3r74RRFsjUo4M_Qat8NmKaZSChOt2hI3LsMjTVLrEVirEckU-9Ei7ug-7OHQlR4LA/s2276/animals-coverage.png\"
79
+ style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
80
+ border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
81
+ src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdWsSQhqi1DErXMIHm28g37-fiALNIsI5eQZmvoX_Fe03ZSwtKHbYt-LCsCCAUop0AGcwy_w7NpIjylVH1hNrM9oW-6j9e6tHASha49TTqFvDg2_tEx3r74RRFsjUo4M_Qat8NmKaZSChOt2hI3LsMjTVLrEVirEckU-9Ei7ug-7OHQlR4LA/s320/animals-coverage.png\"/></a></div><div
82
+ class=\"separator\" style=\"clear: both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdyxlVJ-oyMCNPmHtHWjSxdxMSJvgzdWRGRF6Ad4dk7ab7gGDpuKdKmS9XhROkopw361ylfsTd1ZkwkF6BN0JlWNnVLCKY1AfryCfWKHkgPQM7u-0SELW9j8RlQIflb6ibaV64gwW7oJrEvOGECvR51F8EW8cRg-1usW-GBM5ymObj7zlObQ/s2276/fungi-coverage.png\"
83
+ style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
84
+ border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
85
+ src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdyxlVJ-oyMCNPmHtHWjSxdxMSJvgzdWRGRF6Ad4dk7ab7gGDpuKdKmS9XhROkopw361ylfsTd1ZkwkF6BN0JlWNnVLCKY1AfryCfWKHkgPQM7u-0SELW9j8RlQIflb6ibaV64gwW7oJrEvOGECvR51F8EW8cRg-1usW-GBM5ymObj7zlObQ/s320/fungi-coverage.png\"/></a></div><div
86
+ class=\"separator\" style=\"clear: both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0YBuvNSXWAJTfQ1jk4XSocMzCYHP7t6IPUqhjQ3mftgM_850igWaD2copgNH6Xk6T62xBU641wvwOvXgCCDY3m2xC_gaILXO9RGx8H3Gpy5OOncsLb9smpT2LIgtYOExVBVdDRWqA0AZ8-mQjWL7dL5TiG7MqVu8spT8ACoGOPR_T36hRA/s2276/plants-coverage.png\"
87
+ style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
88
+ border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
89
+ src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0YBuvNSXWAJTfQ1jk4XSocMzCYHP7t6IPUqhjQ3mftgM_850igWaD2copgNH6Xk6T62xBU641wvwOvXgCCDY3m2xC_gaILXO9RGx8H3Gpy5OOncsLb9smpT2LIgtYOExVBVdDRWqA0AZ8-mQjWL7dL5TiG7MqVu8spT8ACoGOPR_T36hRA/s320/plants-coverage.png\"/></a></div>\n\n\nThere
90
+ is also a simple app to demonstrate these links, see <a href=\"https://species-cite.herokuapp.com\">https://species-cite.herokuapp.com</a>.\n\n\n\n<blockquote>\n<p>Written
91
+ with <a href=\"https://stackedit.io/\">StackEdit</a>.</p>\n</blockquote>","tags":[],"language":"en","blog_id":"tyfqw20","blog":{"id":"tyfqw20","title":"iPhylo","language":"en","favicon":null,"feed_url":"https://iphylo.blogspot.com/feeds/posts/default?alt=rss","home_page_url":"https://iphylo.blogspot.com/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Natural
92
+ Sciences"}}'
93
+ recorded_at: Sat, 03 Jun 2023 20:04:27 GMT
94
+ recorded_with: VCR 6.1.0
@@ -0,0 +1,117 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rogue-scholar.org/api/posts/1jgo8yel
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - rogue-scholar.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Age:
22
+ - '0'
23
+ Cache-Control:
24
+ - public, max-age=0, must-revalidate
25
+ Content-Length:
26
+ - '6894'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Sun, 04 Jun 2023 07:20:26 GMT
31
+ Etag:
32
+ - '"r1h98s95tn5bh"'
33
+ Server:
34
+ - Vercel
35
+ Strict-Transport-Security:
36
+ - max-age=63072000
37
+ X-Matched-Path:
38
+ - "/api/posts/[slug]"
39
+ X-Vercel-Cache:
40
+ - MISS
41
+ X-Vercel-Id:
42
+ - fra1::iad1::pkzgk-1685863226488-42890f58a873
43
+ Connection:
44
+ - close
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"id":"https://doi.org/10.53731/4nwxn-frt36","short_id":"1jgo8yel","url":"https://blog.front-matter.io/posts/does-it-compose/","title":"Does
48
+ it compose?","summary":"One question I have increasingly asked myself in the
49
+ past few years. Meaning Can I run this open source software using Docker containers
50
+ and a Docker Compose file?As the Docker project turned ten this...","date_published":"2023-05-16T11:36:56Z","date_modified":"2023-05-16T11:36:56Z","authors":[{"url":"https://orcid.org/0000-0003-1419-2405","name":"Martin
51
+ Fenner"}],"image":"https://images.unsplash.com/photo-1523351964962-1ee5847816c3?crop&#x3D;entropy&cs&#x3D;tinysrgb&fit&#x3D;max&fm&#x3D;jpg&ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDUzfHxjb250YWluZXJ8ZW58MHx8fHwxNjg0MjMyMTQ0fDA&ixlib&#x3D;rb-4.0.3&q&#x3D;80&w&#x3D;2000","content_html":"
52
+ <p><img src=\"https://images.unsplash.com/photo-1523351964962-1ee5847816c3?crop&#x3D;entropy&cs&#x3D;tinysrgb&fit&#x3D;max&fm&#x3D;jpg&ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDUzfHxjb250YWluZXJ8ZW58MHx8fHwxNjg0MjMyMTQ0fDA&ixlib&#x3D;rb-4.0.3&q&#x3D;80&w&#x3D;2000\"></p><p>One
53
+ question I have increasingly asked myself in the past few years. Meaning </p><blockquote>Can
54
+ I run this open source software  using Docker containers and a Docker Compose
55
+ file?</blockquote><p>As the Docker project <a href=\"https://snyk.io/blog/the-docker-project-turns-10/\">turned
56
+ ten this spring</a>, it has become standard practice to distribute open source
57
+ software via Docker images and to provide a <a href=\"https://docs.docker.com/compose/\">Docker
58
+ Compose</a> file to run the software together with other dependencies. The
59
+ <a href=\"https://github.com/docker/awesome-compose\">Awesome Compose</a>
60
+ project has collected many examples, and all you need is a <code>docker-compose.yml</code>file
61
+ and a recent installation of Docker, e.g. <a href=\"https://www.docker.com/products/docker-desktop/\">Docker
62
+ Desktop</a>. Be aware that Docker Compose has evolved over the years. It started
63
+ out as a dedicated Python application but was later integrated into the Docker
64
+ application (written in Go) as Compose V2.</p><p>Docker and Docker Compose
65
+ allow you to run pretty complex applications without first addressing a long
66
+ list of requirements (which might conflict with other software you have installed),
67
+ or needing a long and complex build step where many things can go wrong. For
68
+ example a self-hosted instance of Supabase (a hosted Postgres database with
69
+ additional features) that I installed last week following <a href=\"https://supabase.com/docs/guides/self-hosting/docker\">these
70
+ instructions</a>.</p><p>An important open source project that I am involved
71
+ in is <a href=\"https://inveniordm.docs.cern.ch/\">InvenioRDM</a>, the turn-key
72
+ research data management repository. InvenioRDM started in 2019, with a first
73
+ production-suitable version in August 2021, and the <a href=\"https://inveniosoftware.org/products/rdm/#status\">next
74
+ major goal </a>is to have the large and popular <a href=\"https://zenodo.org/\">Zenodo</a>
75
+ repository running on top of InvenioRDM. Zenodo <a href=\"https://blog.zenodo.org/2023/05/08/2023-05-08-10years/\">turned
76
+ ten last week</a>, a few weeks after Docker. Interestingly, my personal tenth
77
+ anniversary was last year in May as I became a full-time software developer
78
+ and left academic medicine as a medical doctor treating cancer patients in
79
+ <a href=\"https://doi.org/10.53731/r294649-6f79289-8cw2j\">May 2012</a>.</p><p>Unfortunately,
80
+ InvenioRDM \"doesn''t compose\" yet. It is very close, but there are no ready-made
81
+ Docker images to download, and the <a href=\"https://inveniordm.docs.cern.ch/install/\">installation
82
+ instructions</a> start with installing a Python command-line tool (invenio-cli).
83
+ So if you have 1-2 hours to play with InvenioRDM and get a first impression,
84
+ there is no official solution from the InvenioRDM project yet. For this reason,
85
+ I started the <a href=\"https://github.com/front-matter/docker-invenio-rdm\">docker-invenio-rdm</a>
86
+ repository on Github. It contains a Docker Compose file that uses pre-built
87
+ Docker images, and using that file with a <code>docker compose up</code>command
88
+ on your local computer should give you a running InvenioRDM within 15 minutes:</p><figure
89
+ class=\"kg-card kg-image-card\"><img src=\"https://blog.front-matter.io/content/images/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png\"
90
+ class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1210\" srcset=\"https://blog.front-matter.io/content/images/size/w600/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
91
+ 600w, https://blog.front-matter.io/content/images/size/w1000/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
92
+ 1000w, https://blog.front-matter.io/content/images/size/w1600/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
93
+ 1600w, https://blog.front-matter.io/content/images/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
94
+ 2193w\" sizes=\"(min-width: 720px) 720px\"></figure><p>I started this recently
95
+ and obviously want to move forward in two directions:</p><ul><li>fine-tune
96
+ the initial configuration to provide a great initial experience with InvenioRDM,
97
+ e.g. making it easy to <a href=\"https://inveniordm.docs.cern.ch/develop/topics/theming/\">theme</a>
98
+ the InvenioRDM instance</li><li>make this an official part of the InvenioRDM
99
+ project, extending the <a href=\"https://github.com/inveniosoftware/docker-invenio\">docker-invenio</a>
100
+ GitHub repository that provides Docker base images for InvenioRDM and other
101
+ projects using the Invenio software.</li></ul><p>But of course, Docker Compose
102
+ is not the answer to all questions regarding running Docker-based infrastructure.
103
+ For production environments, most people shy away from using Docker Compose.
104
+ The reasons for that and the alternatives will be the topic of a future blog
105
+ post (spoiler: there is exciting news).</p><p>Docker Compose also needs more
106
+ work to be set up correctly for development environments. It is a common practice
107
+ and a workflow I used while working at DataCite (where we launched Docker-based
108
+ infrastructure in 2016), but for now, the easiest way to set up InvenioRDM
109
+ development environments is using the <a href=\"https://inveniordm.docs.cern.ch/install/\">invenio-cli
110
+ tool with a local development environment</a>.</p><p>Please reach out to me
111
+ with feedback on running Docker Compose for InvenioRDM (use the <a href=\"https://github.com/front-matter/docker-invenio-rdm/discussions\">discussions</a>
112
+ feature in the GitHub repo), or if you have questions about running InvenioRDM
113
+ in production.</p> ","tags":["News"],"language":"en","blog_id":"f0m0e38","blog":{"id":"f0m0e38","title":"Front
114
+ Matter","language":"en","favicon":"https://blog.front-matter.io/favicon.png","feed_url":"https://blog.front-matter.io/atom/","home_page_url":"https://blog.front-matter.io/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Engineering
115
+ and Technology"}}'
116
+ recorded_at: Sun, 04 Jun 2023 07:20:26 GMT
117
+ recorded_with: VCR 6.1.0
@@ -0,0 +1,117 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rogue-scholar.org/api/posts/1jgo8yel
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - rogue-scholar.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Age:
22
+ - '0'
23
+ Cache-Control:
24
+ - public, max-age=0, must-revalidate
25
+ Content-Length:
26
+ - '6894'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Sun, 04 Jun 2023 07:21:03 GMT
31
+ Etag:
32
+ - '"r1h98s95tn5bh"'
33
+ Server:
34
+ - Vercel
35
+ Strict-Transport-Security:
36
+ - max-age=63072000
37
+ X-Matched-Path:
38
+ - "/api/posts/[slug]"
39
+ X-Vercel-Cache:
40
+ - MISS
41
+ X-Vercel-Id:
42
+ - fra1::iad1::c2lh5-1685863263309-757188c1cf71
43
+ Connection:
44
+ - close
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"id":"https://doi.org/10.53731/4nwxn-frt36","short_id":"1jgo8yel","url":"https://blog.front-matter.io/posts/does-it-compose/","title":"Does
48
+ it compose?","summary":"One question I have increasingly asked myself in the
49
+ past few years. Meaning Can I run this open source software using Docker containers
50
+ and a Docker Compose file?As the Docker project turned ten this...","date_published":"2023-05-16T11:36:56Z","date_modified":"2023-05-16T11:36:56Z","authors":[{"url":"https://orcid.org/0000-0003-1419-2405","name":"Martin
51
+ Fenner"}],"image":"https://images.unsplash.com/photo-1523351964962-1ee5847816c3?crop&#x3D;entropy&cs&#x3D;tinysrgb&fit&#x3D;max&fm&#x3D;jpg&ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDUzfHxjb250YWluZXJ8ZW58MHx8fHwxNjg0MjMyMTQ0fDA&ixlib&#x3D;rb-4.0.3&q&#x3D;80&w&#x3D;2000","content_html":"
52
+ <p><img src=\"https://images.unsplash.com/photo-1523351964962-1ee5847816c3?crop&#x3D;entropy&cs&#x3D;tinysrgb&fit&#x3D;max&fm&#x3D;jpg&ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDUzfHxjb250YWluZXJ8ZW58MHx8fHwxNjg0MjMyMTQ0fDA&ixlib&#x3D;rb-4.0.3&q&#x3D;80&w&#x3D;2000\"></p><p>One
53
+ question I have increasingly asked myself in the past few years. Meaning </p><blockquote>Can
54
+ I run this open source software  using Docker containers and a Docker Compose
55
+ file?</blockquote><p>As the Docker project <a href=\"https://snyk.io/blog/the-docker-project-turns-10/\">turned
56
+ ten this spring</a>, it has become standard practice to distribute open source
57
+ software via Docker images and to provide a <a href=\"https://docs.docker.com/compose/\">Docker
58
+ Compose</a> file to run the software together with other dependencies. The
59
+ <a href=\"https://github.com/docker/awesome-compose\">Awesome Compose</a>
60
+ project has collected many examples, and all you need is a <code>docker-compose.yml</code>file
61
+ and a recent installation of Docker, e.g. <a href=\"https://www.docker.com/products/docker-desktop/\">Docker
62
+ Desktop</a>. Be aware that Docker Compose has evolved over the years. It started
63
+ out as a dedicated Python application but was later integrated into the Docker
64
+ application (written in Go) as Compose V2.</p><p>Docker and Docker Compose
65
+ allow you to run pretty complex applications without first addressing a long
66
+ list of requirements (which might conflict with other software you have installed),
67
+ or needing a long and complex build step where many things can go wrong. For
68
+ example a self-hosted instance of Supabase (a hosted Postgres database with
69
+ additional features) that I installed last week following <a href=\"https://supabase.com/docs/guides/self-hosting/docker\">these
70
+ instructions</a>.</p><p>An important open source project that I am involved
71
+ in is <a href=\"https://inveniordm.docs.cern.ch/\">InvenioRDM</a>, the turn-key
72
+ research data management repository. InvenioRDM started in 2019, with a first
73
+ production-suitable version in August 2021, and the <a href=\"https://inveniosoftware.org/products/rdm/#status\">next
74
+ major goal </a>is to have the large and popular <a href=\"https://zenodo.org/\">Zenodo</a>
75
+ repository running on top of InvenioRDM. Zenodo <a href=\"https://blog.zenodo.org/2023/05/08/2023-05-08-10years/\">turned
76
+ ten last week</a>, a few weeks after Docker. Interestingly, my personal tenth
77
+ anniversary was last year in May as I became a full-time software developer
78
+ and left academic medicine as a medical doctor treating cancer patients in
79
+ <a href=\"https://doi.org/10.53731/r294649-6f79289-8cw2j\">May 2012</a>.</p><p>Unfortunately,
80
+ InvenioRDM \"doesn''t compose\" yet. It is very close, but there are no ready-made
81
+ Docker images to download, and the <a href=\"https://inveniordm.docs.cern.ch/install/\">installation
82
+ instructions</a> start with installing a Python command-line tool (invenio-cli).
83
+ So if you have 1-2 hours to play with InvenioRDM and get a first impression,
84
+ there is no official solution from the InvenioRDM project yet. For this reason,
85
+ I started the <a href=\"https://github.com/front-matter/docker-invenio-rdm\">docker-invenio-rdm</a>
86
+ repository on Github. It contains a Docker Compose file that uses pre-built
87
+ Docker images, and using that file with a <code>docker compose up</code>command
88
+ on your local computer should give you a running InvenioRDM within 15 minutes:</p><figure
89
+ class=\"kg-card kg-image-card\"><img src=\"https://blog.front-matter.io/content/images/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png\"
90
+ class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1210\" srcset=\"https://blog.front-matter.io/content/images/size/w600/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
91
+ 600w, https://blog.front-matter.io/content/images/size/w1000/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
92
+ 1000w, https://blog.front-matter.io/content/images/size/w1600/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
93
+ 1600w, https://blog.front-matter.io/content/images/2023/05/Bildschirmfoto-2023-05-11-um-10.37.55.png
94
+ 2193w\" sizes=\"(min-width: 720px) 720px\"></figure><p>I started this recently
95
+ and obviously want to move forward in two directions:</p><ul><li>fine-tune
96
+ the initial configuration to provide a great initial experience with InvenioRDM,
97
+ e.g. making it easy to <a href=\"https://inveniordm.docs.cern.ch/develop/topics/theming/\">theme</a>
98
+ the InvenioRDM instance</li><li>make this an official part of the InvenioRDM
99
+ project, extending the <a href=\"https://github.com/inveniosoftware/docker-invenio\">docker-invenio</a>
100
+ GitHub repository that provides Docker base images for InvenioRDM and other
101
+ projects using the Invenio software.</li></ul><p>But of course, Docker Compose
102
+ is not the answer to all questions regarding running Docker-based infrastructure.
103
+ For production environments, most people shy away from using Docker Compose.
104
+ The reasons for that and the alternatives will be the topic of a future blog
105
+ post (spoiler: there is exciting news).</p><p>Docker Compose also needs more
106
+ work to be set up correctly for development environments. It is a common practice
107
+ and a workflow I used while working at DataCite (where we launched Docker-based
108
+ infrastructure in 2016), but for now, the easiest way to set up InvenioRDM
109
+ development environments is using the <a href=\"https://inveniordm.docs.cern.ch/install/\">invenio-cli
110
+ tool with a local development environment</a>.</p><p>Please reach out to me
111
+ with feedback on running Docker Compose for InvenioRDM (use the <a href=\"https://github.com/front-matter/docker-invenio-rdm/discussions\">discussions</a>
112
+ feature in the GitHub repo), or if you have questions about running InvenioRDM
113
+ in production.</p> ","tags":["News"],"language":"en","blog_id":"f0m0e38","blog":{"id":"f0m0e38","title":"Front
114
+ Matter","language":"en","favicon":"https://blog.front-matter.io/favicon.png","feed_url":"https://blog.front-matter.io/atom/","home_page_url":"https://blog.front-matter.io/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Engineering
115
+ and Technology"}}'
116
+ recorded_at: Sun, 04 Jun 2023 07:21:03 GMT
117
+ recorded_with: VCR 6.1.0
@@ -0,0 +1,170 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rogue-scholar.org/api/posts/1jdkoe52
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - rogue-scholar.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Age:
22
+ - '0'
23
+ Cache-Control:
24
+ - public, max-age=0, must-revalidate
25
+ Content-Length:
26
+ - '3760'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Sun, 04 Jun 2023 10:18:36 GMT
31
+ Etag:
32
+ - '"s9i5zuh1o62w6"'
33
+ Server:
34
+ - Vercel
35
+ Strict-Transport-Security:
36
+ - max-age=63072000
37
+ X-Matched-Path:
38
+ - "/api/posts/[slug]"
39
+ X-Vercel-Cache:
40
+ - MISS
41
+ X-Vercel-Id:
42
+ - fra1::iad1::p7tvx-1685873912215-b62d20998ec5
43
+ Connection:
44
+ - close
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"id":"https://citationstyles.org/2014/01/29/mendeley-donates-to-the-csl-project/","short_id":"1jdkoe52","url":"https://citationstyles.org/2014/01/29/mendeley-donates-to-the-csl-project/","title":"Mendeley
48
+ Donates to the CSL Project","summary":"CSL has seen a lot of growth in recent
49
+ years: more than 20 software products use CSL (see the citationstyles.org
50
+ frontpage), and we offer over 6750 free citation styles, covering thousands
51
+ of scientific...","date_published":"2014-01-29T00:00:00Z","date_modified":"2014-01-29T00:00:00Z","authors":[{"url":null,"name":"Rintze
52
+ M. Zelle"}],"image":null,"content_html":"<p>CSL has seen a lot of growth in
53
+ recent years: more than 20 software products use CSL (see the <a href=\"http://citationstyles.org/\">citationstyles.org</a>
54
+ frontpage), and we offer over 6750 free citation styles, covering thousands
55
+ of scientific journals.</p>\n\n<p><img style=\"float: right;\" src=\"/assets/img/mendeley-csl-stickers.jpg\"
56
+ width=\"320\" height=\"256\" /></p>\n\n<p>We could only have come this far
57
+ with our great user community, and with a lot of institutional support from
58
+ Mendeley, Papers, Zotero, and others.</p>\n\n<p><a href=\"http://www.mendeley.com/\">Mendeley</a>
59
+ has been using CSL since their first release in 2008, and adopted Frank Bennett’s
60
+ <a href=\"https://bitbucket.org/fbennett/citeproc-js/wiki/Home\">citeproc-js</a>
61
+ CSL processor in 2010.\nThey have since moved away from simply using CSL to
62
+ become one of our biggest contributors.\nCarles Pina of Mendeley helped us
63
+ improve the central CSL style repository, and create CSL styles for 1500 Elsevier
64
+ journals.\nMendeley also <a href=\"http://www.prnewswire.co.uk/news-releases/mendeley-teams-up-with-columbia-university-libraries-to-develop-a-citation-style-language-editor-through-125000-sloan-foundation-award-144578085.html\">collaborated</a>
65
+ with Columbia University Libraries to created the <a href=\"http://editor.citationstyles.org/about/\">Visual
66
+ CSL Editor</a>, which was funded by a Sloan Foundation Award and <a href=\"http://blog.mendeley.com/academic-features/make-your-citations-look-exactly-how-they-should-with-mendeleys-visual-citation-style-editor/\">released</a>
67
+ in 2012.</p>\n\n<p>Now, Mendeley, together with Elsevier, stepped up once
68
+ more, and made the first major financial contribution to the CSL project.\nWe
69
+ received a $5000 donation, which we will use to cover project expenses and
70
+ help ensure the long-term sustainability of CSL.\nMendeley is one of the most
71
+ popular products to use CSL, and this level of involvement is crucial in helping
72
+ us move CSL forward.\nWe hope others will follow Mendeley’s lead, and we look
73
+ forward to continue improving CSL.</p>\n\n<p>In particular, we will collaborate
74
+ with Zotero on their upcoming data model redesign, which should help us provide
75
+ guidance to other projects on which fields each item type should carry and,
76
+ among other things, improve support for primary and archival sources.\nWe
77
+ also plan to adopt features from Frank Bennett’s <a href=\"http://citationstylist.org/\">Multilingual
78
+ Zotero</a> into official CSL, such as better support for legal citations and
79
+ citing items in multiple languages.\nWe’ll of course continue to maintain
80
+ the project website and documentation, and handle style submissions to the
81
+ repository.\nFinally, we’ll keep reaching out to publishers to further increase
82
+ the number of journals covered by CSL styles.</p>","tags":[],"language":"en","blog_id":"prmb582","blog":{"id":"prmb582","title":"Citation
83
+ Style Language","language":"en","favicon":null,"feed_url":"https://citationstyles.org/feed.xml","home_page_url":"https://citationstyles.org/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Engineering
84
+ and Technology"}}'
85
+ recorded_at: Sun, 04 Jun 2023 10:18:36 GMT
86
+ - request:
87
+ method: get
88
+ uri: https://rogue-scholar.org/api/posts/1jdkwod5
89
+ body:
90
+ encoding: UTF-8
91
+ string: ''
92
+ headers:
93
+ Connection:
94
+ - close
95
+ Host:
96
+ - rogue-scholar.org
97
+ User-Agent:
98
+ - http.rb/5.1.1
99
+ response:
100
+ status:
101
+ code: 200
102
+ message: OK
103
+ headers:
104
+ Age:
105
+ - '0'
106
+ Cache-Control:
107
+ - public, max-age=0, must-revalidate
108
+ Content-Length:
109
+ - '3559'
110
+ Content-Type:
111
+ - application/json; charset=utf-8
112
+ Date:
113
+ - Sun, 04 Jun 2023 11:13:40 GMT
114
+ Etag:
115
+ - '"15ahqsuw1ek2q9"'
116
+ Server:
117
+ - Vercel
118
+ Strict-Transport-Security:
119
+ - max-age=63072000
120
+ X-Matched-Path:
121
+ - "/api/posts/[slug]"
122
+ X-Vercel-Cache:
123
+ - MISS
124
+ X-Vercel-Id:
125
+ - fra1::iad1::9bqqh-1685877219798-ee7c311b5c7e
126
+ Connection:
127
+ - close
128
+ body:
129
+ encoding: UTF-8
130
+ string: '{"id":"https://citationstyles.org/2020/07/11/seeking-public-comment-on-CSL-1-0-2/","short_id":"1jdkwod5","url":"https://citationstyles.org/2020/07/11/seeking-public-comment-on-CSL-1-0-2/","title":"Seeking
131
+ Public Comment on CSL 1.0.2 Release","summary":"Over the past few months,
132
+ Citation Style Language developers have worked to address a backlog of feature
133
+ requests. This work will be reflected in two upcoming releases. The first
134
+ of these, 1.0.2, is slated...","date_published":"2020-07-11T00:00:00Z","date_modified":"2020-07-11T00:00:00Z","authors":[{"url":null,"name":"Sebastian
135
+ Karcher"}],"image":null,"content_html":"<p>Over the past few months, Citation
136
+ Style Language developers have worked to address a backlog of feature requests.
137
+ This work will be reflected in two upcoming releases. The first of these,
138
+ 1.0.2, is slated for release shortly. Its focus is on easy to implement, non-controversial
139
+ additions, principally new item types, fields, and terms. We’re seeking public
140
+ comment on the planned released from now until <strong>July 26, 2020, 12pm
141
+ EDT</strong>.</p>\n\n<p>A non-technical summary of the release can be found
142
+ in a <a href=\"https://docs.google.com/document/d/1wY1cOOamDYYh8VNW7h_uleqieBDGOa_LYsRiVdQy1RI/edit#heading=h.wsywjzy5t4j6\">google
143
+ doc here</a>. For more technical details, you can follow the development on
144
+ the <a href=\"https://github.com/orgs/citation-style-language/projects/3\">github
145
+ project board</a>. We welcome feedback directly on the google doc, in specific
146
+ github issues, or on our <a href=\"https://discourse.citationstyles.org/\">forums</a>.</p>\n\n<p>Tremendous
147
+ thanks to Bruce D’Arcus, Denis Maier, and Brenton Wiernik, who did the bulk
148
+ of the work of organizing proposals accumulated over the last 8 years and
149
+ preparing the release.</p>\n\n<h2 id=\"previewing-csl-11\">Previewing CSL
150
+ 1.1</h2>\n<p>CSL 1.1, slated for release later this year, will include more
151
+ significant extensions of CSL functionality. While we’ll have a separate public
152
+ comment period for this release, we’re happy for input on the ongoing discussions
153
+ on github and the forums. In particular, we’re eager to hear from projects
154
+ implementing CSL styles, both in a citeproc and in user-facing applications
155
+ such as reference managers or citation formatters.</p>\n\n<p>This release
156
+ will primarily add the following new features:</p>\n<ul>\n <li>Full support
157
+ for narrative citation styles (“Like Doe (2018)”).</li>\n <li>Ability to
158
+ specify more complex conditional logic.</li>\n <li>Ability to independently
159
+ format subtitles and main titles.</li>\n <li>A new “related” attribute to
160
+ express related reviewed and original items (still in discussion).</li>\n <li>Improvements
161
+ to the CSL input format(s):\n <ul>\n <li>Adopting the new EDTF ISO
162
+ standard, which offers full support for date ranges, seasons, uncertain and
163
+ approximate qualifiers, and decades and centuries.</li>\n <li>A new “custom”
164
+ property to add extension metadata.</li>\n <li>New related modelling
165
+ to match the new style attribute (as above, still in discussion).</li>\n <li>An
166
+ official YAML representation, which can be validated with the same JSON schemas.</li>\n </ul>\n </li>\n</ul>","tags":[],"language":"en","blog_id":"prmb582","blog":{"id":"prmb582","title":"Citation
167
+ Style Language","language":"en","favicon":null,"feed_url":"https://citationstyles.org/feed.xml","home_page_url":"https://citationstyles.org/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Engineering
168
+ and Technology"}}'
169
+ recorded_at: Sun, 04 Jun 2023 11:13:40 GMT
170
+ recorded_with: VCR 6.1.0