# Replacing CITATION.bib with a standard metadata format

**URL:** <https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871>\
**Category:** Tooling\
**Tags:** packages\
**Created:** [July 27, 2019, 3:14am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871 "2019-07-27T03:14:17Z")\
**Posts on this page:** 18\
**Page:** 2

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [August 17, 2019, 12:57am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/21 "2019-08-17T00:57:23Z")

</div>

I believe that the decision was to keep Pkg.jl limited to only building the environment (fetch, solve dependencies, version resolutions, install code). The metadata for package would be handled through something parallel.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [September 17, 2019, 4:10pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/22 "2019-09-17T16:10:02Z")

</div>

This seems like a classic “perfect is the enemy of the good” situation: CodeMeta is the perfect here, `CITATION.bib` is the good. The `CITATION.bib` convention is truly the dumbest, simplest thing that could possibly work, but it’s extremely pragmatic. The CodeMeta thing is better, smarter, more general… and something that few people seem to know or want to do. To that end, I’d like to propose the following:

- Those who don’t want to deal with CoteMeta should just write `CITATION.bib` files by hand;
- Authors are _encouraged_ to use CodeMeta as the source of truth and generate `CITATION.bib` files to check into packages.

It may be possible to write tooling to reverse generate CodeMeta data from the `CITATION.bib` format, which should be used as a one-time utility for those who want to transition, after which CodeMeta should be considered the source of truth. This way people using LaTeX for publication only ever need to look at `CITATION.bib` and don’t need to install any tooling to parse and format CodeMeta files just to cite something.

It would help to encourage the use of CodeMeta if someone could decipher the standard sufficiently to figure out how to write citations in packages. I have not been able to glean basic things like:

- what the file name should be
- what the relevant field names are
- what tools one should install to parse and transform CodeMeta
- what command invocations are necessary to generate BibTeX from CodeMeta

Without that basic information distilled somewhere, I don’t think CodeMeta has a snowball’s chance in hell of taking off in the Julia ecosystem and this thread merely serves to cast FUD on the already-fairly-successful `CITATION.bib` convention.

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [September 17, 2019, 5:19pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/23 "2019-09-17T17:19:21Z")

</div>

