+## Prerequisites
+
+In most cases, ⛩️📰 书社 aims to require only functionality which is
+ present in all Posix‐compliant (`POSIX.1-2001`) operating systems.
+There are a few exceptions.
+Details on particular programs are given below; if a program is not
+ listed, it is assumed that any Posix‐compliant implementation will
+ work.
+
+### `diff`
+
+This is a Posix utility, but ⛩️📰 书社 depends on functionality
+ introduced after `POSIX.1-2001` (the `-u` option, introduced in
+ `POSIX.1-2008`).
+Macintosh systems somewhat interestingly implement this option
+ correctly in legacy mode (`COMMAND_MODE=legacy`) but incorrectly by
+ default (despite claiming `POSIX.1-2008` conformance for this
+ utility).
+[Note this erroneous comment claiming nanosecond & timezone are
+ extensions rather than standardized.][rdar-92753335]
+Despite this, the default Macintosh implementation will still work with
+ ⛩️📰 书社, with the caveat that the timestamp will only include a
+ fractional component when a Posix⹀compliant (e·g, Macintosh legacy or
+ G·N·U) implementation is used.
+
+### `file`
+
+This is a Posix utility, but it was considered optional in
+ `POSIX.1-2001` (altho it was made mandatory in `POSIX.1-2008`) and
+ ⛩️📰 书社 currently depends on unspecified behaviour.
+It requires support for the following additional options :—
+
+- **`-C`**, when supplied with `-m`, must be useable to compile a
+ `.mgc` magicfile for use with future invocations of `file`.
+
+- **`--files-from`** must be useable to provide a file that `file`
+ should read file·names from, and `-` must be useable in this
+ context to specify the standard input.
+
+- **`--mime-type`** must cause `file` to print the internet media type
+ of the file with no charset parameter.
+
+- **`--separator`** must be useable to set the separator that `file`
+ uses to separate file names from types.
+
+These options are implemented by the
+ [Fine Free File Command](https://darwinsys.com/file/), which is used
+ by most operating systems.
+
+### `git`
+
+This is not a Posix utility.
+Usage of `git` is optional, but recommended (and activated by default).
+To disable it, set `GIT=`.
+
+### `make`
+
+This is a Posix utility, but it is considered an optional Software
+ Development utility and ⛩️📰 书社 currently depends on unspecified
+ behaviour.
+⛩️📰 书社 requires specifically the G·N·U version of `make`, and
+ depends on functionality present in version 3.81 or later.
+It is not expected to work in previous versions, or with other
+ implementations of Make.
+
+### `pax`
+
+This is a Posix utility, but it is not included in the Linux Standard
+ Base or installed by default in many distributions.
+⛩️📰 书社 only requires support for the `ustar` format.
+
+### `uudecode` and `uuencode`
+
+These are Posix utilities, but they were considered optional in
+ `POSIX.1-2001` (altho they are made mandatory in `POSIX.1-2008`) and
+ they are not included in the Linux Standard Base or installed by
+ default in many distributions.
+The G·N·U [Sharutils](https://www.gnu.org/software/sharutils/) package
+ provides one implementation.
+
+### `xmlcatalog` and `xmllint`
+
+These are not a Posix utilities.
+They are a part of `libxml2`, but may need to be installed separately
+ on some platforms (e·g by the name `libxml2-utils`).
+
+### `xsltproc`
+
+This is not a Posix utility.
+It is a part of `libxslt`, but may need to be installed separately on
+ some platforms.
+