From 23f322fd1a06a591019efb18f173dcdec4e3a1db Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Thu, 22 Sep 2022 15:07:56 +0000 Subject: [PATCH 1/2] Deploy redhat-documentation/modular-docs to github.com/redhat-documentation/modular-docs.git:gh-pages --- ...LATE_ASSEMBLY_a-collection-of-modules.adoc | 81 + .../TEMPLATE_CONCEPT_concept-explanation.adoc | 60 + ...EMPLATE_PROCEDURE_doing-one-procedure.adoc | 69 + ...TEMPLATE_REFERENCE_reference-material.adoc | 64 + images/concept-diagram.dia | Bin 0 -> 1623 bytes images/concept-diagram.png | Bin 0 -> 10270 bytes images/modules_assemblies.dia | Bin 0 -> 3130 bytes images/modules_assemblies.png | Bin 0 -> 25600 bytes images/nested-assemblies-correct.odt | Bin 0 -> 11454 bytes images/nested-assemblies-correct.png | Bin 0 -> 31492 bytes images/nested-assemblies-error.odt | Bin 0 -> 10518 bytes images/nested-assemblies-error.png | Bin 0 -> 17562 bytes images/procedure-diagram.dia | Bin 0 -> 1700 bytes images/procedure-diagram.png | Bin 0 -> 13515 bytes index.html | 2353 +++++++++++++++++ 15 files changed, 2627 insertions(+) create mode 100644 files/TEMPLATE_ASSEMBLY_a-collection-of-modules.adoc create mode 100644 files/TEMPLATE_CONCEPT_concept-explanation.adoc create mode 100644 files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc create mode 100644 files/TEMPLATE_REFERENCE_reference-material.adoc create mode 100644 images/concept-diagram.dia create mode 100644 images/concept-diagram.png create mode 100644 images/modules_assemblies.dia create mode 100644 images/modules_assemblies.png create mode 100644 images/nested-assemblies-correct.odt create mode 100644 images/nested-assemblies-correct.png create mode 100644 images/nested-assemblies-error.odt create mode 100644 images/nested-assemblies-error.png create mode 100644 images/procedure-diagram.dia create mode 100644 images/procedure-diagram.png create mode 100644 index.html diff --git a/files/TEMPLATE_ASSEMBLY_a-collection-of-modules.adoc b/files/TEMPLATE_ASSEMBLY_a-collection-of-modules.adoc new file mode 100644 index 0000000..4e260bb --- /dev/null +++ b/files/TEMPLATE_ASSEMBLY_a-collection-of-modules.adoc @@ -0,0 +1,81 @@ +//// +Retains the context of the parent assembly if this assembly is nested within another assembly. +For more information about nesting assemblies, see: https://redhat-documentation.github.io/modular-docs/#nesting-assemblies +See also the complementary step on the last line of this file. +//// + +ifdef::context[:parent-context: {context}] + +//// + Base the file name and the ID on the assembly title. For example: +* file name: assembly-my-user-story.adoc +* ID: [id="assembly-my-user-story_{context}"] +* Title: = My user story +//// + +//// +Indicate the content type in one of the following +ways: +Add the prefix assembly- or assembly_ to the file name. +Add the following attribute before the module ID: +:_content-type: ASSEMBLY +//// + +//// +The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. Include {context} in the ID so the assembly can be reused. +//// + +[id="assembly-my-user-story_{context}"] += My user story +//// +Be sure to include a line break between the title and the :context: variable and the :context: variable and the assembly introduction. + +If the assembly covers a task, start the title with a verb in the gerund form, such as Creating or Configuring. +//// + +:context: assembly-keyword + +//// +The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID so you can include it multiple times in the same guide. +//// + +[role="_abstract"] +This paragraph is the assembly introduction. It explains what the user will accomplish by working through the modules in the assembly and sets the context for the user story the assembly is based on. + +== Prerequisites + +* A bulleted list of conditions that must be satisfied before the user starts following this assembly. +* You can also link to other modules or assemblies the user must follow before starting this assembly. +* Delete the section title and bullets if the assembly has no prerequisites. +* X is installed. For information about installing X, see . +* You can log in to X with administrator privileges. + +//// +The following include statements pull in the module files that comprise the assembly. Include any combination of concept, procedure, or reference modules required to cover the user story. You can also include other assemblies. +//// + +include::modules/TEMPLATE_CONCEPT_explaining_a_concept.adoc[leveloffset=+1] + +//// +[leveloffset=+1] ensures that when a module title is a level 1 heading (= Title), the heading will be interpreted as a level-2 heading (== Title) in the assembly. Use [leveloffset=+2] and [leveloffset=+3] to nest modules in an assembly. +//// + +include::modules/TEMPLATE_PROCEDURE_doing_one_procedure.adoc[leveloffset=+2] +// Add a blank line after each 'include::' statement. + +include::modules/TEMPLATE_PROCEDURE_reference-material.adoc[leveloffset=2] + +[role="_additional-resources"] +== Additional resources (or Next steps) +//// +Optional. Delete if not used. +//// +* A bulleted list of links to other closely-related material. These links can include `link:` and `xref:` macros. +* For more details on writing assemblies, see the link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. +* Use a consistent system for file names, IDs, and titles. For tips, see _Anchor Names and File Names_ in link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. + +//// +Restore the context to what it was before this assembly. +//// +ifdef::parent-context[:context: {parent-context}] +ifndef::parent-context[:!context:] diff --git a/files/TEMPLATE_CONCEPT_concept-explanation.adoc b/files/TEMPLATE_CONCEPT_concept-explanation.adoc new file mode 100644 index 0000000..28826f4 --- /dev/null +++ b/files/TEMPLATE_CONCEPT_concept-explanation.adoc @@ -0,0 +1,60 @@ +//// +Base the file name and the ID on the module title. For example: +* file name: con-my-concept-module-a.adoc +* ID: [id="con-my-concept-module-a_{context}"] +* Title: = My concept module A +//// + +//// +Indicate the module type in one of the following +ways: +Add the prefix con- or con_ to the file name. +Add the following attribute before the module ID: +:_content-type: CONCEPT +//// + +//// +The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. +//// + +[id="con-my-concept-module-a_{context}"] + +//// +The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID so you can include it multiple times in the same guide. +//// + += My concept module A +//// +In the title of concept modules, include nouns or noun phrases that are used in the body text. This helps readers and search engines find the information quickly. Do not start the title of concept modules with a verb. See also _Wording of headings_ in _The IBM Style Guide_. + +Be sure to include a line break between the title and the module introduction. +//// + +[role="_abstract"] +Write a short introductory paragraph that provides an overview of the module. + +The contents of a concept module give the user descriptions and explanations needed to understand and use a product. + +* Look at nouns and noun phrases in related procedure modules and assemblies to find the concepts to explain to users. +* Explain only things that are visible to users. Even if a concept is interesting, it probably does not require explanation if it is not visible to users. +* Avoid including action items. Action items belong in procedure modules. However, in some cases a concept or reference can include suggested actions when those actions are simple, are highly dependent on the context of the module, and have no place in any procedure module. In such cases, ensure that the heading of the concept or reference remains a noun phrase and not a gerund. + + +//// +Include titles and alternative text descriptions for images. +Alternative text should provide a textual, complete description of the image as a full sentence. +Images should never be the sole means of conveying information and should only supplement the text. +Avoid screenshots or other images that might quickly go out of date and that create a maintenance burden on documentation. +Provide text equivalents for every diagram, image, or other non-text element. Avoid using images of text instead of actual text. +//// +//.Image title +//image::image-file.png[A textual representation of the essential information conveyed by the image.] + +[role="_additional-resources"] +.Additional resources +//// +Optional. Delete if not used. +//// +* A bulleted list of links to other closely-related material. These links can include `link:` and `xref:` macros. +* For more details on writing concept modules, see the link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. +* Use a consistent system for file names, IDs, and titles. For tips, see _Anchor Names and File Names_ in link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. diff --git a/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc b/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc new file mode 100644 index 0000000..af7cd17 --- /dev/null +++ b/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc @@ -0,0 +1,69 @@ +//// +Base the file name and the ID on the module title. For example: +* file name: proc-doing-procedure-a.adoc +* ID: [id="proc-doing-procedure-a_{context}"] +* Title: = Doing procedure A + +Indicate the module type in one of the following +ways: +Add the prefix proc- or proc_ to the file name. +Add the following attribute before the module ID: +:_content-type: PROCEDURE + +The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID even if it is reused multiple times in an assembly file. +//// + +[id="proc-doing-procedure-a_{context}"] + += Doing procedure A +//// +Start the title of a procedure module with a gerund, such as Creating, Installing, or Deploying. +//// + +[role="_abstract"] +Write a short introductory paragraph that provides an overview of the module. The introduction should include what the module will help the user do and why it will be beneficial to the user. Include key words that relate to the module to maximize search engine optimization. + +.Prerequisites + +* A bulleted list of conditions that must be satisfied before the user starts the steps in this module. +* Prerequisites can be full sentences or sentence fragments; however, prerequisite list items must be parallel. + +//// +If you have only one prerequisite, list it as a single bullet point. +Do not write prerequisites in the imperative. +You can include links to more information about the prerequisites. +Delete the .Prerequisites section title and bullets if the module has no prerequisites. +//// + +.Procedure + +. Make each step an instruction. + +. Include one command or action for each step with the exception of simple follow-step, for example: +.. Do this thing and then select *Next*. +.. Do this other thing and then select *Next*. + +. Use an unnumbered bullet (*) if the procedure includes only one step. + +.Verification +//// +Delete this section if it does not apply to your module. Provide the user with verification methods for the procedure, such as expected output or commands that confirm success or failure. +//// +. Provide an example of expected command output or a pop-up window that the user receives when the procedure is successful. + +. List actions for the user to complete, such as entering a command, to determine the success or failure of the procedure. + +. Make each step an instruction. + +. Include one command or action per step. + +. Use an unnumbered bullet (*) if the verification includes only one step. + +[role="_additional-resources"] +.Additional resources +//// +Optional. Delete if not used. +//// +* A bulleted list of links to other closely-related material. These links can include `link:` and `xref:` macros. +* For more details on writing procedure modules, see the link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. +* Use a consistent system for file names, IDs, and titles. For tips, see _Anchor Names and File Names_ in link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. diff --git a/files/TEMPLATE_REFERENCE_reference-material.adoc b/files/TEMPLATE_REFERENCE_reference-material.adoc new file mode 100644 index 0000000..f44450c --- /dev/null +++ b/files/TEMPLATE_REFERENCE_reference-material.adoc @@ -0,0 +1,64 @@ +//// +Base the file name and the ID on the module title. For example: +* file name: ref-my-reference-a.adoc +* ID: [id="ref-my-reference-a_{context}"] +* Title: = My reference A +//// + +//// +Indicate the module type in one of the following +ways: +Add the prefix ref- or ref_ to the file name. +Add the following attribute before the module ID: +:_content-type: REFERENCE +//// + +//// +The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. +//// + +[id="ref-reference-material_{context}"] + +//// +The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID even if it is reused multiple times in a guide. +//// + += Reference material +//// +In the title of a reference module, include nouns that are used in the body text. For example, "Keyboard shortcuts for ___" or "Command options for ___." This helps readers and search engines find the information quickly. + +Be sure to include a line break between the title and the module introduction. +//// + +[role="_abstract"] +Write a short introductory paragraph that provides an overview of the module. + +A reference module provides data that users might want to look up, but do not need to remember. It has a very strict structure, often in the form of a list or a table. +A well-organized reference module enables users to scan it quickly to find the details they want. +AsciiDoc markup to consider for reference data: + +.Unordered list +* For more details on writing reference modules, see the link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. +* Use a consistent system for file names, IDs, and titles. +For tips, see _Anchor Names and File Names_ in link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. + +.Labeled list +Term 1:: Definition +Term 2:: Definition + +.Table +[options="header"] +|==== +|Column 1|Column 2|Column 3 +|Row 1, column 1|Row 1, column 2|Row 1, column 3 +|Row 2, column 1|Row 2, column 2|Row 2, column 3 +|==== + +[role="_additional-resources"] +.Additional resources +//// +Optional. Delete if not used. +//// +* A bulleted list of links to other closely-related material. These links can include `link:` and `xref:` macros. +* For more details on writing reference modules, see the link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. +* Use a consistent system for file names, IDs, and titles. For tips, see _Anchor Names and File Names_ in link:https://github.com/redhat-documentation/modular-docs#modular-documentation-reference-guide[Modular Documentation Reference Guide]. diff --git a/images/concept-diagram.dia b/images/concept-diagram.dia new file mode 100644 index 0000000000000000000000000000000000000000..d38aa569ee2da9ad02d107d61beb25e9fffc4348 GIT binary patch literal 1623 zcmV-d2B`TTiwFP!000021MQsKZreBzhVSzff(!Iw;m|xE>Lx|nrq}}6rf5@O?*iIV zY;9%9kd@QTKKoL#WBDLCjb*t}mI7jc0zE%T4Zj(RjNiVy8wJjd7f<{sJZd2TTaFj@ zBi9cHN39-?*OKzB@~PV4x(y0uwK_91oh3UPY>)N8>&2e_S#BDdOQ~&4kG*)+>}VWKd{ZU4AFov@v6Fr- z)S1|V&C07ahGb8Sh@AxWO#X3({N3#-`8aQ#-I4Tz${^ zt4}ARcmDN?-Y~UR8XjEfF^@exJPfXV*PA@zX3KR-EDdMXI**O|YQ0|_nCY#RV4X<> z`reCY=HKUG+L=Az8F3ulPyCyQ(!!WTy??xZGVAQ8AiC`jb(}bd&im-Dl_w!41@YaZ z);U}rt=0Y+YX*dC!!?d_pQ3f-rB z>vfQHKZi*ixz}dx5{0h^N%w!24k2JrMF_zPn?Pe8pV$YqN}SYEtAW%am8oTx%K{mH z5E64%>vH`;2}xm;y7RIk+bi3(+Dlril{%wkQv=yVtFj40K$W8D(p@2nYh+WdWMU%4 z-G?#(kZ!GP+4Q2`Bb7O$Wm5y$#CDK3G09cx4u}d;Z{9Rh!bl0y&C3Q=+bUZ&y|BEg z*cmOG8ptMIId4LM(=1d8EO4D{%9Rkom~`{96k97>Hod64smvKIn;OU_v4gkd3aKQf`C^B2qMGQ}6WeuV*J;PA)#5f3dH}>wi67=$)2T4P=$v z$&Q}nZEpNf@VdA2j1U8uGMcf9BSMTYfn3Sw&#IG;A3vvnIyrN`oqj+6@$JLucMGe1 z?Bx}>r-fAmVWoDlkq5bG3zOeKENb4!OO-efh+)yql_}p^*)IBC+D2ZXGg>w^kWC2g zU?-28(AY-C7b!*c?&M`k3J8^EQV+riAcVMO)3eK(C`vELxP+85v4?HEVo$VWY9g5` zA2i1VD1lk(4+_dU&p$0F5kypXUd~ny_WYAgo64Qh!l{XHs(hpz3!oV1Z3GlX^}=bc zgrE{#f&jssv}yXkl!`RtF!@-=Iz2>wP+G9Br0ND(nZsIuH4$KB7XTwHeUS}0RdoX_ zRbuIOpG*NJQCk8^5NrUx{%}%Eo%!LgUj<@dt|9h?!gm%R0CH9+W7MM9A)fGLu+Z zI9WKAI-`YC6X8_-AUXz!wGT1i2-kVmbEZQ8hJtnHs+42<6HpdQWo~Gp^jo1cEoVP( Vczm$*`-jH|{{h5oJx3#1004V26jT5J literal 0 HcmV?d00001 diff --git a/images/concept-diagram.png b/images/concept-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f339c46b77770506f81bd0f464c3709418d59e41 GIT binary patch literal 10270 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 literal 0 HcmV?d00001 diff --git a/images/modules_assemblies.dia b/images/modules_assemblies.dia new file mode 100644 index 0000000000000000000000000000000000000000..cae7fa4d1c3466ffc1cf5808a20c666b4c7cd268 GIT binary patch literal 3130 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 literal 0 HcmV?d00001 diff --git a/images/nested-assemblies-correct.odt b/images/nested-assemblies-correct.odt new file mode 100644 index 0000000000000000000000000000000000000000..1650dd90183c470eed0b0a0229f82db642a7dc3f GIT binary patch literal 11454 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 literal 0 HcmV?d00001 diff --git a/images/nested-assemblies-correct.png b/images/nested-assemblies-correct.png new file mode 100644 index 0000000000000000000000000000000000000000..5c059aa6df01979b8bdddb911b97d4d3e0795017 GIT binary patch literal 31492 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 E2gIm{^8f$< literal 0 HcmV?d00001 diff --git a/images/nested-assemblies-error.odt b/images/nested-assemblies-error.odt new file mode 100644 index 0000000000000000000000000000000000000000..e16a8d39e44d2fa67a32a23474e4a1aa24c54e1a GIT binary patch literal 10518 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 oNiN40&i^PX{Nn{F=85jMnT zi@}R=62I(c-vJz7A!&?pOLmYFY0&umnc?s|XNF_H|L`yjtUE6r`%!q*LIAcbFYHCG zANG%0*H>Q-W$VN7!F$(t-s!)7>m*6+cPEKwh0f4BYIU97_kJ8rLbsLon)T~NK@?ke zPH@zEbDJHl&df|_#m*D9M^4}C#-8)N+%(jOQrnmwdGWg0;V2sWx=S)0ZFDKIlm1`o zGwU_hox=X{n~(HOeo3u=Kf_x${kQie<8B9q91r_LVPF^n8 z-LG7*U%7a{a{l;c6vavG_{pYZH;Mw!33JsXo_O2qjC)R?UF@l0RT#yspCr*U*MI8- z;~yD7etQ12z4XcL$G-dYgS*nB#LB(zCWD)Ynx-qaKCQ|6oj>-wfmd|(ewggc{B$?w z*Y8e7@5RR}dP8olG(5P{V;*~Xc<4`j*Bd|MW~+TlEDdJeI?v7edcPl?nEcdQu+Ag` zXX?c>^Pd)B+M3uQQfK-aA^{LndNtsT!yDk&!kvL&L@D@@im(oI1 z*@Oe#LjL}lc-?rN-D8x90)JIjgpurW*P+*s>VHWOLKxYBPe zxhzR7pWty>aF4>INGLsT-8w@*nCk0s!g0$QC({%h`kBu^`nwn0d5Pb1mihMbE7)+a z!h0g&>OrfCuF|OJVZ{tkiAkFRA%v`^wi>9OSj|9KO-QGK{cz|N-%>A}3=1OoQ!%_K z43&k_&LVD<1(Hk6Vb_UW9Y?Ox2VrS7I}0SJav)(kf0wv@h=3AQkvap(qZ9#HYAKsw zAb76LDW>Gt$H=#f^UtRz*B7VOALl36Ur&D`R^%pE4nIYKTR&WozH3D410%ia)BkbZ zY$Wqd>4P+CqoHwOg*IB3%Sl~L@v`|6>V`4AbQf#ek*z~IMrZQ(VY-%8z#13}J z6;f%af}FB?x5zUg1h5e4_Bc~COQN=x-S0cS(~Hx;uFo#du1+t_u6X^s;)PCW5Y<3L z$(_8&lf2Ef9|~UgTRbhqG@>9%lP9DQ(z!)|^A-N*FRoZOj2DX-)+-sc-|*sE;QnXIE$Ee}4RGU7TK?UtfGS+0xe_8&!-+7R zFHzK{029d?kT?BirQdY<7JISx&%{p!(r>yPyy&#qv#OhKW&UjV)?eIHuGl=?~bXK{c(q;*CkwzWU+!rCh9}X*jkAjurZ?;aC$nR=uj7 z0>MyLd>}BXH6>dpAuN@>)Ruyn{V=m1R_=@jPECYU^|E%U{ehx3Vt^7X>#T8jRH8b$ u64G8$W^!9)1E*J2<51>|22MW}PI)`~QP<;xm0x{5KKKvC2WRXVUH}029XnV6 literal 0 HcmV?d00001 diff --git a/images/procedure-diagram.png b/images/procedure-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c6bda76e1378f40958f1e78c8a7204139704e62d GIT binary patch literal 13515 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 + + + + + + +Codestin Search App + + + + +

