Skip to content

Centralized documentation#1129

Merged
22 commits merged into
developfrom
unknown repository
Apr 7, 2023
Merged

Centralized documentation#1129
22 commits merged into
developfrom
unknown repository

Conversation

@ghost

@ghost ghost commented Jan 23, 2023

Copy link
Copy Markdown

Purpose

This PR centralizes the documentation, putting together documentation files from across components into the main zonemaster/zonemaster repository. This will help browsing the documentation and allow at a later stage to publish it.

Context

Discussions at F2F 2022-06 and 2023-01.

Changes

Copy some documentation files to zonemaster/zonemaster (see commits).

New tree structure of docs/
docs/
├── contact-and-mailing-lists.md
├── internal
│   ├── design
│   │   ├── Architecture Notes.md
│   │   ├── Implementation Guidelines.md
│   │   ├── Profiles.md
│   │   ├── README.md
│   │   └── Versions and Releases.md
│   ├── distrib-testing
│   │   ├── BuildEnvironmentPreparation.md
│   │   ├── CentOS-build-environment.md
│   │   ├── Debian-build-environment.md
│   │   ├── FreeBSD-build-environment.md
│   │   ├── Ubuntu-build-environment.md
│   │   └── Ubuntu-Node.js-build-environment.md
│   ├── functional-tests
│   │   ├── Behavior-TP
│   │   │   ├── behavior01.md
│   │   │   ├── behavior02.md
│   │   │   ├── behavior03.md
│   │   │   ├── behavior04.md
│   │   │   ├── behavior05.md
│   │   │   ├── behavior06.md
│   │   │   ├── behavior07.md
│   │   │   ├── behavior08.md
│   │   │   └── behavior09.md
│   │   ├── Configuration-TP
│   │   │   ├── configuration01.md
│   │   │   ├── configuration02.md
│   │   │   ├── configuration03.md
│   │   │   └── configuration04.md
│   │   └── Restriction-TP
│   │       ├── restriction01.md
│   │       ├── restriction02.md
│   │       └── restriction03.md
│   ├── maintenance
│   │   ├── ChangeManagement.md
│   │   ├── Instructions-for-translators.md
│   │   ├── IssueLabels.md
│   │   ├── ReleaseProcess-create-docker-image.md
│   │   ├── ReleaseProcess-create-test-distribution.md
│   │   ├── ReleaseProcess-deb-packages.md
│   │   ├── ReleaseProcess.md
│   │   ├── ReleaseProcess-preparation.md
│   │   ├── ReleaseProcess-release.md
│   │   ├── ReleaseProcess-test-planning.md
│   │   ├── StyleGuide.md
│   │   ├── SupportCriteria.md
│   │   └── SystemTesting.md
│   ├── requirements
│   │   ├── CLI-Combined-Requirements.md
│   │   ├── DefineTests.md
│   │   ├── DNSCheck-Batch-Requirements.txt
│   │   ├── DNSCheck-CLI-Requirements.txt
│   │   ├── DNSCheck-GUI-Requirements.txt
│   │   ├── Engine-Functional-Test-Requirements.md
│   │   ├── ExistingZCFeaturesGUI.md
│   │   ├── ExistingZCFeatures.md
│   │   ├── FunctionalRequirements.md
│   │   ├── GUI-Combined-Requirements.txt
│   │   ├── GUI-Functional-Test-Requirements.md
│   │   └── README.md
│   ├── templates
│   │   └── specifications
│   │       └── tests
│   │           ├── MessageTagSpecification.md
│   │           ├── Template01.md
│   │           └── TestCaseIdentifierSpecification.md
│   └── test-requirements
│       ├── README.md
│       ├── TestRequirements.md
│       └── TestRequirements-table-specification.txt
└── public
    ├── book.toml
    ├── configuration
    │   ├── backend-environment-variables.md
    │   ├── backend.md
    │   ├── gui.md
    │   └── profiles.md
    ├── installation
    │   ├── docker.md
    │   ├── prerequisites.md
    │   ├── zonemaster-backend.md
    │   ├── zonemaster-cli.md
    │   ├── zonemaster-engine.md
    │   ├── zonemaster-gui.md
    │   └── zonemaster-ldns.md
    ├── specifications
    │   ├── README.md
    │   ├── tests
    │   │   ├── Address-TP
    │   │   │   ├── address01.md
    │   │   │   ├── address02.md
    │   │   │   ├── address03.md
    │   │   │   └── README.md
    │   │   ├── Basic-TP
    │   │   │   ├── basic00.md
    │   │   │   ├── basic01.md
    │   │   │   ├── basic02.md
    │   │   │   ├── basic03.md
    │   │   │   └── README.md
    │   │   ├── Connectivity-TP
    │   │   │   ├── connectivity01.md
    │   │   │   ├── connectivity02.md
    │   │   │   ├── connectivity03.md
    │   │   │   └── README.md
    │   │   ├── Consistency-TP
    │   │   │   ├── consistency01.md
    │   │   │   ├── consistency02.md
    │   │   │   ├── consistency03.md
    │   │   │   ├── consistency04.md
    │   │   │   ├── consistency05.md
    │   │   │   ├── consistency06.md
    │   │   │   └── README.md
    │   │   ├── Delegation-TP
    │   │   │   ├── delegation01.md
    │   │   │   ├── delegation02.md
    │   │   │   ├── delegation03.md
    │   │   │   ├── delegation04.md
    │   │   │   ├── delegation05.md
    │   │   │   ├── delegation06.md
    │   │   │   ├── delegation07.md
    │   │   │   └── README.md
    │   │   ├── DNSQueryAndResponseDefaults.md
    │   │   ├── DNSSEC-TP
    │   │   │   ├── dnssec01.md
    │   │   │   ├── dnssec02.md
    │   │   │   ├── dnssec03.md
    │   │   │   ├── dnssec04.md
    │   │   │   ├── dnssec05.md
    │   │   │   ├── dnssec06.md
    │   │   │   ├── dnssec07.md
    │   │   │   ├── dnssec08.md
    │   │   │   ├── dnssec09.md
    │   │   │   ├── dnssec10.md
    │   │   │   ├── dnssec11.md
    │   │   │   ├── dnssec12.md
    │   │   │   ├── dnssec13.md
    │   │   │   ├── dnssec14.md
    │   │   │   ├── dnssec15.md
    │   │   │   ├── dnssec16.md
    │   │   │   ├── dnssec17.md
    │   │   │   ├── dnssec18.md
    │   │   │   └── README.md
    │   │   ├── ImplementedTestCases.md
    │   │   ├── MasterTestPlan.md
    │   │   ├── Methods.md
    │   │   ├── MethodsV2.md
    │   │   ├── Nameserver-TP
    │   │   │   ├── nameserver01.md
    │   │   │   ├── nameserver02.md
    │   │   │   ├── nameserver03.md
    │   │   │   ├── nameserver04.md
    │   │   │   ├── nameserver05.md
    │   │   │   ├── nameserver06.md
    │   │   │   ├── nameserver07.md
    │   │   │   ├── nameserver08.md
    │   │   │   ├── nameserver09.md
    │   │   │   ├── nameserver10.md
    │   │   │   ├── nameserver11.md
    │   │   │   ├── nameserver12.md
    │   │   │   ├── nameserver13.md
    │   │   │   ├── nameserver14.md
    │   │   │   └── README.md
    │   │   ├── README.md
    │   │   ├── RequirementsAndNormalizationOfDomainNames.md
    │   │   ├── SeverityLevelDefinitions.md
    │   │   ├── Syntax-TP
    │   │   │   ├── README.md
    │   │   │   ├── syntax01.md
    │   │   │   ├── syntax02.md
    │   │   │   ├── syntax03.md
    │   │   │   ├── syntax04.md
    │   │   │   ├── syntax05.md
    │   │   │   ├── syntax06.md
    │   │   │   ├── syntax07.md
    │   │   │   └── syntax08.md
    │   │   ├── TestMessages.md
    │   │   └── Zone-TP
    │   │       ├── README.md
    │   │       ├── zone01.md
    │   │       ├── zone02.md
    │   │       ├── zone03.md
    │   │       ├── zone04.md
    │   │       ├── zone05.md
    │   │       ├── zone06.md
    │   │       ├── zone07.md
    │   │       ├── zone08.md
    │   │       ├── zone09.md
    │   │       └── zone10.md
    │   └── test-types
    │       ├── README.md
    │       └── undelegated-test.md
    ├── SUMMARY.md
    ├── upgrade
    │   └── backend.md
    └── using
        ├── backend
        │   ├── getting-started.md
        │   ├── README.md
        │   ├── rpcapi-reference.md
        │   └── telemetry.md
        ├── cli.md
        └── gui
            ├── api.md
            └── README.md

How to test this PR

  • Review the new structure
  • Check for missing documents
  • Check for unnecessary documents

Further work

This is the first step of a bigger work that wants to centralize the Zonemaster documentation to then publish it on its own using mdbook.

  1. Copy documents from other repositories to zonemaster/zonemaster in a comprehensive structure (this PR)
  2. Remove documents from other repositories to keep only the file in zonemaster/zonemaster
  3. Review documentation and improve if needed
  4. Publish it using mdbook
    cd docs/public
    mdbook build
    open book/index.html
    

@ghost ghost added this to the v2023.1 milestone Jan 23, 2023
@matsduf

matsduf commented Jan 23, 2023

Copy link
Copy Markdown
Contributor

Yes, I will review this, but that will be after the patch releases.

@marc-vanderwal

marc-vanderwal commented Feb 15, 2023

Copy link
Copy Markdown
Contributor

How do you generate the documentation with the mdbook utility? As far as I know I haven’t seen this documented anywhere yet.

Edit: I did the following:

cd docs/public
mdbook build

Then, once that is done, I can browse docs/public/book/index.html.

@ghost

ghost commented Feb 15, 2023

Copy link
Copy Markdown
Author

As far as I know I haven’t seen this documented anywhere yet.

Indeed. I forgot to provide them. I wasn't sure were to put such documentation. For now, I've updated the PR description with the commands.

