You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2022/09/09 04:47:53 UTC

[couchdb] branch 3.2.2-docs created (now 116a030c8)

This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a change to branch 3.2.2-docs
in repository https://gitbox.apache.org/repos/asf/couchdb.git


      at 116a030c8 Create 3.2.2-docs branch after migrating docs to main repo

This branch includes the following new commits:

     new 116a030c8 Create 3.2.2-docs branch after migrating docs to main repo

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[couchdb] 01/01: Create 3.2.2-docs branch after migrating docs to main repo

Posted by va...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch 3.2.2-docs
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 116a030c8d0ab2399d5871c8566f4b08c1637496
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Fri Sep 9 00:42:30 2022 -0400

    Create 3.2.2-docs branch after migrating docs to main repo
    
    This branch contains the 3.2.2 version of the docs but migrated to the
    main CouchDB repo. After switching the URL repo in RDT we want to make
    sure we still display the stable (aliased to 3.2.2) docs in RDT not
    just the latest ones.
    
    Main integration PR https://github.com/apache/couchdb/pull/4164
---
 src/docs/src/api/basics.rst                     |   6 -
 src/docs/src/api/database/find.rst              |   7 +-
 src/docs/src/api/server/authn.rst               |  10 +-
 src/docs/src/api/server/common.rst              |  54 +------
 src/docs/src/best-practices/reverse-proxies.rst |   5 +-
 src/docs/src/best-practices/views.rst           |   2 +-
 src/docs/src/cluster/sharding.rst               |  20 +--
 src/docs/src/cluster/theory.rst                 |   1 +
 src/docs/src/config/auth.rst                    |  49 ++----
 src/docs/src/config/cluster.rst                 |  19 +--
 src/docs/src/config/compaction.rst              |  22 +--
 src/docs/src/config/couch-peruser.rst           |  35 ++---
 src/docs/src/config/http.rst                    |  12 +-
 src/docs/src/config/ioq.rst                     |  14 +-
 src/docs/src/config/logging.rst                 |  30 +---
 src/docs/src/config/misc.rst                    |  46 +++---
 src/docs/src/config/query-servers.rst           |  18 ++-
 src/docs/src/config/replicator.rst              |  66 ++++----
 src/docs/src/config/resharding.rst              |  21 ++-
 src/docs/src/contributing.rst                   |   2 +-
 src/docs/src/docs.app.src                       |   2 +-
 src/docs/src/install/unix.rst                   |  27 ----
 src/docs/src/install/upgrading.rst              |   4 +-
 src/docs/src/intro/security.rst                 |   2 +-
 src/docs/src/json-structure.rst                 |   6 -
 src/docs/src/maintenance/compaction.rst         |  18 ---
 src/docs/src/query-server/index.rst             |   2 +-
 src/docs/src/replication/conflicts.rst          |   2 +-
 src/docs/src/replication/replicator.rst         |  34 -----
 src/docs/src/setup/cluster.rst                  |   7 +-
 src/docs/src/whatsnew/3.0.rst                   |  18 +--
 src/docs/src/whatsnew/3.2.rst                   |   2 +-
 src/docs/templates/index.html                   | 195 ++++++++++++++++++++++++
 33 files changed, 370 insertions(+), 388 deletions(-)

diff --git a/src/docs/src/api/basics.rst b/src/docs/src/api/basics.rst
index bce96cc4e..8f9df6f14 100644
--- a/src/docs/src/api/basics.rst
+++ b/src/docs/src/api/basics.rst
@@ -597,9 +597,3 @@ specific request types are provided in the corresponding API call reference.
 
   The request was invalid, either because the supplied JSON was invalid, or
   invalid information was supplied as part of the request.
-
-- ``503 - Service Unavailable``
-
-  The request can't be serviced at this time, either because the cluster is overloaded,
-  maintenance is underway, or some other reason.
-  The request may be retried without changes, perhaps in a couple of minutes.
diff --git a/src/docs/src/api/database/find.rst b/src/docs/src/api/database/find.rst
index b5a0bd460..2ec5cc646 100644
--- a/src/docs/src/api/database/find.rst
+++ b/src/docs/src/api/database/find.rst
@@ -20,10 +20,9 @@
     :synopsis: Find documents within a given database
 
     Find documents using a declarative JSON querying syntax.
-    Queries will use custom indexes, specified using the :ref:`_index <api/db/find/index>`
-    endpoint, if available.
-    Otherwise, they use the built-in :ref:`_all_docs <api/db/all_docs>` index, which
-    can be arbitrarily slow.
+    Queries can use the built-in :ref:`_all_docs <api/db/all_docs>` index or
+    custom indexes, specified using the :ref:`_index <api/db/find/index>`
+    endpoint.
 
     :param db: Database name
 
diff --git a/src/docs/src/api/server/authn.rst b/src/docs/src/api/server/authn.rst
index c5e2b7ba7..45e4d4598 100644
--- a/src/docs/src/api/server/authn.rst
+++ b/src/docs/src/api/server/authn.rst
@@ -73,7 +73,7 @@ For cookie authentication (:rfc:`2109`) CouchDB generates a token that the
 client can use for the next few requests to CouchDB. Tokens are valid until
 a timeout. When CouchDB sees a valid token in a subsequent request, it will
 authenticate the user by this token without requesting the password again. By
-default, cookies are valid for 10 minutes, but it's adjustable via :config:option:`timeout
+default, cookies are valid for 10 minutes, but it's :config:option:`adjustable
 <chttpd_auth/timeout>`. Also it's possible to make cookies
 :config:option:`persistent <chttpd_auth/allow_persistent_cookies>`.
 
@@ -385,8 +385,8 @@ Two sections of config exist to configure JWT authentication;
 
 The :config:option:`required_claims <jwt_auth/required_claims>` config
 setting is a comma-separated list of additional mandatory JWT claims
-that must be present in any presented JWT token. A :statuscode:`400`
-is sent if any are missing.
+that must be present in any presented JWT token. A `:code 400:Bad
+Request` is sent if any are missing.
 
 The ``alg`` claim is mandatory as it used to lookup the correct key for verifying the
 signature.
@@ -407,8 +407,8 @@ list as long as the JWT token is valid.
     ; Examples
     ; hmac:_default = aGVsbG8=
     ; hmac:foo = aGVsbG8=
-    ; The config values can represent symmetric and asymmetric keys.
-    ; For symmetric keys, the value is base64 encoded;
+    ; The config values can represent symmetric and asymmetrics keys.
+    ; For symmetrics keys, the value is base64 encoded;
     ; hmac:_default = aGVsbG8= # base64-encoded form of "hello"
     ; For asymmetric keys, the value is the PEM encoding of the public
     ; key with newlines replaced with the escape sequence \n.
diff --git a/src/docs/src/api/server/common.rst b/src/docs/src/api/server/common.rst
index fa1c1beba..222b89678 100644
--- a/src/docs/src/api/server/common.rst
+++ b/src/docs/src/api/server/common.rst
@@ -66,8 +66,6 @@
 
 .. versionchanged:: 2.1.0 Because of how the scheduling replicator works, continuous replication jobs could be periodically stopped and then started later. When they are not running they will not appear in the ``_active_tasks`` endpoint
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"` fields for replication jobs.
-
 .. http:get:: /_active_tasks
     :synopsis: Obtains a list of the tasks running in the server
 
@@ -150,8 +148,6 @@
                 "continuous": false,
                 "doc_id": null,
                 "doc_write_failures": 0,
-                "bulk_get_attempts": 4524,
-                "bulk_get_docs": 4524,
                 "docs_read": 4524,
                 "docs_written": 4524,
                 "missing_revisions_found": 4524,
@@ -544,8 +540,8 @@
                         - **eventsource**: Like, ``continuous``, but sends
                           the events in `EventSource
                           <http://dev.w3.org/html5/eventsource/>`_ format.
-    :query number timeout: Number of *milliseconds* until CouchDB closes the
-      connection. Default is ``60000``.
+    :query number timeout: Number of seconds until CouchDB closes the
+      connection. Default is ``60``.
     :query number heartbeat: Period in *milliseconds* after which an empty
         line is sent in the results. Only applicable for ``longpoll``,
         ``continuous``, and ``eventsource`` feeds. Overrides any timeout to
@@ -661,8 +657,6 @@
 ``/_replicate``
 ===============
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"`  fields to the replication history response object.
-
 .. http:post:: /_replicate
     :synopsis: Starts or cancels the replication
 
@@ -678,7 +672,6 @@
     :<json object create_target_params: An object that contains parameters
       to be used when creating the target database. Can include the
       standard ``q`` and ``n`` parameters.
-    :<json boolean winning_revs_only: Replicate winning revisions only.
     :<json array doc_ids: Array of document IDs to be synchronized.
       ``doc_ids``, ``filter``, and ``selector`` are mutually exclusive.
     :<json string filter: The name of a :ref:`filter function <filterfun>`.
@@ -734,10 +727,6 @@
     :json number doc_write_failures: Number of document write failures
     :json number docs_read:  Number of documents read
     :json number docs_written:  Number of documents written to target
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number end_last_seq:  Last sequence number in changes stream
     :json string end_time:  Date/Time replication operation completed in
       :rfc:`2822` format