+
+
+

1. Introduction to modular documentation

+
+
+

This manual provides instructions on how to author modularly structured documentation based on user stories. The manual defines used terminology, describes components that form modular documentation, and instructs writers on how to use provided templates to turn user stories into modular documentation.

+
+
+ + + + + +
+
Important
+
+As modular documentation imperatives continue to evolve, the details and recommendations in this guide might be modified. +
+
+
+
+
+

2. Understanding modular documentation

+
+
+

This chapter explains what modular documentation is and what it is not.

+
+
+

2.1. What modular documentation is

+
+

Modular documentation is documentation based on modules, which the writer combines into assemblies. An assembly can also include other assemblies. A module should not contain another module.

+
+
+ + + + + +
+
Important
+
+
+

Nesting assemblies too deep can create too much complexity, which might make the documentation difficult to use and maintain. If you are worried this might be the case, consider linking to another assembly as an alternative to direct inclusion.

+
+
+
+
+

At Red Hat, we write modular documentation that is based on user stories. This means that each assembly documents a user story.

+
+
+
+modules assemblies +
+
Figure 1. Schema of a module and an assembly
+
+
+
Additional resources
+ +
+
+
+

2.2. What modular documentation is not

+
+
+
Legacy (non-modular) documentation split into small, meaningless pieces
+
+

A module must make sense and provide value on its own, even when read separately from the other modules. The templates included in this manual help ensure this.

+
+
A collection of modules that have no relationship to one another
+
+

An unorganized set of modules is confusing to users. That is why we combine modules into:

+
+
    +
  • +

    Assemblies that are based on user stories

    +
  • +
  • +

    Deliverables, like a book or help system, that present a structured view of the body of knowledge represented by a set of modules

    +
  • +
+
+
+
Always a linear, book-type model
+
+

Modular documentation is designed to enable you to deliver content flexibly. You can combine modules to build lean, article-based content or large, linear books.

+
+
+
+
+
+

2.3. Modular documentation repositories

+
+

Due to many factors that determine repository design for individual products, these modular documentation guidelines do not provide a strict documentation repository template.

+
+
+

For a general repository structure used by documentation teams at Red Hat, see the example documentation repository and README file in the mod-doc-repo-example branch in this repository.

+
+
+
+
+
+

3. Writing modular documentation

+
+
+

Assemblies can include various types of modules. Use the instructions in the following sections to create modules and combine them into assemblies.

+
+
+

3.1. Creating modules

+
+

Follow these guidelines to create different types of modules:

+
+ +
+

A module should not contain another module. However a module can contain a text snippet. For information about text snippets, see Using Text Snippets.

+
+
+

See Module and assembly examples for real-world examples of assemblies, modules, and their individual parts.

+
+
+

3.1.1. Creating concept modules

+
+

This section explains what a concept module is and provides recommended practices for writing concept modules.

+
+
+
Concept module definition
+
+

A concept module is an "understand" module. Concept modules give the user descriptions and explanations needed to understand and use a product.

+
+
+
+
Concept module guidelines
+
+

The core requirement for a concept module is explaining the idea, or concept. +A concept module requires a short introduction and optionally, can also include additional resources.

+
+
+

When planning a concept module, look at nouns in related procedure modules and assemblies to find the concepts to explain to users. +Explain only things that are visible to users. +Even if a concept is interesting, it probably does not require an explanation if it is not visible to users.

+
+
+
+concept diagram +
+
+
Concept introduction
+
+

The introduction to a concept module is a single, concise paragraph that provides a short overview of the module. +A short description makes the module more usable because users can quickly determine whether the concept is useful without having to read the entire module.

+
+
+

The introduction typically answers the following questions:

+
+
+
    +
  • +

    What is the concept?

    +
  • +
  • +

    Why should the user care about the concept?

    +
  • +
+
+
Concept body
+
+

The concept body describes the subject of the concept module.

+
+
+

Apart from paragraphs, you can use other AsciiDoc elements, such as lists, tables, or examples. +Consider including graphics or diagrams to speed up the understanding of the concept.

+
+
+

Avoid including instructions to perform an action. Action items belong in procedure modules. However, in some cases a concept or reference module can include suggested actions when those actions are simple, are highly dependent on the context of the module, and have no place in any procedure module. In such cases, ensure that the heading of the concept or reference remains a noun phrase and not a gerund. For example, see +"Bound variables in patterns and constraints" and the sections that follow it. These concept and reference modules contain actions that are not suitable for standalone procedure modules but are relevant actions to understand in the context of the concept or reference being described.

+
+
+

See also The DITA Topic Types at _informationmapping.com for more information about different types of conceptual information: principle, concept, structure, process, and fact.

+
+
+

If the concept module is large and complex, consider splitting the concept module into multiple standalone concept modules. If you cannot split the module into meaningful standalone modules, consider using subheadings in the module to structure the content for improved reader navigation. If you use subheadings in a concept module, you can add the [discrete] tag to exclude each subheading from the table of contents, if needed. However, in many cases, subheadings are helpful to include in the table of contents to improve content searchability.

+
+
+

The following examples illustrate a discrete and a standard subheading:

+
+
+
Example discrete subheading excluded from table of contents
+
+
= My concept module
+
+Concept introduction and body
+
+[discrete]
+== My concept module subheading
+
+More concept body content
+
+
+
+
Example subheading included in table of contents
+
+
= My concept module
+
+Concept introduction and body
+
+== My concept module subheading
+
+More concept body content
+
+
+
+ + + + + +
+
Note
+
+You can use subheadings in concept or reference modules, but not in procedure modules. +
+
+
Concept additional resources
+
+

The optional additional resources list links to other material closely related to the contents of the concept module, for example, other documentation resources.

+
+
+

Focus on relevant resources that might interest the user. Do not list resources for completeness.

+
+
+
+
Additional resources
+
+ +
+
+
+
+

3.1.2. Procedure modules

+
+

Procedure modules explain how to do something. A procedure module contains numbered, step-by-step instructions to help the user accomplish a single task. Sometimes those tasks include substeps. Procedure modules must include a title, a brief introduction, and one or more steps in the form of imperative statements. Procedure modules can also contain prerequisites, verification steps, and additional resources or next steps.

+
+
+
+procedure diagram +
+
Figure 2. Schema of a procedure module
+
+
+
Procedure title
+

The title of a procedure module is a gerund phrase, such as Deploying OpenShift Container Platform.

+
+
+
Procedure introduction
+

The procedure introduction is a short paragraph that provides an overview of the module. The introduction includes what the module will help the user do and why it will be beneficial to the user. It includes key words that relate to the module to maximize search engine optimization.

+
+
+

The introduction typically provides context for the procedure, such as:

+
+
+
    +
  • +

    Why and where the user performs the procedure

    +
  • +
  • +

    Special considerations specific to the procedure

    +
  • +
+
+
+
Procedure prerequisites
+

This section is optional. Prerequisites are a bulleted list of conditions that must be satisfied before the user starts the procedure. Use a bulleted list for prerequisites and the plural heading Prerequisites, even if you only have a single prerequisite.

+
+
+

Prerequisites can be full sentences or sentence fragments; however, prerequisite list items must be parallel.

+
+
+

Focus on relevant prerequisites that users might not otherwise be aware of. Do not list obvious prerequisites. If a prerequisite applies to all of the procedures in a user story, consider listing the prerequisite in the assembly file. If you do this, consider including the prerequisite in the procedure module as a comment.

+
+
+
Procedure steps
+

The procedure consists of one or more steps required to complete the procedure. Each step describes one action. For single-step procedures, use an unnumbered bullet instead of a numbered list.

+
+
+ + + + + +
+
Note
+
+Not all numbered lists in documentation are procedures. You can also use numbered lists in any module type for non-procedural sequences, such as a process flow of system actions. +
+
+
+
Procedure verification
+

This section is optional. It provides the user with one or more steps to verify that the procedure provided the intended outcome, for example:

+
+
+
    +
  • +

    An example of expected command output or a pop-up window that the user receives when the procedure is successful

    +
  • +
  • +

    Actions for the user to complete, such as entering a command, to determine the success or failure of the procedure

    +
  • +
+
+
+
Procedure additional resources
+

This section is optional. The additional resources list links to other material closely related to the contents of the procedure module, such as other documentation resources, instructional videos, or labs.

+
+
+

Focus on relevant resources that might interest the user. Do not list resources for completeness. If a resource applies to all of the modules in a user story, consider listing the resource in the Additional resources section of the assembly file. If you do this, consider including the resource in the procedure module as a comment.

+
+
+
+

3.1.3. Creating reference modules

+
+

This section explains what a reference module is and provides recommended practices for writing reference modules.

+
+
+
Reference module definition
+
+

Reference modules provide data that users might want to look up, but do not need to remember.

+
+
+
Example 1. Common documentation examples of reference modules
+
+
+
    +
  • +

    A list of commands that users can use with an application

    +
  • +
  • +

    A table of configuration files with definitions and usage examples

    +
  • +
  • +

    A list of default settings for a product

    +
  • +
+
+
+
+
+
Example 2. Reference modules explained using a real-life example
+
+
+

For documentation on how to cross the road, you could create these modules:

+
+
+
    +
  • +

    Concept modules:

    +
    +
      +
    • +

      What are roads

      +
    • +
    • +

      What are crossings

      +
    • +
    +
    +
  • +
  • +

    Procedure modules:

    +
    +
      +
    • +

      How to put one foot in front of another

      +
    • +
    • +

      How to use pedestrian traffic lights

      +
    • +
    • +

      How to see if the road is clear for crossing

      +
    • +
    +
    +
  • +
  • +

    Reference modules:

    +
    +
      +
    • +

      Crossing signals

      +
    • +
    • +

      Common crosswalk pavement markings

      +
    • +
    • +

      Crossing laws by country

      +
    • +
    +
    +
  • +
+
+
+
+
+
+
Reference module guidelines
+
+

The required part of a reference module is the reference data. +A reference module requires a short introduction.

+
+
Reference introduction
+
+

The introduction to a reference module is a single, concise paragraph that provides a short overview of the module. A short description makes the module more usable because users can quickly determine whether the reference is useful without having to read the entire module.

+
+
Reference body
+
+

A reference module has a very strict structure, often in the form of a list or a table. A well-organized reference module enables users to scan it quickly to find the details they want.

+
+
+

To make the reference data easier to scan, organize it in a logical order (such as alphabetically) or as a table. AsciiDoc markup to consider for reference data:

+
+
+ +
+
+

If you have a large volume of the same type of information to document, use a structure into which the information details can fit, and then document each logical unit of information as one reference module. For example, think of man pages, which document very different information details, but which still use consistent titles and formats to present those details in a uniform information structure.

+
+
+

If the reference module is large and complex, consider splitting the reference module into multiple standalone reference modules. If you cannot split the module into meaningful standalone modules, consider using subheadings in the module to structure the content for improved reader navigation. If you use subheadings in a reference module, you can add the [discrete] tag to exclude each subheading from the table of contents, if needed. However, in many cases, subheadings are helpful to include in the table of contents to improve content searchability.

+
+
+

The following examples illustrate a discrete and a standard subheading:

+
+
+
Example discrete subheading excluded from table of contents
+
+
= My reference module
+
+Reference introduction and body
+
+[discrete]
+== My reference module subheading
+
+More reference body content
+
+
+
+
Example subheading included in table of contents
+
+
= My reference module
+
+Reference introduction and body
+
+== My reference module subheading
+
+More reference body content
+
+
+
+ + + + + +
+
Note
+
+You can use subheadings in concept or reference modules, but not in procedure modules. +
+
+
+
+
Additional resources
+
+ +
+
+
+
+

3.1.4. Text snippets

+
+

A text snippet is a section of text that is stored in an AsciiDoc file. Text snippets contain content that is reused in multiple modules or assemblies.

+
+
+ + + + + +
+
Note
+
+A text snippet is not a module. It cannot include structural elements of a module such as an anchor ID or an H1 heading. +
+
+
+
Examples of snippets:
+
    +
  • +

    One or more paragraphs of text

    +
  • +
  • +

    A step or series of steps in a procedure

    +
  • +
  • +

    A table or list

    +
  • +
  • +

    A note, for example a disclaimer for technology preview or beta releases

    + + ++++ + + + + + + + + + + + + + + + + + + + + +
    Table 1. Types of notes
    Note typeSuggested content

    NOTE

    Additional guidance or advice that improves product configuration, performance, or supportability.

    IMPORTANT

    Advisory information essential to the completion of a task. Users must not disregard this information.

    WARNING

    Information about potential system damage, data loss, or a support-related issue if the user disregards this admonition. Explain the problem, cause, and offer a solution that works. If available, offer information to avoid the problem in the future or state where to find more information.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create the text snippet AsciiDoc file.

    +
    + + + + + +
    +
    Note
    +
    +Consider storing snippet files in a separate snippets folder. +
    +
    +
  2. +
  3. +

    Indicate that the file is a snippet in one of the following ways:

    +
    +
      +
    • +

      Prefix the file name with snip- or snip_:

      +
      +
      +
      snip-beta-note.adoc
      +
      +
      +
    • +
    • +

      Add a variable to the snippet file that identifies its content type:

      +
      +
      +
      :_content-type: SNIPPET
      +
      +
      +
    • +
    +
    +
  4. +
  5. +

    Add an include:: statement to the file that you want to add the snippet to, for example:

    +
    +
    +
    include::snippets/snip-beta-note.adoc[]
    +
    +
    +
  6. +
+
+
+
+

3.1.5. File names and anchors

+
+

To optimize modular documentation, follow these guidelines for naming files and creating anchors:

+
+
+
File names
+

