Developers

Language Specification

CSL is defined by two documents: the human-readable CSL specification, and the computer-readable CSL schema, written in the RELAX NG compact syntax, which can be used for validation of CSL styles and locale files.

Note: We, the authors of the CSL schema, have agreed to relicense the schema under the more permissible MIT license, although we still have an open issue to update the license text in past schema releases to reflect this decision.

Code repositories

We maintain several Git repositories on GitHub at https://github.com/citation-style-language. The main repositories are:

  • documentation - for CSL documentation, including the source of the CSL specification
  • journals - for storing publisher’s journal metadata (which we use to generate most of our “dependent” styles)
  • locales - for CSL locale files
  • schema - for the CSL schema
  • styles - for CSL styles
  • styles-distribution - this mirror of the “styles” repo only updates after the Travis CI tests clear, and offers up-to-date style timestamps.
  • utilities - for scripts used to maintain CSL styles and locale files
  • test-suite - test suite maintained by Frank Bennett for testing of citeproc-js. The test suite can be used by authors of other CSL processors, but contains tests that go beyond the scope of the CSL specification.

CSL Processors

Open source CSL 1.0.2-compatible CSL processors include:

Name Programming Language Author Known Implementations Comments
citeproc‑dotnet .NET Fouke Boss
citeproc‑el Emacs Lisp András Simonyi
citeproc Haskell John MacFarlane pandoc Replaces the deprecated pandoc-citeproc (last updated in 2020), which itself was a continuation of Andrea Rossato's citeproc‑hs (last updated in 2015).
citeproc‑java Java Michel Krämer Java wrapper for citeproc-js
citeproc‑js JavaScript Frank Bennett Zotero, Mendeley, Qiqqa, Docear, KCite
citeproc‑php PHP Sebastian Böttger Replaces the original citeproc‑php by Ron Jerome, which was last updated in 2013.
citeproc‑py Python Brecht Machiels
citeproc‑ruby Ruby Sylvester Keil
citeproc‑rs Rust Cormac Relf

Mappings

A mapping between Zotero fields and CSL variables can be found at http://aurimasv.github.io/z2csl/typeMap.xml (repo). A similar mapping for Mendeley can be found at https://service.elsevier.com/app/answers/detail/a_id/22175/supporthub/mendeley/.

The CSL Ontology defines URIs for referencing elements of the CSL data model.

Development Process

Our governance document describes how we aim to run the CSL project. In short, we strive to develop CSL in an open, consensus-seeking way. Our goal is to improve scholarly communication by automating the correct formatting of citations, and by stimulating cooperation and compatibility between the different citation software products. Our primary communication channel for announcements, discussions, and decision making is the public Discourse forum. We also use the issue trackers of our GitHub repositories to keep track of issues, and while discussions take place there as well, final design decisions are always made in the forum. While CSL always has had close ties to Zotero, the two are independent projects. Still, many CSL contributors are Zotero users, and the lively Zotero forums continue to play an important role in receiving user feedback.

Project History

Release Timeline

Date Version Resources Comments
January 2, 2022 1.0.2 Schema, Specification Announcement.
September 3, 2012 1.0.1 Schema, Specification Announcement and Release notes.
May 30, 2010 1.0 Schema, Specification Announcement. Update of the specification. No changes were made to the CSL 1.0 schema.
March 22, 2010 1.0 Schema, Specification Announcement and Upgrade notes. First release of the CSL specification. CSL 1.0 was first supported by Zotero 2.1, Mendeley 0.9.8, and Papers2 (for Mac).
February 1, 2010 0.8.1 Schema Announcement
March 21, 2009 0.8 Schema

Hosting History

The CSL project started out in 2004 on SourceForge under the project name xbiblio, with the xbiblio-devel mailing list as main project communication channel.

In late 2009, project code was migrated from the SourceForge xbiblio SVN repository to Mercurial repositories on Bitbucket under the account of Bruce D’Arcus.

In March 2011, project code was once again migrated to its current home on GitHub. Around this time, the CSL project also took over maintenance of the CSL styles repository, which was originally maintained by Zotero developers as part of their SVN repository (Zotero has migrated to GitHub as well, and their original self-hosted SVN repository is no longer online).

In January 2018, we moved from the xbiblio-devel mailing list (Nabble mirror) to a Discourse forum for project communication. While the discussion archive from xbiblio-devel has been migrated to Discourse, we are aware of some formatting issues with the imported posts, in particular those with code excerpts. The xbiblio-devel mailing list remains available as a read-only resource.