@@ -784,8 +773,6 @@
                 {
                     "doc_write_failures": 0,
                     "docs_read": 10,
-                    "bulk_get_attempts": 10,
-                    "bulk_get_docs": 10,
                     "docs_written": 10,
                     "end_last_seq": 28,
                     "end_time": "Sun, 11 Aug 2013 20:38:50 GMT",
@@ -799,8 +786,6 @@
                 {
                     "doc_write_failures": 0,
                     "docs_read": 1,
-                    "bulk_get_attempts": 1,
-                    "bulk_get_docs": 1,
                     "docs_written": 1,
                     "end_last_seq": 1,
                     "end_time": "Sat, 10 Aug 2013 15:41:54 GMT",
@@ -927,8 +912,6 @@ request was made. The response will be a JSON structure containing the success
         "history" : [
             {
                 "docs_read" : 1000,
-                "bulk_get_attempts": 1000,
-                "bulk_get_docs": 1000,
                 "session_id" : "52c2370f5027043d286daca4de247db0",
                 "recorded_seq" : 1000,
                 "end_last_seq" : 1000,
@@ -1096,8 +1079,6 @@ error.
                         "doc_write_failures": 0,
                         "docs_read": 113,
                         "docs_written": 113,
-                        "bulk_get_attempts": 113,
-                        "bulk_get_docs": 113,
                         "missing_revisions_found": 113,
                         "revisions_checked": 113,
                         "source_seq": "113-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE01ygQLsZsYGqcamiZjKcRqRxwIkGRqA1H-oSbZgk1KMLCzTDE0wdWUBAF6HJIQ",
@@ -1130,8 +1111,6 @@ error.
                         "doc_write_failures": 0,
                         "docs_read": 12,
                         "docs_written": 12,
-                        "bulk_get_attempts": 12,
-                        "bulk_get_docs": 12,
                         "missing_revisions_found": 12,
                         "revisions_checked": 12,
                         "source_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg",
@@ -1163,9 +1142,6 @@ error.
 .. versionchanged:: 3.0.0 In error states the `"info"` field switched
                     from being a string to being an object
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"` the
-                    `"info"` object.
-
 .. http:get:: /_scheduler/docs
     :synopsis: Retrieve information about replication documents from the
                ``_replicator`` database.
@@ -1219,10 +1195,6 @@ error.
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1259,8 +1231,6 @@ error.
                         "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                         "doc_write_failures": 0,
                         "docs_read": 67,
-                        "bulk_get_attempts": 67,
-                        "bulk_get_docs": 67,
                         "docs_written": 67,
                         "missing_revisions_found": 67,
                         "revisions_checked": 67,
@@ -1285,8 +1255,6 @@ error.
                         "changes_pending": null,
                         "checkpointed_source_seq": 0,
                         "doc_write_failures": 0,
-                        "bulk_get_attempts": 12,
-                        "bulk_get_docs": 12,
                         "docs_read": 12,
                         "docs_written": 12,
                         "missing_revisions_found": 12,
@@ -1364,10 +1332,6 @@ error.
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1404,8 +1368,6 @@ error.
                         "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                         "doc_write_failures": 0,
                         "docs_read": 67,
-                        "bulk_get_attempts": 67,
-                        "bulk_get_docs": 67,
                         "docs_written": 67,
                         "missing_revisions_found": 67,
                         "revisions_checked": 67,
@@ -1472,10 +1434,6 @@ error.
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1510,8 +1468,6 @@ error.
                 "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                 "doc_write_failures": 0,
                 "docs_read": 67,
-                "bulk_get_attempts": 67,
-                "bulk_get_docs": 67,
                 "docs_written": 67,
                 "missing_revisions_found": 67,
                 "revisions_checked": 67,
@@ -1891,9 +1847,9 @@ containing only the requested individual statistic.
         ...remaining couchdb metrics from _stats and _system
 
 If an additional port config option is specified, then a client can call this API using
-that port which does not require authentication. This option is ``false`` (OFF)
-by default. When the option is ``true`` (ON), the default ports for a 3 node cluster
-are ``17986``, ``27986``, ``37986``.
+that port which does not require authentication. This option is ``false``(OFF) by default.
+When the option ``true``(ON), the default ports for a 3 node cluster are ``17986``,
+``27986``, ``37986``.
 See :ref:`Configuration of Prometheus Endpoint <config/prometheus>` for details.
 
 .. code-block:: http
diff --git a/src/docs/src/best-practices/reverse-proxies.rst b/src/docs/src/best-practices/reverse-proxies.rst
index a04fc7615..46102ac0a 100644
--- a/src/docs/src/best-practices/reverse-proxies.rst
+++ b/src/docs/src/best-practices/reverse-proxies.rst
@@ -104,9 +104,8 @@ as ``http://domain.com/couchdb/db1/doc1`` are proxied to
 .. code-block:: text
 
     location /couchdb {
-        rewrite ^ $request_uri;
-        rewrite ^/couchdb/(.*) /$1 break;
-        proxy_pass http://localhost:5984$uri;
+        rewrite /couchdb/(.*) /$1 break;
+        proxy_pass http://localhost:5984;
         proxy_redirect off;
         proxy_buffering off;
         proxy_set_header Host $host;
diff --git a/src/docs/src/best-practices/views.rst b/src/docs/src/best-practices/views.rst
index ffc8399e2..335e79519 100644
--- a/src/docs/src/best-practices/views.rst
+++ b/src/docs/src/best-practices/views.rst
@@ -29,7 +29,7 @@ the contents of the design document - not its name, ``_id`` or revision. This
 means that two design documents with identical view code will share the same
 on-disk view index files.
 
-Here is a worked example, assuming your ``/db/_design/ddoc`` needs to be updated.
+Here is a worked example, assuming your ``/db/_design/ddoc`` needs tobe updated.
 
 1. Upload the old design doc to ``/db/_design/ddoc-old`` (or copy the document)
    if you want an easy way to rollback in case of problems. The ``ddoc-old``
diff --git a/src/docs/src/cluster/sharding.rst b/src/docs/src/cluster/sharding.rst
index d7bc3e262..01408d485 100644
--- a/src/docs/src/cluster/sharding.rst
+++ b/src/docs/src/cluster/sharding.rst
@@ -64,12 +64,9 @@ CouchDB nodes have a ``etc/default.ini`` file with a section named
 
 These settings specify the default sharding parameters for newly created
 databases. These can be overridden in the ``etc/local.ini`` file by copying the
-text above, and replacing the values with your new defaults.
-If ``[couch_peruser]`` ``q`` is set, that value is used for per-user databases.
-(By default, it is set to 1, on the assumption that per-user dbs will be quite
-small and there will be many of them.)  The values can also be set on a
-per-database basis by specifying the ``q`` and ``n`` query parameters when the
-database is created. For example:
+text above, and replacing the values with your new defaults.  The values can
+also be set on a per-database basis by specifying the ``q`` and ``n`` query
+parameters when the database is created. For example:
 
 .. code-block:: bash
 
@@ -103,13 +100,10 @@ refers to the number of replicas of each shard. In a default cluster where
     request. There are no special roles for nodes inside the cluster.
 
 The size of the required quorum can be configured at request time by
-setting the ``r`` parameter for document reads, and the ``w``
-parameter for document writes. The ``_view``, ``_find``, and
-``_search`` endpoints read only one copy no matter what quorum is
-configured, effectively making a quorum of 1 for these requests.
-
-For example, here is a request that directs the coordinating node to
-send a response once at least two nodes have responded:
+setting the ``r`` parameter for document and view reads, and the ``w``
+parameter for document writes. For example, here is a request that
+directs the coordinating node to send a response once at least two nodes
+have responded:
 
 .. code-block:: bash
 
diff --git a/src/docs/src/cluster/theory.rst b/src/docs/src/cluster/theory.rst
index fd0ab365c..0ea50e8cb 100644
--- a/src/docs/src/cluster/theory.rst
+++ b/src/docs/src/cluster/theory.rst
@@ -44,6 +44,7 @@ We will focus on the shards and replicas for now.
 A shard is a part of a database. It can be replicated multiple times. The more
 copies of a shard, the more you can scale out. If you have 4 replicas, that
 means that all 4 copies of this specific shard will live on at most 4 nodes.
+With one replica you can have only one node, just as with CouchDB 1.x.
 No node can have more than one copy of each shard replica. The default for
 CouchDB since 3.0.0 is ``q=2`` and ``n=3``, meaning each database (and secondary
 index) is split into 2 shards, with 3 replicas per shard, for a total of 6
diff --git a/src/docs/src/config/auth.rst b/src/docs/src/config/auth.rst
index cb92f3188..70ec276e5 100644
--- a/src/docs/src/config/auth.rst
+++ b/src/docs/src/config/auth.rst
@@ -116,8 +116,6 @@ Authentication Configuration
 
     .. config:option:: require_valid_user :: Force user authentication
 
-        .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd] section
-
         When this option is set to ``true``, no requests are allowed from
         anonymous users. Everyone must be authenticated. ::
 
@@ -136,7 +134,7 @@ Authentication Configuration
 .. config:section:: chttpd_auth :: Authentication Configuration
 
     .. versionchanged:: 3.2 These options were moved to [chttpd_auth] section:
-                        `authentication_redirect`, `timeout`,
+                        `authentication_redirect`, `require_valid_user`, `timeout`,
                         `auth_cache_size`, `allow_persistent_cookies`, `iterations`,
                         `min_iterations`, `max_iterations`, `secret`, `users_db_public`,
                         `x_auth_roles`, `x_auth_token`, `x_auth_username`,
@@ -196,33 +194,6 @@ Authentication Configuration
             [chttpd_auth]
             authentication_redirect = /_utils/session.html
 
-    .. config:option:: hash_algorithms :: Supported hash algorithms for cookie auth
-
-        .. versionadded:: 3.3
-
-        Sets the HMAC hash algorithm used for cookie authentication. You can provide a
-        comma-separated list of hash algorithms. New cookie sessions or
-        session updates are calculated with the first hash algorithm. All values in the
-        list can be used to decode the cookie session. ::
-
-            [chttpd_auth]
-            hash_algorithms = sha256, sha
-
-        .. note::
-            You can select any hash algorithm the version of erlang used in your CouchDB
-            install supports. The common list of available hashes might be: ::
-
-                sha, sha224, sha256, sha384, sha512
-
-            To retrieve a complete list of supported hash algorithms you can use our
-            ``bin/remsh`` script and retrieve a full list of available hash algorithms
-            with ``crypto:supports(hashs).``.
-
-        .. warning::
-            We do not recommend using the following hash algorithms: ::
-
-                md4, md5
-
     .. config:option:: iterations :: PBKDF2 iterations count
 
         .. versionadded:: 1.3
@@ -230,9 +201,7 @@ Authentication Configuration
 
         The number of iterations for password hashing by the PBKDF2 algorithm.
         A higher  number provides better hash durability, but comes at a cost
-        in performance for each request that requires authentication.
-        When using hundreds of thousands of iterations, use session cookies, or the performance hit will be huge.
-        (The internal hashing algorithm is SHA1, which affects the recommended number of iterations.) ::
+        in performance for each request that requires authentication. ::
 
             [chttpd_auth]
             iterations = 10000
@@ -310,6 +279,16 @@ Authentication Configuration
                 [chttpd_auth]
                 users_db_public = true
 
+    .. config:option:: require_valid_user :: Force user authentication
+
+        .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd_auth] section
+
+        When this option is set to ``true``, no requests are allowed from
+        anonymous users. Everyone must be authenticated. ::
+
+            [chttpd_auth]
+            require_valid_user = false
+
     .. config:option:: secret :: Authentication secret token
 
         .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd_auth] section
@@ -382,8 +361,8 @@ Authentication Configuration
     .. config:option:: required_claims :: Mandatory claims in JWT tokens
 
         This parameter is a comma-separated list of additional mandatory JWT claims
-        that must be present in any presented JWT token. A :http:statuscode:`404`
-        is sent if any are missing. ::
+        that must be present in any presented JWT token. A
+        `:code 400:Bad Request` is sent if any are missing. ::
 
             [jwt_auth]
                 required_claims = exp,iat
diff --git a/src/docs/src/config/cluster.rst b/src/docs/src/config/cluster.rst
index 8801b9cde..e0772b30c 100644
--- a/src/docs/src/config/cluster.rst
+++ b/src/docs/src/config/cluster.rst
@@ -22,9 +22,9 @@ Configuring Clustering
 Cluster Options
 ===============
 
-.. config:section:: cluster :: Cluster Options
+.. config:section:: cluster :: cluster Options
 
-    .. config:option:: q :: Default number of shards for newly created database
+    .. config:option:: q
 
     Sets the default number of shards for newly created databases. The
     default value, ``2``, splits a database into 2 separate partitions. ::
@@ -42,7 +42,7 @@ Cluster Options
     .. seealso::
         :http:put:`PUT /{db} </{db}>`
 
-    .. config:option:: n :: Number of replicas of each document
+    .. config:option:: n
 
     Sets the number of replicas of each document in a cluster. CouchDB will
     only place one replica per node in a cluster. When set up through the
@@ -54,7 +54,7 @@ Cluster Options
         [cluster]
         n = 3
 
-    .. config:option:: placement :: Sets the cluster-wide replica placement policy
+    .. config:option:: placement
 
     .. warning::
 
@@ -75,8 +75,7 @@ Cluster Options
     .. seealso::
         :ref:`cluster/databases/placement`
 
-    .. config:option:: seedlist:: Optional, comma-delimited list of nodes that should \
-        be contacted to join cluster
+    .. config:option:: seedlist
 
     An optional, comma-delimited list of node names that this node should
     contact in order to join a cluster. If a seedlist is configured the ``_up``
@@ -97,22 +96,20 @@ RPC Performance Tuning
     communication channel. There are a few configuration knobs for this system,
     although in general the defaults work well.
 
-    .. config:option:: buffer_count :: Number of buffered messages before dropping
+    .. config:option:: buffer_count
 
     The local RPC server will buffer messages if a remote node goes unavailable.
     This flag determines how many messages will be buffered before the local
     server starts dropping messages. Default value is ``2000``.
 
-    .. config:option:: server_per_node :: Enable or disable one local `gen_server` \
-        process per node
+    .. config:option:: server_per_node
 
     By default, rexi will spawn one local gen_server process for each node in
     the cluster. Disabling this flag will cause CouchDB to use a single process
     for all RPC communication, which is not recommended in high throughput
     deployments.
 
-    .. config:option:: stream_limit :: Number of send messages without waiting \
-        for acknowledgement from the coordinator
+    .. config:option:: stream_limit
 
         .. versionadded:: 3.0
 
diff --git a/src/docs/src/config/compaction.rst b/src/docs/src/config/compaction.rst
index 620c2b922..86113edaf 100644
--- a/src/docs/src/config/compaction.rst
+++ b/src/docs/src/config/compaction.rst
@@ -104,19 +104,19 @@ following parameters.
 The following settings control the resource allocation for a given compaction
 channel.
 
-    .. config:option:: capacity :: Maximum number of items
+    .. config:option:: capacity
 
         The maximum number of items the channel can hold (lowest priority item
         is removed to make room for new items). Defaults to 9999.
 
-    .. config:option:: concurrency :: Maximum number of concurrent jobs
+    .. config:option:: concurrency
 
         The maximum number of jobs that can run concurrently in this channel.
         Defaults to 1.
 
-    .. config:option:: from :: Time window start
+    .. config: option:: from
 
-    .. config:option:: to :: Time window end
+    .. config: option:: to
 
         The time period during which this channel is allowed to execute
         compactions. The value for each of these parameters must obey the format
@@ -125,7 +125,7 @@ channel.
         regardless of the period defined here. The default is to allow the
         channel to execute compactions all the time.
 
-    .. config:option:: strict_window :: Run compaction only within the time window
+    .. config: option:: strict_window
 
         If set to ``true``, any compaction that is still running after the end of
         the allowed perio will be suspended, and then resumed during the next
@@ -135,32 +135,32 @@ channel.
 There are also several settings that collectively control whether a channel will
 enqueue a file for compaction and how it prioritizes files within its queue:
 
-    .. config:option:: max_priority :: Maximum priority of item to be enqueued
+    .. config:option:: max_priority
 
         Each item must have a priority lower than this to be enqueued. Defaults
         to infinity.
 
-    .. config:option:: max_size :: Maximum size of item to be enqueued
+    .. config:option:: max_size
 
         The item must be no larger than this many bytes in length to be
         enqueued. Defaults to infinity.
 
-    .. config:option:: min_priority :: Minimum priority of item to be enqueued
+    .. config:option:: min_priority
 
         The item must have a priority at least this high to be enqueued.
         Defaults to 5.0 for ratio and 16 MB for slack.
 
-    .. config:option:: min_changes :: Minimum number of changes of item to be enqueued
+    .. config:option:: min_changes
 
         The minimum number of changes since last compaction before the item will
         be enqueued. Defaults to 0. Currently only works for databases.
 
-    .. config:option:: min_size :: Minimum size of item to be enqueued
+    .. config:option:: min_size
 
         The item must be at least this many bytes in length to be enqueued.
         Defaults to 1mb (1048576 bytes).
 
-    .. config:option:: priority :: Method for priority calculation
+    .. config:option:: priority
 
         The method used to calculate priority. Can be ratio (calculated as
         ``sizes.file/sizes.active``) or slack (calculated as ``sizes.file -
diff --git a/src/docs/src/config/couch-peruser.rst b/src/docs/src/config/couch-peruser.rst
index 1517c040a..dc5e7a3be 100644
--- a/src/docs/src/config/couch-peruser.rst
+++ b/src/docs/src/config/couch-peruser.rst
@@ -13,23 +13,23 @@
 .. default-domain:: config
 .. highlight:: ini
 
-=================
-Database Per User
-=================
+=============
+couch_peruser
+=============
 
 .. _config/couch_peruser:
 
-Database Per User Options
-=========================
+couch_peruser Options
+=====================
 
-.. config:section:: couch_peruser :: Database Per User Options
+.. config:section:: couch_peruser :: couch_peruser Options
 
-    .. config:option:: enable :: Enable private per-user database pattern
+    .. config:option:: enable
 
     If set to ``true``, couch_peruser ensures that a private per-user
     database exists for each document in ``_users``. These databases are
-    writable only by the corresponding user. Database names are in the following
-    form: ``userdb-{UTF-8 hex encoded username}``. ::
+    writable only by the corresponding user. Databases are in the following
+    form: ``userdb-{hex encoded username}``. ::
 
         [couch_peruser]
         enable = false
@@ -37,20 +37,7 @@ Database Per User Options
     .. note::
         The ``_users`` database must exist before couch_peruser can be enabled.
 
-    .. tip::
-        Under NodeJS, user names can be converted to and from database names thusly:
-
-    .. code:: javascript
-
-        function dbNameToUsername(prefixedHexName) {
-          return Buffer.from(prefixedHexName.replace('userdb-', ''), 'hex').toString('utf8');
-        }
-
-        function usernameToDbName(name) {
-          return 'userdb-' + Buffer.from(name).toString('hex');
-        }
-
-    .. config:option:: delete_dbs :: Enable deleting user-db after user delete
+    .. config:option:: delete_dbs
 
     If set to ``true`` and a user is deleted, the respective database gets
     deleted as well. ::
@@ -62,7 +49,7 @@ Database Per User Options
     ``_couchdb.roles=['_admin']`` claim to for the peruser database to be properly
     created and accessible for the user provided in the ``sub=`` claim.
 
-    .. config:option:: q :: Sharding value for per-user databases
+    .. config:option:: q
 
     If set, specify the sharding value for per-user databases. If unset, the
     cluster default value will be used.
diff --git a/src/docs/src/config/http.rst b/src/docs/src/config/http.rst
index 19f434161..4bda36b4a 100644
--- a/src/docs/src/config/http.rst
+++ b/src/docs/src/config/http.rst
@@ -129,7 +129,7 @@ HTTP Server Options
             [chttpd]
             changes_timeout = 60000 ; 60 seconds
 
-    .. config:option:: config_whitelist :: Config options whitelist
+    .. config:option:: config_whitelist :: Config options while list
 
         .. versionchanged:: 3.2 moved from [httpd] to [chttpd] section
 
@@ -490,7 +490,7 @@ Cross-Origin Resource Sharing
         [chttpd]
         enable_cors = true
 
-    .. config:option:: credentials :: Enable credentials support in CouchDB
+    .. config:option:: credentials
 
         By default, neither authentication headers nor cookies are included in
         requests and responses. To do so requires both setting
@@ -503,7 +503,7 @@ Cross-Origin Resource Sharing
         CouchDB will respond to a credentials-enabled CORS request with an
         additional header, ``Access-Control-Allow-Credentials=true``.
 
-    .. config:option:: origins :: List of allowed origins
+    .. config:option:: origins
 
         List of origins separated by a comma, ``*`` means accept all. You can’t
         set ``origins = *`` and ``credentials = true`` option at the same
@@ -521,21 +521,21 @@ Cross-Origin Resource Sharing
         Note that by default, no origins are accepted. You must define them
         explicitly.
 
-    .. config:option:: headers :: List of accepted headers
+    .. config:option:: headers
 
         List of accepted headers separated by a comma::
 
             [cors]
             headers = X-Couch-Id, X-Couch-Rev
 
-    .. config:option:: methods :: List of accepted methods
+    .. config:option:: methods
 
         List of accepted methods::
 
             [cors]
             methods = GET,POST
 
-    .. config:option:: max_age :: Set Access-Control-Max-Age header
+    .. config:option:: max_age
 
         Sets the ``Access-Control-Max-Age`` header in seconds. Use it to
         avoid repeated ``OPTIONS`` requests.
diff --git a/src/docs/src/config/ioq.rst b/src/docs/src/config/ioq.rst
index ef931b383..bcf902b7b 100644
--- a/src/docs/src/config/ioq.rst
+++ b/src/docs/src/config/ioq.rst
@@ -42,7 +42,7 @@ according to the settings described below.
             [ioq]
             ratio = 0.01
 
-.. config:section:: ioq.bypass :: Bypass Selected IO Classes
+.. config:section:: ioq.bypass :: Bypass selected IO classes by setting these to true
 
     System administrators can choose to submit specific classes of IO directly
     to the underlying file descriptor or OS process, bypassing the queues
@@ -50,28 +50,28 @@ according to the settings described below.
     latency, but relinquishes some control over prioritization. The following
     classes are recognized:
 
-    .. config:option:: os_process :: Bypass IO messages to external processes
+    .. config:option:: os_process
 
         Messages on their way to an external process (e.g., ``couchjs``).
 
-    .. config:option:: read :: Bypass Disk IO read requests
+    .. config:option:: read
 
         Disk IO fulfilling interactive read requests.
 
-    .. config:option:: write :: Bypass Disk IO write requests
+    .. config:option:: write
 
         Disk IO required to update a database.
 
-    .. config:option:: view_update :: Bypass Disk IO view update requests
+    .. config:option:: view_update
 
         Disk IO required to update views and other secondary indexes.
 
-    .. config:option:: shard_sync :: Bypass Disk IO for shard syncing requests
+    .. config:option:: shard_sync
 
         Disk IO issued by the background replication processes that fix any
         inconsistencies between shard copies.
 
-    .. config:option:: compaction :: Bypass Disk IO for compaction job requests
+    .. config:option:: compaction
 
         Disk IO issued by compaction jobs.
 
diff --git a/src/docs/src/config/logging.rst b/src/docs/src/config/logging.rst
index 26422f6c7..d9aae6ab3 100644
--- a/src/docs/src/config/logging.rst
+++ b/src/docs/src/config/logging.rst
@@ -22,7 +22,7 @@ Logging
 Logging options
 ================
 
-.. config:section:: log :: Logging Options
+.. config:section:: log :: Logging options
 
     CouchDB logging configuration.
 
@@ -54,7 +54,7 @@ Logging options
         This path should be readable and writable for user that runs CouchDB
         service (`couchdb` by default).
 
-    .. config:option:: write_buffer :: File log write buffer size
+    .. config:option:: write_buffer
 
        Specifies the size of the file log write buffer in bytes, to enable
        delayed log writes. Only used by the ``file``
@@ -63,7 +63,7 @@ Logging options
             [log]
             write_buffer = 0
 
-    .. config:option:: write_delay :: Wait delay before commiting logs to disk
+    .. config:option:: write_delay
 
         Specifies the wait in milliseconds before committing logs to disk, to
         enable delayed log writes. Only used by the ``file``
@@ -97,7 +97,7 @@ Logging options
         - ``emergency`` or ``emerg``
         - ``none``: Disables logging any messages.
 
-    .. config:option:: include_sasl :: Include SASL information in logs
+    .. config:option:: include_sasl
 
         Includes `SASL`_ information in logs::
 
@@ -106,11 +106,7 @@ Logging options
 
         .. _SASL: http://www.erlang.org/doc/apps/sasl/
 
-    .. config:option:: syslog_host :: Syslog host
-
-        .. note::
-
-            Setting `syslog_host` is mandatory for ``syslog`` to work!
+    .. config:option:: syslog_host
 
         Specifies the syslog host to send logs to. Only used by the
         ``syslog`` :option:`writer <log/writer>`::
@@ -118,7 +114,7 @@ Logging options
             [log]
             syslog_host = localhost
 
-    .. config:option:: syslog_port :: Syslog port
+    .. config:option:: syslog_port
 
         Specifies the syslog port to connect to when sending logs. Only used by
         the ``syslog`` :option:`writer <log/writer>`::
@@ -126,7 +122,7 @@ Logging options
             [log]
             syslog_port = 514
 
-    .. config:option:: syslog_appid :: Application name for syslog
+    .. config:option:: syslog_appid
 
         Specifies application name to the ``syslog``
         :option:`writer <log/writer>`::
@@ -134,20 +130,10 @@ Logging options
             [log]
             syslog_appid = couchdb
 
-    .. config:option:: syslog_facility :: Syslog designations for message sources
+    .. config:option:: syslog_facility
 
         Specifies the syslog facility to use with the ``syslog``
         :option:`writer <log/writer>`::
 
             [log]
             syslog_facility = local2
-
-    .. note::
-        CouchDB's ``syslog`` only knows how to use UDP logging. Please ensure that your
-        ``syslog`` server has UDP logging enabled.
-
-        For ``rsyslog`` you can enable the UDP module `imudp` in ``/etc/rsyslog.conf``::
-
-            # provides UDP syslog reception
-            module(load="imudp")
-            input(type="imudp" port="514")
diff --git a/src/docs/src/config/misc.rst b/src/docs/src/config/misc.rst
index 5c76d2a6c..719ca14a6 100644
--- a/src/docs/src/config/misc.rst
+++ b/src/docs/src/config/misc.rst
@@ -24,7 +24,7 @@ Configuration of Attachment Storage
 
 .. config:section:: attachments :: Configuration of Attachment Storage
 
-    .. config:option:: compression_level :: Set zlib compression level
+    .. config:option:: compression_level
 
         Defines zlib compression level for the attachments from ``1`` (lowest,
         fastest) to ``9`` (highest, slowest). A value of ``0`` disables
@@ -33,7 +33,7 @@ Configuration of Attachment Storage
             [attachments]
             compression_level = 8
 
-    .. config:option:: compressible_types :: List of attachment types for compression
+    .. config:option:: compressible_types
 
         Since compression is ineffective for some types of files, it is
         possible to let CouchDB compress only some types of attachments,
@@ -49,7 +49,7 @@ Statistic Calculation
 
 .. config:section:: stats :: Statistic Calculation
 
-    .. config:option:: interval :: Statistics gathering interval
+    .. config:option:: interval
 
         Interval between gathering statistics in seconds::
 
@@ -218,11 +218,11 @@ Content-Security-Policy
 
 .. config:section:: csp :: Content-Security-Policy
 
-    You can configure ``Content-Security-Policy`` header for Fauxton, attachments and
-    show/list functions separately. See `MDN Content-Security-Policy <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy>`_
-    for more details on CSP.
+  You can configure ``Content-Security-Policy`` header for Fauxton, attachments and
+  show/list functions separately. See `MDN Content-Security-Policy <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy>`_
+  for more details on CSP.
 
-    .. config:option:: utils_enable :: Enable Content-Security-Policy header (Fauxton)
+    .. config:option:: utils_enable
 
         Enable the sending of the header ``Content-Security-Policy`` for ``/_utils``.
         Defaults to ``true``::
@@ -230,35 +230,35 @@ Content-Security-Policy
             [csp]
             utils_enable = true
 
-    .. config:option:: utils_header_value :: Set CSP-Header value (Fauxton)
+    .. config:option:: utils_header_value
 
         Specifies the exact header value to send. Defaults to::
 
             [csp]
             utils_header_value = default-src 'self'; img-src 'self'; font-src *; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';
 
-    .. config:option:: attachments_enable :: Enable CSP-Header (attachments)
+    .. config:option:: attachments_enable
 
         Enable sending the ``Content-Security-Policy`` header for attachments::
 
             [csp]
             attachments_enable = true
 
-    .. config:option:: attachments_header_value :: Set CSP-Header value (attachments)
+    .. config:option:: attachments_header_value
 
         Specifies the exact header value to send. Defaults to::
 
             [csp]
             attachments_header_value = sandbox
 
-    .. config:option:: showlist_enable :: Enable CSP-Header (Show/List-Functions)
+    .. config:option:: showlist_enable
 
         Enable sending the ``Content-Security-Policy`` header for show and list functions::
 
             [csp]
             showlist_enable = true
 
-    .. config:option:: showlist_header_value :: Set CSP-Header value (Show/List-Functions)
+    .. config:option:: showlist_header_value
 
         Specifies the exact header value to send. Defaults to::
 
@@ -270,14 +270,14 @@ Content-Security-Policy
 
     Experimental support of CSP headers for ``/_utils`` (Fauxton).
 
-    .. config:option:: enable :: Enable CSP-Header (deprecated)
+    .. config:option:: enable
 
         Enable the sending of the Header ``Content-Security-Policy``::
 
             [csp]
             enable = true
 
-    .. config:option:: header_value :: Set CSP-Header value (deprecated)
+    .. config:option:: header_value
 
         You can change the default value for the Header which is sent::
 
@@ -291,8 +291,7 @@ Configuration of Database Purge
 
 .. config:section:: purge :: Configuration of Database Purge
 
-    .. config:option:: max_document_id_number :: Allowed number of documents \
-        per Delete-Request
+    .. config:option:: max_document_id_number
 
         .. versionadded:: 3.0
 
@@ -301,8 +300,7 @@ Configuration of Database Purge
             [purge]
             max_document_id_number = 100
 
-    .. config:option:: max_revisions_number :: Allowed number of accumulated \
-        revisions per Purge-Request
+    .. config:option:: max_revisions_number
 
         .. versionadded:: 3.0
 
@@ -312,8 +310,7 @@ Configuration of Database Purge
             [purge]
             max_revisions_number = 1000
 
-    .. config:option:: index_lag_warn_seconds :: Allowed duration for purge \
-        checkpoint document
+    .. config:option:: index_lag_warn_seconds
 
         .. versionadded:: 3.0
 
@@ -330,8 +327,7 @@ Configuration of Prometheus Endpoint
 
 .. config:section:: prometheus :: Configuration of Prometheus Options
 
-    .. config:option:: additional_port :: Enable a separate, non-authenticated port \
-        for prometheus data
+    .. config:option:: additional_port
 
         .. versionadded:: 3.2
 
@@ -340,7 +336,7 @@ Configuration of Prometheus Endpoint
             [prometheus]
             additional_port = true
 
-    .. config:option:: bind_address :: IP address binding
+    .. config:option:: bind_address
 
         .. versionadded:: 3.2
 
@@ -349,11 +345,11 @@ Configuration of Prometheus Endpoint
             [prometheus]
             bind_address = 127.0.0.1
 
-    .. config:option:: port :: Port for querying Prometheus data without authentication
+    .. config:option:: port
 
         .. versionadded:: 3.2
 
-        The port on which clients can query prometheus endpoint data without authentication::
+        The port on which clients can query prometheus endpoint data without authentication
 
             [prometheus]
             port = 17986
diff --git a/src/docs/src/config/query-servers.rst b/src/docs/src/config/query-servers.rst
index 1d81665b8..cba7646bc 100644
--- a/src/docs/src/config/query-servers.rst
+++ b/src/docs/src/config/query-servers.rst
@@ -65,7 +65,7 @@ you can adjust the memory limitation (here, increasing to 512 MiB)::
 
 For more info about the available options, please consult ``couchjs -h``.
 
-.. _Mozilla SpiderMonkey: https://spidermonkey.dev/
+.. _Mozilla SpiderMonkey: https://developer.mozilla.org/en/docs/SpiderMonkey
 
 .. seealso::
     The :ref:`Mango Query Server <api/db/_find>` is a declarative language
@@ -92,7 +92,8 @@ Query Servers Configuration
             [query_server_config]
             commit_freq = 5
 
-    .. config:option:: os_process_limit :: Query Server process hard limit
+    .. config:option:: os_process_limit :: Query Server process hard
+                       limit
 
         Hard limit on the number of OS processes usable by Query
         Servers. The default value is ``100``::
@@ -106,7 +107,8 @@ Query Servers Configuration
         resources. Production settings are typically 10-20 times the
         default value.
 
-    .. config:option:: os_process_soft_limit :: Query Server process soft limit
+    .. config:option:: os_process_soft_limit :: Query Server process
+                       soft limit
 
         Soft limit on the number of OS processes usable by Query
         Servers. The default value is ``100``::
@@ -241,7 +243,7 @@ Mango is the Query Engine that services the :ref:`_find <api/db/_find>`, endpoin
 
         Set to ``true`` to disable the "index all fields" text index. This can lead
         to out of memory issues when there are documents with nested array fields.
-        Defaults to ``false``.::
+        Defaults to ``false``.
 
             [mango]
             index_all_disabled = false
@@ -251,20 +253,20 @@ Mango is the Query Engine that services the :ref:`_find <api/db/_find>`, endpoin
         Sets the default number of results that will be returned in a
         :ref:`_find <api/db/_find>` response. Individual requests can override this
         by setting ``limit`` directly in the query parameters.
-        Defaults to ``25``.::
+        Defaults to ``25``.
 
             [mango]
             default_limit = 25
 
-    .. config:option:: index_scan_warning_threshold :: Ratio threshold that generates \
-        an index scan warning
+    .. config:option:: index_scan_warning_threshold :: Ratio threshold that generates an
+       index scan warning
 
         This sets the ratio between documents scanned and results matched that
         will generate a warning in the _find response. For example, if a query
         requires reading 100 documents to return 10 rows, a warning will be
         generated if this value is ``10``.
 
-        Defaults to ``10``. Setting the value to ``0`` disables the warning.::
+        Defaults to ``10``. Setting the value to ``0`` disables the warning.
 
             [mango]
             index_scan_warning_threshold = 10
diff --git a/src/docs/src/config/replicator.rst b/src/docs/src/config/replicator.rst
index 1f94efedf..d76e908b2 100644
--- a/src/docs/src/config/replicator.rst
+++ b/src/docs/src/config/replicator.rst
@@ -23,7 +23,7 @@ Replicator Database Configuration
 
 .. config:section:: replicator :: Replicator Database Configuration
 
-    .. config:option:: max_jobs :: Maximum replications jobs
+    .. config:option:: max_jobs
 
         .. versionadded:: 2.1
 
@@ -43,7 +43,7 @@ Replicator Database Configuration
              [replicator]
              max_jobs = 500
 
-    .. config:option:: interval :: Checking interval of replication jobs
+    .. config:option:: interval
 
         .. versionadded:: 2.1
 
@@ -54,7 +54,7 @@ Replicator Database Configuration
              [replicator]
              interval = 60000
 
-    .. config:option:: max_churn :: Maximum number of jobs to start and stop
+    .. config:option:: max_churn
 
         .. versionadded:: 2.1
 
@@ -66,7 +66,7 @@ Replicator Database Configuration
              [replicator]
              max_churn = 20
 
-    .. config:option:: max_history :: Maximum number of events recorded for each job
+    .. config:option:: max_history
 
         Maximum number of events recorded for each job. This parameter defines
         an upper bound on the consecutive failure count for a job, and in turn
@@ -77,8 +77,7 @@ Replicator Database Configuration
              [replicator]
              max_history = 20
 
-    .. config:option:: update_docs :: Update replication document with error and \
-        triggered states
+    .. config:option:: update_docs
 
         .. versionadded:: 2.1
 
@@ -89,7 +88,7 @@ Replicator Database Configuration
              [replicator]
              update_docs = false
 
-    .. config:option:: worker_batch_size :: Batch size of workers
+    .. config:option:: worker_batch_size
 
         With lower batch sizes checkpoints are done more frequently. Lower
         batch sizes also reduce the total amount of used RAM memory::
@@ -97,7 +96,7 @@ Replicator Database Configuration
             [replicator]
             worker_batch_size = 500
 
-    .. config:option:: worker_processes :: Number of worker processes
+    .. config:option:: worker_processes
 
         More worker processes can give higher network throughput but can also
         imply more disk and network IO::
@@ -105,14 +104,14 @@ Replicator Database Configuration
             [replicator]
             worker_processes = 4
 
-    .. config:option:: http_connections :: Maximum number of HTTP connections
+    .. config:option:: http_connections
 
         Maximum number of HTTP connections per replication::
 
             [replicator]
             http_connections = 20
 
-    .. config:option:: connection_timeout :: Per replication connection timeout
+    .. config:option:: connection_timeout
 
         HTTP connection timeout per replication.
         This is divided by three (3) when the replicator makes changes feed requests.
@@ -122,7 +121,7 @@ Replicator Database Configuration
             [replicator]
             connection_timeout = 30000
 
-    .. config:option:: retries_per_request :: Number of retries per request
+    .. config:option:: retries_per_request
 
         .. versionchanged:: 2.1.1
 
@@ -136,7 +135,7 @@ Replicator Database Configuration
             [replicator]
             retries_per_request = 5
 
-    .. config:option:: socket_options :: Erlang socket options
+    .. config:option:: socket_options
 
         Some socket options that might boost performance in some scenarios:
 
@@ -152,7 +151,7 @@ Replicator Database Configuration
 
         .. _inet: http://www.erlang.org/doc/man/inet.html#setopts-2
 
-    .. config:option:: checkpoint_interval :: Replication checkpoint interval
+    .. config:option:: checkpoint_interval
 
         .. versionadded:: 1.6
 
@@ -167,7 +166,7 @@ Replicator Database Configuration
         higher values will lower bandwidth and make fewer requests for
         infrequently updated databases.
 
-    .. config:option:: use_checkpoints :: Use checkpoints during replication
+    .. config:option:: use_checkpoints
 
         .. versionadded:: 1.6
 
@@ -188,21 +187,21 @@ Replicator Database Configuration
             Disabling checkpoints is **not recommended** as CouchDB will scan
             the Source database's changes feed from the beginning.
 
-    .. config:option:: cert_file :: Path to user PEM certificate file
+    .. config:option:: cert_file
 
         Path to a file containing the user's certificate::
 
             [replicator]
             cert_file = /full/path/to/server_cert.pem
 
-    .. config:option:: key_file :: Path to private user PEM file
+    .. config:option:: key_file
 
         Path to file containing user's private PEM encoded key::
 
             [replicator]
             key_file = /full/path/to/server_key.pem
 
-    .. config:option:: password :: Optional password for protected key file
+    .. config:option:: password
 
         String containing the user's password. Only used if the private key file
         is password protected::
@@ -210,14 +209,14 @@ Replicator Database Configuration
             [replicator]
             password = somepassword
 
-    .. config:option:: verify_ssl_certificates :: Check peer certificates
+    .. config:option:: verify_ssl_certificates
 
         Set to true to validate peer certificates::
 
             [replicator]
             verify_ssl_certificates = false
 
-    .. config:option:: ssl_trusted_certificates_file :: Trusted peer certificates
+    .. config:option:: ssl_trusted_certificates_file
 
         File containing a list of peer trusted certificates (in the PEM
         format)::
@@ -225,8 +224,7 @@ Replicator Database Configuration
             [replicator]
             ssl_trusted_certificates_file = /etc/ssl/certs/ca-certificates.crt
 
-    .. config:option:: ssl_certificate_max_depth :: Maximum peer certificate \
-        depth checking size
+    .. config:option:: ssl_certificate_max_depth
 
         Maximum peer certificate depth (must be set even if certificate
         validation is off)::
@@ -234,7 +232,7 @@ Replicator Database Configuration
             [replicator]
             ssl_certificate_max_depth = 3
 
-    .. config:option:: auth_plugins :: List of replicator client authentication plugins
+    .. config:option:: auth_plugins
 
         .. versionadded:: 2.2
 
@@ -249,7 +247,7 @@ Replicator Database Configuration
           [replicator]
           auth_plugins = couch_replicator_auth_session,couch_replicator_auth_noop
 
-    .. config:option:: usage_coeff :: Usage coefficient decay
+    .. config:option:: usage_coeff
 
         .. versionadded:: 3.2.0
 
@@ -261,7 +259,7 @@ Replicator Database Configuration
             [replicator]
             usage_coeff = 0.5
 
-    .. config:option:: priority_coeff :: Priority coefficient decays
+    .. config:option:: priority_coeff
 
         .. versionadded:: 3.2.0
 
@@ -285,25 +283,15 @@ Fair Share Replicator Share Allocation
 
 .. config:section:: replicator.shares :: Per-Database Fair Share Allocation
 
-    .. config:option:: $replicator_db :: Value for a replicator database
+    .. config:option:: $replicator_db
 
         .. versionadded:: 3.2.0
 
-        Fair share configuration section. Higher share values results in a
+        Fair share configuration section. More shares result in a
         higher chance that jobs from that db get to run. The default
         value is 100, minimum is 1 and maximum is 1000. The
-        configuration may be set even if the database does not exist.
-
-        In this context the option ``$replicator_db`` acts as a placeholder
-        for your replicator database name. The default replicator database is
-        ``_replicator``. Additional replicator databases can be created. To be
-        recognized as such by the system, their database names should end with
-        ``/_replicator``. See the :ref:`Replicator Database <replicator>`
-        section for more info.
-
-        ::
+        configuration may be set even if the database does not exist::
 
             [replicator.shares]
-            _replicator = 50
-            foo/_replicator = 25
-            bar/_replicator = 25
+            _replicator_db = 100
+            $another/_replicator_db = 100
diff --git a/src/docs/src/config/resharding.rst b/src/docs/src/config/resharding.rst
index 91531aa7d..b20e85f1e 100644
--- a/src/docs/src/config/resharding.rst
+++ b/src/docs/src/config/resharding.rst
@@ -23,7 +23,7 @@ Resharding Configuration
 
 .. config:section:: resharding :: Resharding Configuration
 
-    .. config:option:: max_jobs :: Maximum resharding jobs per node
+    .. config:option:: max_jobs
 
         Maximum number of resharding jobs per cluster node. This includes
         completed, failed, and running jobs. If the job appears in the
@@ -34,7 +34,7 @@ Resharding Configuration
              [reshard]
              max_jobs = 48
 
-    .. config:option:: max_history :: Maximum size of the event log
+    .. config:option:: max_history
 
         Each resharding job maintains a timestamped event log. This setting
         limits the maximum size of that log::
@@ -42,8 +42,7 @@ Resharding Configuration
              [reshard]
              max_history = 20
 
-    .. config:option:: max_retries :: Maximum number of retries before failing \
-        resharding job
+    .. config:option:: max_retries
 
         How many times to retry shard splitting steps if they fail. For
         example, if indexing or topping off fails, it will be retried up to
@@ -52,14 +51,14 @@ Resharding Configuration
              [reshard]
              max_retries = 1
 
-    .. config:option:: retry_interval_sec :: Wait time between resharding retries
+    .. config:option:: retry_interval_sec
 
         How long to wait between subsequent retries::
 
              [reshard]
              retry_interval_sec = 10
 
-    .. config:option:: delete_source :: Delete source after resharding
+    .. config:option:: delete_source
 
         Indicates if the source shard should be deleted after resharding has
         finished. By default, it is ``true`` as that would recover the space
@@ -69,7 +68,7 @@ Resharding Configuration
              [reshard]
              delete_source = true
 
-    .. config:option:: update_shard_map_timeout_sec :: Shard map update waiting time
+    .. config:option:: update_shard_map_timeout_sec
 
         How many seconds to wait for the shard map update operation to
         complete. If there is a large number of shard db changes waiting to
@@ -78,7 +77,7 @@ Resharding Configuration
             [reshard]
             update_shard_map_timeout_sec = 60
 
-    .. config:option:: source_close_timeout_sec :: Source shard wait time before close
+    .. config:option:: source_close_timeout_sec
 
         How many seconds to wait for the source shard to close. "Close" in this
         context means that client requests which keep the database open have
@@ -87,8 +86,7 @@ Resharding Configuration
             [reshard]
             source_close_timeout_sec = 600
 
-    .. config:option:: require_node_param :: Require node parameter when creating \
-        resharding job
+    .. config:option:: require_node_param
 
         Require users to specify a ``node`` parameter when creating resharding
         jobs. This can be used as a safety check to avoid inadvertently
@@ -97,8 +95,7 @@ Resharding Configuration
             [reshard]
             require_node_param = false
 
-    .. config:option:: require_range_param :: Require range parameter when creating \
-        resharding job
+    .. config:option:: require_range_param
 
         Require users to specify a ``range`` parameter when creating resharding
         jobs. This can be used as a safety check to avoid inadvertently
diff --git a/src/docs/src/contributing.rst b/src/docs/src/contributing.rst
index 17f66d569..31df6c91e 100644
--- a/src/docs/src/contributing.rst
+++ b/src/docs/src/contributing.rst
@@ -192,7 +192,7 @@ The guidelines are in descending priority.
 
 #. Line length
 
-   * The maximum line length is ``90`` characters.
+   * The maximum line length is ``80`` characters.
 
 #. Links
 
diff --git a/src/docs/src/docs.app.src b/src/docs/src/docs.app.src
index 737b9c0e0..35e262add 100644
--- a/src/docs/src/docs.app.src
+++ b/src/docs/src/docs.app.src
@@ -14,5 +14,5 @@
     {description, "CouchDB Documentation"},
     {vsn, git},
     {registered, []},
-    {applications, [kernel, stdlib]}
+    {applications, [kernel]}
 ]}.
diff --git a/src/docs/src/install/unix.rst b/src/docs/src/install/unix.rst
index 2623d96a2..17539c91a 100644
--- a/src/docs/src/install/unix.rst
+++ b/src/docs/src/install/unix.rst
@@ -193,33 +193,6 @@ The package can be installed by running::
 
     sudo yum install erlang-reltool
 
-Fedora 36
----------
-
-On Fedora 36, you may need these packages in addition to the ones listed above:
-
-* `mozjs91-devel`
-* `erlang-rebar`
-
-If the system contains dangling links to Erlang chunk files, the compiler will
-abort. They can be deleted with the following command::
-
-    find -L /usr/lib64/erlang/lib/ -type l -name chunks | xargs rm -f
-
-Fauxton is not built on the Node.js version (v16) shipped by the system. The
-installation of v12.22.12 can be done via::
-
-    wget https://nodejs.org/download/release/v12.22.12/node-v12.22.12-linux-x64.tar.gz
-    mkdir -p /usr/local/lib/nodejs
-    tar -xvf node-v12.22.12-linux-x64.tar.gz -C /usr/local/lib/nodejs
-    export PATH=/usr/local/lib/nodejs/node-v12.22.12-linux-x64/bin:$PATH
-
-Note that due to a problem with the Python package sphinx-build, it is not
-possible to compile the documentation on Fedora 36. You can skip compiling the
-documentation via::
-
-    ./configure --disable-docs --spidermonkey-version 91
-
 Mac OS X
 --------
 
diff --git a/src/docs/src/install/upgrading.rst b/src/docs/src/install/upgrading.rst
index 97364a762..eff3dcac9 100644
--- a/src/docs/src/install/upgrading.rst
+++ b/src/docs/src/install/upgrading.rst
@@ -69,8 +69,8 @@ If you are running a CouchDB cluster:
 #. Upgrade that CouchDB install in place.
 #. Start CouchDB.
 #. Double-check that the node has re-joined the cluster through the
-   :ref:`/_membership<api/server/membership>` endpoint. If your load balancer has
-   health check functionality driven by the :ref:`/_up<api/server/up>` endpoint,
+   `/_membership <api/server/membership>` endpoint. If your load balancer has
+   health check functionality driven by the `/_up <api/server/up>` endpoint,
    check whether it thinks the node is healthy as well.
 #. Repeat the last 4 steps on the remaining nodes in the cluster.
 #. Relax! You're done.
diff --git a/src/docs/src/intro/security.rst b/src/docs/src/intro/security.rst
index 0a4aebbbe..30c2da8ea 100644
--- a/src/docs/src/intro/security.rst
+++ b/src/docs/src/intro/security.rst
@@ -307,7 +307,7 @@ several *mandatory* fields, that CouchDB needs for authentication:
 - **salt** (*string*): Hash salt. Used for both ``simple`` and ``pbkdf2``
   ``password_scheme`` options.
 - **iterations** (*integer*): Number of iterations to derive key, used for ``pbkdf2``
-  ``password_scheme`` See the :ref:`configuration API <config/chttpd_auth>`:: for details.
+  ``password_scheme``
 - **type** (*string*): Document type. Constantly has the value ``user``
 
 Additionally, you may specify any custom fields that relate to the target
diff --git a/src/docs/src/json-structure.rst b/src/docs/src/json-structure.rst
index 2220244fa..d3d0f0abd 100644
--- a/src/docs/src/json-structure.rst
+++ b/src/docs/src/json-structure.rst
@@ -282,8 +282,6 @@ Replication Settings
 | use_checkpoints (optional)     | Whether to use replication checkpoints      |
 |                                | or not.                                     |
 +--------------------------------+---------------------------------------------+
-| winning_revs_only (optional)   | Replicate only the winning revisions.       |
-+--------------------------------+---------------------------------------------+
 
 .. _replication-status:
 
@@ -324,10 +322,6 @@ Replication Status
 +--------------------+-------------------------------------------+
 | missing_found      | Number of missing documents found         |
 +--------------------+-------------------------------------------+
-| bulk_get_attempts  | Number of attempted _bulk_get fetches     |
-+--------------------+-------------------------------------------+
-| bulk_get_docs      | Number of documents read with _bulk_get   |
-+--------------------+-------------------------------------------+
 
 .. _request_object:
 
diff --git a/src/docs/src/maintenance/compaction.rst b/src/docs/src/maintenance/compaction.rst
index c15344f11..d022f5539 100644
--- a/src/docs/src/maintenance/compaction.rst
+++ b/src/docs/src/maintenance/compaction.rst
@@ -141,24 +141,6 @@ active compactions in this channel when exiting the window, and resume them when
 re-entering. If ``strict_window`` is left at its default of false, the active
 compactions will be allowed to complete but no new compactions will be started.
 
-.. note::
-    When a channel is created, a 60s timer is started to check if the channel
-    should be processing any compactions based on the time window defined in your config.
-
-    The channel is set to pending and after 60s it checks if it should be running
-    at all and is set to paused if not.
-    At the end of the check another 60s timer is started to schedule another check.
-
-    Eventually, when in the time window, it starts processing compactions.
-    But since it will continue running a check every 60s running compaction
-    processes will be suspended when exiting the time window and resume them when
-    re-entering the window.
-
-    This means that for the first 60s after exiting the time window,
-    or when a channel is created and you are outside the time window,
-    compactions are run for up to 60s.This is different to the behavior of the
-    old compaction daemon which would cancel the compactions outright.
-
 Migration Guide
 ---------------
 
diff --git a/src/docs/src/query-server/index.rst b/src/docs/src/query-server/index.rst
index 5673655bb..02be469e9 100644
--- a/src/docs/src/query-server/index.rst
+++ b/src/docs/src/query-server/index.rst
@@ -27,7 +27,7 @@ server key in the ``language`` property of a design document or the
 `Content-Type` header of a `temporary view`. Design documents that do not
 specify a ``language`` property are assumed to be of type `javascript`.
 
-.. _Mozilla SpiderMonkey: https://spidermonkey.dev/
+.. _Mozilla SpiderMonkey: https://developer.mozilla.org/en/docs/SpiderMonkey
 
 .. toctree::
     :maxdepth: 2
diff --git a/src/docs/src/replication/conflicts.rst b/src/docs/src/replication/conflicts.rst
index f876400ef..67675ddfd 100644
--- a/src/docs/src/replication/conflicts.rst
+++ b/src/docs/src/replication/conflicts.rst
@@ -112,7 +112,7 @@ When working on a single node, CouchDB will avoid creating conflicting revisions
 by returning a :statuscode:`409` error. This is because, when you
 PUT a new version of a document, you must give the ``_rev`` of the previous
 version. If that ``_rev`` has already been superseded, the update is rejected
-with a :statuscode:`409` response.
+with a  :statuscode:`409` response.
 
 So imagine two users on the same node are fetching Bob's business card, updating
 it concurrently, and writing it back:
diff --git a/src/docs/src/replication/replicator.rst b/src/docs/src/replication/replicator.rst
index 8f02587c1..47867869d 100644
--- a/src/docs/src/replication/replicator.rst
+++ b/src/docs/src/replication/replicator.rst
@@ -26,9 +26,6 @@ Replicator Database
    their jobs. Previously replication jobs were scheduled without any regard of
    their originating database.
 
-.. versionchanged:: 3.3.0 ``winning_revs_only: true`` replicator option to
-   replicate the winning document revisions.
-
 The ``_replicator`` database works like any other in CouchDB, but
 documents added to it will trigger replications. Create (``PUT`` or
 ``POST``) a document to start replication. ``DELETE`` a replication
@@ -804,34 +801,3 @@ First, the ``auth`` object is checked, and if credentials are defined there,
 they are used. If they are not, then URL userinfo is checked. If credentials
 are found there, then those credentials are used, otherwise basic auth header
 is used.
-
-Replicate Winning Revisions Only
-================================
-
-Use the ``winning_revs_only: true`` option to replicate "winning" document
-revisions only. These are the revisions that would be returned by the ``GET
-db/doc`` API endpoint by default, or appear in the ``_changes`` feed with the
-default parameters.
-
-.. code-block:: http
-
-    POST http://couchdb:5984/_replicate HTTP/1.1
-    Accept: application/json
-    Content-Type: application/json
-
-    {
-        "winning_revs_only" : true
-        "source" : "http://source:5984/recipes",
-        "target" : "http://target:5984/recipes",
-    }
-
-Replication with this mode discards conflicting revisions, so it could be one
-way to remove conflicts through replication.
-
-Replication IDs and checkpoint IDs, generated by ``winning_revs_only: true``
-replications will be different than those generated by default, so it is
-possible to first replicate the winning revisions, then later, to
-"backfill" the rest of the revisions with a regular replication job.
-
-``winning_revs_only: true`` option can be combined with filters or other
-options like ``continuous: true`` or ``create_target: true``.
diff --git a/src/docs/src/setup/cluster.rst b/src/docs/src/setup/cluster.rst
index ea6f6cd5c..5588b97e3 100644
--- a/src/docs/src/setup/cluster.rst
+++ b/src/docs/src/setup/cluster.rst
@@ -248,7 +248,7 @@ CouchDB as a single-node instance or set up a cluster.
 
 When you click "Setup Cluster" you are asked for admin credentials again, and
 then to add nodes by IP address. To get more nodes, go through the same install
-procedure for each node, using the same machine to perform the setup process.
+procedure for each node, using the same machien to perform the setup process.
 Be sure to specify the total number of nodes you expect to add to the cluster
 before adding nodes.
 
@@ -362,10 +362,7 @@ Response:
         ]
     }
 
