Skip to content

How to modernize cryptobib #323

Description

@thomwiggers

Cryptobib is comprehensive and fairly popular. In this issue, I want to discuss some of the potential improvements that we could make. I want to positioning this as a starting point for a discussion, and I also don't think all of these issues need to be tackled at once. In my mind, we will create separate issues for work items from this discussion.

I can think of a few problems/points of friction:

  • Adding a 40MB file to your bibtex processing takes a fair bit of compute, taking upwards of a minute with biber
  • Editing a 30MB crypto_db.bib file is fairly horrible with many editors
  • Because we're directly storing the database in bibtex we have to do weird things to preserve compatibility with older versions of bibtex while not being able to support fancier features supported by biblatex (e.g. custom date formatting with may # "~27--28," shenanigans instead of date fields supporting date ranges)
  • Due to features added at different times it's hard to e.g. go back and add doi to entries that are currently lacking them or to otherwise try to update metadata. Once it's in, it's in.
  • IACR ePrint updates to papers are not tracked
  • IACR ePrint versions of papers are not tracked

On the maintenance side, I can think of the following issues:

  • The current scripts work fine but are a bit annoying at times because we need to parse bibtex.
  • We could use a bit of a cleanup in terms of virtual environments and stuff (mostly more modern tools like uv, ruff)
  • We should use the ePrint API (but that needs API secrets)
  • The export repositories are manually generated and should probably be done using CI

I think the following would be nice-to-have:

  • export-compat and export-biblatex variants of cryptobib that you can get the modern biblatex features (I have hacked this together already in this fork: https://github.com/thomwiggers/cryptobib-export/). Maybe also bibxml for biber, which should be faster to parse.
  • A variant that separates all conferences and years into separate .bib files so that you don't have to parse all conferences.
    • This could be combined with a LaTeX package that automatically imports the right bibliography files.

On the strategy for getting this done, I would like to lean into the use of vibecoding. For example, Claude is pretty good at writing scripts for scraping, parsing and processing data. While I of course don't want to merge PRs without review, I actually don't think that I care too much about the code quality here — we don't run production systems on these scripts, and I also think that if the vibed thing turns into a mess, throwing things away and starting over is something that has gotten super cheap with AI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions