1 of 29

TANGO DOCUMENTATION REVIEW

BECKY AUGER-WILLIAMS

18/09/2024

2 of 29

CURRENT DOCUMENTATION

What has been reviewed:

3 of 29

REVIEW

Review spreadsheet:

4 of 29

REVIEW

Review:

    • Category within the Grand Unified Theory of Documentation (GUTD)
      • Tutorials – learning orientated
      • How-to – goal orientated
      • Reference – information orientated
      • Explanation – understanding orientated
    • Language: section specific to a given language
      • C++
      • Python
      • Java

5 of 29

REVIEW

    • Rating: page content, format etc

    • Comments: details of what needs to be updated

1

Information out-of-date/wrong/repeated. Candidate for deletion.

2

Page content is unclear and needs heavy updating/restructuring.

3

Page content is OK but needs some updating.

4

Page content is good but minor grammatical/spelling/layout changes required.

5

Page content is good. No changes needed

6 of 29

REVIEW

Googledoc with summary of general issues across the documentation:

7 of 29

RESTRUCTURE

Ideas:

    • Split by audience: ‘Users’ & ‘Developers
      • Further split ‘Users’ to ‘General Users’ & ‘Administrators

    • Split by language (pros/cons)
      • Links to separate docs?
        • Easier to maintain
        • Easier to find specific information
      • OR contain all documentation in one place?
        • Easy to find
        • Consistent formatting

8 of 29

User’s Guide

|________ General users

|_______ Tutorials

|_______ How to’s

|_______ Explanations

|________ Administrators

|_______ Tutorials

|_______ How to’s

|_______ Explanations

Developer’s Guide

|________ C++

|_______ How to’s

|_______ Explanations

|_______ References

|________ Python

|_______ How to’s

|_______ Explanations

|_______ References

|________ Java

|_______ How to’s

|_______ Explanations

|_______ References

9 of 29

User’s Guide

|________ General users

|_______ Tutorials

|_______ How to’s

|_______ Explanations

|________ Administrators

|_______ Tutorials

|_______ How to’s

|_______ Explanations

Developer’s Guide

|________ C++

|_______ Link to doc –--> - How to’s

- Explanations

- References

|________ Python

|_______ Link to doc –--> - How to’s

- Explanations

- References

|________ Java

|_______ Link to doc –--> - How to’s

- Explanations

- References

OR?

10 of 29

RESTRUCTURE

Full suggested restructure in googledoc:

11 of 29

RESTRUCTURE

Example applying this structure to the Tango docs:

    • file:///home/rjaw/Projects/ESRF/rjw-tango-doc/build/html/index.html

Source code on GitLab fork:

12 of 29

GRAND UNIFIED THEORY OF DOCUMENTATION (GUTD)

Sections

Summary

Objectives

Link

Tutorials

Learning orientated

Turn learners into new users

How-To Guides

Goal orientated

Provide a series of steps to solve a problem

Reference

Information orientated

Description of functions, classes etc

Explanation

Understanding orientated

Provide explanations, background info, context etc

13 of 29

GUTD

Example project – Django:

Concerns:

    • Django is a big project
      • I still think it's a bit confusing in places. They definitely start mixing sections.
    • Trickier to apply to big/large projects.
      • Each concept/part/section should probably apply the GUTD individually??
        • But in the same place or links to other parts of the doc

14 of 29

GUTD

E.g.

How-to:

Device servers

Explanation:

Device servers

Reference:

Device servers

Device servers:

How-to

Explanation

References

How-to

Explanation

References

link

link

OR?

15 of 29

GUTD

Example applying the GUTD to the Tango Installation section:

    • file:///home/rjaw/Projects/ESRF/rjw-tango-doc/build/html/installation/index.html

16 of 29

PDF VERSION

Is this a priority?

Will need to make some changes to make this useable (see Page 2 in Googledoc) :

    • Links need to be spelt out
    • Check image formats
    • Add build instructions

17 of 29

JUPYTERBOOKS

Summary:

    • It can execute code when building the documentation, e.g. can write a Python script to generate a plot and then plot will be generated during the build
    • Can use our current rst files with no problem (so may not have to convert all to markdown)

Issues

    • Above is not quite what we’re after ??
    • A user cannot just see a piece of code in a browser terminal and execute it to see the output (but can be done locally with installed JupyterHub)

18 of 29

JUPYTERBOOKS + BINDER

Binder: repository for Jupyter notebooks – allows you to launch interactive notebooks

Demo repo on GitHub:

19 of 29

JUPYTERBOOKS + BINDER

Only works for ipynb files.

    • These do get generated from the markdown files in the build so could replace markdown source with these but that makes it harder to update
    • Can convert rst -> md using `rst2myst`

Less easy on GitLab:

    • Example:
    • Have to add our own link, perhaps to the footer. But this does not go to a specific page - just the general Jupyter Lab interface displaying the repo files.

20 of 29

DECISIONS TO BE MADE

How do we want to restructure?

    • Separate documents for the different languages or sections within document?

How should we apply the GUTD?

Do we spend time fixing the PDF version?

No - probably not used and not worth time maintaining. Can we remove from RTD?

Do we use JupyterBook?

    • Do we want to convert all doc source code to markdown (related to above)?

No - will not benefit us.

Do we want to use something like binder?

No - will not benefit us.

21 of 29

WORK TO BE DONE

Task

At workshop

Afterward workshop

Update sections identified in the spreadsheet

Yes

Assign these to the relevant person/people.

Follow up & review

Check for missing material

Yes

Assign to relevant person/people.

Follow up & review

Remove out-of-date material.

Yes

Fix typos, formatting, links issues

Yes

Assign to interested people.

Carry out fixes, review and MR.

Refine documentation build process

No

Yes

Come up with a policy to keep docs up to date.

No

Yes

22 of 29

TANGO DOCUMENTATION REVIEW -

ADDITIONAL CONTENT

16/10/2024

23 of 29

RTD Subprojects

  • Separate projects under the same domain
  • Example:
    • Main project name: wajr-test-rtd1
    • Subproject: wajr-test-rtd2
  • RTD URLs:

24 of 29

RTD Subprojects

25 of 29

RTD Subprojects

  • Searching doesn’t seem to work quite as advertised…
    • Can’t search from parent and get results from subproject?
    • Have to specify the project to specifically include the subproject, e.g. from parent doc search with: �“project:wajr-test-rtd2 …”�e.g. “project:wajr-test-rtd2 subproject

26 of 29

Sphinx Vs. MkDocs

Sphinx

MkDocs

Pros

  • Mature with lots of capabilities.
  • Auto-documentation from docstrings
  • Already have done most of the work to set this up
  • Easier/quicker to set up
  • Uses markdown (deemed easier to learn)
  • Provides live preview

Cons

  • Slower to build
  • Supports reStructuredText (but there is MyST - markdown parser)
  • Have to build each time to view changes
  • Outdated themes ?
  • Would have to convert docs to markdown

Summary: MkDocs is deemed easier to learn due to Markdown support. Sphinx is consider more mature but steeper learning curve. However can allow for rst & md support.

Is it worth the overhead of switching?

27 of 29

SUMMARY FROM LAST MEETING:

DECISIONS TO BE MADE

How do we want to restructure?

    • Separate documents for the different languages or sections within document?

Split out the different languages into their own repos with their own maintainers. Provide links within the ‘main’ document (include as subprojects?).

How should we apply the GUTD?

Apply per concept?

Do we spend time fixing the PDF version?

No - probably not used and not worth time maintaining. Can we remove from RTD?

Do we use JupyterBook?

    • Do we want to convert all doc source code to markdown (related to above)?

No - will not benefit us.

Do we want to use something like binder?

No - will not benefit us.

Sphinx Vs. MkDocs?

28 of 29

Action Plan

ACTION

WHO

COMPLETED

‘General’: Review content to be deleted and delete

‘General’: Look through document headings to identify missing material

‘General’: Update content that is out of date

Review installation section

C++: pull out all C++ content into own documentation

C++: update content that has been identified as out of date

C++: restructure in GUTD

Python: pull out all Python content into own docs or delete from main repo if not needed.

Python: update content that has been identified as out of date

Python: restructure in GUTD

29 of 29

Action Plan

ACTION

WHO

COMPLETED

Java: pull out all Java content into own docs or delete from main repo if not needed.

Java: update content that has been identified as out of date

Java: restructure in GUTD

‘General/specific’: Begin fixing trivial issues

Create list of pages so people can indicate what they are working on.

Becky