-If the cluster is enabled and ``all_nodes`` and ``cluster_nodes`` lists don't match, use curl to add nodes with
-PUT ``/_node/_local/_nodes/couchdb@<reachable-ip-address|fully-qualified-domain-name>``
-and remove nodes with
-DELETE ``/_node/_local/_nodes/couchdb@<reachable-ip-address|fully-qualified-domain-name>``
+Ensure the ``all_nodes`` and ``cluster_nodes`` lists match.
 
 You CouchDB cluster is now set up.
 
diff --git a/src/docs/src/whatsnew/3.0.rst b/src/docs/src/whatsnew/3.0.rst
index b70c4185f..e208b0471 100644
--- a/src/docs/src/whatsnew/3.0.rst
+++ b/src/docs/src/whatsnew/3.0.rst
@@ -176,7 +176,7 @@ Bugfixes
   This should resolve a long-standing gradual memory increase bug in CouchDB.
 
 * :ghissue:`2613`: Simultaneous attempts to create the same new database should
-  no longer result in a :statuscode:`500` error.
+  no longer result in a :code 500: error.
 
 * :ghissue:`2678`: Defaults for the ``smoosh`` compaction daemon are now consistent
   with the shipped ``default.ini`` file.
@@ -268,9 +268,9 @@ Features and Enhancements
 
 * :ghissue:`1875`, :ghissue:`2437`, :ghissue:`2423`: CouchDB now supports linking against
   SpiderMonkey 60 or SpiderMonkey 1.8.5. SpiderMonkey 60 provides enhanced support for