Create assembly and module file names that accurately and closely reflect the title of the assembly or module. Create file names with the format prefix-filename.adoc or prefix_filename.adoc where prefix is one of the following module prefixes:

+
+
+
    +
  • +

    con: Concept module prefix

    +
  • +
  • +

    proc: Procedure module prefix

    +
  • +
  • +

    ref: Reference module prefix

    +
  • +
  • +

    assembly: Assembly module prefix

    +
  • +
+
+
+
Examples
+
    +
  • +

    con-guided-decision-tables.adoc (Concept module)

    +
  • +
  • +

    con_guided-decision-tables.adoc (Concept module)

    +
  • +
  • +

    proc-creating-guided-decision-tables.adoc (Procedure module for creating)

    +
  • +
  • +

    proc_creating-guided-decision-tables.adoc (Procedure module for creating)

    +
  • +
  • +

    ref-guided-decision-table-examples.adoc (Reference module with examples)

    +
  • +
  • +

    ref_guided-decision-table-examples.adoc (Reference module with examples)

    +
  • +
  • +

    assembly-designing-guided-decision-tables.adoc (Assembly of guided decision table modules)

    +
  • +
  • +

    assembly_designing-guided-decision-tables.adoc (Assembly of guided decision table modules)

    +
  • +
+
+
+ + + + + +
+
Note
+
+
+

Do not include special characters in file names. Ensure that all members of your team use the same file naming conventions.

+
+
+
+
+

These file naming guidelines are optional but highly recommended. However, if your team does not include the module prefixes in file names followed by either a hyphen (-) or an underscore (_), include one of the following variables in each file before the anchor ID:

+
+
+
+
:_content-type: ASSEMBLY
+:_content-type: PROCEDURE
+:_content-type: CONCEPT
+:_content-type: REFERENCE
+:_content-type: SNIPPET
+
+
+
+
Anchors
+

At the top of every module, provide an anchor in the format [id="filename_{context}"] where filename is the exact name of the file, without the file extension (.adoc). Module anchors are necessary so that Asciidoctor can identify the module when the module is reused or cross-referenced. The context variable is defined in each assembly module, such as :context: my-context-value. When you build an assembly, the value of the context variable replaces context in each module anchor ID and is displayed in the generated URL.

+
+
+
+
[id="filename_{context}"]
+= Module Heading
+
+The first sentence of the topic.
+
+
+
+
Example 1. Concept module
+
+
[id="con-guided-decision-tables_{context}"]
+= Guided Decision Tables
+
+The guided decision tables feature works similarly to ...
+
+
+
+
Example 2. Concept module
+
+
[id="con_guided-decision-tables_{context}"]
+= Guided Decision Tables
+
+The guided decision tables feature works similarly to ...
+
+
+
+
Example 3. Procedure module
+
+
[id="proc-creating-guided-decision-tables_{context}"]
+= Creating Guided Decision Tables
+
+You can use guided decision tables to ...
+
+
+
+
Example 4. Procedure module
+
+
[id="proc_creating-guided-decision-tables_{context}"]
+= Creating Guided Decision Tables
+
+You can use guided decision tables to ...
+
+
+
+ + + + + +
+
Note
+
+
Note on other anchor formats (not recommended)
+
+