I’ve recently fallen into some familiarity with schema after searching high and low for various neuroscience related databases. If someone is truly motivated to become familiar with CodeMeta and translate it they can take a look [here](https://github.com/codemeta/codemeta/blob/master/crosswalk.csv).

For what it’s worth, I’m starting to think CodeMeta is a bit of over engineering. Most people don’t care about all the stuff it’s trying to do and those who would care can get all that information elsewhere (e.g., Project files).

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [September 17, 2019, 9:20pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/24 "2019-09-17T21:20:55Z")

</div>

Just an FYI. I was led to [https://github.com/adamslc/Citations.jl](https://github.com/adamslc/Citations.jl) to put citations in docstrings. It needed some love so I did a very basic pull request that makes it so that it loads now. However, if this is something we intend to use to support bib files someone who knows more about text parsing and the documenter system should probably take a look at it.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [September 17, 2019, 11:59pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/25 "2019-09-17T23:59:37Z")

</div>

> [@StefanKarpinski](#):
>
> It would help to encourage the use of CodeMeta if someone could decipher the standard sufficiently to figure out how to write citations in packages. I have not been able to glean basic things like:
> 
> - what the file name should be
> - what the relevant field names are
> - what tools one should install to parse and transform CodeMeta
> - what command invocations are necessary to generate BibTeX from CodeMeta

- `codemeta.json` is the standard name ([codemeta/codemeta#81](https://github.com/codemeta/codemeta/issues/81))
- the possible fields are listed here: [The CodeMeta Project](https://codemeta.github.io/terms/)
- it’s a JSON file.
- Essentially `doi2bib(JSON.parse(String(read("codemeta.json")))["citation"])` using the `doi2bib` function I posted [above](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/4), at least in the minimal case of a single `citation` given by a DOI, although technically the `citation` field is a URL so you’d need split out the part after `http://dx.doi.org/` first … you could also support other kinds of URLs as I mentioned above. (The `citation` field can also be an array.)

I agree that their documentation is abysmal, though.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [September 10, 2020, 6:39am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/26 "2020-09-10T06:39:21Z")

</div>

I added an example to one of my packages: [Econometrics.jl](https://github.com/Nosferican/Econometrics.jl/blob/master/codemeta.json) I used the Software Heritage [tool](https://codemeta.github.io/codemeta-generator/) to build it.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [July 27, 2021, 10:52pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/27 "2021-07-27T22:52:52Z")

</div>

GitHub now uses `CITATION.cff` (since 5 days ago)  
[https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files#about-citation-files](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files#about-citation-files)

Announced today [https://twitter.com/natfriedman/status/1420122675813441540](https://twitter.com/natfriedman/status/1420122675813441540)

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [July 28, 2021, 12:12pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/28 "2021-07-28T12:12:33Z")

</div>

Ideally we provide some barebones support for this and bib. It’s likely to have momentum with a big player like GitHub backing it, but it also is hard for me (and perhaps others) to see why GitHub is the entity that decides the best citation format.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [July 28, 2021, 12:36pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/29 "2021-07-28T12:36:22Z")

</div>

> [@Zach\_Christensen](#):
>
> why GitHub is the entity that decides the best citation format

Frankly, if the majority of software authors happened to converge on _any_ reasonably sane format, I would not care much about who made the decision, whether it is the “best” format, or which one it actually is.

FWIW CFF seem OK, Github is a major player, and they invested a bit in the tooling… so hopefully everyone will follow their move and we can finally cite software conveniently (and be cited, which a lot of Julia package authors care about).

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [July 28, 2021, 2:52pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/30 "2021-07-28T14:52:46Z")

</div>

Zenodo followed suit:

> <https://twitter.com/ZENODO_ORG/status/1420357001490706442>

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [July 28, 2021, 3:59pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/31 "2021-07-28T15:59:52Z")

</div>

I just think it’s odd that after billions of dollars in academic publishing fees Github is the one to decide on this. Certainly citation is important in other areas of work, but that’s where citations → income. I guess I anticipated developers being more bothered that Microsoft is making the calls here, but I don’t personally care all that much. Ultimately, I agree with what you said:

> [@Tamas\_Papp](#):
>
> converge on _any_ reasonably sane format

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 28, 2021, 5:04pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/32 "2021-07-28T17:04:15Z")

</div>

In the format showdown between BibTeX code and YAML files I’m not sure which is worse but I agree that it’s good that someone just pick something and it doesn’t really matter who as long as there’s some kind of agreement. So CFF seems fine.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [July 29, 2021, 8:47am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/33 "2021-07-29T08:47:51Z")

</div>

I am looking forward to the day when papers have a “software used” section (should not be mixed with the bibliography IMO), that one can just autogenerate from the `Project.toml` of the code written for the paper.

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [July 31, 2021, 9:58pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/34 "2021-07-31T21:58:17Z")

</div>

> [@Zach\_Christensen](#):
>
> that’s where citations → income

Huh? Students, grants, endowment and donations → income… citations don’t create any money whatsoever…

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [July 31, 2021, 11:40pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/35 "2021-07-31T23:40:06Z")

</div>

> [@dlfivefifty](#):
>
> Huh? Students, grants, endowment and donations → income… citations don’t create any money whatsoever…

I assume it is taking the long view.  
Get more citations, get promoted, get paid more etc etc

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [August 1, 2021, 6:30am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/36 "2021-08-01T06:30:58Z")

</div>

Ah you mean more income for the academic. Generally, getting promoted / raises is based on things that bring in more income to the uni: grants. Highly cited papers might help build a case for promotion, but it’s not the main thing, and not clear if highly cited software is recognised in the same way

---

<div class="post-metadata">

**Author:** ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)\
**Post date:** [August 1, 2021, 9:56am UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/37 "2021-08-01T09:56:49Z")

</div>

You mean like:

[https://github.com/SebastianM-C/PkgCite.jl](https://github.com/SebastianM-C/PkgCite.jl)

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 1, 2021, 1:22pm UTC](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871/38 "2021-08-01T13:22:06Z")

</div>

Yes, exactly. Thanks, I did not know about that package!

[Previous page](https://discourse.julialang.org/t/replacing-citation-bib-with-a-standard-metadata-format/26871.md?page=1)