-  ES5, ES6, and ES2016+. Full compatibility information is available at the
-  `ECMAScript compatibility table`_. Click on "Show obsolete platforms", then look for
-  "FF 60 ESR" in the list of engine types.
+  ES5, ES6, and ES2016+. Full compatibility information is available at the `ECMAScript
+  compatibility table`_: click on "Show obsolete platforms," then look for "FF 60 ESR"
+  in the list of engine types.
 
   However, it was discovered that on some ARM 64-bit distributions, SM 60 segfaults
   frequently, including the SM 60 packages on CentOS 8 and Debian 10.
@@ -419,7 +419,7 @@ Bugfixes
   to match other case clauses.
 
 * :ghissue:`1897`: The ``/{db}/_bulk_docs`` endpoint now correctly catches invalid
-  (*i.e.*, non-hexadecimal) ``_rev_`` values and responds with a :statuscode:`400` error.
+  (*i.e.*, non-hexadecimal) ``_rev_`` values and responds with a :code 400: error.
 
 * :ghissue:`2321`: CouchDB no longer requires Basic auth credentials to reach the
   ``/_session`` endpoint for login, even when ``require_valid_user`` is enabled.
@@ -435,8 +435,8 @@ Bugfixes
 * :ghissue:`2153`: CouchDB no longer may return a ``badmatch`` error when querying
   ``all_docs`` with a passed ``keys`` array.
 