The anchor format defined here is recommended because it is the most stable and versatile of anchor formats, and supports variables that enable topics to be reused and cross-referenced correctly. For details, see Reusing modules in assemblies. Other anchor formats include [[anchor-name]] and [#anchor-name], but these formats either do not support variables for content reuse or do not support certain character types, such as periods. These limitations cause errors at build time.

+
+
+
+
+
Additional resources
+ +
+
+
+
+

3.2. Forming assemblies

+
+

This section explains what an assembly is and provides recommended practices for forming assemblies.

+
+
+

3.2.1. Assembly definition

+
+

An assembly is a collection of modules that describes how to accomplish a user story. See also Understanding modular documentation.

+
+
+
+

3.2.2. Assembly guidelines

+
+

The required parts of an assembly are the introduction and modules. Optionally, an assembly can also include prerequisites and additional resources.

+
+
Assembly title
+
+

If the assembly describes a task and includes one or more procedure modules, start the title with a verb in the gerund form, such as Creating or Configuring, for example Encrypting block devices using LUKS. If the assembly does not include any procedure modules, use a noun phrase, for example Red Hat Process Automation Manager API reference.

+
+
Assembly introduction
+
+

The introduction explains what the user accomplishes by working through the assembled modules. It typically provides context for the assembly.

+
+
+

Consider rewording the user story to write the assembly introduction, for example:

+
+
+
    +
  • +

    User story: As an administrator, I want to provide external identity, authentication and authorization services for my Atomic Host, so that users from external identity sources can access the Atomic Host.

    +
  • +
  • +

    Assembly introduction: As a system administrator, you can use SSSD in a container to provide external identity, authentication, and authorization services for the Atomic Host system. This enables users from external identity sources to authenticate to the Atomic Host.

    +
  • +
+
+
Assembly prerequisites
+
+

Prerequisites are conditions that must be satisfied before the user can start following the assembly and are applicable to all the modules in the assembly.

+
+
+

Use the second level heading syntax for the Prerequisites section in the assembly so that it is displayed in the table of contents and is consistent with the Additional resources or Next steps sections in the assembly.

+
+
Assembly modules
+
+

To include modules in an assembly, use the Asciidoc include directive. Use any combination of concept, procedure, and reference modules that fulfills the purpose of the assembly. Use the leveloffset attribute to set the hierarchy of the module relative to the assembly, as shown in the following example:

+
+
+
Level offset for module files
+
+
file1.adoc[leveloffset=+1]
+file2.adoc[leveloffset=+2]
+file3.adoc[leveloffset=+3]
+
+
+
+

All module and assembly titles must use the H1 heading designation, such as = My heading.

+
+
Assembly additional resources
+
+

The optional additional resources list links to other material closely related to the contents of the assembly, for example, other documentation resources, instructional videos, or labs.

+
+
+

Focus on relevant resources that might interest the user. Do not list resources for completeness.

+
+
+
+

3.2.3. Additional resources

+
+ +
+
+
+

3.2.4. Reusing modules in assemblies

+
+

When you create content in modules, you can use the same module multiple times in an assembly without having to replicate information in multiple source files. However, in order to facilitate module reuse, you must embed a document attribute variable in the anchor name for the module and then define that variable in the assembly each time the reused module appears. If the variable is not embedded and assigned, an error appears at build time reporting the duplicated anchor ID.

+
+
+ + + + + +
+
Note
+
+
+

To determine which assemblies include a specific file, you can use your code editor to search the doc repo for instances of the file name. The search results will list every include: statement that specifies the file.

+
+
+
+
+
Example 3. Error at build time when anchor has no variable
+
+
+
+
ID "$ANCHOR_NAME" is duplicated in the source content
+$BUILD_PATH fails to validate
+
+
+
+
+
+

This error is resolved by adding and defining a document variable.

+
+
+
Procedure
+
    +
  1. +

    In the module file that will be reused, add the {context} suffix with a hyphen to the anchor name in the format [id="anchor-name_writing-mod-docs"].

    +
    + + + + + +
    +
    Note
    +
    +Although you can use any document variable that clearly indicates the variable in question, such as {product} or {chapter}, the {context} variable is recommended. This variable indicates more generally that the same module can be reused in the specified "context" of one section of a document or another, regardless of whether that section is product-specific or not, whether it is a whole chapter or a small assembly, or some other limitation. +
    +
    +
    +
    Two modules to be reused: Module A and Module B
    +
    +
    [id="module-A-being-reused_{context}"]
    += Module A Heading
    +
    +
    +
    +
    +
    [id="module-B-being-reused_{context}"]
    += Module B Heading
    +
    +
    +
  2. +
  3. +

    In the assembly file or the master book file, define the :context: variable immediately above any included modules that are being reused, in the format :context: variable-name. How you define the variable depends on whether the module is included once in multiple assemblies or is included multiple times in a single assembly. Note that the :context: variable definition uses hyphens to separate its terms.

    +
    +
    +
    Module included once in multiple assemblies
    +
    +

    If the reused modules are included only once in this assembly and in at least one other assembly, define an assembly-level variable such as :context: assembly-name. This indicates that the reused module is appearing in the context of that assembly.

    +
    +
    Assembly 1
    +
    +
    include::some-module-not-being-reused.adoc
    +
    +:context: assembly-1-name
    +include::module-A-being-reused.adoc
    +
    +include::some-module-not-being-reused.adoc
    +
    +:context: assembly-1-name
    +include::module-B-being-reused.adoc
    +
    +
    +
    +
    Assembly 2
    +
    +
    include::some-module-not-being-reused.adoc
    +
    +:context: assembly-2-name
    +include::module-A-being-reused.adoc
    +
    +include::some-module-not-being-reused.adoc
    +
    +:context: assembly-2-name
    +include::module-B-being-reused.adoc
    +
    +
    +
    +
    Module included multiple times in a single assembly
    +
    +

    If a module is included multiple times in the same assembly, define a variable specific to a section or a chapter of that assembly, such as :context: section-name. This indicates that the reused module is appearing in the context of that section of the assembly.

    +
    +
    Assembly
    +
    +
    include::some-module-not-being-reused.adoc
    +
    +:context: section-1-name
    +include::module-A-being-reused.adoc
    +
    +include::some-module-not-being-reused.adoc
    +
    +:context: section-2-name
    +include::module-A-being-reused.adoc
    +
    +
    +
    +
    +
    +
  4. +
  5. +

    Return to the reused module file, and at the top of the file add a comment that identifies which assemblies the module has been added to. This helps to track reused modules in the future.

    +
    +
    +
    [id="module-A-being-reused_{context}"]
    += Module A Heading
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
Practical example 1: reusing modules in multiple assemblies
+
+

You want to reuse the "Creating Assets" procedure module and the "Projects" concept module in two assemblies: an "Asset Definitions" assembly and a "Business Rules" assembly.

+
+
+

The module files contain the following content:

+
+
+
projects.adoc
+
+
[id="projects_{context}"]
+= Projects
+
+
+
+
creating-assets.adoc
+
+
[id="creating-assets_{context}"]
+= Creating Assets
+
+
+
+

The assembly files contain the following content:

+
+
+
asset-definitions.adoc
+
+
include::organizational-unit.adoc
+
+include::repository.adoc
+
+:context: asset-definitions
+include::projects.adoc
+
+include::organizational-unit.adoc
+
+include::creating-packages.adoc
+
+:context: asset-definitions
+include::creating-assets.adoc
+
+include::adding-dependencies.adoc
+
+
+
+
business-rules.adoc
+
+
include::business-processes.adoc
+
+:context: business-rules
+include::projects.adoc
+
+include::project-types.adoc
+
+include::packages.adoc
+
+:context: business-rules
+include::creating-assets.adoc
+
+
+
+

For all cross-references to the reused modules, specify which context (assembly) you want to link to. For example, you can link to the "Creating Assets" procedure module as it appears either in the "Asset Definitions" assembly or in the "Business Rules" assembly. Create cross-references in the xref:anchor-name_context-variable-name[] format:

+
+
+
+
For details, see xref:creating-assets_asset-definitions[].
+
+
+
+

or

+
+
+
+
For details, see xref:creating-assets_business-rules[].
+
+
+
Practical example 2: reusing a module in a single assembly
+
+

You want to reuse the "Projects" concept module twice in the "Business Rules" assembly.

+
+
+

The module file contains the following content:

+
+
+
projects.adoc
+
+
[id="projects_{context}"]
+= Projects
+
+
+
+

The assembly file contains the following content:

+
+
+
business-rules.adoc
+
+
:context: intro
+include::projects.adoc
+
+include::organizational-unit.adoc
+
+include::asset-types.adoc
+
+:context: asset-types
+include::projects.adoc
+
+include::dependencies.adoc
+
+
+
+

For all cross-references to the reused module, specify which context (section) you want to link to. For example, you can link to the "Projects" module as it appears either in the "Introduction" or in the "Asset Types" section. You create cross-references in the format xref:anchor-name_context-variable-name[]:

+
+
+
+
For details, see xref:projects_introduction[].
+
+
+
+

or

+
+
+
+
For details, see xref:projects_asset-types[].
+
+
+
+
+

3.2.5. Nesting assemblies in assemblies

+
+

When you set the :context: variable in an assembly, the variable continues to be set to the same value in the rest of the document even after the assembly itself ends. This causes problems if you include an assembly in another assembly.

+
+
+

If there is, for example, an Additional Resources section in the inner, included assembly as well as in the outer, including assembly after the include statements, the ID of the second one gets overwritten with the :context: variable of the included assembly. This causes duplicate IDs, which lead to build-time errors like:

+
+
+
+
asciidoctor: WARNING: 1.adoc: line 19: id assigned to section already in use: additional-resources-2
+
+
+
+
Example 4. Nested assemblies with a duplicate ID
+
+
+
+Nested Assemblies with a Duplicate ID +
+
+
+
+
+

To solve this problem, restore the :context: variable to its previous value when assemblies end:

+
+
+
    +
  1. +

    Add the following line at the top of your assemblies before :context: is defined to save the inherited context:

    +
    +
    +
    ifdef::context[:parent-context: {context}]
    +
    +
    +
  2. +
  3. +

    Add the following lines to the end of your assemblies to restore the saved context, if one already existed:

    +
    +
    +
    ifdef::parent-context[:context: {parent-context}]
    +ifndef::parent-context[:!context:]
    +
    +
    +
  4. +
+
+
+
Example 5. Correctly nested assemblies
+
+
+
+Correctly Nested Assemblies +
+
+
+
+
+

See also the assembly template for an example.

+
+
+
+
+
+
+

Appendix A: Modular documentation terms and definitions

+
+
+
+
Assembly
+
+

A collection of several modules combined into a larger piece of text, preceded by an introduction that explains the purpose of the assembly.

+
+

The docs realization of a user story.

+
+
+
Module
+
+

An independent, self-contained chunk of information with a well-organized structure. Each module is information that a reader can understand and use by itself. A writer can use a module as a standalone article or as part of a larger body of work (an "Assembly"). A module does not depend on other documents, but it can refer the reader to other documents as additional resources. Because a module is self-contained, it must have a clear title that briefly and clearly summarizes the subject of the module. Moreover, because modules are written as context-free elements independent of other modules, they are re-usable. One module can be part of multiple assemblies.

+
+
+
Concept module
+
+

Explains a concept; for example, not action-based.

+
+
Procedure module
+
+

Describes steps to perform an action.

+
+
Reference Module
+
+

Presents detailed reference material, for example, command syntax.

+
+
+
+
+
User story
+
+

A short description of something the user does to achieve a goal.

+
+

Example: As an administrator, I want to set up authentication to a critical system in my infrastructure, such as a gateway VPN, or accounting system to only allow users authenticated through strong authentication methods, such as two-factor authentication.

+
+
+

As opposed to a use case, which is a description of interactions between the system and the user or other systems.

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2. Contrasting user stories and use cases
User StoryUse Cases

Definitions:

+

A short description of something the user does to achieve a goal.

+
+

A description of interactions between the system and the user, components of the system, or the system and other systems.

+

Views the situation from:

+

The perspective of a user.

+
+

The perspective of a product and its features.

+

Focuses on:

+

The outcome as perceived by the user.

+
+

What the product does and how it does it, which includes product requirements, specification, scope.

+

Example:

+

As an office worker, I want to be able to easily switch between standing and sitting, so that I prevent back pain and other health issues associated with prolonged periods of sitting at a computer.

+
+
+ + + + + +
+
Note
+
+This user story follows a common template for user stories in the form of "As a <type_of_user>, I want <some_goal> so that <some_reason>." +
+
+

Ergonomic work space solution - a standing desk that allows switching between standing and sitting. The standing desk:

+
+
+
    +
  • +

    Is motorized, with a button a person can press to adjust the height; the height must span up to 150 cm to be usable also by people 200 cm tall.

    +
  • +
  • +

    Is made from easy-to-clean and durable material to withstand standard office conditions, such as spilled tea or scratches: table top - polyester, legs - steel.

    +
  • +
  • +

    Has large enough work surface to comfortably fit 2 monitors, one laptop docking station, small personal items.

    +
  • +
  • +

    Can hold the weight of 100 kg, such as standard office equipment and a person sitting on the desk.

    +
  • +
  • +

    Meets safety requirements per EU standards for office equipment.

    +
  • +
  • +

    Has attractive design to fit in modern office spaces.

    +
  • +
+
+
+ + + + + +
+
Note
+
+A use case like this can also include other ergonomic solutions, such as an adjustable sit-stand wall mount for monitors and compare their parameters, such as ease of installation, price, and ease of use. +
+
+
+ + + + + +
+
Important
+
+
+

To fulfill their purpose, user stories must be defined based on customer needs. Therefore, they must be produced by customer-facing associates, such as product management or field teams, not by writers. Writers can only help polish the user stories if required.

+
+
+

If your team does not have user stories, do not write them yourselves. Instead, ask the stakeholders for your product to provide them to you.

+
+
+
+
+
User story-based docs
+
+

Docs developed to support a user story. For our purposes, user-story-based docs are the same as use-case-based docs.

+
+
Modular documentation
+
+

Documents structured into modules and assemblies.

+
+
+
+
+ + + + + +
+
Note
+
+We do not use the terms topic or topic-based documentation because they are too ambiguous. A topic can mean a piece of documentation, a user story, or a short chunk of content. Therefore, topic-based can mean a number of things. +
+
+
+
+ +
+

Appendix C: Converting to modular documentation

+
+
+

If you have a monolithic, feature-based manual, you can convert it to a set of modular content based on user stories. This conversion workflow involves using the customer product lifecycle to define user stories for your product, and creating the assemblies and modules necessary to fit each user story.

+
+
+

The result is documentation that is more relevant for your readers, because it is based on real-world user stories (it tells them how to accomplish their goals), and modular (it can be assembled into whatever sets and formats they might need).

+
+
+
Prerequisites
+
    +
  • +

    You should understand what modular documentation is:

    + +
  • +
  • +

    You should understand the benefits of modular documentation.

    + +
  • +
  • +

    Find a user story and practice documenting it as an assembly.

    +
    +

    This process of breaking down user stories into assemblies and modules is an essential element of modular documentation. You should be familiar with this process before attempting to do it for an entire feature-based book.

    +
    +
  • +
  • +

    Your repository should be set up.

    +
    +

    If you are using AsciiDoc, your repository should have a directory structure that supports modular documentation, and you should have a master.adoc file for each publication.

    +
    +
  • +
+
+
+

C.1. Overview of the customer product lifecycle

+
+

User stories are the basis of modular documentation. The modular documentation conversion workflow uses the customer product lifecycle to help you discover and develop the user stories that your documentation should include.

+
+
+

While all products are different, everyone tends to use them in a similar workflow that starts with the initial research to determine which product to use, includes implementing and managing the product, and ends when the product is no longer needed. This customer product lifecycle can be broken down into phases, each of which presents unique user information requirements (that is, the user needs different types of information at each phase of the lifecycle):

+
+
+
+
Plan
+
+

What information should be gathered and what decisions should be made (for example, design/deployment) before the customer can start installing the product?

+
+
Install
+
+

How does the customer install the product on each of the supported platforms?

+
+
Configure and verify
+
+

After the product is installed, what does the customer need to do to configure it to work in their environment? How do they test or verify that it is ready to put into production?

+
+
Develop and test
+
+

Does the customer need to develop any custom applications to connect the product to any of their existing infrastructure?

+
+
Manage
+
+

Once the product is in production, how does the customer customize and change it on a day-to-day basis?

+
+
Monitor and tune
+
+

Once the product is in production, how does the customer monitor its performance in order to know when changes are needed?

+
+
Upgrade and migrate
+
+

How does the customer upgrade to newer versions of the product?

+
+
Troubleshoot
+
+

How does the customer fix common problems they may encounter?

+
+
+
+
+
+

C.2. Defining user stories for your product

+
+

User stories provide the context and structure from which you can determine which assemblies and modules to create.

+
+
+

For more information about user stories, see Modular Documentation Terms and Definitions.

+
+
+

Ideally, well-defined user stories would already exist for the product you are documenting. For most writers, however, this ideal is not a reality. If you do not have any user stories from which to work, and you — as a writer — do not have all of the user information you would need to create the user stories yourself, how do you get started? This procedure provides a general approach that you can take.

+
+
+

Of course, every product differs in terms of tools, processes, team dynamics, and access to SMEs. Since you are most familiar with these aspects for your own team, you will need to adapt this general approach for your own team. Depending on your team structure, each step can be completed by either a writer or a collaboration between a writer and Content Strategist.

+
+
+
Procedure
+
    +
  1. +

    Identify the key, top-level user stories for your product.

    +
    +
    +
    +

    This step should typically be performed by the Content Strategist.

    +
    +
    +

    Start with the customer product lifecycle phases. If you have existing user stories, ask yourself which ones correspond to phases in the lifecycle. If you do not have existing user stories, create a user story for each lifecycle phase that applies to your product.

    +
    +
    +

    For more information, see Overview of the Customer Product Lifecycle.

    +
    +
    +

    For example, here is a top-level user story for the Configure and Verify phase of the customer product lifecycle:

    +
    +
    +
    Example 6. Creating top-level user stories
    +
    +
    +
      +
    • +

      [Phase] Configure and Verify — [Top-level user story] As a system administrator, I want to configure PRODUCT so that it is ready for production.

      +
    • +
    +
    +
    +
    +
    +
    +
  2. +
  3. +

    Define the supporting user stories that are necessary to complete each of the top-level user stories.

    +
    +
    +
    +

    This step should typically be a collaborative effort between the Content Strategist and the writer.

    +
    +
    +

    Each top-level user story represents a "phase" of the customer lifecycle. You should go through each phase and define the user stories needed to complete the phase. You will need to use your own knowledge and expertise of the product.

    +
    +
    +

    For example, for the Configure and Verify phase, users would need to know how to configure and set up each component or feature of the product to work in their environment. You could break it down like this:

    +
    +
    +
    Example 7. Creating second-level user stories
    +
    +
    +
      +
    • +

      As a system administrator, I want to configure PRODUCT so that it is ready for production.

      +
      +
        +
      • +

        As a system administrator, I want to enable PRODUCT to make and accept connections so that remote peers can exchange data with PRODUCT.

        +
      • +
      • +

        As a system administrator, I want to secure PRODUCT so that it can communicate with remote peers securely.

        +
      • +
      • +

        As a system administrator, I want to set up logging so that error conditions can be diagnosed.

        +
      • +
      +
      +
    • +
    +
    +
    +
    +
    +

    At this point, you should have a two-deep list of user stories.

    +
    +
    +
    +
  4. +
  5. +

    Go back through the list and add any additional user stories that might be needed to complete any of the secondary user stories.

    +
    +
    +
    +

    Depending on the product, one or two levels of user stories might be sufficient. For larger, more complex products, you might find yourself going multiple levels deep.

    +
    +
    +

    Be careful not to go too deep, however. At this stage, you are not defining every procedure or step needed to complete each user story. User stories represent user goals, so you should only need to go deeper if a secondary user story has multiple goals.

    +
    +
    +

    For example, under the "Configuring Product X" example in the previous step, the logging user story does not need any additional user stories — the goal cannot be reduced any further than it already is. On the other hand, the adding security settings user story might be able to go a bit deeper. Security is a goal in and of itself (users want their applications to be secure), but there are more specific goals users might have within it:

    +
    +
    +
    Example 8. Creating additional user stories
    +
    +
    +
      +
    • +

      As a system administrator, I want to configure PRODUCT so that it is ready for production.

      +
      +
        +
      • +

        As a system administrator, I want to enable PRODUCT to make and accept connections so that remote peers can exchange data with PRODUCT.

        +
      • +
      • +

        As a system administrator, I want to secure PRODUCT so that it can communicate with remote peers securely.

        +
        +
          +
        • +

          As a system administrator, I want to add security certificates so that clients can be authenticated.

          +
        • +
        • +

          As a system administrator, I want to use my existing LDAP configuration so that clients can be authenticated.

          +
        • +
        +
        +
      • +
      • +

        As a system administrator, I want to set up logging so that error conditions can be diagnosed.

        +
      • +
      +
      +
    • +
    +
    +
    +
    +
    +
    +
  6. +
  7. +

    For each user story in your list, define the following:

    +
    +
    +
    +
      +
    • +

      What concepts does the user need to understand to complete the user story?

      +
      +

      These will become the concept modules for the assembly.

      +
      +
    • +
    • +

      What are the procedures to complete the user story?

      +
      +

      These will become the procedure modules for the assembly.

      +
      +
    • +
    • +

      Is there any reference information that the user might want to refer to when performing this user story?

      +
      +

      These will become reference modules.

      +
      +
    • +
    +
    +
    +
    Example 9. Breaking down user stories
    +
    +
    +
      +
    • +

      As a system administrator, I want to configure PRODUCT so that it is ready for production.

      +
      +
        +
      • +

        As a system administrator, I want to enable PRODUCT to make and accept connections so that remote peers can exchange data with PRODUCT.

        +
        +
          +
        • +

          Concept: Types of connections

          +
        • +
        • +

          Procedure: Create "listeners" to accept incoming connections

          +
        • +
        • +

          Procedure: Create "connectors" to connect to outbound endpoints

          +
        • +
        • +

          Reference: Network connection configuration attributes

          +
        • +
        +
        +
      • +
      • +

        Additional user stories…​

        +
      • +
      +
      +
    • +
    +
    +
    +
    +
    +
    +
  8. +
+
+
+
+

C.3. Creating assemblies

+
+

An assembly is a representation of a user story, so you need to create an assembly for each user story that you defined.

+
+
+

An assembly could represent an article, "chapter" in a book, or even an entire book. However, one of the benefits of modular documentation is that you do not need to worry about how the assembly will ultimately be used — each assembly represents a user goal, and once you create it, it can be "included" anywhere it is needed (a publication, within another assembly, and so on).

+
+
+
Procedure
+
    +
  1. +

    Create an assembly file for each user story that you identified.

    +
    +
    +
    +

    Be sure to follow the conventions for naming anchors and files. For example: guided-decision-tables.adoc

    +
    +
    +
    +
  2. +
  3. +

    For each top-level assembly file that you created, fill in the content.

    +
    +

    For more information, see Assembly Guidelines.

    +
    +
  4. +
  5. +

    Repeat the previous step for each second-level assembly.

    +
  6. +
+
+
+
+

C.4. Creating modules

+
+

After identifying and creating the assemblies, each assembly should identify the modules that you need to create.

+
+
+
Procedure
+
    +
  1. +

    For each assembly that you created, create a module file for each module that is identified in the assembly.

    +
    +
    +
    +

    Each assembly should already have the names of the modules that should be included in the assembly. Now you just need to create the actual files for those modules.

    +
    +
    +

    Be sure to follow the conventions for naming anchors and files. For example: guided-decision-tables.adoc

    +
    +
    +
    +
  2. +
  3. +

    For each module file that you created, add content.

    +
    +
    +
    +

    Use your existing, feature-based manual to get the content. Make sure to rewrite and rework it to fit the modular documentation module templates. For more information, see:

    +
    + +
    +
    +
  4. +
+
+
+
+

C.5. Auditing your feature-based manual

+
+

In the process of adding content to the modules from your existing feature-based manual, it is likely that there is some existing content that did not fit into any of the user stories that you identified and thus was not pulled out. It is important to identify this content to ensure that it is no longer needed.

+
+
+
Procedure
+
    +
  1. +

    Go through your existing feature-based manual and identify any content that you did not add to an assembly or module.

    +
  2. +
  3. +

    For each piece of content that you find, determine whether it is necessary.

    +
    +
    +
    +

    If the content does not fit into a user story or assembly, then it stands to reason that it may not be necessary to complete any particular user goal. If this is the case, you should be able to discard it.

    +
    +
    +
    Example 10. Handling extraneous content
    +
    +
    +

    For example, many feature-based manuals contain detailed sections about how a particular feature works. This type of content, which is valuable in certain contexts, is not always necessary for user documentation — user goals generally involve doing something, not understanding how all the details work. When you encounter this type of content, ask yourself whether a user would need to understand it to accomplish any of their goals (planning, installing, configuring, managing, and so on). If the answer is no, then you can probably discard it.

    +
    +
    +
    +
    +

    On the other hand, it is also possible that the content is related to a user story that you have not considered. In that case, you should create the necessary assemblies and modules and add them to your modular doc.

    +
    +
    +
    +
  4. +
+
+
+
+
+
+ + + \ No newline at end of file From 83c46244e53024f90dd6f980bf0ed490bdc96881 Mon Sep 17 00:00:00 2001 From: rkratky Date: Fri, 9 Jun 2023 14:49:25 +0000 Subject: [PATCH 2/2] deploy: e84cd98dd1281462f6431139dcf674ce07217665 --- .nojekyll | 0 .../TEMPLATE_CONCEPT_concept-explanation.adoc | 6 +- ...EMPLATE_PROCEDURE_doing-one-procedure.adoc | 6 +- ...TEMPLATE_REFERENCE_reference-material.adoc | 6 +- index.html | 683 +++++------------- 5 files changed, 193 insertions(+), 508 deletions(-) create mode 100644 .nojekyll diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/files/TEMPLATE_CONCEPT_concept-explanation.adoc b/files/TEMPLATE_CONCEPT_concept-explanation.adoc index 28826f4..62deb2e 100644 --- a/files/TEMPLATE_CONCEPT_concept-explanation.adoc +++ b/files/TEMPLATE_CONCEPT_concept-explanation.adoc @@ -1,7 +1,7 @@ //// Base the file name and the ID on the module title. For example: -* file name: con-my-concept-module-a.adoc -* ID: [id="con-my-concept-module-a_{context}"] +* file name: con_my-concept-module-a.adoc +* ID: [id="my-concept-module-a_{context}"] * Title: = My concept module A //// @@ -17,7 +17,7 @@ Add the following attribute before the module ID: The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. //// -[id="con-my-concept-module-a_{context}"] +[id="my-concept-module-a_{context}"] //// The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID so you can include it multiple times in the same guide. diff --git a/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc b/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc index af7cd17..8eef464 100644 --- a/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc +++ b/files/TEMPLATE_PROCEDURE_doing-one-procedure.adoc @@ -1,7 +1,7 @@ //// Base the file name and the ID on the module title. For example: -* file name: proc-doing-procedure-a.adoc -* ID: [id="proc-doing-procedure-a_{context}"] +* file name: proc_doing-procedure-a.adoc +* ID: [id="doing-procedure-a_{context}"] * Title: = Doing procedure A Indicate the module type in one of the following @@ -13,7 +13,7 @@ Add the following attribute before the module ID: The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID even if it is reused multiple times in an assembly file. //// -[id="proc-doing-procedure-a_{context}"] +[id="doing-procedure-a_{context}"] = Doing procedure A //// diff --git a/files/TEMPLATE_REFERENCE_reference-material.adoc b/files/TEMPLATE_REFERENCE_reference-material.adoc index f44450c..5043144 100644 --- a/files/TEMPLATE_REFERENCE_reference-material.adoc +++ b/files/TEMPLATE_REFERENCE_reference-material.adoc @@ -1,7 +1,7 @@ //// Base the file name and the ID on the module title. For example: -* file name: ref-my-reference-a.adoc -* ID: [id="ref-my-reference-a_{context}"] +* file name: ref_my-reference-a.adoc +* ID: [id="my-reference-a_{context}"] * Title: = My reference A //// @@ -17,7 +17,7 @@ Add the following attribute before the module ID: The ID is an anchor that links to the module. Avoid changing it after the module has been published to ensure existing links are not broken. //// -[id="ref-reference-material_{context}"] +[id="reference-material_{context}"] //// The `context` attribute enables module reuse. Every module ID includes {context}, which ensures that the module has a unique ID even if it is reused multiple times in a guide. diff --git a/index.html b/index.html index 5aa49e3..184dca5 100644 --- a/index.html +++ b/index.html @@ -4,436 +4,126 @@ - + + Codestin Search App - + + @@ -465,7 +155,7 @@

Modular documentation reference guide

@@ -504,7 +194,7 @@

-
Important
+ As modular documentation imperatives continue to evolve, the details and recommendations in this guide might be modified. @@ -529,7 +219,7 @@

-
Important
+
@@ -696,7 +386,7 @@
Concept body
Example discrete subheading excluded from table of contents
-
= My concept module
+
= My concept module
 
 Concept introduction and body
 
@@ -709,7 +399,7 @@ 
Concept body
Example subheading included in table of contents
-
= My concept module
+
= My concept module
 
 Concept introduction and body
 
@@ -722,7 +412,7 @@ 
Concept body
-
Note
+
You can use subheadings in concept or reference modules, but not in procedure modules. @@ -802,7 +492,7 @@

-
Note
+
Not all numbered lists in documentation are procedures. You can also use numbered lists in any module type for non-procedural sequences, such as a process flow of system actions. @@ -831,6 +521,19 @@

Focus on relevant resources that might interest the user. Do not list resources for completeness. If a resource applies to all of the modules in a user story, consider listing the resource in the Additional resources section of the assembly file. If you do this, consider including the resource in the procedure module as a comment.

+
+
Additional resources
+
+ +
+

3.1.3. Creating reference modules

@@ -957,7 +660,7 @@
Reference body
Example discrete subheading excluded from table of contents
-
= My reference module
+
= My reference module
 
 Reference introduction and body
 
@@ -970,7 +673,7 @@ 
Reference body
Example subheading included in table of contents
-
= My reference module
+
= My reference module
 
 Reference introduction and body
 
@@ -983,7 +686,7 @@ 
Reference body
-
Note
+
You can use subheadings in concept or reference modules, but not in procedure modules. @@ -993,7 +696,7 @@
Reference body
-
Additional resources
+
Additional resources