@marc-vanderwal

Copy link
Copy Markdown
Contributor

I think the best place to add such instructions is the main README.md file.

@marc-vanderwal

Copy link
Copy Markdown
Contributor

I’ve had a look at the current file and document structure, comparing SUMMARY.md with the current files’ layout and I haven’t seen any problems so far. And I’m really enjoying reading the documentation in its compiled mdbook format.

@ghost

ghost commented Feb 15, 2023

Copy link
Copy Markdown
Author

I think the best place to add such instructions is the main README.md file.

I've added the commands in the "Documentation" section.

@hannaeko hannaeko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work!

Could it be interesting to flatten the internal documentation directory by moving all directories inside internal/internal-documentation to internal directly?

Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/SUMMARY.md Outdated
@ghost

ghost commented Mar 3, 2023

Copy link
Copy Markdown
Author

Could it be interesting to flatten the internal documentation directory by moving all directories inside internal/internal-documentation to internal directly?

That could indeed make sense. I'll provide an update.

@matsduf matsduf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documents from the other repositories, are they just copied as-is or are they also updated? Then I mean updated besides any updates of link location.

There are some documents that are generated or partially generated as described in utils/README.md. That must also be taken care of.

In general this could be a good structure, but we will have to work on the documents after the change too.

Comment thread README.md
Comment on lines +65 to +68
The [public](docs/public) documentation can be built using
[`mdbook`](https://rust-lang.github.io/mdBook/) and the following commands:

```
cd docs/public
mdbook build
open book/index.html
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who would be interested in building the documentation into a set of html file (as I understand the result is)? I guess that interest is very limited, maybe limited to the project itself, and not even now but later on.

The information is also very limited, and could probably need some context. I suggest that this information is moved to a file under docs/public where it can be expanded with more details as needed. Here we could keep a link to that document.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The information is also very limited, and could probably need some context.

What kind of context are you expecting here?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cannot say now because I have not tested it, but the text fits better in a separate document. It is not generally relevant.

Comment thread README.md
Comment thread README.md
Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/SUMMARY.md Outdated

@ghost ghost left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documents from the other repositories, are they just copied as-is or are they also updated? Then I mean updated besides any updates of link location.

There are few updates. See following commits:
de5984d
55d697f
b2c64a3

There are some documents that are generated or partially generated as described in utils/README.md. That must also be taken care of.

Good point. The links have been updated.

Comment thread README.md
Comment thread README.md
Comment thread README.md
Comment on lines +65 to +68
The [public](docs/public) documentation can be built using
[`mdbook`](https://rust-lang.github.io/mdBook/) and the following commands:

```
cd docs/public
mdbook build
open book/index.html
```

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The information is also very limited, and could probably need some context.

What kind of context are you expecting here?

Comment thread docs/public/SUMMARY.md Outdated
Comment thread docs/public/installation/zonemaster-ldns.md Outdated
Comment thread docs/public/installation/zonemaster-ldns.md
@matsduf

matsduf commented Mar 3, 2023

Copy link
Copy Markdown
Contributor

I find that confusing.
And also, is the "specification/tests/README.md" introduction to the other documents? I find it hard to navigate.

What would you be expecting so that it would be less confusing?

The "specification/tests/README.md" is only about the test case specifications, but the "Specification" section has other documents too.

@ghost

ghost commented Mar 9, 2023

Copy link
Copy Markdown
Author

but the "Specification" section has other documents too.

They have been added to SUMMARY.md

Alexandre Pion added 11 commits April 5, 2023 15:16
* use 2 new subfolders "internal" and "public"
  * move "specification" to "public"
  * move everything else to "internal"
* move "images" folder to new upper folder "assets"
* For Zonemaster-LDNS installation instructions are part of the README
file.
* For the other components fetch the docs/Installation.md file.
* Zonemaster-LDNS: remove unecessary sections
* Update inter document links
* book.toml contains the settings for describing how to build the book
* SUMMARY.md contains a list of all the chapters in the book.

mdBook: https://rust-lang.github.io/mdBook
Alexandre Pion added 11 commits April 5, 2023 15:16
and provide commands to build the public documentation
* move "internal-documentation/*" up to "internal"
* update old links pointing to "internal-documentation/"
* move "Getting started", "RPCAPI reference" and "Telemetry" documents
  into this new section
* update links
The "Prerequisites" section has been moved to a separate file.
* reinstate some removed sections from commit
  de5984d
* remove Docker section
@ghost

ghost commented Apr 5, 2023

Copy link
Copy Markdown
Author

Conflicts have been fixed. @matsduf please re-review.

@ghost ghost requested review from hannaeko and matsduf April 5, 2023 13:28

@marc-vanderwal marc-vanderwal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve given this PR a second review in order to be sure to catch everything.

As I said before, this way of browsing our documentation is lovely. It makes it much easier to navigate and read. However, the mdbook exposes many latent issues in that documentation that may not have been obvious before.

This means that I may have left review comments that sound like there are still problems to fix, but because this PR isn’t responsible for introducing them, they should not prevent this PR from being merged.

Some other thoughts and ideas for follow-up pull requests follow:

Firstly, I see that the Markdown parser is slightly different from Github’s, in that it’s stricter about the markup it accepts. One good example is the installation instructions document for Zonemaster::Engine where there’s an extraneous space in the link target, as in the excerpt below:

Before installing Zonemaster::CLI from CPAN, you should [install
Zonemaster::Engine][ Zonemaster::Engine installation], unless you are
to install on Debian using pre-built packages (see below).

This renders fine on Github, but fails to turn the text into a link in the mdbook. There are other instances of the same problem elsewhere, but that’s for another PR.

Secondly, chiming in with @matsduf: I think parts of the table of contents could be generated automatically, such as the list of test specifications. Until then, new contributions to test specifications should remember to update the TOC in this part.

Thirdly, one of the documents links to documentation generated by perldoc, hosted on metacpan.org. Maybe we could add this perldoc documentation in this documentation, if it’s at all feasible?

Comment thread docs/public/SUMMARY.md
- [Zonemaster-Backend](installation/zonemaster-backend.md)
- [Zonemaster-GUI](installation/zonemaster-gui.md)
- [Docker](installation/docker.md)
- [Upgrade]()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think “Upgrading” works better.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll provide an update in a follow-up PR.

Comment thread docs/public/SUMMARY.md
@@ -0,0 +1,121 @@
- [Installation](installation/README.md)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does installation/README.md exist?

In the generated mdbook, when I click on “Installation” in the outline (on the left hand side of the page), all I get is an empty page, which is rather awkward.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does not exist in the file structure.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll remove the link in a follow-up PR.

Comment thread docs/public/SUMMARY.md
Comment on lines +28 to +29
- [GUI](using/gui/README.md)
- [API](using/gui/api.md)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was expecting a page explaining how to use the graphical user interface from the viewpoint of someone who opens https://zonemaster.fr for example. Having a description of another API here is rather odd.

@@ -0,0 +1,5 @@
# Using the GUI

* The [GUI API][API]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eventually, we should describe how to use Zonemaster’s GUI here, possibly with screenshots. I didn’t understand why this document mentioned (another) API until I read it, and understood that said API is not really an application programming interface, but just a collection of URL tricks for populating some of the inputs.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A pointer to a work from OVH to provide such documentation: ovh/docs#3471

@matsduf

matsduf commented Apr 6, 2023

Copy link
Copy Markdown
Contributor

The docs/public/SUMMARY.md document presents the material in a different way than the file structure. docs/public/specifications/tests/Address-TP in SUMMARY opens the docs/public/specifications/tests/Address-TP/README.md document, whereas in the file structure it opens the list of the documents where README.md is one of the documents, which does not list the contents of the directory, i.e. the REAME file is a dead end. This not a show stopper, but it requires additional work.

I see three options:

  1. The SUMMARY file is removed.
  2. The SUMMARY file is created to match the file structure.
  3. README files are created in every directory and they must contain a list of links to the files in the directory.

How is the SUMMARY file created? If it is kept, it must be updated at each release.

@matsduf

matsduf commented Apr 6, 2023

Copy link
Copy Markdown
Contributor

Under ## Documentation in the main README it could be interpreted that you must compile the documentation with mdbook to read it. Please clarify that you can either read it here or you can compile it with mdbook and then read the resulting HTML files.

@matsduf matsduf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a comment and some questions, and I see that more work must be done, but in general I think this is fine.

@ghost ghost left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marc-vanderwal Thirdly, one of the documents links to documentation generated by perldoc, hosted on metacpan.org. Maybe we could add this perldoc documentation in this documentation, if it’s at all feasible?

This would be a great idea indeed!

@matsduf 3. README files are created in every directory and they must contain a list of links to the files in the directory.

I was thinking about something similar. We could add to each TestPlan README file a subset of the "List of Defined Test Cases" array from the specifications/tests/README.md file with the TestPlan's test cases.

@@ -0,0 +1,5 @@
# Using the GUI

* The [GUI API][API]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A pointer to a work from OVH to provide such documentation: ovh/docs#3471

Comment thread docs/public/SUMMARY.md
- [Zonemaster-Backend](installation/zonemaster-backend.md)
- [Zonemaster-GUI](installation/zonemaster-gui.md)
- [Docker](installation/docker.md)
- [Upgrade]()

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll provide an update in a follow-up PR.

Comment thread docs/public/SUMMARY.md
@@ -0,0 +1,121 @@
- [Installation](installation/README.md)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll remove the link in a follow-up PR.

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Zonemaster users guide

3 participants