<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://coptr.digipres.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ross-spencer</id>
	<title>COPTR - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://coptr.digipres.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ross-spencer"/>
	<link rel="alternate" type="text/html" href="https://coptr.digipres.org/Special:Contributions/Ross-spencer"/>
	<updated>2026-06-06T15:59:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:PRONOM&amp;diff=6649</id>
		<title>Talk:PRONOM</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:PRONOM&amp;diff=6649"/>
		<updated>2026-05-27T09:04:25Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Question about this entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why do we not have a PRONOM entry? ==&lt;br /&gt;
&lt;br /&gt;
This feels like it might be a good entry to have (for completeness if nothing else), but it was deleted early on in 2014. Do we want to revisit the decision? [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 09:04, 27 May 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:Wish_list_of_tools_to_add_to_COPTR&amp;diff=6633</id>
		<title>Talk:Wish list of tools to add to COPTR</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:Wish_list_of_tools_to_add_to_COPTR&amp;diff=6633"/>
		<updated>2026-05-14T21:21:51Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== This page and workflow ==&lt;br /&gt;
&lt;br /&gt;
Is there a way to bring this page more toward the front-page or side-menus of COPTR? I don't see it on the front page or in the menus and so I'm probably just one discovering that it exists.&lt;br /&gt;
&lt;br /&gt;
I am tempted to argue that the existence of this page suggests some residue difficulty adding entries as it should be as easy to create a new entry as adding to a todo list.&lt;br /&gt;
&lt;br /&gt;
I am not sure it should be deleted once triaged but maybe there is a discussion how to work with it within COPTR's broader workflow? [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 21:21, 14 May 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:Wish_list_of_tools_to_add_to_COPTR&amp;diff=6632</id>
		<title>Talk:Wish list of tools to add to COPTR</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:Wish_list_of_tools_to_add_to_COPTR&amp;diff=6632"/>
		<updated>2026-05-14T21:21:27Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Question about workflow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== This page and workflow ==&lt;br /&gt;
&lt;br /&gt;
Is there a way to bring this page more toward the front-page or side-menus of COPTR? I don't see it on the front page or in the menus and so I'm probably just one discovering that it exists.&lt;br /&gt;
&lt;br /&gt;
I am tempted to argue that the existence of this page suggests some residue difficulty adding entries as it should be as easy to create a new entry as adding to a todo list.&lt;br /&gt;
&lt;br /&gt;
I am not sure it should be deleted once triaged but maybe there is a discussion how to work with it within COPTR's broader workflow? [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]])&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6607</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6607"/>
		<updated>2026-04-23T07:44:08Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add NTTW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Technical characteristics ===&lt;br /&gt;
&lt;br /&gt;
JSONID explores potential technical characteristics that can&lt;br /&gt;
be attributed to serde formats. An example for a basic JSON object might &lt;br /&gt;
look as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content_length&amp;quot;: 82,&lt;br /&gt;
  &amp;quot;number_of_lines&amp;quot;: 9,&lt;br /&gt;
  &amp;quot;line_warning&amp;quot;: false,&lt;br /&gt;
  &amp;quot;top_level_keys_count&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;top_level_keys&amp;quot;: [&lt;br /&gt;
    &amp;quot;key1&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;top_level_types&amp;quot;: [&lt;br /&gt;
    &amp;quot;map&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;depth&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;heterogeneous_list_types&amp;quot;: false,&lt;br /&gt;
  &amp;quot;fingerprint&amp;quot;: {&lt;br /&gt;
    &amp;quot;unf&amp;quot;: &amp;quot;UNF:6:YEKQWBGm75JsN6H+8SzYRg==&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;bafkreidexnd3r76r5h3invwvu554573px5z4fg4uglw4pextmqc765kz64&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;doctype&amp;quot;: &amp;quot;JSON&amp;quot;,&lt;br /&gt;
  &amp;quot;encoding&amp;quot;: &amp;quot;UTF-8&amp;quot;,&lt;br /&gt;
  &amp;quot;agent&amp;quot;: &amp;quot;jsonid/0.12.0 (ffdev-info)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of these technical characteristics will be explored in the &lt;br /&gt;
documentation and future writing.&lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
The significance of these fingerprinting techniques is their application&lt;br /&gt;
to identical data structures stored in different file formats. &lt;br /&gt;
&lt;br /&gt;
The checksum of different file formats will always evaluate differently, &lt;br /&gt;
but analysed as data structures, we can begin to appraise data &lt;br /&gt;
beyond its presentation.&lt;br /&gt;
&lt;br /&gt;
==== Fingerprinting example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Content&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;hello&amp;quot;: &amp;quot;world&amp;quot;,&lt;br /&gt;
    &amp;quot;goodbye&amp;quot;: false,&lt;br /&gt;
    &amp;quot;values&amp;quot;: [&lt;br /&gt;
        1,&lt;br /&gt;
        2,&lt;br /&gt;
        3.142&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;goodbye: false&lt;br /&gt;
hello: world&lt;br /&gt;
values:&lt;br /&gt;
- 1&lt;br /&gt;
- 2&lt;br /&gt;
- 3.142&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;hello = &amp;quot;world&amp;quot;&lt;br /&gt;
values = [1, 2, 3.142]&lt;br /&gt;
goodbye = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;JSON&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;YAML&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;TOML&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Checksum (MD5)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bcd5a37f36ada2e4b72144d90a1427d5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;b5e75fdc100032f2744eff1e1bdf5b88&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;04b33e24e0cc208c6bd70fabaef3a9c5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;UNF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CID&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example identification output ===&lt;br /&gt;
&lt;br /&gt;
JSONID has currently settled on a line-by-line, [[Fine Free File Command]] (File) and MIME-Like output. Fields are tab delineated and are human readable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/media/govdocs/govdocs_selected/LOG_1/074500.log	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/HTML_24/009970.html	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/TEXT_6/131522.txt	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is anticipated that users will help guide the ongoing development of JSONID's output to better support both user and repository workflows.&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== Sample files == &lt;br /&gt;
&lt;br /&gt;
Sample files used for the development of JSONID signatures can be found in their [https://github.com/ffdev-info/jsonid-integration-files own repository].&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
* [https://www.youtube.com/watch?v=ZMVb3Bc_irc JSONID at NTTW9].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Linguist&amp;diff=6592</id>
		<title>Linguist</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Linguist&amp;diff=6592"/>
		<updated>2026-03-30T12:16:53Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Initial entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identify the breakdown of programming languages used in a GitHub repository, or the anticipated language of an individual file&lt;br /&gt;
|homepage=https://github.com/github-linguist/linguist/tree/main&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/github-linguist/linguist/tree/main&lt;br /&gt;
|license=MIT&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|language=Ruby&lt;br /&gt;
|function=Content Profiling, File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identify the breakdown of programming languages used in a GitHub repository, or the anticipated language of an individual file. &lt;br /&gt;
&lt;br /&gt;
The most well-known output of linguist's process is the language breakdown graph shown on a repository on GitHub documenting the percentage of languages used along with a small chart visualizing that breakdown.&lt;br /&gt;
&lt;br /&gt;
Unlike utilities like DROID, based on PRONOM, which rely on pattern matching to identify, in this case programming language, and thus, file format, GitHub's linguist is deterministic and uses a series of decision making strategies to determine the potential file format.&lt;br /&gt;
&lt;br /&gt;
=== Algorithm === &lt;br /&gt;
&lt;br /&gt;
Linguist uses a number of strategies to reduce the amount of inputs it is dealing with including excluding binary objects and those identified as data before applying a series of identification strategies to try and determine the programming language used across a GitHub repository or an individual file. &lt;br /&gt;
&lt;br /&gt;
Its algorithm is described in more detail [https://github.com/github-linguist/linguist/blob/537297cdae3ab05f8d5dd1c03627a5bd73707b19/docs/how-linguist-works.md on GitHub].&lt;br /&gt;
&lt;br /&gt;
Among its strategies, linguist lists the following checks:&lt;br /&gt;
&lt;br /&gt;
* Vim or Emacs modeline,&lt;br /&gt;
* commonly used filename,&lt;br /&gt;
* shell shebang,&lt;br /&gt;
* file extension,&lt;br /&gt;
* XML header,&lt;br /&gt;
* man page section,&lt;br /&gt;
* heuristics,&lt;br /&gt;
* naïve Bayesian classification&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://blog.jakelee.co.uk/adding-github-language-with-linguist/ How to add a programming language to GitHub] Jake Lee on Software.&lt;br /&gt;
* [https://github.com/github-linguist/linguist/discussions Linguist Discussions] on GitHub.&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/github-linguist/linguist/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/github-linguist/linguist/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/github-linguist/linguist/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/github-linguist/linguist/blob/537297cdae3ab05f8d5dd1c03627a5bd73707b19/docs/how-linguist-works.md How Linguist Works] on GitHub.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://coptr.digipres.org/Cloc CLOC] (Count Lines of Code) on COPTR.&lt;br /&gt;
&lt;br /&gt;
{{Infobox tool details}}&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6582</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6582"/>
		<updated>2026-03-10T12:09:31Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add example transactions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access (succinct proofs of random access (SPoRA)) as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
From the 19-25 ArweaveHub weekly digest, SPoRA is designed to incentivize storing large parts of the blockchain's data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Under SPoRA’s consensus model, miners must prove they have access to a randomly selected piece of data from the network’s history to mine a new block. This creates a massive incentive to store as much of the weave as possible.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A network continuously proving access to user data should also be reassuring to those making use of the network/blockchain's resources.&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
An endowment calculation made at the genesis of the protocol ensures perpetual payment for storage for 200 years based on the theory of ever-decreasing storage costs.&lt;br /&gt;
&lt;br /&gt;
From the Arweave protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If a transaction does upload data, the required upload fee scales with the uploaded volume.&lt;br /&gt;
&lt;br /&gt;
A part of the fee goes directly to the miner including this transaction into a block. Its purpose is to incentivize miners to enlarge the Arweave dataset.&lt;br /&gt;
&lt;br /&gt;
The rest of the fee goes to the endowment.&lt;br /&gt;
&lt;br /&gt;
The Arweave network's endowment removes tokens from circulation every time data is uploaded, creating a reserve to pay for data storage over time. The storage purchasing power of the endowment is elastic, changing with the volume of data committed, the cost of data storage, and token value over time. One of the main drivers of change in the value of the endowment is that a decreasing cost of storage creates a corresponding proportional increase in storage purchasing power, leading to fewer tokens needing to be released from the endowment in the future. We call the rate of decline in overall costs for storing a unit of data for a fixed period of time the Kryder+ rate. This rate incorporates the change in price of hardware, electricity, and operational costs surrounding data storage.&lt;br /&gt;
&lt;br /&gt;
Users pay for 200 years' worth of replicated storage at present prices, such that only a 0.5% Kryder+ rate is sufficient to sustain the endowment for an indefinite term, in the absence of token price changes. Under these conditions, the storage purchasing power of the endowment at the end of each year would be equal to that at the beginning. The actual declining cost of storage over the last 50 years has been, on average, ≈38.5% per year.&lt;br /&gt;
&lt;br /&gt;
To determine how much a single byte costs in AR at any given time, the protocol uses the current network difficulty (as an oracle of the total amount of mining resources currently maintaining the network) and the recent history of operations.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simpler rendition from the 19-25 ArweaveHub weekly digest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
...when a user uploads data to Arweave, a fraction of the fee goes to the miner immediately. The majority is sent to an endowment fund that grows steadily over time.&lt;br /&gt;
&lt;br /&gt;
The fees for this transaction use a calculation that covers 20 replicas of user data for 200 years. This creates a self-executing, sustainable engine that ensures miners are incentivized to keep your data accessible for centuries, not just years.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://podcast.onlyarweave.com/episodes/institutional-archiving-and-more-with-peter-of-arklyio-Bst5mWEr Institutional archiving and more @ PermaWeb Pioneers].&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
* [https://ar.io/ ar.io] tooling provides distributed gateways for fault-tolerant access and and a &amp;lt;code&amp;gt;ar://&amp;lt;/code&amp;gt; namespace enabling dns like addressing.&lt;br /&gt;
&lt;br /&gt;
== Example Transaction ==&lt;br /&gt;
&lt;br /&gt;
* [https://viewblock.io/arweave/tx/XX3Si_YD30UVUqkdSp5m0BXEG_avs9tmOLv3UFB4T6Q RedStone Data Bundle] is an example of bundled data from February 2025. A bundle conforms to [https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-104.md ANS-104].&lt;br /&gt;
* [https://viewblock.io/arweave/tx/8Dke8p30z2_RVIcyK5AGQBWpRLGQlISis_TsE0IA_DE Orcfax Bagit Package] is an example of a Bagit RFC8493 file stored March 2026.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.arweave.org/developers/development/protocol Arweave Protocol].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 ArweaveHub Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6581</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6581"/>
		<updated>2026-03-10T09:47:32Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add ar.io&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access (succinct proofs of random access (SPoRA)) as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
From the 19-25 ArweaveHub weekly digest, SPoRA is designed to incentivize storing large parts of the blockchain's data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Under SPoRA’s consensus model, miners must prove they have access to a randomly selected piece of data from the network’s history to mine a new block. This creates a massive incentive to store as much of the weave as possible.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A network continuously proving access to user data should also be reassuring to those making use of the network/blockchain's resources.&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
An endowment calculation made at the genesis of the protocol ensures perpetual payment for storage for 200 years based on the theory of ever-decreasing storage costs.&lt;br /&gt;
&lt;br /&gt;
From the Arweave protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If a transaction does upload data, the required upload fee scales with the uploaded volume.&lt;br /&gt;
&lt;br /&gt;
A part of the fee goes directly to the miner including this transaction into a block. Its purpose is to incentivize miners to enlarge the Arweave dataset.&lt;br /&gt;
&lt;br /&gt;
The rest of the fee goes to the endowment.&lt;br /&gt;
&lt;br /&gt;
The Arweave network's endowment removes tokens from circulation every time data is uploaded, creating a reserve to pay for data storage over time. The storage purchasing power of the endowment is elastic, changing with the volume of data committed, the cost of data storage, and token value over time. One of the main drivers of change in the value of the endowment is that a decreasing cost of storage creates a corresponding proportional increase in storage purchasing power, leading to fewer tokens needing to be released from the endowment in the future. We call the rate of decline in overall costs for storing a unit of data for a fixed period of time the Kryder+ rate. This rate incorporates the change in price of hardware, electricity, and operational costs surrounding data storage.&lt;br /&gt;
&lt;br /&gt;
Users pay for 200 years' worth of replicated storage at present prices, such that only a 0.5% Kryder+ rate is sufficient to sustain the endowment for an indefinite term, in the absence of token price changes. Under these conditions, the storage purchasing power of the endowment at the end of each year would be equal to that at the beginning. The actual declining cost of storage over the last 50 years has been, on average, ≈38.5% per year.&lt;br /&gt;
&lt;br /&gt;
To determine how much a single byte costs in AR at any given time, the protocol uses the current network difficulty (as an oracle of the total amount of mining resources currently maintaining the network) and the recent history of operations.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simpler rendition from the 19-25 ArweaveHub weekly digest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
...when a user uploads data to Arweave, a fraction of the fee goes to the miner immediately. The majority is sent to an endowment fund that grows steadily over time.&lt;br /&gt;
&lt;br /&gt;
The fees for this transaction use a calculation that covers 20 replicas of user data for 200 years. This creates a self-executing, sustainable engine that ensures miners are incentivized to keep your data accessible for centuries, not just years.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://podcast.onlyarweave.com/episodes/institutional-archiving-and-more-with-peter-of-arklyio-Bst5mWEr Institutional archiving and more @ PermaWeb Pioneers].&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
* [https://ar.io/ ar.io] tooling provides distributed gateways for fault-tolerant access and and a &amp;lt;code&amp;gt;ar://&amp;lt;/code&amp;gt; namespace enabling dns like addressing.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.arweave.org/developers/development/protocol Arweave Protocol].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 ArweaveHub Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Fine_Free_File_Command&amp;diff=6580</id>
		<title>Fine Free File Command</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Fine_Free_File_Command&amp;diff=6580"/>
		<updated>2026-02-25T17:36:00Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add link to syntax manpage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=This is the home page for the open source implementation of the file(1) command that ships with every free operating system (OpenBSD,  Linux,  NetBSD,  FreeBSD,  etc.&lt;br /&gt;
|homepage=http://www.darwinsys.com/file/&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details&lt;br /&gt;
|ohloh_id=Fine Free File Command&lt;br /&gt;
}}&lt;br /&gt;
= Description =&lt;br /&gt;
This is the home page for the open source implementation of the file(1) command that ships with every free operating system (OpenBSD,  Linux,  NetBSD,  FreeBSD,  etc.) and has been ported to most systems where people use free software (including OS/2,  DOS,  MS Windows,  etc.). &lt;br /&gt;
&lt;br /&gt;
= User Experiences =&lt;br /&gt;
&lt;br /&gt;
*'''[2019-11-16]''' [https://shapeshed.com/unix-file/ Linux and Unix file command tutorial with examples]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/file/file/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/file/file/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/file/file/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Informative references ==&lt;br /&gt;
&lt;br /&gt;
* [https://linux.die.net/man/5/magic syntax of the File magic numbers]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:Fine_Free_File_Command&amp;diff=6579</id>
		<title>Talk:Fine Free File Command</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:Fine_Free_File_Command&amp;diff=6579"/>
		<updated>2026-02-25T17:34:57Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Note of thanks!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is this name the most idiomatic? ==&lt;br /&gt;
&lt;br /&gt;
I am wondering what folks think about the name convention adopted for this record. I have contributed to this one in the past, but even today I don't think to look under this name when I am thinking of the Unix File(1) Utility. Perhaps file (command), or another name is more appropriate? That being said, does anyone know of an aliasing mechanism on MediaWiki? An alias, or set of aliases back to this record might also make it easier to find/reference. [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 10:25, 26 January 2026 (UTC)&lt;br /&gt;
: I think the MediaWiki convention is to make [https://www.mediawiki.org/wiki/Help:Redirects Redirects] that point aliases to the 'canonical' page. Adding a &amp;quot;file (command)&amp;quot; alias seems reasonable. The tool's homepage declares it to be the &amp;quot;fine free file command&amp;quot;, but also refers to it as the &amp;quot;file(1) command&amp;quot;, so maybe that's a better name and/or alias? [[User:Andrew N. Jackson|Andrew N. Jackson]] ([[User talk:Andrew N. Jackson|talk]]) 15:12, 5 February 2026 (UTC)&lt;br /&gt;
: Experimenting with adding a redirect from [[file(1) command]]... [[User:Andrew N. Jackson|Andrew N. Jackson]] ([[User talk:Andrew N. Jackson|talk]]) 20:09, 5 February 2026 (UTC)&lt;br /&gt;
:: Alas, I didn't get a ping about this discussion, I'll need to check my notification settings -- either way, I am here because I saw it worked through the search this time!! No having to remember the Free File Command!! Very good, thanks for doing that Andy. [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 17:34, 25 February 2026 (UTC)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6563</id>
		<title>Ddrescue</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6563"/>
		<updated>2026-02-12T09:55:21Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add full-stop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=data recovery tool for hard disks, CD-ROMs, floppy disks, etc.&lt;br /&gt;
|homepage=https://www.gnu.org/software/ddrescue/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|license=GNU GPL&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|Wikidata ID=Q15427600&lt;br /&gt;
|function=Data capture and Deposit, Disk Imaging, File Recovery, Forensic&lt;br /&gt;
|content=Disk Image&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ddrescue is a data recovery tool that copies data from one file or block device to another.&lt;br /&gt;
&lt;br /&gt;
ddrescue attempts to recover data by enabling multiple retries and splitting recovery into five phases which it has termed: &lt;br /&gt;
&lt;br /&gt;
* copying, &lt;br /&gt;
* trimming, &lt;br /&gt;
* sweeping, &lt;br /&gt;
* scraping, &lt;br /&gt;
* retrying.&lt;br /&gt;
&lt;br /&gt;
More information about these phases can be found in the [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html manual].&lt;br /&gt;
&lt;br /&gt;
== Additional utilities ==&lt;br /&gt;
&lt;br /&gt;
Software that supports ddrescue outputs or generates ddrescue inputs include:&lt;br /&gt;
&lt;br /&gt;
Ddrescueview - A graphical viewer for ddrescue mapfiles.&lt;br /&gt;
Ddrutility - A set of tools designed to work with ddrescue to aid with data recovery.&lt;br /&gt;
Partclone - Partition Software able to create domain mapfiles for ddrescue.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://openpreservation.org/blogs/resurrecting-the-first-dutch-web-index-nl-menu-revisited/?order=relevance%3ADESC&amp;amp;search=ddrescue&amp;amp;q=18193 Resurrecting the first Dutch Web Index] by Johan van der Knijff&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/ ddrescue home page]&lt;br /&gt;
&lt;br /&gt;
== Informative references ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html ddrescue manual].&lt;br /&gt;
* [https://linux.die.net/man/1/ddrescue ddrescue manpage.&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6562</id>
		<title>Ddrescue</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6562"/>
		<updated>2026-02-12T09:54:59Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add manpage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=data recovery tool for hard disks, CD-ROMs, floppy disks, etc.&lt;br /&gt;
|homepage=https://www.gnu.org/software/ddrescue/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|license=GNU GPL&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|Wikidata ID=Q15427600&lt;br /&gt;
|function=Data capture and Deposit, Disk Imaging, File Recovery, Forensic&lt;br /&gt;
|content=Disk Image&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ddrescue is a data recovery tool that copies data from one file or block device to another.&lt;br /&gt;
&lt;br /&gt;
ddrescue attempts to recover data by enabling multiple retries and splitting recovery into five phases which it has termed: &lt;br /&gt;
&lt;br /&gt;
* copying, &lt;br /&gt;
* trimming, &lt;br /&gt;
* sweeping, &lt;br /&gt;
* scraping, &lt;br /&gt;
* retrying.&lt;br /&gt;
&lt;br /&gt;
More information about these phases can be found in the [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html manual].&lt;br /&gt;
&lt;br /&gt;
== Additional utilities ==&lt;br /&gt;
&lt;br /&gt;
Software that supports ddrescue outputs or generates ddrescue inputs include:&lt;br /&gt;
&lt;br /&gt;
Ddrescueview - A graphical viewer for ddrescue mapfiles.&lt;br /&gt;
Ddrutility - A set of tools designed to work with ddrescue to aid with data recovery.&lt;br /&gt;
Partclone - Partition Software able to create domain mapfiles for ddrescue.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://openpreservation.org/blogs/resurrecting-the-first-dutch-web-index-nl-menu-revisited/?order=relevance%3ADESC&amp;amp;search=ddrescue&amp;amp;q=18193 Resurrecting the first Dutch Web Index] by Johan van der Knijff&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/ ddrescue home page]&lt;br /&gt;
&lt;br /&gt;
== Informative references ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html ddrescue manual].&lt;br /&gt;
* [https://linux.die.net/man/1/ddrescue ddrescue manpage]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6561</id>
		<title>Ddrescue</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Ddrescue&amp;diff=6561"/>
		<updated>2026-02-12T09:45:01Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add new entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=data recovery tool for hard disks, CD-ROMs, floppy disks, etc.&lt;br /&gt;
|homepage=https://www.gnu.org/software/ddrescue/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|license=GNU GPL&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|Wikidata ID=Q15427600&lt;br /&gt;
|function=Data capture and Deposit, Disk Imaging, File Recovery, Forensic&lt;br /&gt;
|content=Disk Image&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ddrescue is a data recovery tool that copies data from one file or block device to another.&lt;br /&gt;
&lt;br /&gt;
ddrescue attempts to recover data by enabling multiple retries and splitting recovery into five phases which it has termed: &lt;br /&gt;
&lt;br /&gt;
* copying, &lt;br /&gt;
* trimming, &lt;br /&gt;
* sweeping, &lt;br /&gt;
* scraping, &lt;br /&gt;
* retrying.&lt;br /&gt;
&lt;br /&gt;
More information about these phases can be found in the [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html manual].&lt;br /&gt;
&lt;br /&gt;
== Additional utilities ==&lt;br /&gt;
&lt;br /&gt;
Software that supports ddrescue outputs or generates ddrescue inputs include:&lt;br /&gt;
&lt;br /&gt;
Ddrescueview - A graphical viewer for ddrescue mapfiles.&lt;br /&gt;
Ddrutility - A set of tools designed to work with ddrescue to aid with data recovery.&lt;br /&gt;
Partclone - Partition Software able to create domain mapfiles for ddrescue.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://openpreservation.org/blogs/resurrecting-the-first-dutch-web-index-nl-menu-revisited/?order=relevance%3ADESC&amp;amp;search=ddrescue&amp;amp;q=18193 Resurrecting the first Dutch Web Index] by Johan van der Knijff&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/ ddrescue home page]&lt;br /&gt;
&lt;br /&gt;
== Informative references ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html ddrescue manual].&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6555</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6555"/>
		<updated>2026-02-09T22:00:36Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update feeds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access (succinct proofs of random access (SPoRA)) as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
From the 19-25 ArweaveHub weekly digest, SPoRA is designed to incentivize storing large parts of the blockchain's data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Under SPoRA’s consensus model, miners must prove they have access to a randomly selected piece of data from the network’s history to mine a new block. This creates a massive incentive to store as much of the weave as possible.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A network continuously proving access to user data should also be reassuring to those making use of the network/blockchain's resources.&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
An endowment calculation made at the genesis of the protocol ensures perpetual payment for storage for 200 years based on the theory of ever-decreasing storage costs.&lt;br /&gt;
&lt;br /&gt;
From the Arweave protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If a transaction does upload data, the required upload fee scales with the uploaded volume.&lt;br /&gt;
&lt;br /&gt;
A part of the fee goes directly to the miner including this transaction into a block. Its purpose is to incentivize miners to enlarge the Arweave dataset.&lt;br /&gt;
&lt;br /&gt;
The rest of the fee goes to the endowment.&lt;br /&gt;
&lt;br /&gt;
The Arweave network's endowment removes tokens from circulation every time data is uploaded, creating a reserve to pay for data storage over time. The storage purchasing power of the endowment is elastic, changing with the volume of data committed, the cost of data storage, and token value over time. One of the main drivers of change in the value of the endowment is that a decreasing cost of storage creates a corresponding proportional increase in storage purchasing power, leading to fewer tokens needing to be released from the endowment in the future. We call the rate of decline in overall costs for storing a unit of data for a fixed period of time the Kryder+ rate. This rate incorporates the change in price of hardware, electricity, and operational costs surrounding data storage.&lt;br /&gt;
&lt;br /&gt;
Users pay for 200 years' worth of replicated storage at present prices, such that only a 0.5% Kryder+ rate is sufficient to sustain the endowment for an indefinite term, in the absence of token price changes. Under these conditions, the storage purchasing power of the endowment at the end of each year would be equal to that at the beginning. The actual declining cost of storage over the last 50 years has been, on average, ≈38.5% per year.&lt;br /&gt;
&lt;br /&gt;
To determine how much a single byte costs in AR at any given time, the protocol uses the current network difficulty (as an oracle of the total amount of mining resources currently maintaining the network) and the recent history of operations.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simpler rendition from the 19-25 ArweaveHub weekly digest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
...when a user uploads data to Arweave, a fraction of the fee goes to the miner immediately. The majority is sent to an endowment fund that grows steadily over time.&lt;br /&gt;
&lt;br /&gt;
The fees for this transaction use a calculation that covers 20 replicas of user data for 200 years. This creates a self-executing, sustainable engine that ensures miners are incentivized to keep your data accessible for centuries, not just years.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://podcast.onlyarweave.com/episodes/institutional-archiving-and-more-with-peter-of-arklyio-Bst5mWEr Institutional archiving and more @ PermaWeb Pioneers].&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 3 commits:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.arweave.org/developers/development/protocol Arweave Protocol].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 ArweaveHub Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6554</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6554"/>
		<updated>2026-02-09T21:57:26Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add user experience&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access (succinct proofs of random access (SPoRA)) as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
From the 19-25 ArweaveHub weekly digest, SPoRA is designed to incentivize storing large parts of the blockchain's data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Under SPoRA’s consensus model, miners must prove they have access to a randomly selected piece of data from the network’s history to mine a new block. This creates a massive incentive to store as much of the weave as possible.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A network continuously proving access to user data should also be reassuring to those making use of the network/blockchain's resources.&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
An endowment calculation made at the genesis of the protocol ensures perpetual payment for storage for 200 years based on the theory of ever-decreasing storage costs.&lt;br /&gt;
&lt;br /&gt;
From the Arweave protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If a transaction does upload data, the required upload fee scales with the uploaded volume.&lt;br /&gt;
&lt;br /&gt;
A part of the fee goes directly to the miner including this transaction into a block. Its purpose is to incentivize miners to enlarge the Arweave dataset.&lt;br /&gt;
&lt;br /&gt;
The rest of the fee goes to the endowment.&lt;br /&gt;
&lt;br /&gt;
The Arweave network's endowment removes tokens from circulation every time data is uploaded, creating a reserve to pay for data storage over time. The storage purchasing power of the endowment is elastic, changing with the volume of data committed, the cost of data storage, and token value over time. One of the main drivers of change in the value of the endowment is that a decreasing cost of storage creates a corresponding proportional increase in storage purchasing power, leading to fewer tokens needing to be released from the endowment in the future. We call the rate of decline in overall costs for storing a unit of data for a fixed period of time the Kryder+ rate. This rate incorporates the change in price of hardware, electricity, and operational costs surrounding data storage.&lt;br /&gt;
&lt;br /&gt;
Users pay for 200 years' worth of replicated storage at present prices, such that only a 0.5% Kryder+ rate is sufficient to sustain the endowment for an indefinite term, in the absence of token price changes. Under these conditions, the storage purchasing power of the endowment at the end of each year would be equal to that at the beginning. The actual declining cost of storage over the last 50 years has been, on average, ≈38.5% per year.&lt;br /&gt;
&lt;br /&gt;
To determine how much a single byte costs in AR at any given time, the protocol uses the current network difficulty (as an oracle of the total amount of mining resources currently maintaining the network) and the recent history of operations.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simpler rendition from the 19-25 ArweaveHub weekly digest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
...when a user uploads data to Arweave, a fraction of the fee goes to the miner immediately. The majority is sent to an endowment fund that grows steadily over time.&lt;br /&gt;
&lt;br /&gt;
The fees for this transaction use a calculation that covers 20 replicas of user data for 200 years. This creates a self-executing, sustainable engine that ensures miners are incentivized to keep your data accessible for centuries, not just years.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://podcast.onlyarweave.com/episodes/institutional-archiving-and-more-with-peter-of-arklyio-Bst5mWEr Institutional archiving and more @ PermaWeb Pioneers].&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.arweave.org/developers/development/protocol Arweave Protocol].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 ArweaveHub Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6553</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6553"/>
		<updated>2026-02-09T21:51:12Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add information about proof of access and the endowment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access (succinct proofs of random access (SPoRA)) as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
From the 19-25 ArweaveHub weekly digest, SPoRA is designed to incentivize storing large parts of the blockchain's data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Under SPoRA’s consensus model, miners must prove they have access to a randomly selected piece of data from the network’s history to mine a new block. This creates a massive incentive to store as much of the weave as possible.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A network continuously proving access to user data should also be reassuring to those making use of the network/blockchain's resources.&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
An endowment calculation made at the genesis of the protocol ensures perpetual payment for storage for 200 years based on the theory of ever-decreasing storage costs.&lt;br /&gt;
&lt;br /&gt;
From the Arweave protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If a transaction does upload data, the required upload fee scales with the uploaded volume.&lt;br /&gt;
&lt;br /&gt;
A part of the fee goes directly to the miner including this transaction into a block. Its purpose is to incentivize miners to enlarge the Arweave dataset.&lt;br /&gt;
&lt;br /&gt;
The rest of the fee goes to the endowment.&lt;br /&gt;
&lt;br /&gt;
The Arweave network's endowment removes tokens from circulation every time data is uploaded, creating a reserve to pay for data storage over time. The storage purchasing power of the endowment is elastic, changing with the volume of data committed, the cost of data storage, and token value over time. One of the main drivers of change in the value of the endowment is that a decreasing cost of storage creates a corresponding proportional increase in storage purchasing power, leading to fewer tokens needing to be released from the endowment in the future. We call the rate of decline in overall costs for storing a unit of data for a fixed period of time the Kryder+ rate. This rate incorporates the change in price of hardware, electricity, and operational costs surrounding data storage.&lt;br /&gt;
&lt;br /&gt;
Users pay for 200 years' worth of replicated storage at present prices, such that only a 0.5% Kryder+ rate is sufficient to sustain the endowment for an indefinite term, in the absence of token price changes. Under these conditions, the storage purchasing power of the endowment at the end of each year would be equal to that at the beginning. The actual declining cost of storage over the last 50 years has been, on average, ≈38.5% per year.&lt;br /&gt;
&lt;br /&gt;
To determine how much a single byte costs in AR at any given time, the protocol uses the current network difficulty (as an oracle of the total amount of mining resources currently maintaining the network) and the recent history of operations.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simpler rendition from the 19-25 ArweaveHub weekly digest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
...when a user uploads data to Arweave, a fraction of the fee goes to the miner immediately. The majority is sent to an endowment fund that grows steadily over time.&lt;br /&gt;
&lt;br /&gt;
The fees for this transaction use a calculation that covers 20 replicas of user data for 200 years. This creates a self-executing, sustainable engine that ensures miners are incentivized to keep your data accessible for centuries, not just years.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.arweave.org/developers/development/protocol Arweave Protocol].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 ArweaveHub Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6552</id>
		<title>Arweave</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Arweave&amp;diff=6552"/>
		<updated>2026-02-09T21:35:13Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Adds a record for Arweave&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A blockchain using a proof-of-access protocol and theoretically enabling permanent storage of data&lt;br /&gt;
|homepage=https://www.arweave.org/&lt;br /&gt;
|tool_status=Maintained&lt;br /&gt;
|sourcecode=https://github.com/arweaveteam&lt;br /&gt;
|cost=Transaction dependent&lt;br /&gt;
|Wikidata ID=Q129196013&lt;br /&gt;
|function=Active Data Storage, Backup, Service, Storage&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A storage based blockchain that uses proof-of-access as a form of consensus to ensure access to historical blocks of data, and to enable creation of new blocks.&lt;br /&gt;
&lt;br /&gt;
Arweave attempts to enable permanence for the storage of data on its chain by using a &amp;quot;storage endowment&amp;quot; theoretically ensuing the payment of storage for 200 years.&lt;br /&gt;
&lt;br /&gt;
== Proof of access ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Storage endowment ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Activity ==&lt;br /&gt;
&lt;br /&gt;
=== Arweave API ===&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arweave standards ====&lt;br /&gt;
&lt;br /&gt;
==== Release Feed ====&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArweaveTeam/arweave-standards/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Activity Feed ====&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArweaveTeam/arweave-standards/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools using Arweave ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/arkly-io/arweave-api Arkly Arweave API] enabling storage and validation of Bagit compatible archival packages.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.arweave.org/ Arweave Homepage].&lt;br /&gt;
* [https://arweavehub.com/weekly/fundamentals-of-arweave 19-25 Arweave Weekly Digest: Fundamentals of Arweave].&lt;br /&gt;
&lt;br /&gt;
== Informative References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.crimrxiv.com/pub/2ud0ee07/release/1 Continuum Arweave Ar.io] digital preservation initiative.&lt;br /&gt;
* [https://docs.orcfax.io/verify verification of Orcfax packages on Arweave]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:Main_Page&amp;diff=6428</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:Main_Page&amp;diff=6428"/>
		<updated>2026-01-27T06:38:28Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Question about license and license text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Use of Level 1 section headings ==&lt;br /&gt;
I just had a first stab at some editing an existing entry, and creating a new one. One small thing I noticed: all of the pages I've seen use Level 1 headings for the main sections, but this is discouraged by the MediaWiki documentation (esp. since Level 1 is already used for the main heading of each entry). See e.g. here:&lt;br /&gt;
&lt;br /&gt;
http://www.mediawiki.org/wiki/Help_talk:Formatting#Level_1&lt;br /&gt;
&lt;br /&gt;
And also:&lt;br /&gt;
&lt;br /&gt;
http://www.mediawiki.org/wiki/Help:Formatting&lt;br /&gt;
&lt;br /&gt;
So maybe it would be better to change those to level 2 (also in all cases I've seen the child sections use level 3 headings)? Not a big deal of course but it's a bit ugly and it's probably easier to fix this now than postponing it to a later stage (also existing entries will most likely be used as a template for creating new ones, so the problem will get progressively worse if left as it is). I suppose this is also something that might mess up attempts at automated text extraction. [[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 14:58, 20 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Good point - I didn't know about this recommendation. It should be possible to automated this transformation using the [https://www.mediawiki.org/wiki/Manual:Pywikibot Pywikibot] framework and the [https://pypi.python.org/pypi/mwparserfromhell mwparserfromhell]. We could change the [[Template:Tool/Preload|tool template]] now and use a bot to modify the rest? [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 15:15, 20 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Great! It would also help to mention the template on the main page (I don't have edit rights there), as I didn't even know there was any! Anyway, I just updated the template myself.[[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 16:07, 20 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I updated the main page to include an explicit link to the template that should be used when creating new Tool entries. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]])&lt;br /&gt;
&lt;br /&gt;
==Purpose field in infobox==&lt;br /&gt;
Another thing I noticed is that for most entries the ''purpose'' field in the infobox more or less repeats what's already in the ''Description'' section. So maybe it's better to leave it out altogether (on the other hand it might be useful for automated discovery/analysis)? [[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 14:58, 20 November 2013 (UTC)&lt;br /&gt;
: The intention was the other way around - that the 'purpose' field was a brief description that might be published and re-used in other forms (due to being in the infobox), and the Description section should be more detailed. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 15:15, 20 November 2013 (UTC)&lt;br /&gt;
:: Yes, that's what I thought as well. For some existing entries both are identical though, so it wasn't immediately clear. [[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 15:56, 20 November 2013 (UTC)&lt;br /&gt;
::: I would say the goal is to improve the body Description section for those items. Is the Description in these cases exactly identical to the purpose? If so, I might be able to check for that automatically. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 21:18, 20 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Perhaps rename Imaging category to Disk Imaging?==&lt;br /&gt;
Another thing: people might end up mixing up the ''Image'' and ''Imaging'' categories. Maybe rename the latter to ''Disk Imaging'' to avoid this?&lt;br /&gt;
[[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 16:15, 20 November 2013 (UTC)&lt;br /&gt;
: Good idea. Unfortunately, I think that due to the way MediaWiki works, this means editing all the items tagged with that category (unless there's a trick I'm unaware of). However, perhaps I should tweak [[User:COPTR Bot|COPTR Bot]] to do this too. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 21:22, 20 November 2013 (UTC)&lt;br /&gt;
:: Fixed manually --[[User:Prwheatley|Prwheatley]] ([[User talk:Prwheatley|talk]]) 17:51, 26 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Problems with login procedure (VeriSign)==&lt;br /&gt;
Having created an OpenID with Verisign, signing in to COPTR is a bit hit and miss. It always takes multiple attempts before I can successfully log in, and I first have to work myself through multiple authorization errors. Not clear to me whether the error is caused by COPTR or VeriSign, and results seem to be a bit random. Also after some time of inactivity I seem to get logged out automatically. Confusingly, the COPTR login status at the top right then shows I'm still logged in (depending on which page I'm on, it seems), and I have to go through the whole login procedure (including failures) again. &lt;br /&gt;
[[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 11:16, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
: [http://meta.stackoverflow.com/a/1789 This StackOverflow answer] outlines some of the possible causes of problems with OpenID logins. I guess we could perhaps enable non-OpenID logins, although I wanted to avoid that for fear of making it even easier for the robots/spammers. Using Google as an OpenID provider is working fine for me. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 11:40, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hmm ... the StackOverflow page links to an OpenID checker, but I'm a bit scared of it because it exposes all the info you enter there to a publicly viewable log ... Not keen on using Google either, because they're, well ... Google. The main point of course is that the success of COPTR will depend completely on community involvement, and if the login procedure is already such a stumbling block that's not going to help there. Also the procedure to get the OpenID isn't terribly straightforward, and this will scare off potential contributors as well. So I would consider adding a non-OpenID login procedure, perhaps augmented with a CAPTCHA to keep the robots at bay (e.g. like the Archiveteam Formats Wiki). [[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 12:28, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Okay, I've enabled plain logins and registration. To make sure you retain the same user account, you should ensure it knows the right email address so you can use password recovery to login. Alternatively, I think you should be able to reset your PW from your Preferences page. The current setup is that you should see CAPTCHAs blocking all edits etc. unless you have confirmed your email address. We'll see how it goes, and if we have to tighten up things to avoid spam, so be it. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 12:45, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Great, thanks for the quick response! Apparently there's no way to set a pw from the Preferences page once you have an existing OpenID assigned to your user profile, and when I try to delete my OpenID I get an error that this isn't possible because no password is set, classic Catch 22 there! Anyway, I'll stick with the OpenID madness for a bit and if I get really fed up with it I may well just create a new COPTR account, probably the easiest solution all around. [[User:Johanvanderknijff|johanvanderknijff]] ([[User talk:Johanvanderknijff|talk]]) 13:14, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: I'm pretty sure that, if you completely log out first, and if there is an email associated with your account, you can use the 'Password reset' option to get access. [[User:Andy Jackson|Andy Jackson]] ([[User talk:Andy Jackson|talk]]) 15:28, 21 November 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== changing Open Planets Foundation to Open Preservation Foundation ==&lt;br /&gt;
&lt;br /&gt;
Hi. The Main Page need some update (changing Open Planets Foundation to Open Preservation Foundation). I have of course not the permission to do that :-) . Thanks. [[User:Chlara|Chlara ]] ([[User talk:Chlara|talk]]) 10:18, 27 November 2014 (UTC)&lt;br /&gt;
* Good call, this is now fixed. Thanks!&lt;br /&gt;
&lt;br /&gt;
== DSPS (Digital Preservation Software Platform) is the same as Digital Preservation Software Platform ==&lt;br /&gt;
&lt;br /&gt;
Hi. I have updated the Digital Preservation Software Platform. After that I saw that there is a nearly same Page DSPS (Digital Preservation Software Platform). Due to the fact, that &amp;quot;DSPS (Digital Preservation Software Platform)&amp;quot; is the better title I have copied the content from Digital Preservation Software Platform into DSPS (Digital Preservation Software Platform). In the Page Digital Preservation Software Platform I replaced the content with a link to DSPS (Digital Preservation Software Platform). &lt;br /&gt;
&lt;br /&gt;
Can you please delete the page Digital Preservation Software Platform.&lt;br /&gt;
 &lt;br /&gt;
Thanks.   [[User:Chlara|Chlara ]] ([[User talk:Chlara|talk]]) 11:30, 8 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Merging duplicate entries ==&lt;br /&gt;
&lt;br /&gt;
I noticed that there are two entries for the CONTENTdm digital asset management system:&lt;br /&gt;
&lt;br /&gt;
* http://coptr.digipres.org/ContentDM&lt;br /&gt;
* http://coptr.digipres.org/CONTENTdm&lt;br /&gt;
&lt;br /&gt;
I removed the limited content from the ContentDM page and made it redirect to the CONTENTdm page, using the MediaWiki #redirect option (see [http://www.mediawiki.org/wiki/Help:Redirects http://www.mediawiki.org/wiki/Help:Redirects]. Should this be the recommended practice or would you rather simply delete one of the pages? If the latter, how to we request removal of a page?&lt;br /&gt;
&lt;br /&gt;
[[User:Danielle Plumer|Danielle Plumer]] ([[User talk:Danielle Plumer|talk]]) 03:00, 5 February 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Check this entries ==&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
Hi. I Think the entrie http://coptr.digipres.org/Workflow:Workflow_for_ingesting_digitized_books_into_a_digital_archive need to be changed or deleted. What do you think about it? Thanks. [[User:Chlara|Chlara ]] ([[User talk:Chlara|talk]]) 06:19, 20 April 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Change to https ==&lt;br /&gt;
Hi. COPTR should change to https. Thanks. --[[User:Chlara|Chlara ]] ([[User talk:Chlara|talk]]) 09:48, 14 September 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== GitHub ATOM RSS feeds don't work ==&lt;br /&gt;
&lt;br /&gt;
Pages with RSS feed embeds show error messages like:&lt;br /&gt;
&lt;br /&gt;
Below the last 5 commits: Failed to load RSS feed from https://github.com/intranda/goobi/commits/master.atom: Error fetching URL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version &lt;br /&gt;
&lt;br /&gt;
Is this a server configuration problem on COPTR's end? Can it be corrected or should the GitHub feeds be removed from pages?&lt;br /&gt;
--[[User:Jukervin|Jukervin]] ([[User talk:Jukervin|talk]]) 07:12, 3 July 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== License text and license out of date == &lt;br /&gt;
&lt;br /&gt;
The current licence text reads: &amp;lt;code&amp;gt;Content is available under Attribution-ShareAlike 3.0 Unported unless otherwise noted.&amp;lt;/code&amp;gt; but I am wondering if this needs to be prefixed with Creative Commons so that it is clearer? (asking because there may be a reason it doesn't). Additionally, the links to the license lead to [Content is available under Attribution-ShareAlike 3.0 Unported unless otherwise noted. version three] of the CC-BY-SA licence and this needs to be 4.0. It'd be good to just clarify both these points before making the change. [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 06:38, 27 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Talk:Fine_Free_File_Command&amp;diff=6426</id>
		<title>Talk:Fine Free File Command</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Talk:Fine_Free_File_Command&amp;diff=6426"/>
		<updated>2026-01-26T10:25:22Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Question about naming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is this name the most idiomatic? ==&lt;br /&gt;
&lt;br /&gt;
I am wondering what folks think about the name convention adopted for this record. I have contributed to this one in the past, but even today I don't think to look under this name when I am thinking of the Unix File(1) Utility. Perhaps file (command), or another name is more appropriate? That being said, does anyone know of an aliasing mechanism on MediaWiki? An alias, or set of aliases back to this record might also make it easier to find/reference. [[User:Ross-spencer|Ross-spencer]] ([[User talk:Ross-spencer|talk]]) 10:25, 26 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6425</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6425"/>
		<updated>2026-01-26T10:20:38Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add information about sample files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Technical characteristics ===&lt;br /&gt;
&lt;br /&gt;
JSONID explores potential technical characteristics that can&lt;br /&gt;
be attributed to serde formats. An example for a basic JSON object might &lt;br /&gt;
look as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content_length&amp;quot;: 82,&lt;br /&gt;
  &amp;quot;number_of_lines&amp;quot;: 9,&lt;br /&gt;
  &amp;quot;line_warning&amp;quot;: false,&lt;br /&gt;
  &amp;quot;top_level_keys_count&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;top_level_keys&amp;quot;: [&lt;br /&gt;
    &amp;quot;key1&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;top_level_types&amp;quot;: [&lt;br /&gt;
    &amp;quot;map&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;depth&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;heterogeneous_list_types&amp;quot;: false,&lt;br /&gt;
  &amp;quot;fingerprint&amp;quot;: {&lt;br /&gt;
    &amp;quot;unf&amp;quot;: &amp;quot;UNF:6:YEKQWBGm75JsN6H+8SzYRg==&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;bafkreidexnd3r76r5h3invwvu554573px5z4fg4uglw4pextmqc765kz64&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;doctype&amp;quot;: &amp;quot;JSON&amp;quot;,&lt;br /&gt;
  &amp;quot;encoding&amp;quot;: &amp;quot;UTF-8&amp;quot;,&lt;br /&gt;
  &amp;quot;agent&amp;quot;: &amp;quot;jsonid/0.12.0 (ffdev-info)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of these technical characteristics will be explored in the &lt;br /&gt;
documentation and future writing.&lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
The significance of these fingerprinting techniques is their application&lt;br /&gt;
to identical data structures stored in different file formats. &lt;br /&gt;
&lt;br /&gt;
The checksum of different file formats will always evaluate differently, &lt;br /&gt;
but analysed as data structures, we can begin to appraise data &lt;br /&gt;
beyond its presentation.&lt;br /&gt;
&lt;br /&gt;
==== Fingerprinting example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Content&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;hello&amp;quot;: &amp;quot;world&amp;quot;,&lt;br /&gt;
    &amp;quot;goodbye&amp;quot;: false,&lt;br /&gt;
    &amp;quot;values&amp;quot;: [&lt;br /&gt;
        1,&lt;br /&gt;
        2,&lt;br /&gt;
        3.142&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;goodbye: false&lt;br /&gt;
hello: world&lt;br /&gt;
values:&lt;br /&gt;
- 1&lt;br /&gt;
- 2&lt;br /&gt;
- 3.142&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;hello = &amp;quot;world&amp;quot;&lt;br /&gt;
values = [1, 2, 3.142]&lt;br /&gt;
goodbye = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;JSON&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;YAML&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;TOML&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Checksum (MD5)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bcd5a37f36ada2e4b72144d90a1427d5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;b5e75fdc100032f2744eff1e1bdf5b88&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;04b33e24e0cc208c6bd70fabaef3a9c5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;UNF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CID&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example identification output ===&lt;br /&gt;
&lt;br /&gt;
JSONID has currently settled on a line-by-line, [[Fine Free File Command]] (File) and MIME-Like output. Fields are tab delineated and are human readable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/media/govdocs/govdocs_selected/LOG_1/074500.log	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/HTML_24/009970.html	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/TEXT_6/131522.txt	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is anticipated that users will help guide the ongoing development of JSONID's output to better support both user and repository workflows.&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== Sample files == &lt;br /&gt;
&lt;br /&gt;
Sample files used for the development of JSONID signatures can be found in their [https://github.com/ffdev-info/jsonid-integration-files own repository].&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6424</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6424"/>
		<updated>2026-01-26T10:18:51Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add example output&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Technical characteristics ===&lt;br /&gt;
&lt;br /&gt;
JSONID explores potential technical characteristics that can&lt;br /&gt;
be attributed to serde formats. An example for a basic JSON object might &lt;br /&gt;
look as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content_length&amp;quot;: 82,&lt;br /&gt;
  &amp;quot;number_of_lines&amp;quot;: 9,&lt;br /&gt;
  &amp;quot;line_warning&amp;quot;: false,&lt;br /&gt;
  &amp;quot;top_level_keys_count&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;top_level_keys&amp;quot;: [&lt;br /&gt;
    &amp;quot;key1&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;top_level_types&amp;quot;: [&lt;br /&gt;
    &amp;quot;map&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;depth&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;heterogeneous_list_types&amp;quot;: false,&lt;br /&gt;
  &amp;quot;fingerprint&amp;quot;: {&lt;br /&gt;
    &amp;quot;unf&amp;quot;: &amp;quot;UNF:6:YEKQWBGm75JsN6H+8SzYRg==&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;bafkreidexnd3r76r5h3invwvu554573px5z4fg4uglw4pextmqc765kz64&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;doctype&amp;quot;: &amp;quot;JSON&amp;quot;,&lt;br /&gt;
  &amp;quot;encoding&amp;quot;: &amp;quot;UTF-8&amp;quot;,&lt;br /&gt;
  &amp;quot;agent&amp;quot;: &amp;quot;jsonid/0.12.0 (ffdev-info)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of these technical characteristics will be explored in the &lt;br /&gt;
documentation and future writing.&lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
The significance of these fingerprinting techniques is their application&lt;br /&gt;
to identical data structures stored in different file formats. &lt;br /&gt;
&lt;br /&gt;
The checksum of different file formats will always evaluate differently, &lt;br /&gt;
but analysed as data structures, we can begin to appraise data &lt;br /&gt;
beyond its presentation.&lt;br /&gt;
&lt;br /&gt;
==== Fingerprinting example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Content&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;hello&amp;quot;: &amp;quot;world&amp;quot;,&lt;br /&gt;
    &amp;quot;goodbye&amp;quot;: false,&lt;br /&gt;
    &amp;quot;values&amp;quot;: [&lt;br /&gt;
        1,&lt;br /&gt;
        2,&lt;br /&gt;
        3.142&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;goodbye: false&lt;br /&gt;
hello: world&lt;br /&gt;
values:&lt;br /&gt;
- 1&lt;br /&gt;
- 2&lt;br /&gt;
- 3.142&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;hello = &amp;quot;world&amp;quot;&lt;br /&gt;
values = [1, 2, 3.142]&lt;br /&gt;
goodbye = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;JSON&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;YAML&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;TOML&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Checksum (MD5)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bcd5a37f36ada2e4b72144d90a1427d5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;b5e75fdc100032f2744eff1e1bdf5b88&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;04b33e24e0cc208c6bd70fabaef3a9c5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;UNF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CID&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example identification output ===&lt;br /&gt;
&lt;br /&gt;
JSONID has currently settled on a line-by-line, [[Fine Free File Command]] (File) and MIME-Like output. Fields are tab delineated and are human readable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/media/govdocs/govdocs_selected/LOG_1/074500.log	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/HTML_24/009970.html	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
/media/govdocs/govdocs_selected/TEXT_6/131522.txt	[1]	application/json; charset=UTF-8; doctype=&amp;quot;JavaScript Object Notation (JSON)&amp;quot;; ref=jrid:JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is anticipated that users will help guide the ongoing development of JSONID's output to better support both user and repository workflows.&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6362</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6362"/>
		<updated>2026-01-04T22:47:25Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update information about technical characteristics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Technical characteristics ===&lt;br /&gt;
&lt;br /&gt;
JSONID explores potential technical characteristics that can&lt;br /&gt;
be attributed to serde formats. An example for a basic JSON object might &lt;br /&gt;
look as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content_length&amp;quot;: 82,&lt;br /&gt;
  &amp;quot;number_of_lines&amp;quot;: 9,&lt;br /&gt;
  &amp;quot;line_warning&amp;quot;: false,&lt;br /&gt;
  &amp;quot;top_level_keys_count&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;top_level_keys&amp;quot;: [&lt;br /&gt;
    &amp;quot;key1&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;top_level_types&amp;quot;: [&lt;br /&gt;
    &amp;quot;map&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;depth&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;heterogeneous_list_types&amp;quot;: false,&lt;br /&gt;
  &amp;quot;fingerprint&amp;quot;: {&lt;br /&gt;
    &amp;quot;unf&amp;quot;: &amp;quot;UNF:6:YEKQWBGm75JsN6H+8SzYRg==&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;bafkreidexnd3r76r5h3invwvu554573px5z4fg4uglw4pextmqc765kz64&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;doctype&amp;quot;: &amp;quot;JSON&amp;quot;,&lt;br /&gt;
  &amp;quot;encoding&amp;quot;: &amp;quot;UTF-8&amp;quot;,&lt;br /&gt;
  &amp;quot;agent&amp;quot;: &amp;quot;jsonid/0.12.0 (ffdev-info)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of these technical characteristics will be explored in the &lt;br /&gt;
documentation and future writing.&lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
The significance of these fingerprinting techniques is their application&lt;br /&gt;
to identical data structures stored in different file formats. &lt;br /&gt;
&lt;br /&gt;
The checksum of different file formats will always evaluate differently, &lt;br /&gt;
but analysed as data structures, we can begin to appraise data &lt;br /&gt;
beyond its presentation.&lt;br /&gt;
&lt;br /&gt;
==== Fingerprinting example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Content&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;hello&amp;quot;: &amp;quot;world&amp;quot;,&lt;br /&gt;
    &amp;quot;goodbye&amp;quot;: false,&lt;br /&gt;
    &amp;quot;values&amp;quot;: [&lt;br /&gt;
        1,&lt;br /&gt;
        2,&lt;br /&gt;
        3.142&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;goodbye: false&lt;br /&gt;
hello: world&lt;br /&gt;
values:&lt;br /&gt;
- 1&lt;br /&gt;
- 2&lt;br /&gt;
- 3.142&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;pre&amp;gt;hello = &amp;quot;world&amp;quot;&lt;br /&gt;
values = [1, 2, 3.142]&lt;br /&gt;
goodbye = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;JSON&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;YAML&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;TOML&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Checksum (MD5)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bcd5a37f36ada2e4b72144d90a1427d5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;b5e75fdc100032f2744eff1e1bdf5b88&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;04b33e24e0cc208c6bd70fabaef3a9c5&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;UNF&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;UNF:6:97EfAWBIQlObVCVwa7kc0g==&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;CID&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;bafkreiawsimwdn4blnb7scz2cfwtdksifrayccsl3z6gmxam6uxddctkoy&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6361</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6361"/>
		<updated>2026-01-04T17:34:43Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add information on technical characteristics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Technical characteristics ===&lt;br /&gt;
&lt;br /&gt;
JSONID tries to explore potential technical characteristics that can&lt;br /&gt;
be attributed to serde formats. An example for a basic JSON object might &lt;br /&gt;
look as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content_length&amp;quot;: 82,&lt;br /&gt;
  &amp;quot;number_of_lines&amp;quot;: 9,&lt;br /&gt;
  &amp;quot;line_warning&amp;quot;: false,&lt;br /&gt;
  &amp;quot;top_level_keys_count&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;top_level_keys&amp;quot;: [&lt;br /&gt;
    &amp;quot;key1&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;top_level_types&amp;quot;: [&lt;br /&gt;
    &amp;quot;map&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;depth&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;heterogeneous_list_types&amp;quot;: false,&lt;br /&gt;
  &amp;quot;fingerprint&amp;quot;: {&lt;br /&gt;
    &amp;quot;unf&amp;quot;: &amp;quot;UNF:6:YEKQWBGm75JsN6H+8SzYRg==&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;bafkreidexnd3r76r5h3invwvu554573px5z4fg4uglw4pextmqc765kz64&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;doctype&amp;quot;: &amp;quot;JSON&amp;quot;,&lt;br /&gt;
  &amp;quot;encoding&amp;quot;: &amp;quot;UTF-8&amp;quot;,&lt;br /&gt;
  &amp;quot;agent&amp;quot;: &amp;quot;jsonid/0.12.0 (ffdev-info)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of these technical characteristics will be explored in the &lt;br /&gt;
documentation and future writing.&lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6360</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6360"/>
		<updated>2026-01-04T17:04:25Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add information on PRONOM output&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
=== PRONOM signature development ===&lt;br /&gt;
&lt;br /&gt;
JSONID provides a high-level language for output of PRONOM compatible&lt;br /&gt;
signatures. The feature set is still in its BETA phase but JSONID provides&lt;br /&gt;
two distinct capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Registry output ====&lt;br /&gt;
&lt;br /&gt;
JSONID's registry can be output using the `--pronom` flag. A signature file&lt;br /&gt;
will be created under `jsonid_pronom.xml` which can be imported into DROID&lt;br /&gt;
for identification of document types registered with JSONID.&lt;br /&gt;
&lt;br /&gt;
JSONID's registry is output alongisde a handful of baseline JSON signatures&lt;br /&gt;
designed to capture &amp;quot;plain&amp;quot;-JSON that is not yet encoded in the registry.&lt;br /&gt;
&lt;br /&gt;
==== Signature development ====&lt;br /&gt;
&lt;br /&gt;
A standalone `json2pronom` utility is provided for creation of potentially&lt;br /&gt;
robust DROID compatible signatures.&lt;br /&gt;
&lt;br /&gt;
As a high-level language, signatures can be defined in easy to understand&lt;br /&gt;
syntax and then output consistently via the `json2pronom` utility. Signatures&lt;br /&gt;
include sensible defaults for whitespace and other aspects that are&lt;br /&gt;
difficult for signature developers to consistently anticipate when writing&lt;br /&gt;
JSON based signatures.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ffdev-info/jsonid?tab=readme-ov-file#pronom JSONID docs] for more information.&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6359</id>
		<title>JSONID</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=JSONID&amp;diff=6359"/>
		<updated>2026-01-03T12:48:53Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add new record for JSONID&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Identification of JSON, YAML, and TOML document types&lt;br /&gt;
|homepage=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|sourcecode=https://github.com/ffdev-info/jsonid&lt;br /&gt;
|license=Apache 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=JSON, JSONL, YAML, TOML&lt;br /&gt;
|function=File Format Identification&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification of JSON, YAML, and TOML document types. &lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
&lt;br /&gt;
JSONID parses serialization/deserialization formats ([https://en.wikipedia.org/wiki/Serialization &amp;quot;serde&amp;quot;]) such as JSON, YAML, and TOML to provide unambiguous identification. &lt;br /&gt;
JSONID also introduces a declarative syntax for writing document type signatures to enable identification of specific serde document types. &lt;br /&gt;
Key-value attributes can be shared across formats, and so signatures for JSON and YAML, for example, need only be written once.&lt;br /&gt;
&lt;br /&gt;
=== Registry ===&lt;br /&gt;
&lt;br /&gt;
As a temporary placeholder JSONID signatures are available [https://ffdev-info.github.io/jsonid/registry/ in a registry]. The long-term goal of this project is to enable other registries to delivery JSONID compatible signatures, e.g. PRONOM, Wikidata, and remove the need for a centralized resource like this. &lt;br /&gt;
&lt;br /&gt;
=== Universal fingerprint ===&lt;br /&gt;
&lt;br /&gt;
JSONID exports two universal fingerprints enabling the assertion of equivalence between different data objects. Universal Numerical Fingerprint (UNF) is also used in the [https://guides.dataverse.org/en/latest/developers/unf/index.html Dataverse project]. &lt;br /&gt;
Content Identifiers (CIDs) come from the [https://docs.ipfs.tech/concepts/content-addressing/ IPFS project] and enable content-addressed storage within that ecosystem and others.&lt;br /&gt;
&lt;br /&gt;
== User experiences ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/presentation/d/11zQTMwiXRa3UNyUSKTLwcCMos0gg9SpMxdrWOXF0lr4/edit?usp=sharing Introducing JSONID @ NTTW].&lt;br /&gt;
* [https://openpreservation.org/blogs/on-the-lookout-looking-for-common-json-files-and-introducing-jsonid/ On the lookout for common JSON files].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ffdev-info/jsonid/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ffdev-info/jsonid/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ffdev-info/jsonid/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=OPF_ODF_Validator&amp;diff=6358</id>
		<title>OPF ODF Validator</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=OPF_ODF_Validator&amp;diff=6358"/>
		<updated>2026-01-03T12:42:50Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add new record for OPF ODF Validator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Open Source Open Document Validator&lt;br /&gt;
|homepage=https://odf.openpreservation.org&lt;br /&gt;
|sourcecode=https://github.com/openpreserve/odf-validator&lt;br /&gt;
|license=BSD 3-Clause&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Java&lt;br /&gt;
|formats_in=&lt;br /&gt;
|function=File Format Validation&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open source tool for validation of Open Document Format files (ODF). An earlier utility by the same name was written by [https://coptr.digipres.org/ODF_Validator The Document Foundation].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/openpreserve/odf-validator/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/openpreserve/odf-validator/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/openpreserve/odf-validator/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6357</id>
		<title>ODF Validator</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6357"/>
		<updated>2026-01-03T12:39:25Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria.&lt;br /&gt;
|homepage=https://odftoolkit.org/conformance/ODFValidator.html&lt;br /&gt;
|license=Apache License, Version 2.0&lt;br /&gt;
|function=Validation, Metadata Extraction&lt;br /&gt;
|content=Document&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
ODF Validator is a tool from the [https://github.com/tdf Document Foundation] that validates OpenDocument files and checks them for certain conformance criteria. It is available as Java library for command line or embedded use, as well as a [https://odfvalidator.org/  web application archive (WAR)]. ODF Validator is part of the [Apache ODF Toolkit].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.openplanetsfoundation.org/comment/529#comment-529 Test by KEEP Solutions]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Apache ODF Validator gives many false-negatives and false-positives (...) [b]ut (..) the schemas are publicly available and the method to validate is well defined by OASIS (...).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* News from the ODF toolkit at [https://archive.fosdem.org/2023/schedule/event/lotech_odftoolkit/attachments/slides/5687/export/events/attachments/lotech_odftoolkit/slides/5687/2023_FOSDEM_News_from_the_ODF_Toolkit_10min.pdf FOSDEM 2023]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/tdf/odftoolkit&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/tdf/odftoolkit/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/tdf/odftoolkit/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Informative references ==&lt;br /&gt;
&lt;br /&gt;
* The Document Foundation [https://www.documentfoundation.org/ website].&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6356</id>
		<title>ODF Validator</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6356"/>
		<updated>2026-01-03T12:27:16Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Additional context to FOSDEM presentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria.&lt;br /&gt;
|homepage=https://odftoolkit.org/conformance/ODFValidator.html&lt;br /&gt;
|license=Apache License, Version 2.0&lt;br /&gt;
|function=Validation, Metadata Extraction&lt;br /&gt;
|content=Document&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria. It is available as Java library for command line or embedded use, as well as a [https://odfvalidator.org/  web application archive (WAR)]. ODF Validator is part of the [Apache ODF Toolkit].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.openplanetsfoundation.org/comment/529#comment-529 Test by KEEP Solutions]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Apache ODF Validator gives many false-negatives and false-positives (...) [b]ut (..) the schemas are publicly available and the method to validate is well defined by OASIS (...).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* News from the ODF toolkit at [https://archive.fosdem.org/2023/schedule/event/lotech_odftoolkit/attachments/slides/5687/export/events/attachments/lotech_odftoolkit/slides/5687/2023_FOSDEM_News_from_the_ODF_Toolkit_10min.pdf FOSDEM 2023]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/tdf/odftoolkit&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/tdf/odftoolkit/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/tdf/odftoolkit/commits/master.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6355</id>
		<title>ODF Validator</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=ODF_Validator&amp;diff=6355"/>
		<updated>2026-01-01T22:52:15Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Fixes info box and adds development info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria.&lt;br /&gt;
|homepage=https://odftoolkit.org/conformance/ODFValidator.html&lt;br /&gt;
|license=Apache License, Version 2.0&lt;br /&gt;
|function=Validation, Metadata Extraction&lt;br /&gt;
|content=Document&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria. It is available as Java library for command line or embedded use, as well as a [https://odfvalidator.org/  web application archive (WAR)]. ODF Validator is part of the [Apache ODF Toolkit].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.openplanetsfoundation.org/comment/529#comment-529 Test by KEEP Solutions]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Apache ODF Validator gives many false-negatives and false-positives (...) [b]ut (..) the schemas are publicly available and the method to validate is well defined by OASIS (...).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://archive.fosdem.org/2023/schedule/event/lotech_odftoolkit/attachments/slides/5687/export/events/attachments/lotech_odftoolkit/slides/5687/2023_FOSDEM_News_from_the_ODF_Toolkit_10min.pdf FOSDEM 2023 presentation]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/tdf/odftoolkit&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/tdf/odftoolkit/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/tdf/odftoolkit/commits/master.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6346</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6346"/>
		<updated>2025-11-28T15:50:37Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Modifies infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification, Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=WebAssembly + sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a denylist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
=== Siegfried integration ===&lt;br /&gt;
&lt;br /&gt;
Demystify lite integrates a WASM build of Siegfried enabling client-side identification of your digital records and analysis within one secure tool, for more information, see Ross Spencer's [https://exponentialdecay.co.uk/blog/client-side-identification-and-reporting-pipeline-with-siegfried-and-demystify-lite/ brief integration report].&lt;br /&gt;
&lt;br /&gt;
=== Fractal in Detail ===&lt;br /&gt;
&lt;br /&gt;
[https://journal.code4lib.org/articles/16351 Fractal in Detail] in the Code4Lib Journal examines some of the motivations behind Demystify, generalizing its context and considering its source data alongside similar tools like Brunnhilde, Freud, and FileDriller.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-09]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6345</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6345"/>
		<updated>2025-11-28T15:47:32Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update with information about Demystify's Siegfried integration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a denylist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
=== Siegfried integration ===&lt;br /&gt;
&lt;br /&gt;
Demystify lite integrates a WASM build of Siegfried enabling client-side identification of your digital records and analysis within one secure tool, for more information, see Ross Spencer's [https://exponentialdecay.co.uk/blog/client-side-identification-and-reporting-pipeline-with-siegfried-and-demystify-lite/ brief integration report].&lt;br /&gt;
&lt;br /&gt;
=== Fractal in Detail ===&lt;br /&gt;
&lt;br /&gt;
[https://journal.code4lib.org/articles/16351 Fractal in Detail] in the Code4Lib Journal examines some of the motivations behind Demystify, generalizing its context and considering its source data alongside similar tools like Brunnhilde, Freud, and FileDriller.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-09]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6343</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6343"/>
		<updated>2025-11-26T13:21:26Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add link to Fractal in Detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a denylist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
=== Fractal in Detail ===&lt;br /&gt;
&lt;br /&gt;
[https://journal.code4lib.org/articles/16351 Fractal in Detail] in the Code4Lib Journal examines some of the motivations behind Demystify, generalizing its context and considering its source data alongside similar tools like Brunnhilde, Freud, and FileDriller.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-09]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6342</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6342"/>
		<updated>2025-11-26T11:59:14Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Teminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a denylist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-09]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6312</id>
		<title>Whatsmapper</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6312"/>
		<updated>2025-09-17T08:19:10Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Provide a brief description of function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Preserve Whatsapp messages as a web page&lt;br /&gt;
|homepage=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|license=&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=&lt;br /&gt;
|function=File Format Migration, Rendering&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whatsmapper is a utility to convert Whatsapp messages into other formats. Its primary function is to provide a demo of this functionality and for it to be built upon by interested parties in the community.&lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
&lt;br /&gt;
Whatsmapper outputs Whatsapp messages in HTML counting the number of attachments there are in the data along the way. Images and so on are output inline. It embeds a default CSS (Cascading Style Sheet) but this CSS can be easily overridden to provide different styles per user requirement. &lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ross-spencer/whatsmapper/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/whatsmapper/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/whatsmapper/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6311</id>
		<title>Whatsmapper</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6311"/>
		<updated>2025-09-16T17:37:03Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Fix title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Preserve Whatsapp messages as a web page&lt;br /&gt;
|homepage=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|license=&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=&lt;br /&gt;
|function=File Format Migration, Rendering&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whatsmapper is a utility to convert Whatsapp messages into other formats. Its primary function is to provide a demo of this functionality and for it to be built upon by interested parties in the community.&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ross-spencer/whatsmapper/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/whatsmapper/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/whatsmapper/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6310</id>
		<title>Whatsmapper</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6310"/>
		<updated>2025-09-16T17:36:44Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update commits atom feed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Preserve Whatsapp messages as a webpage (Prototype)&lt;br /&gt;
|homepage=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|license=&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=&lt;br /&gt;
|function=File Format Migration, Rendering&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whatsmapper is a utility to convert Whatsapp messages into other formats. Its primary function is to provide a demo of this functionality and for it to be built upon by interested parties in the community.&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ross-spencer/whatsmapper/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/whatsmapper/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/whatsmapper/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6309</id>
		<title>Whatsmapper</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Whatsmapper&amp;diff=6309"/>
		<updated>2025-09-16T17:35:50Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add new entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Preserve Whatsapp messages as a webpage (Prototype)&lt;br /&gt;
|homepage=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/whatsmapper&lt;br /&gt;
|license=&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Python&lt;br /&gt;
|formats_in=&lt;br /&gt;
|function=File Format Migration, Rendering&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whatsmapper is a utility to convert Whatsapp messages into other formats. Its primary function is to provide a demo of this functionality and for it to be built upon by interested parties in the community.&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: https://github.com/ross-spencer/whatsmapper/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/whatsmapper/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/whatsmapper/commits/master.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Ruffle&amp;diff=6281</id>
		<title>Ruffle</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Ruffle&amp;diff=6281"/>
		<updated>2025-09-04T07:06:04Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add new entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=A flash player emulator written in Rust&lt;br /&gt;
|homepage=https://github.com/ruffle-rs/ruffle&lt;br /&gt;
|sourcecode=https://github.com/ruffle-rs/ruffle&lt;br /&gt;
|license=Apache License 2.0&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS&lt;br /&gt;
|language=Rust&lt;br /&gt;
|function=Viewer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ruffle is a flash player emulator written in Rust. It is helpful to users with content such as SWF who would like to view the content and engage with it interactively. &lt;br /&gt;
&lt;br /&gt;
As open source software the utility might also offer potential for developers to extract information about ''significant properties'' about Flash content by accessing the utility's underlying APIs.&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ruffle-rs/ruffle/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ruffle-rs/ruffle/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ruffle-rs/ruffle/commits/master.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6217</id>
		<title>Bitflip</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6217"/>
		<updated>2024-11-22T07:54:06Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update branch name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=An interactive tool that can be used to demonstrate the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files.&lt;br /&gt;
|homepage=https://github.com/aybabtme/bitflip&lt;br /&gt;
|sourcecode=https://github.com/aybabtme/bitflip&lt;br /&gt;
|license=MIT License&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS, FreeBSD&lt;br /&gt;
|language=Golang&lt;br /&gt;
|function=Teaching, Research, Experimentation&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitflip is a tool designed to flip bits in digital files. It can provide a didactic reference for students of digital preservation to understand the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files. &lt;br /&gt;
&lt;br /&gt;
Its functionality similar to Manfred Thaller's [https://web.archive.org/web/20090323121026/http://hki.uni-koeln.de/material/shotGun/ Digital Preservation shotGun].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=tdnyrk5m5vQ Example of an emulated video game glitched using Bitflip].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/aybabtme/bitflip/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/aybabtme/bitflip/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/aybabtme/bitflip/commits/master.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6216</id>
		<title>Bitflip</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6216"/>
		<updated>2024-11-22T07:53:10Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Improve display of record&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=An interactive tool that can be used to demonstrate the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files.&lt;br /&gt;
|homepage=https://github.com/aybabtme/bitflip&lt;br /&gt;
|sourcecode=https://github.com/aybabtme/bitflip&lt;br /&gt;
|license=MIT License&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS, FreeBSD&lt;br /&gt;
|language=Golang&lt;br /&gt;
|function=Teaching, Research, Experimentation&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitflip is a tool designed to flip bits in digital files. It can provide a didactic reference for students of digital preservation to understand the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files. &lt;br /&gt;
&lt;br /&gt;
Its functionality similar to Manfred Thaller's [https://web.archive.org/web/20090323121026/http://hki.uni-koeln.de/material/shotGun/ Digital Preservation shotGun].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=tdnyrk5m5vQ Example of an emulated video game glitched using Bitflip].&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/aybabtme/bitflip/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/aybabtme/bitflip/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/aybabtme/bitflip/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6215</id>
		<title>Bitflip</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Bitflip&amp;diff=6215"/>
		<updated>2024-11-22T07:50:18Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Add bitflip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=An interactive tool that can be used to demonstrate the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files.&lt;br /&gt;
|homepage=https://github.com/aybabtme/bitflip&lt;br /&gt;
|sourcecode=https://github.com/aybabtme/bitflip&lt;br /&gt;
|license=MIT License&lt;br /&gt;
|cost=Free and Open Source (FOSS)&lt;br /&gt;
|platforms=Windows, Linux, MacOS, FreeBSD&lt;br /&gt;
|language=Golang&lt;br /&gt;
|function=Teaching, Research, Experimentation&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details&lt;br /&gt;
|releases_rss=https://github.com/aybabtme/bitflip/releases.atom&lt;br /&gt;
}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitflip is a tool designed to flip bits in digital files. It can provide a didactic reference for students of digital preservation to understand the effects of information decay (&amp;quot;bitrot&amp;quot;) in digital files. &lt;br /&gt;
&lt;br /&gt;
Its functionality similar to Manfred Thaller's [https://web.archive.org/web/20090323121026/http://hki.uni-koeln.de/material/shotGun/ Digital Preservation shotGun].&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=tdnyrk5m5vQ Example of an emulated video game glitched using Bitflip].&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=ArchiveBox&amp;diff=6201</id>
		<title>ArchiveBox</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=ArchiveBox&amp;diff=6201"/>
		<updated>2024-03-27T15:33:01Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Fixup headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=ArchiveBox is an open source tool that lets organizations &amp;amp; individuals archive both public &amp;amp; private web content while retaining control over their data.&lt;br /&gt;
|homepage=https://archivebox.io/&lt;br /&gt;
|sourcecode=https://github.com/ArchiveBox/ArchiveBox&lt;br /&gt;
|license=MIT License&lt;br /&gt;
|cost=Free&lt;br /&gt;
|platforms=Docker + Python&lt;br /&gt;
|language=English&lt;br /&gt;
|Wikidata ID=Q63097629&lt;br /&gt;
|formats_out=PDF, WARC, JSON&lt;br /&gt;
|function=Web Capture, Personal Archiving&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ArchiveBox is an open source tool that lets organizations &amp;amp; individuals archive both public &amp;amp; private web content while retaining control over their data. ArchiveBox was first released in 2017.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**'''[2024-03-27]''' [https://demo.archivebox.io/public/ ArchiveBox Online Demo.]&lt;br /&gt;
&lt;br /&gt;
== Development activity ==&lt;br /&gt;
&lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArchiveBox/ArchiveBox/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArchiveBox/ArchiveBox/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6240</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6240"/>
		<updated>2024-03-27T07:09:09Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Fixup date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a blacklist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-09]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6239</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6239"/>
		<updated>2024-03-27T07:08:29Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Record updates including previous name; demystify-lite additions; more user-experiences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; (formerly 'DROID Siegfried Sqlite Analysis Engine') with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a blacklist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
=== Demystify Lite ===&lt;br /&gt;
&lt;br /&gt;
[https://ross-spencer.github.io/demystify-lite/ Demystify Lite] provides a Pyscript/WASM implementation of Demystify's features and runs completely browser side for users with DROID or Siegfried reports that they would like to see analyzed.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
**'''[2022-05-0]''' [https://journal.code4lib.org/articles/16351 Fractal in detail: What information is in a file format identification report?]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6238</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6238"/>
		<updated>2024-03-27T07:03:49Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Ross-spencer moved page DROID Siegfried Sqlite Analysis Engine to Demystify: The name of the application is no longer 'DROID Siegfried Sqlite Analysis Engine'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a blacklist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6237</id>
		<title>Demystify</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Demystify&amp;diff=6237"/>
		<updated>2024-03-27T06:59:02Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update release links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=Format Identification Analysis and Reporting&lt;br /&gt;
|homepage=https://github.com/exponential-decay/demystify&lt;br /&gt;
|license=Open source (see URL above)&lt;br /&gt;
|platforms=sqlite + Python + text/html&lt;br /&gt;
|function=Metadata Extraction, Content Profiling, De-Duplication&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
Now known as &amp;quot;Demystify&amp;quot; with thanks to Joshua Ng for the suggestion to rename it. Demystify is an engine for the analysis of [https://github.com/digital-preservation/droid DROID] CSV export files, [https://github.com/richardlehane/siegfried Siegfried] YAML export files, and Siegfried 'DROID compatible' output. The tool has three purposes, break the exports into their components and store them within a table in a SQLite database; create additional columns to augment the output where useful; and query the SQLite database, outputting results in a readable form useful for analysis by researchers and archivists within digital preservation departments in memory institutions.&lt;br /&gt;
&lt;br /&gt;
The tool provides archivist definitions for each of the sections output; these definitions are customizable. The tool also supports output of statistics about files that may require further triage or may not be appropriate for long-term preservation based on institutional rules, in the form of a blacklist. The tool also analyses file names and directory names for non-ascii characters, and also characteristics that may present problems cross-file-system based on known Microsoft rules: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx&lt;br /&gt;
&lt;br /&gt;
The engine can be used to generate a list of file paths for files that may present digital preservation risks (Rogues) or files which on the surface i.e. via identification alone, look okay (Heroes) and these listings can be used in conjunction with [http://manpages.ubuntu.com/manpages/trusty/man1/rsync.1.html rsync] to isolate these sets from one-another to be more flexible to work with. &lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. --&amp;gt;&lt;br /&gt;
*Blog entries from the tool author, Ross Spencer:&lt;br /&gt;
**'''[2014-06-03]''' [http://www.openplanetsfoundation.org/blogs/2014-06-03-analysis-engine-droid-csv-export Describing the creation and purpose of the tool.]&lt;br /&gt;
**'''[2015-08-25]''' [http://openpreservation.org/blog/2015/08/25/hero-or-villain-a-tool-to-create-a-digital-preservation-rogues-gallery/ Using the output of the tool to create a digital preservation rogues gallery.]&lt;br /&gt;
**'''[2016-05-23]''' [http://openpreservation.org/blog/2016/05/23/whats-in-a-namespace-the-marriage-of-droid-and-siegfried-analysis/ The integration of Siegfried output for consistent and repeatable reporting.]&lt;br /&gt;
**'''[2016-05-24]''' [http://openpreservation.org/blog/2016/05/24/while-were-on-the-subject-a-few-more-points-of-interest-about-the-siegfrieddroid-analysis-tool/ Creating a multi-lingual consistent, digital preservation dialect and exploring alternative methods of format identification using Siegfried's capabilities.]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/demystify/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/demystify/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/demystify/commits/main.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Add the Ohloh.com ID for the tool, if known. --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=ArchiveBox&amp;diff=6200</id>
		<title>ArchiveBox</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=ArchiveBox&amp;diff=6200"/>
		<updated>2024-03-27T06:57:54Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Initial draft of ArchiveBox record&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=ArchiveBox is an open source tool that lets organizations &amp;amp; individuals archive both public &amp;amp; private web content while retaining control over their data.&lt;br /&gt;
|homepage=https://archivebox.io/&lt;br /&gt;
|sourcecode=https://github.com/ArchiveBox/ArchiveBox&lt;br /&gt;
|license=MIT License&lt;br /&gt;
|cost=Free&lt;br /&gt;
|platforms=Docker + Python&lt;br /&gt;
|language=English&lt;br /&gt;
|Wikidata ID=Q63097629&lt;br /&gt;
|formats_out=PDF, WARC, JSON&lt;br /&gt;
|function=Web Capture, Personal Archiving&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ArchiveBox is an open source tool that lets organizations &amp;amp; individuals archive both public &amp;amp; private web content while retaining control over their data. ArchiveBox was first released in 2017.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**'''[2024-03-27]''' [https://demo.archivebox.io/public/ ArchiveBox Online Demo.]&lt;br /&gt;
&lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ArchiveBox/ArchiveBox/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ArchiveBox/ArchiveBox/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6213</id>
		<title>Sumfolder1</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6213"/>
		<updated>2024-03-26T20:25:23Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update cost&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=sumfolder1 is a utility for use within the archival and digital preservation community to generate checksums for file system directories, and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. The utility may be used in support of de-duplication at a directory/folder level.&lt;br /&gt;
|homepage=https://pypi.org/project/sumfolder1/&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/sumfolder1&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|cost=Free as in kittens (or a donation of 1 million dollars to an offshore account if you have the funding)&lt;br /&gt;
|platforms=Python 3&lt;br /&gt;
|function=Appraisal, De-Duplication, Fixity&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sumfolder1 uses a DROID CSV output to generate checksums for file system directories and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. It can be used for fixity and de-duplication at the folder level.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**'''[2023-01-16]''' [https://openpreservation.org/blogs/what-is-the-checksum-of-a-directory/ What is the checksum of a directory? Using DROID reports and the concepts behind Merkle Trees to generate directory and collection checksums.]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/sumfolder1/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/sumfolder1/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/sumfolder1/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6212</id>
		<title>Sumfolder1</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6212"/>
		<updated>2024-03-26T20:22:33Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Update dev links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=sumfolder1 is a utility for use within the archival and digital preservation community to generate checksums for file system directories, and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. The utility may be used in support of de-duplication at a directory/folder level.&lt;br /&gt;
|homepage=https://pypi.org/project/sumfolder1/&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/sumfolder1&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|cost=Open-source&lt;br /&gt;
|platforms=Python 3&lt;br /&gt;
|function=Appraisal, De-Duplication, Fixity&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sumfolder1 uses a DROID CSV output to generate checksums for file system directories and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. It can be used for fixity and de-duplication at the folder level.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**'''[2023-01-16]''' [https://openpreservation.org/blogs/what-is-the-checksum-of-a-directory/ What is the checksum of a directory? Using DROID reports and the concepts behind Merkle Trees to generate directory and collection checksums.]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/sumfolder1/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/ross-spencer/sumfolder1/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/ross-spencer/sumfolder1/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6211</id>
		<title>Sumfolder1</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=Sumfolder1&amp;diff=6211"/>
		<updated>2024-03-26T20:21:31Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: After a year no one in the community uploaded this to the registry so I thought I should...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox tool&lt;br /&gt;
|purpose=sumfolder1 is a utility for use within the archival and digital preservation community to generate checksums for file system directories, and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. The utility may be used in support of de-duplication at a directory/folder level.&lt;br /&gt;
|homepage=https://pypi.org/project/sumfolder1/&lt;br /&gt;
|sourcecode=https://github.com/ross-spencer/sumfolder1&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|cost=Open-source&lt;br /&gt;
|platforms=Python 3&lt;br /&gt;
|function=Appraisal, De-Duplication, Fixity&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox tool details}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;!-- Describe the what the tool does, focusing on it's digital preservation value. Keep it factual. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sumfolder1 uses a DROID CSV output to generate checksums for file system directories and to generate an overall &amp;quot;collection&amp;quot; checksum for a given set of files. It can be used for fixity and de-duplication at the folder level.&lt;br /&gt;
&lt;br /&gt;
== User Experiences ==&lt;br /&gt;
&amp;lt;!-- Add hotlinks to user experiences with the tool (eg. blog posts). These should illustrate the effectiveness (or otherwise) of the tool. Use a bullet list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**'''[2023-01-16]''' [https://openpreservation.org/blogs/what-is-the-checksum-of-a-directory/ What is the checksum of a directory? Using DROID reports and the concepts behind Merkle Trees to generate directory and collection checksums.]&lt;br /&gt;
&lt;br /&gt;
= Development Activity =&lt;br /&gt;
&amp;lt;!-- Provide *evidence* of development activity of the tool. For example, RSS feeds for code issues or commits. --&amp;gt;&lt;br /&gt;
All development activity is visible on GitHub: http://github.com/ross-spencer/sumfolder1/commits&lt;br /&gt;
 &lt;br /&gt;
=== Release Feed ===&lt;br /&gt;
Below the last 3 release feeds:&lt;br /&gt;
&amp;lt;rss max=3&amp;gt;https://github.com/exponential-decay/sumfolder1/releases.atom&amp;lt;/rss&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Activity Feed ===&lt;br /&gt;
Below the last 5 commits:&lt;br /&gt;
&amp;lt;rss max=5&amp;gt;https://github.com/exponential-decay/sumfolder1/commits/main.atom&amp;lt;/rss&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
	<entry>
		<id>https://coptr.digipres.org/index.php?title=User:Ross-spencer&amp;diff=6031</id>
		<title>User:Ross-spencer</title>
		<link rel="alternate" type="text/html" href="https://coptr.digipres.org/index.php?title=User:Ross-spencer&amp;diff=6031"/>
		<updated>2023-03-06T12:32:58Z</updated>

		<summary type="html">&lt;p&gt;Ross-spencer: Added link to user contributions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Digital Preservation Quartermaster''', information about me can be found via my Twitter: https://twitter.com/beet_keeper&lt;br /&gt;
&lt;br /&gt;
My contributions to this wiki:&lt;br /&gt;
&lt;br /&gt;
* [https://coptr.digipres.org/index.php?title=Special%3AContributions&amp;amp;tagfilter=&amp;amp;contribs=user&amp;amp;target=ross-spencer&amp;amp;namespace=&amp;amp;year=&amp;amp;month=-1 User Contributions]&lt;/div&gt;</summary>
		<author><name>Ross-spencer</name></author>
	</entry>
</feed>