This week I launched Commonmeta, a new scholarly metadata standard described at https://commonmeta.org. Commonmeta is the result of working on conversion tools for scholarly metadata for many years. One conclusion early on was that these conversions are many-to-many, so it becomes much easier to have an internal format that is the intermediate step for these conversions.
Commonmeta is inspired by two initiatives: Codemeta and Commonmark. CodeMeta contributors are creating a minimal metadata schema for science software and code, in JSON and XML. The goal of CodeMeta is to create a concept vocabulary that can be used to standardize the exchange of software metadata across repositories and organizations. Commonmark is a strongly defined, highly compatible specification of Markdown, along with a suite of comprehensive tests to validate Markdown implementations against this specification.
These two specifications not only inspired the name but also the principles of how I want to see Commonmeta operate:
- driven by real-world implementations and not committees
- features that focus on what is common in existing implementations/formats
- a testable specification
The website goes into a little bit more detail about why I didn't pick any the existing standards but instead came up with a new metadata standard. This is a familiar pattern made famous by the XKCD comic shown above.
As I want this to be driven by real-world implementations and not committees, I also in the last few weeks launched commonmeta-py, a Python implementation of the standard available on PyPi. And in a few months, I hope to have tweaked the Ruby Gem that I originally wrote a few years ago to support Commonmeta as the internal format.
With testable specification, I mean both a JSON Schema to describe Commonmeta and many, many tests that validate the conversions with real-world data. The JSON Schema is available here, and will become stable once it reaches version 1.0. commonmeta-py comes with lots of tests, but I hope to further improve the test coverage.