-* :ghissue:`2137`: If search is not available, return a :statuscode:`400` instead of a
-  :statuscode:`500` status code.
+* :ghissue:`2137`: If search is not available, return a :code 400: instead of a
+  :code 500: status code.
 
 * :ghissue:`2077`: Any failed ``fsync(2)`` calls are now correctly raised to avoid
   data corruption arising from retry attempts.
@@ -540,8 +540,8 @@ The 3.0.0 release also includes the following minor improvements:
 * :ghissue:`2337`: The md5 shim (introduced to support FIPS-compliance) is now
   used consistently throughout the code base.
 
-* :ghissue:`2270`: Negative and non-integer ``heartbeat`` values now return
-  :statuscode:`400`.
+* :ghissue:`2270`: Negative and non-integer ``heartbeat`` values now return :code 400:
+  Bad Request.
 
 * :ghissue:`2268`: When rescheduling jobs, CouchDB now stops sufficient running jobs
   to make room for the pending jobs.
diff --git a/src/docs/src/whatsnew/3.2.rst b/src/docs/src/whatsnew/3.2.rst
index d9962c5e1..9e079a27c 100644
--- a/src/docs/src/whatsnew/3.2.rst
+++ b/src/docs/src/whatsnew/3.2.rst
@@ -178,7 +178,7 @@ Features and Enhancements
     ``enable_xframe_options``, ``max_http_request_size``.
 
   * Config options moved from ``[couch_httpd_auth]`` to ``[chttpd_auth]``:
-    ``authentication_redirect``, ``timeout``, ``auth_cache_size``,
+    ``authentication_redirect``, ``require_valid_user``, ``timeout``, ``auth_cache_size``,
     ``allow_persistent_cookies``, ``iterations``, ``min_iterations``, ``max_iterations``,
     ``password_scheme``, ``proxy_use_secret``, ``public_fields``, ``secret``,
     ``users_db_public``, ``x_auth_roles``, ``x_auth_token``, ``x_auth_username``,
diff --git a/src/docs/templates/index.html b/src/docs/templates/index.html
new file mode 100644
index 000000000..3c4b0e9c8
--- /dev/null
+++ b/src/docs/templates/index.html
@@ -0,0 +1,195 @@
+<!--
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+-->
+
+{% extends "layout.html" %}
+{% set title = _('Overview') %}
+{% block body %}
+  <h1>Apache CouchDB<sup>&reg;</sup> {{ release|e }} Documentation</h1>
+  <p>
+    {{ _('Welcome! This is') }}
+    {% block description %}{{ _('the documentation for') }} Apache CouchDB<sup>&reg;</sup>
+    {{ release|e }}{% if last_updated %}, {{ _('last updated') }} {{ last_updated|e }}{% endif %}{% endblock %}.
+</p>
+{% block tables %}
+<h2>Meet CouchDB</h2>
+<table class="contentstable" align="center">
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("whatsnew/" + version) }}">
+          What's new in CouchDB {{ version }}?
+        </a>
+        <br />
+        <span class="linkdescr">
+          or browse <a href="{{ pathto("whatsnew/index") }}">all "What's new" documents</a>
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/why") }}">
+          Why CouchDB?
+        </a>
+        <br />
+        <span class="linkdescr">why you might want to use CouchDB</span>
+      </p>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/overview") }}">
+          Technical Overview
+        </a>
+        <br />
+        <span class="linkdescr">a quick overview of technology used</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/consistency") }}">
+          Eventual Consistency
+        </a>
+        <br />
+        <span class="linkdescr">how CouchDB handles synchronization</span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+<h2>Getting started</h2>
+<table class="contentstable" align="center">
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("install/index") }}">
+          Installation guides
+        </a>
+        <br />
+        <span class="linkdescr">
+          install CouchDB on <a href="{{ pathto("install/windows") }}">Windows</a>,
+          <a href="{{ pathto("install/mac") }}">OS X</a> or
+          <a href="{{ pathto("install/unix") }}">Linux</a>
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/tour") }}">
+          Tutorial
+        </a>
+        <br />
+        <span class="linkdescr">start using CouchDB with <a href="{{ pathto("fauxton/index") }}">Fauxton</a> and
+          <a href="{{ pathto("intro/curl") }}">cURL</a></span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/api") }}">
+          HTTP API overview
+        </a>
+        <br />
+        <span class="linkdescr">a short walk though the API</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("cluster/index") }}">
+          Clustering
+        </a>
+        <br />
+        <span class="linkdescr">setup and manage a cluster of nodes</span>
+      </p>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("ddocs/views/intro") }}">
+          Guide to Views
+        </a>
+        <br />
+        <span class="linkdescr">how to query documents with MapReduce</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("api/database/find") }}">
+          Mango Query Server
+        </a>
+        <br />
+        <span class="linkdescr">
+          simple JSON CouchDB queries without MapReduce
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("replication/intro") }}">
+          Replication
+        </a>
+        <br />
+        <span class="linkdescr">
+          painless master-master data synchronization
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("ddocs/ddocs") }}">
+          Design Documents
+        </a>
+        <br />
+        <span class="linkdescr">
+          transform, update or validate your documents
+        </span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+<h2>Reference Documentation &amp; Advanced Topics</h2>
+<table class="contentstable" align="center"><tr>
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("api/index") }}">
+          Complete HTTP API Reference
+        </a>
+        <br />
+        <span class="linkdescr">
+          something to come back to
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("config/index") }}">
+          Configuration Reference
+        </a>
+        <br />
+        <span class="linkdescr">tweak CouchDB to your liking</span>
+      </p>
+    </td>
+    <td width="50%" style="vertical-align: top;">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("maintenance/index") }}">
+          Maintenance
+        </a>
+        <br />
+        <span class="linkdescr">
+          how to take care of your CouchDB
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("partitioned-dbs/index") }}">
+          Partitioned Databases
+        </a>
+        <br />
+        <span class="linkdescr">
+          how to use Partitioned Databases in CouchDB
+        </span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+
+<h2>Links</h2>
+<table class="contentstable" align="center"><tr>
+  <td>
+    <p class="biglink"><a class="biglink" href="http://couchdb.apache.org/#download">Download CouchDB</a></p>
+    <p class="biglink"><a class="biglink" href="{{ pathto("http-api") }}">HTTP API Reference</a></p>
+    <p class="biglink"><a class="biglink" href="{{ pathto("config-ref") }}">Configuration Reference</a></p>
+  </td></tr>
+</table>
+{% endblock %}
+{% endblock %}