Kairns

Softwares for the operation and study of computing infrastructures

Quentin Guilloteau

Sharing Code in a Double-blind Way with Software-Heritage

Quentin Guilloteau

2025-10-24

Ok, so, imagine: we want to share some code in out paper, but the venue asks for double-blind review.

There are several ways that we can go about this:

  • an anonymous git repository: but requires to create a new user, and we lose the history of the commits
  • Zenodo archive: might be a bit annoying for the reviewer to explore the code without having to download the entire archive...
  • anonymous4openscience: needs to be on GitHub, and non longevous links

But, there is another (better) way!

Software-Heritage

We will use Software-Heritage to archive our code and then to share it in a longevous way.

An easy way that we can save our repository on Software-Heritage through their web inteface: Save Code Now

After the snapshop will be taken, we will be able to access it and retrive the permalink (on the small red tab on the right side of the screen).

This is what the permalink for sharing a snapshot of a repository on Software-Heritage looks like:

https://archive.softwareheritage.org/swh:1:dir:f9ffa3caea4077a51221cfb18c2929bbc56c7f2a;origin=https://github.com/GuilloteauQ/study-docker-repro-longevity;visit=swh:1:snp:0b338477dcb75d8801fa1a1035558957e33444e4;anchor=swh:1:rev:d685d19a4905dc59f699b508a890cd2fc282adb9

Explore the repository!

As we can see, there are all the information: URL of the repository, commit authors, commit time, branches, ect. Those are all the information we would like to remove.

Anonymize!

To anonymize, simply remove the everything but the first part of the URL, and you get

https://archive.softwareheritage.org/swh:1:dir:f9ffa3caea4077a51221cfb18c2929bbc56c7f2a

Explore the repository!

There is nothing more than the code now: no commit information or link to the repository. But still, someone can explore the code in the snapshot.

Integration with LaTeX

To share the anonymize repository in a document, there are two main ways:

  1. simply give the anonymize URL

  2. integrate with biblatex

In the following, we will show how to integrate with biblatex.

Can use the biblatex-software package developed by the people at Software-Heritage: For more information, please refer to the blog post "Citing Software with Style".

We will need to used the package, and to tell biblatex to use it`:

\usepackage[
  datamodel=software,
  backend=biber
]{biblatex}
\addbibresource{references.bib}
\usepackage{software-biblatex}

Now in the .bib file, we can use the @software type (among many others!) to define links to our repository.

@software{myrepo,
    title = {Authors' Code},
    author = {Guilloteau, Quentin},
    url = {https://archive.softwareheritage.org/swh:1:cnt:e451b603eb672f625ec06ba34550dea1d0388a5f;origin=https://github.com/GuilloteauQ/study-docker-repro-longevity;visit=swh:1:snp:0b338477dcb75d8801fa1a1035558957e33444e4;anchor=swh:1:rev:d685d19a4905dc59f699b508a890cd2fc282adb9;path=/ecg/app/ecg.py},
    year = {2025},
    swhid = {swh:1:cnt:e451b603eb672f625ec06ba34550dea1d0388a5f;origin=https://github.com/GuilloteauQ/study-docker-repro-longevity;visit=swh:1:snp:0b338477dcb75d8801fa1a1035558957e33444e4;anchor=swh:1:rev:d685d19a4905dc59f699b508a890cd2fc282adb9;path=/ecg/app/ecg.py}
}

In the .tex we can then cite/reference our code with the \cite macro:

The software used in these experiments is available online~\cite{myrepo}.

For the anonymize version, we just need to remove the sensitive information from the swhid and url fields:

@software{myrepo_ano,
    title = {Authors' Code},
    author = {Anonymous, Authors},
    url = {https://archive.softwareheritage.org/swh:1:cnt:e451b603eb672f625ec06ba34550dea1d0388a5f},
    year = {2025},
    swhid = {swh:1:cnt:e451b603eb672f625ec06ba34550dea1d0388a5f}
}

The snippet above will generate the following:

result

output: main.pdf

source: main.tex

source: references.bib