Replacing CITATION.bib with a standard metadata format

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.


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.


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.

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).


Just an FYI. I was led to 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.

1 Like
  • codemeta.json is the standard name (codemeta/codemeta#81)
  • the possible fields are listed here:
  • it’s a JSON file.
  • Essentially doi2bib(JSON.parse(String(read("codemeta.json")))["citation"]) using the doi2bib function I posted above, 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 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.