:PROPERTIES:
:ID:       9c85ffb2-fc90-4b38-abce-f0425a2b79de
:END:
#+title: Software Heritage
#+date: 2021-07-25 21:01:45 +08:00
#+date_modified: 2021-07-28 00:02:38 +08:00
#+language: en


- project link is at https://www.softwareheritage.org/
- the infrastructure and tools they used is also open source;
  primarily happening at [[https://forge.softwareheritage.org/][their software forge]]
- an ambitious project archiving all of humanity's publicly available source code
- primarily made for researchers to easily refer to software;
  a centralized database for referring software similar to digital object identifiers (DOI) in research materials and ISBN for books
- the archive itself is more of a gigantic merkle tree with the ability to interact with the [[https://docs.softwareheritage.org/devel/swh-model/data-model.html][individual objects]] such as commits, revisions, snapshots, and even the very source code files of an archived repo
- it is version control software-agnostic;
  archived software from several sources (e.g., Git, Mercurial)
- each object is given an identifer referred to as [[https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html][Software Heritage persistent identifiers]] (SWHIDs)
- funded from donations including big companies and several not-for-profit foundations
- a big component for [[id:6eeb7a24-b662-46d6-9ece-00a5028ff4d8][Reproducible research]] for other projects such as [[id:3b3fdcbf-eb40-4c89-81f3-9d937a0be53c][Nix package manager]] and [[id:be917383-84c4-4bf5-9ca0-b04bfb778f4f][Guix package manager]] used as a fallback when upstream vanished;
  soon enough, it will develop tools to integrate them further such as archiving the code used to build the binary cache
- there is a [[https://archive.softwareheritage.org/][public interface for browsing the archive]]
- they have dedicated resources into creating an infrastructure for creating a centralized reference for software such the following list
  + [[id:cf5cadae-e01b-4099-86fe-b0e05bda4d39][swh.fuse]], a tool that integrates the archive into a user-local filesystem integrating the archive for development workflow
  + roam:swh.search adding the search functionality in the archive
  + roam:swh.lister lists from several forges (e.g., GitHub, GitLab)
