JBoss.orgCommunity Documentation

Mobicents Community Documentation

Self-Managing Mobicents Community Documentation

by Jared Red Hat, Inc Morgan

Abstract

The guide contains information relating to the ongoing maintenance of the Mobicents Community Documentation Suite. The guide discusses the current state of the documentation, explains the writing standards currently used in the guides, the structure of the guides in the GCode SVN repository, and provides some quick-start help for community authors in getting accustomed to XML authoring.


This document is licenced under the Creative Commons CC-BY-SA licence. You are welcome to utilise any content contained in this user guide according to the terms of this licence.

This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.

In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.

Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.

Mono-spaced Bold

Used to highlight system input, including shell commands, file names and paths. Also used to highlight key caps and key-combinations. For example:

The above includes a file name, a shell command and a key cap, all presented in Mono-spaced Bold and all distinguishable thanks to context.

Key-combinations can be distinguished from key caps by the hyphen connecting each part of a key-combination. For example:

The first sentence highlights the particular key cap to press. The second highlights two sets of three key caps, each set pressed simultaneously.

If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in Mono-spaced Bold. For example:

Proportional Bold

This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:

The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in Proportional Bold and all distinguishable by context.

Note the > shorthand used to indicate traversal through a menu and its sub-menus. This is to avoid the difficult-to-follow 'Select Mouse from the Preferences sub-menu in the System menu of the main menu bar' approach.

Mono-spaced Bold Italic or Proportional Bold Italic

Whether Mono-spaced Bold or Proportional Bold, the addition of Italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:

Note the words in bold italics above username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.

Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:

If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a documentation issue using the Mobicents GCode Issue Tracker: http://code.google.com/p/mobicents/issues/list against the product Mobicents.

When submitting a bug report, be sure to mention the manual's identifier: Mobicents_Community_Documentation

If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.

The Mobicents User Documentation Suite (UDS) is the formalized source of product user documentation for the Mobicents Community Project. Within the UDS, a user can learn how to install the platform, or individual servers. Server-specific features are located within each server guide and include examples that can help new users become accustomed to the functionality offered by the product suite.

The UDS is written in eXtensible Markup Language (XML) and uses the DocBook DTD to control guide structure. The documentation is published to HTML-Single format using the Publican Tool chain and Maven JDocBook, and hosted on the Hudson Build Server for public viewing and comment.

Originally, the UDS was delivered to the user through multiple sources such as Wiki pages and static documents. The information was hosted in different locations.

The separate information sources were merged into a single Wiki source, hosted on the mobicents-public Google group. Once the information was merged into mobicents-public, the developers had a single place to communicate with the end users of the platform.

As the Mobicents product matured, the requirement for formalized single-source documentation became apparent. When Red Hat acquired the project, the process of merging the content into a single XML repository began.

During the conversion process from Wiki to XML, the UDS was managed exclusively by Red Hat Technical Writers. Red Hat writers took the developer content and converted it into XML user documentation, adding to the existing content where the need existed. Those areas under development in the UDS were linked back to the mobicents-public forum, so readers did not encounter an information dead-end.

The documentation suite evolved to a point where the Mobicents Community Project team expressed interest in self-managing the community documentation, and hosting it on the GCode SVN repository. This decision simplified the way the team controlled the versioning of user guide content, and allowed the documentation to be branched when the development cycle dictated. It also assisted the Red Hat Technical Writers in developing the product documentation for the JBoss Communication Platform.

Current UDS Status

Red Hat has productized the community project, and ships the JBoss Communications Platform (JBCP) to Red Hat customers. The Mobicents UDS forms the backbone of the JBCP Product Documentation. The community project and the Red Hat writers work closely to ensure the correct information appears in the Product User Documentation.

Because the team is so geographically dispersed, some challenges can exist when trying to communicate with the different server teams. To ensure that you have the best chance of obtaining the information you require, a number of different methods exist to reach out to the development team.

There are two Google Group forums that are monitored by the Mobicents Developers:

Both forums use a G-mail account for access. It is recommended that you create a new G-mail account for the sole purpose of accessing the Mobicents forums. If you subscribe to the daily digests or emails, the email traffic is excessive.

mobicents-public

This high-traffic forum is the publicly accessible forum, used by the community to ask questions about configuring the platform. Often, discussion threads from mobicents-public will be used as a development barometer for new feature priorities and bug fix priorities. The Mobicents Team Meeting logs are posted to this forum so the community is informed about the project happenings.

mobicents-core

This forum is a membership-only forum, for the exclusive use of Mobicents developers and vetted individuals (such as Red Hat Content Authors). The forum is used to discuss private project-related issues not suitable for public consumption. You must submit an application to get access to the forum.

The Mobicents User Documentation Suite (UDS) is stored in the Mobicents Google Code Subversion repository(GCode SVN) .

Because the GCode SVN contains the source code for the Mobicents, and JBCP Platform, the repository is available to the public in read-only format. For contributors to make changes to the repository in any way, the Mobicents project must grant specific read-write permissions to the contributor's nominated Google account.

Note

To obtain read-write access, notify one of the project owners listed on the Google Code Project Home Page. Ensure the Google account information is included in the request.

The most recent commit of the User Guide is located in the /trunk directory. Within this directory, each user guide is separated into the server folder to which it belongs. Click on the links in the list to inspect the document repository structure.

In all docs directories, there is an en-US folder. This folder contains all the XML files that are required for the User Guide. For more information regarding the files contained in this directory, refer to Section 4.1.1, “XML Book Components”

The exception to this is the single XML file prefixed with all-. For example, in the sip-servlets-docs repository, the file is named all-SIP_Servlets_Server_User_Guide.xml. This file is used by Maven JDocBook to produce the documentation that is hosted on the Hudson Build Server.

For the SIP Presence Service, this file is not required. In future, all server streams will not require this file, because the Maven build process will automatically build the documents from the latest SVN snapshot. Until this process has been implemented, the all-[user_guide_name].xml file is required.

Do Not Update the all-*.xml File

Never incorporate changes directly into the all-[user_guide_name].xml file. Updating this file with documentation changes will result in lost work.

Update the individual XML files that comprise the User Guide. Changes made in individual files are merged into the all-*.xml file as part of the Authoring process.

To maintain language consistency within the source documentation, it is important for each content author to write in a similar tone. Maintaining consistent tone throughout the user guides will make the Mobicents and JBCP User Documentation Suite (UDS) appear to be a unified suite of documents, rather than a separated group of user guides.

The reader will subconciously notice the consistency, will be able to easily process the information contained within the user guide, and will appreciate the effort you have put in to keeping the writing style professional and consistent (even though they may not tell you directly).

Important

The Mobicents and JBCP UDS uses the English (US), or en-US dictionary. Ensure that you follow the requirements of this dictionary when writing content for the UDS.

A sentence is one, complete thought. A sentence expresses something about a subject (a person, place, or thing) and a verb (what the subject is or does). There are two common problems that occur in sentence construction: Sentence fragments and run-on sentences.

Sentence Fragments

A sentence fragment is a sentence which cannot stand by itself; that is, it's out of context with the surrounding sentences.


Read each sentence you write aloud, as if each sentence were the "only" sentence on a piece of paper. If you hear a sentence that would not make sense all by itself, chances are you have got a sentence fragment. Change the fragment sentence to make it a complete thought.

Run-on Sentence

Two or more complete ideas that are joined without punctuation create a run-on sentence (also called a fused sentence). The sentence does not have to be long to be a run-on (although the longer your sentence, the more difficult it is to read).


It is often tempting to write like you are talking to someone face to face. It is an easy way of writing, and allows you to write using a stream of consciousness method.

The problem with this type of writing style, is that it is very hard for the reader to quickly grasp a concept. They must read through the content and try to extract the information that is relevant to them from the information you have provided them. The writing style often leads to verbosity (or wordiness) and this can quickly frustrate readers.

The following examples will show you how pruning your writing can cut down the word count, and allow readers to easily understand the information they are reading.


Example 3.4. Writing Like You Are Speaking

This example demonstrates how writing like you are speaking can result in unordered concepts, and reduces the effectiveness of the information you are writing about.

Original Wording

An important note here with regard to that second scenario that according to the SIP Servlets 1.1 specification, Sections 15.1.2 The Role of Applications and 15.1.4 Application Independence, the Call Blocking application cannot just do nothing with the request and expect the container to route the request in its place (either to a next application in chain if another one is present or to the outside world if none is present). The Application has to do something with request (either proxy it or act as a UAS)

Suggested Wording

For the second scenario, the Call Blocking application must be responsible for routing the request to the next chained application (internally) or to the outside world (externally). The application must either proxy, or act as a User Agent Server (UAS), for the request. This requirement is stated in greater detail within the SIP Servlets 1.1 specification's "The Role of Applications" and "Application Independence" sections.

Result

In the original wording, the main point (that the application must handle the routing, and how it must do this) was right at the end of the paragraph. In the suggested wording, the application requirement has been moved up to the front of the paragraph. This allows the reader to quickly decide whether the information relates to them. The references, which were interrupting the sentence flow, are now at the end of the paragraph.


The UDS XML is structured in such a way that it can be published using Maven JDocBook and Publican. Maven, and the JDocBook plug-in are used to produce the community branded XML content, and to produce XML that is used by Publican to produce the Red Hat branded product documentation.

The Publican Toolchain is a set of Linux utilities that work in concert to validate, and publish XML to various output formats. Publican is used by Red Hat's Engineering Content Services division as the de-facto standard for producing product documentation according to brand, and translation, requirements.

For a complete guide to Publican, including installation instructions and commands, visit the Publican home page on fedorapeople.com. This page contains, among other information, the User Guide for Publican. The user guide is compatible with Version 0.39 and above.

Each book in the UDS is constructed using a standardized structure, to maintain consistency throughout the project. The structure present as of September 2009 follows the Publican Toolchain directory structure. Table 4.1, “Book Components” describes the mandatory files that must be present, including a description of the file contents, and where the XML file is embedded into the finished user guide.

Table 4.1. Book Components

XML Book ComponentDescriptionOrder of Component in the Book
[Book_Name].xml Contains the structure of the user guide, represented by xi:include references to each chapter-[Chapter_Name].xml component, and other mandatory components in this table.Top Level (or Parent) component of any user guide.
Book_Info.xml Contains information about the book title, book version number, abstract and copyright information.1st Child. This is the opening information a reader will see in the user guide.
Author_Group.xml Contains contact information about the authors that contributed to the content of the book.2nd Child. This component is included in the Book_Info.xml component.
Preface.xml Contains pre-defined content explaining the typographical standards used in the guide, and other information that will assist the reader with using the guide.3rd Child. This component is included after the Book_Info.xml content.
chapter-[Chapter_Name].xml Contains XML markup and content included at a Chapter level in the document. The XML file is named only for human-readability.4th. This is the top level element for each chapter in the user guide. The order of these files in the [Book_Name].xml file determines the structure of the guide.
section-[Section_Name].xml Contains XML markup and content included at a Section level in the document. The XML file is named only for human-readability.5th. This component is included in chapter-[Chapter_Name].xml files by xi:include reference.
Revision History.xml Contains a record of the revisions made to the document over time. Top-level information about changes in the guide are provided to the reader.6th.

To ensure Maven JDocBook can publish the content generated by the Publican Tool chain, additional XML content is required. Maven JDocBook does not have access to the Publican Tool chain common_content directory. The required XML files must be included as xi:fallback references in the preface.xml and book_info.xml files.

The content is contained within XML files in the fallback_content directory of each user guide repository. The fallback_content directory contains copies of the XML files located in the /usr/share/publican/Common_Content directory.

Fallback Content Accuracy Check

The front-matter information located in the fallback_content directory of each user guide repository, is not maintained by the Publican Tool chain Team, or upgraded when Publican updates are installed. Therefore, manually verify that the information contained in these files are kept current with the standards present in the latest Publican Tool chain version.

Fallback content is added to each xi:include element that Maven JDocBook does not have access to. The structure described in the following XML sample is for the Legal_Notice.xml information in the Book_Info.xml file.


<!--FOR PUBLICAN -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
 href="Common_Content/Legal_Notice.xml">
    <!--FOR JDOCBOOK:-->
    <xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
        <xi:include href="fallback_content/Legal_Notice.xml"
         xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
    </xi:fallback>
</xi:include>

The xi:include element can have any number of xi:fallback elements defined. However, in the Mobicents UDS only one fallback is required.


For Linux users, a bash script is available that allows common Publican commands to be substituted with abridged commands. The script is called mkbk (short for make book). You must have Publican installed and configured before running this script; Publican is a dependency.

The script is contained in the source folder for this user guide. To obtain this script, check out the Mobicents_Community_Documentation directory from the GCode SVN.

Syntax

mkbk [book_name] [condition] [output]

Where:

[book_name] is the abbreviated name of the XML User Guide to publish:

[condition] is one of the following options:

[output] is one of the following Publican output types:

Usage

To use the script, you must open a terminal and navigate to the user guide directory that contains the en-US folder for the book. From this directory, the mkbk script can correctly call publican as part of executing the script.

mkbk test tests the book for XML structure errors.

mkbk sss jbcp html-single-en-US publishes the SIP Servlets Server User Guide to Red Hat Style standards.

mkbk sss mob xml-en-US validates the SIP Servlet Server User Guide, and creates the all-SIP_Servlets_Server_User_Guide.xml file used by Maven to publish the community documentation.

Remarks

You can use the mkbk [book_name] mob xml-en-US command when your user guide cannot be published using Publican. This command executes the xmllint tool, which is called with specific settings: include xi:include references, and user defined entities; validate XML; do not abort when an error is located.

This process creates the all-[user_guide_name].xml file, which is an amalgameted, single file containing all chapters and sections of your book in one file. You can open the all-[user_guide_name].xml file in XML Copy Editor (or another XML Editor with built in validation), and validate the file to determine where the invalid mark-up is within the file. You can then open the original chapter or section, and correct the structure error.

Throughout the UDS, Maven variables are used to substitute values when Maven builds the documentation. The values that are substituted into the documentation by Maven include version numbers, installation paths, and product names. What information is substituted for each variable, largely depends on whether the deliverable is for Mobicents or JBCP.

Table 4.3, “SIP Presence Service Maven Variables” lists the Maven variables used within the SIP Presence Service, and explains what each one represents.


Note

At this stage, not all book have been "Mavenized". The Single Source Docs Project is in the early stages, and further testing must be undertaken before the strategy is fully realized.

If you want to view how the latest all-[user_guide_name].xml looks when published to Hudson, you can run Maven locally and produce the HTML Single file on demand.

You must have Maven installed and configured. If you have not yet configured Maven locally, you can find basic instructions in the Publican-JDocBook User Guide, available from the Red Hat SVN.

The Maven command to publish books to HTML Single is listed below for reference.

mvn compile -Denv.DOCNAME="[user_guide_name]" -Phtml-single

The [user_guide_name] is the same as the book names called by the mkbk script. The command is also provided as a comment in the mkbk script. For more information regarding the mkbk script, refer to Section 4.1.1.1, “Script for Publishing”.

The Mobicents User Documentation Suite is authored entirely in XML. For someone starting out with XML, there are many things to consider. What is the best authoring tool to use? What elements, and structure is definitely valid in Publican? How do I create screenshots that scale correctly?

This chapter discusses a number of helpful tips that will help new content authors produce valid, professional-looking XML documentation.

While you can write XML using a basic text editor, the easiest way to author XML is by using an XML Authoring Tool. A good XML Authoring Tool can auto-complete structure for you, and most importantly, validate the XML content you have written to ensure it is well-formed and valid to the standard.

The number of XML authoring tools available can seem daunting to a first-time content author. The following applications will help you to get started with XML authoring, and ease your transition into the world of structured authoring.

Syntext Serna Free XML Editor

Syntext offer a What You See Is What You Get (WYSIWYG) XML editor called Serna Free .

This editor hides much of the complexity of XML authoring, and lets you focus on authoring the content. You still must have good knowledge of XML structure, because the application still requires you to select the right parent tag before it can auto-complete subsequent selections. It is not aware of the specific tag requirements that Publican demands.

Serna is a cross-platform editor. By far, the best feature of this editor is the fact that you can open up the root XML file (for example, at the <book> level), and all xi:include links, cross-references, and graphics are opened up in the editor as one seamless file. This really helps with validation, and makes linking between chapters and sections easy.

Serna Free can introduce invalid XML structure into a user guide, even though the document is valid according to the Serna XML validator. This often happens when dragging and dropping large sections of XML structure, or when commenting sections back into the XML structure. If other authors are using programs other than Serna Free, the way they have commented out XML sections may not be supported by Serna.

XML Copy Editor

XML Copy Editor is a text-based editor, that has no WYSIWYG functionality. You must know your XML rules very well to use this editor.

XML Copy Editor contains a DocBook XML Parser, which will validate your XML. What it can't do is open all the xi:includes and resolve internal <xref> declarations that are not in the same file. This will result in a lot of validation errors, that may mask the real issue.

The advantage that XML Copy Editor offers is the ability to edit the XML structure in a basic text interface. This can be very useful when you are trying to debug your XML documentation. You can use a program such as xmllint to output a full XML file, and then re-validate it using XML Copy Editor. For more information about this technique, refer to Section 4.2.2, “Test Publishing Community Documentation ”

In DocBook, the way some content appears when published relies on a consistently applied XML structure. There are certain additions to structure that can be useful to help the reader to quickly grasp information. The following sections are grouped into common areas that you will use regularly in XML authoring.

To keep book structure consistent, the following guidelines must be followed when creating XML structure in your JBoss user guide.

Publican works with almost all DocBook 4.5 elements and their attributes, and most of these elements are supported. Supported elements and attributes are those whose presentation in Publican HTML and PDF output has been tested and is of an acceptable quality.

Other elements and attributes that are not known to be harmful or redundant but which have not been tested for quality are unsupported. If material within a particular DocBook element does not look correct when you build a document in HTML or PDF, the problem could be that the transformation logic for that element has not yet been tested. Build the document again and examine Publican's output as the document builds. Publican presents warnings about unsupported elements that it encounters in your XML files.

Finally, a small group of elements and attributes are disallowed. These elements and attributes are set out below, each accompanied by rationale explaining why it is disallowed.

<caution> , <tip>

DocBook XML supports five admonitions of varying severity: <tip>, <note>, <important>, <caution>, and <warning>. Taken together, these represent a very fine-grained set of distinctions. It is unlikely that these fine distinctions can be applied consistently within a document, especially when more than one person writes or maintains the document. Moreover, this level of granularity is meaningless to readers. By design, Publican disallows the <tip> and <caution> elements, these elements being the two most redundant in the set.

Use <note> instead of <tip>, and use either <important> or <warning> instead of <caution>. Some criteria by which you might select a suitable level of severity are presented in the Document Conventions section of the preface of books produced with Publican's default brand.

<entrytbl>

Publican depends on an external application, FOP, to render PDF documents. At present, FOP does not support nested tables, so attempts to build PDF files from Publican documents that contain nested tables fail.

Nested tables are therefore disallowed at least until they are supported in FOP. If you planned to include a nested table in your document, reconsider your data structure.

<glossdiv> , <glosslist>

This element set presents terms in glossaries in alphabetical order; however, the terms are sorted according to the original language of the XML, regardless of how these terms are translated into any other language. For example, a glossary produced with <glossdiv>s that looks like this in English:

looks like this in Spanish:

In a translated language that does not share the same writing system with the original language in which the XML was written, the result is even more nonsensical.

<inlinegraphic>

This element presents information as a graphic rather than as text and does not provide an option to present a text alternative to the graphic. This element therefore hides information from people with visual impairments. In jurisdictions that have legal requirements for electronic content to be accessible to people with visual impairments, documents that use this element will not satisfy those requirements. Section 508 of the Rehabilitation Act of 1973[1] is an example of such a requirement for federal agencies in the United States.

Note that <inlinegraphic> is not valid in DocBook version 5.

<link>

The <link> element provides a general-purpose hyperlink and therefore offers nothing that the <xref> and <ulink> elements do not, for internal and external hyperlinks respectively. The <link> element is disallowed due to its redundancy.

<olink>

The <olink> element provides cross-references between XML documents. For <olink>s to work outside of documents that are all hosted within the same library of XML files, you must provide a URL for the document to which you are linking. In environments that use <olink>s, these URLs can be supplied either as an XML entity or with a server-side script. Publican produces documents intended for wide dissemination in which URLs are always necessary for cross-references. Therefore, the <olink> element offers no advantage over the <ulink> element, and is disallowed due to its redundancy.

<[element] xreflabel="[any_string_here]">

The presence of an <xreflabel> attribute reduces the usability of printed versions of a book. As well, attribute values are not seen by translators and, consequently, cannot be translated.

For example, if you have the following:



<chapter id="ch03" xreflabel="Chapter Three">
 <title>The Secret to Eternal Life</title>
 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]     

see <xref linkend="ch03"> for details.

when your XML is built to HTML, the <xref> element becomes an HTML anchor element as follows:



see <a href="#ch03">Chapter Three</a> for details.

The text contained by the anchor element is the same as the data in the <xreflabel> attribute. In this case, it means that readers of printed copies have less information available to them.

You could work around this if you make the value of the <xreflabel> attribute the same as the text within the <title></title> element. However, this duplication increases the risk of typo-level errors and otherwise offers no underlying improvement. And it still reduces the amount of information presented to readers of printed copies.

The following XML:



<chapter id="ch03" xreflabel="The Secret to Eternal Life">
 <title>The Secret to Eternal Life</title>
 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]     

see >xref linkend="ch03"> for details.

Will result in an HTML anchor element as follows:



see <a href="#ch03">The Secret to Eternal Life</a> for details.

This is not as informative as the text presented to a reader if you do not use an <xreflabel> attribute. The following:



<chapter id="ch03">
 <title>The Secret to Eternal Life</title>
 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]  

see <xref linkend="ch03"> for details.

transforms the <xref> element as follows when built to HTML:



see <a href="#ch03">Chapter 3: The Secret to Eternal Life</a> for details.

More important, however, are the translation problems that <xreflabel> elements cause. Attribute values are not seen by translators. Consequently, they are not translated. Consider the second example above again:



<chapter id="ch03" xreflabel="The Secret to Eternal Life">
 <title>The Secret to Eternal Life</title>
 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]  

see <xref linkend="ch03"> for details.

In English, the <xref> is still transformed into an anchor element as follows:



see <a href="#ch03">The Secret to Eternal Life</a> for details.

Someone reading the German version, however, will have this as their underlying HTML:



Sehen Sie <a href="#ch03">The Secret to Eternal Life</a> f�r Details.

If the <xreflabel> attribute is not used, the title and chapter indicator, both properly translated, appear to the reader. That is, the following:



<chapter id="ch03">
 <title>The Secret to Eternal Life</title>
 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]  

see <xref linkend="ch03"> for details.

will, after translation, present thus to a German-speaking reader:



Sehen Sie <a href="#ch03">Kapitel 3: Das Geheimnis des ewigen Lebens</a> f�r Details.

This is, not surprisingly, what we want.

The xreflabel attribute is therefore disallowed.

<[element] endterm="[any_string_here]">

The endterm attribute allows you to present hyperlinked text other than the name of the section or chapter to which the hyperlink points. As such, it decreases the usability of printed versions of documents, and causes difficulty for translators.

The text presented in an element (such as an <xref>) that contains the endterm attribute is taken from a <titleabbrev> element in the target chapter or section. Although the content of the <titleabbrev> element is available to translators in the document's PO files, it is removed from the context of the <xref>. The absence of this context makes reliable translation impossible in languages that mark prepositions or articles for grammatical number and grammatical gender.

For example, if you have the following:



<chapter id="The_Secret">
 <title>The Secret to Eternal Life</title>
 <titleabbrev id="final">the final chapter</titleabbrev>

 <para>The secret to eternal life is</para>
</chapter>

[more deathless prose here]     

The solution is in <xref linkend="The_Secret" endterm="final"/>.

The text surrounding the <xref> presents in the English version of the document as:

A translator sees the <titleabbrev> in a PO file as:

#. Tag: titleabbrev
#, no-c-format
msgid "the final chapter"
msgstr ""

and sees the text that contains the <xref> elsewhere in the PO file (or, more likely, in a completely different PO file) as:

#. Tag: para
#, no-c-format
msgid "The solution is in <xref linkend="The_Secret" endterm="final"/>."
msgstr ""

The translator has no way of telling what will be substituted for <xref linkend="The_Secret" endterm="final"/> when the document builds, so a translation in Italian might read:

#. Tag: para
#, no-c-format
msgid "The solution is in <xref linkend="The_Secret" endterm="final"/>."
msgstr "La soluzione è in <xref linkend="The_Secret" endterm="final"/>."

Note the preposition in.

If the translator rendered the final chapter in Italian as l'ultimo capitolo, the result when the document builds will read:

This result is comprehensible, but inelegant, because Italian combines some of its prepositions with its definite articles. More elegant Italian would be:

Without knowing what text will appear in place of <xref linkend="The_Secret" endterm="final"/>, the translator into Italian cannot know whether to leave the preposition in to stand by itself, or which of seven different possible combinations with the definite article to use: nel, nei, nello, nell', negli, nella, or nelle.

Furthermore, note that the combined preposition and article also poses a problem with regard to whether this word should be placed in the text surrounding the <xref>, or in the <titleabbrev>. Whichever of these two solutions the translator selects will cause problems when the endterm appears in other grammatical contexts, because not all Italian prepositions can combine with the definite article in this way.

Due to the problems that endterm presents for translation, Publican disallows this attribute.

Entities present special obstacles to translators and can preclude the production of high-quality translations. The very nature of an entity is that the word or phrase represented by the entity is rendered exactly the same way every time that it occurs in the document, in every language. This inflexibility means that the word or word group represented by the entity might be illegible or incomprehensible in the target language and that the word or word group represented by the entity cannot change when the grammatical rules of the target language require them to change. Furthermore, because entities are not transformed when XML is converted to PO, translators cannot select the correct words that surround the entity, as required by the grammatical rules of the target language.

If you define an entity — <!ENTITY LIFT "Liberty Installation and Formatting Tome"> — you can enter &LIFT in your XML and it will appear as Liberty Installation and Formatting Tome every time the book is built as HTML, PDF or text.

Entities are not transformed when XML is converted to PO, however. Consequently, translators never see Liberty Installation and Formatting Tome. Instead they see &LIFT, which they cannot translate.

Consider something as simple as the following English sentence fragment being translated into a related language: German.

A translation of this might be as follows:

Because there is no text missing, the title can be translated into elegant German. Also, note the use of dem, the correct form of the definite article ('the') when referring to a Wälzer ('tome') in this grammatical context.

By contrast, if entities are used, the entry in the PO file says:

#. Tag: para
#, no-c-format
msgid "As noted in the <citetitle>&LIFT</citetitle>, Chapter 3"
msgstr ""

The translation of this would probably run thus:

#. Tag: para
#, no-c-format
msgid "As noted in the <citetitle>&LIFT</citetitle>, Chapter 3"
msgstr "Wie in <citetitle>&LIFT</citetitle>, Kapitel 3, erwähnt"

And the presentation would be thus:

This, of course, leaves the title in English, including words like 'Tome' and 'Formatting' that readers are unlikely to understand. Also, the translator is forced to omit the definite article dem, a more general construction that comes close to a hybrid of English and German that German speakers call Denglisch or Angleutsch. Many German speakers consider this approach incorrect and almost all consider it inelegant.

Equivalent problems emerge with a fragment such as this:

With no text hidden behind an entity, a German translation of this might be:

If an entity was used to save the writer time, the translator has to deal with this:

#. Tag: para
#, no-c-format
msgid "However, a careful reading of the <citetitle>&LIFT</citetitle> afterword shows that"
msgstr ""

And the translation would be subtly but importantly different:

#. Tag: para
#, no-c-format
msgid "However, a careful reading of the <citetitle>&LIFT</citetitle> afterword shows that"
msgstr "Jedoch ergibt ein sorgfältiges Lesen des Nachworts für <citetitle>&LIFT</citetitle>, dass"

When presented to a reader, this would appear as follows:

Again, note the missing definite article (den in this grammatical context). This is inelegant but necessary since the translator can otherwise only guess which form of the definite article (den, die or das) to use, which would inevitably lead to error.

Finally, consider that although a particular word never changes its form in English, this is not necessarily true of other languages, even when the word is a proper noun such as the name of a product. In many languages, nouns change (inflect) their form according to their role in a sentence (their grammatical case). An XML entity set to represent an English noun or noun phrase therefore makes correct translation impossible in such languages.

For example, if you write a document that could apply to more than one product, you might be tempted to set an entity such as &PRODUCT. The advantage of this approach is that by simply changing this value in the Doc_Name.ent file, you could easily adjust the book to document (for example) Red Hat Enterprise Linux, Fedora, or CentOS. However, while the proper noun Fedora never varies in English, it has six different forms in Czech, depending on one of seven ways that you can use it in a sentence:


For example:

  • Fedora je linuxová distribuce. — Fedora is a Linux distribution.

  • Inštalácia Fedory — Installation of Fedora

  • Stáhnout Fedoru — Get Fedora

  • Přispějte Fedoře — Contribute to Fedora

  • Ahoj, Fedoro! — Hello Fedora!

  • Ve Fedoře 10 — In Fedora 10

  • S Fedorou získáváte nejnovější — With Fedora, you get the latest

A sentence that begins S Fedora získáváte nejnovější remains comprehensible to Czech readers, but the result is not grammatically correct. The same effect can be simulated in English, because although English nouns lost their case endings during the Middle Ages, English pronouns are still inflected. The sentence, 'Me see she' is completely comprehensible to English speakers, but is not what they expect to read, because the form of the pronouns me and she is not correct. Me is the accusative form of the pronoun, but because it is the subject of the sentence, the pronoun should take the nominative form, I. Similarly, she is nominative case, but as the direct object of the sentence the pronoun should take its accusative form, her.

Nouns in most Slavic languages like Russian, Ukrainian, Czech, Polish, Serbian, and Croatian have seven different cases. Nouns in FinnoUgaric languages such as Finnish, Hungarian, and Estonian have between fifteen and seventeen cases. Other languages alter nouns for other reasons. For example, Scandinavian languages inflect nouns to indicate definiteness — whether the noun refers to 'a thing' or 'the thing' — and some dialects of those languages inflect nouns both for definiteness and for grammatical case.

Now multiply such problems by the more than 40 languages that Publican currently supports. Other than the few non-translated strings that Publican specifies by default in the Doc_Name.ent file, entities might prove useful for version numbers of products. Beyond that, the use of entities is tantamount to a conscious effort to inhibit and reduce the quality of translations. Furthermore, readers of your document in a language that inflects nouns (whether for case, definiteness, or other reasons) will not know that the bad grammar is the result of XML entities that you set — they will probably assume that the translator is incompetent.

Chapters and Sections form the underlying skeleton for each guide. Therefore, structuring these important elements consistently is important.

New Chapter or Section

Over the life of a product, user guides often require content to be reorganized. Having sections directly included in a chapter, can make reordering book structure difficult. For this reason, when adding a <chapter> or <section> to an existing user guide, each <chapter> and <section> must be a separate XML file.

The file must be included in the book using an xi:include reference. See http://www.w3.org/TR/xinclude/#syntax for examples of xi:include syntax.

Naming Chapter or Section XML Files

A complete XML user guide may consist of a large number of XML files. Each file included in the book should be logically, and consistently, named so it is easy to include a file where it is required in the book's structure. For information about recommended file naming standards, refer to Table 4.1, “Book Components” in Section 4.1.1, “XML Book Components”.

ID Attributes for Chapter or Section XML Files

To allow cross-referencing within the book, the id attribute must be set for each chapter or section. The format for the chapter or section ID is explicit, to ensure cross-referencing within each user guide is consistent. For more information about links and references, refer to Section 6.14, “Links and References”

The id attribute is applied to the <chapter> or <section> element, and uses the following format:

  • <chapter id="chap-Book_Name-Chapter_Title">

  • <section id="sect-Book_Name-Chapter_Title-Section_Title">

For example, the XML ID of this section would be <section id="sect-Mobicents_Community_Documentation-Structure_Guidelines-Chapters_and_Sections">.

The two most common list types in DocBook are not named according to such programs as Microsoft Word, or Open Office. You would think that for a bulleted list, you would start the list using <bullets> or <bulletedlist>. Likewise, for a numbered list, you might consider using <numlist> or <numberedlist>.

In DocBook, these types of lists are referred to according to the following nomenclature:

Lead-in Sentence is Mandatory

A list must have an introductory sentence, and it must not be a sentence fragment. Sentence fragments are very hard to translate.

<itemizedlist>

An itemized list is used to replace a semi-colon separated list in a sentence.

The XML form of an itemized list has a number of mandatory elements. For a complete list, refer to the DocBook.org <itemizedlist> page.


You can further enhance the <itemizedlist> by adding in a <title> element after the opening <itemizedlist> element. A title might assist the reader with understanding what a large list contains. The XML structure looks like this when published:

<itemizedlist> Title

  • Item One.

  • Item Two.

  • Item Three.

<orderedlist>

An <orderedlist> is just like an <itemizedlist>, except it displays the content in number order. This type of list is better suited to listing small sub-steps in <procedure> lists.

The XML form of an itemized list has a number of mandatory elements. For a complete list, refer to the DocBook.org <itemizedlist> page.


<variablelist>

A <variablelist> can be used to define a list of terms, or in situations where a table of only two columns might be used. Variable lists can have optional titles.


When it is necessary to document a complex set of installation instructions, an <orderedlist> is usually not the best XML element to choose. It has limitations regarding what level of detail each <listitem> element can contain.

The best option for large work-flows, or detailed steps, is the <procedure> element.

You may not be aware, but this element is used extensively throughout this user guide to capture the steps involved in the Authoring Process.

The biggest advantage to using a <procedure> element is that it uses the <step> element. <step> elements can contain a much wider variety of child elements than the <listitem> element used in <itemizedlist> and <orderedlist>.

The XML form of a procedure has a number of mandatory elements. For a complete list, refer to the DocBook.org <procedure> page. Be sure to visit the pages of the child elements that the <procedure> element supports, particularly the <step> element.

The minimum set of elements required for all procedure lists in the Mobicents UDS are described in the following example:


You can further enhance the <procedure> by adding in any number of supported child elements into each <step>. Each <step> can contain any number of <para> elements, and also permits <itemizedlist> and <orderedlist> elements. Be sure that the elements inserted are not included in Section 6.1.1, “Disallowed elements”.

Example 6.5. <procedure> Extra Elements


Depending on the authoring tools you use to edit your XML documentation, inserting tables may take a few mouse clicks. If you prefer to author in plain text mode, you will need sound knowledge of XML table structure so the table you create is valid, and looks the way you want it to when published.

For many new XML authors, tables cause a lot of problems . This section describes the components of an XML table, and includes an XML sample of a three column table. The concept of splitting cells in a row is also discussed.

For the definitive list of table elements and attributes, refer to the Docbook.org <table> page.

Consider <variablelist> for two-column tables

In certain situations, a table that would otherwise only have two columns may be better implemented as a variable list, using the <variablelist> element (see Section 6.4, “Lists”).

The majority of tables used throughout JBoss documentation are classed as formal tables. In contrast to informal tables, formal tables always feature a <title> that gives the reader a basic summary of the table contents. A formal table consists of the following structural elements (in order):

<table>

The parent element of all formal tables, which contains all the child elements. <table> accepts attributes that control how the table is processed at publish time. The frame and pgwide attributes are applied to the <table> element.

<tgroup>

Below the <table> element, the <tgroup> element contains the information that governs the basic framework of your table. <tgroup> contains settings that govern the amount of columns in the table, along with the <row> structural information. <tgroup> also contains column and span specifications required to set the table geometry and cell formatting.

<thead>

Defines the column headers for the table. <thead> is also used if you include a table footer, however table footers are not common in JBoss documentation.

<colspec>

Defines the column specifications for the table. Column and row separators, and column widths, are specified as attributes of this element. <colspec> is also used if you include a header (<thead>)

<tbody>

<tbody> is a wrapper element for the <row> elements that comprise the table. Generally, no attributes are applied to the <tbody> element.

<row>

Defines a row in the table, and contains the <entry> elements that comprise each cell in the table.

<entry>

Defines a cell in the table. Each cell can contain block elements or inline elements, but not both concurrently.

For example, one <entry> might contain a paragraph or a list while another <entry> contains parsed character data (#PCDATA), but no single <entry> can contain a mixture of both.


When published, the XML structure described in Example 6.6, “Three-column Table” publishes in the following way.


Merging Cells Horizontally (spanning cells)

Merging cells horizontally is controlled by specifying the namest and nameend attributes in the <entry> element. The colname value of the starting column and the finishing column are specified in the <entry> element that you want the cell span to start from.

Example 6.7. Cell spanning

This example describes how to merge the B and C cells together in Table 6.2, “Three-column Table” using the namest and nameend attributes.

In the <thead> element of the table, the <colspec> element has two attributes specified: colnum and colname. By default, the colname attribute starts from c0.

To span the B and C cells, you need to specify namest="c1" as the starting cell (the second column) and nameend="c2" as the finishing cell (the third column).


<row>
  <entry>A</entry>
  <entry 
namest =
"c1"  
nameend =
"c2" >BC</entry>
</row>
<row>
  <entry>D</entry>
  <entry>E</entry>
  <entry>F</entry>
</row>

There are a number of graphical elements that are supported in DocBook. For consistency, the best element to use is <figure>.

The <figure> element has the advantage of containing a well-formatted title for the image. It is suitable for both diagrams, and screenshots, which are included through the use of the <mediaobject> element. The <mediaobject> element must also contain a <textobject> element with a description of the image for accessibility purposes.


The XML structure looks like this when published:

Figure 6.1. JBoss Community Logo


The <imagedata> element defines the image path, and sets the way the image is displayed in the published output. Use the following recommendations when inserting <figure> elements:

  • To scale large diagrams or screenshots to fit within page boundaries, set width="450" to scale the screen shot within the boundaries of an A4 page.

  • If you need to include a screen shot of a large user interface, consider including only the area that relates to what you are discussing. You can get a much better result if you capture a small section of a user interface, because the user can easily see the detail of the area referred to in the procedure or concept.

If you are using a Linux-based operating system, chances are you will be using a graphics package such as the GNU Image Manipulation Program (GIMP). You can use the GIMP to capture screenshots, and save them in a format that will provide the best output for both HTML and PDF.

Procedure 6.3. Correctly capturing screenshots using the GIMP

The following procedure describes how to correctly capture and save a screen shot using the Create Screenshot function in The GIMP. The procedure assumes that you have The GIMP installed, and the program is open.

  1. Prepare the Content to Capture

    Ensure you have the correct application open, and that the part of the application you need to capture is activated. The GIMP will capture the screen immediately, unless a delay is set.

  2. Select the Create Screenshot Option

    Click File Create Screenshot.

  3. Confirm Capture Options

    In the Screenshot dialog box, select the capture option you require according to the following guidelines:

    • Do not include window decorations in any of your screenshots.

    • Consider capturing only the section of the screen you need to refer to in the documentation. It will be clearer for the reader.

  4. Capture the Screen

    Click the Snap button to begin capturing the screen area. Select the program, or area of the screen you want to capture.

  5. Scale the Image

    Click ImageScale Image.

    If you need to scale a large screen shot or diagram, use the following settings:

    • In the Image Size group, set the Width to (no greater than) 450 pixels.

    • In the Quality group, set Interpolation to Sinc (Lancosz3).

    Click Scale to set the image scale.

  6. Save the Image

    Click FileSave As.

    Name the image according to the image file naming conventions. If in doubt, look at the naming convention in the Images folder of your user guide directory.

    In the Save Image dialog, select PNG image (*.png) from the Image Type drop down menu.

    Click Save.

To alert readers to information that might otherwise be overlooked, DocBook v4.5 supports a number of admonitions you can use to highlight concepts for readers. The supported options are limited to:

The options are listed in order of priority, and alert the reader to the following conditions:

The way these elements are formatted depends on what publishing system you use to produce a user guide. The Publican JBoss brand formats this information in a conspicuous way; lots of color, bold graphics, and a slightly different typeface to the normal content. The Publican jboss-community brand and the defalut jDocBook style formats the information slightly less aggressively by using softer colors, but each admonition is still quite conspicuous to the reader.

When writing information for any of these elements, you can maximize the effectiveness of the information by keeping the structure of the information consistent. Consider the following examples to see how effective this is.


Open Office Package Dependencies

Do not uninstall Open Office from Gnome Desktop systems. Open Office package dependencies may result in critical system files, including X Windows System files, being unintentionally removed.

Install MSS for JBoss 0.7 or Later

Only MSS for JBoss v0.7 bundles the Diameter JBoss Service (the Diameter SAR, or Servlet Archive), which is required to run the Diameter Event-Charging Service.

In DocBook 4.5, there are a number of elements that can be used to mark-up items that the user has access to in a program Graphical User Interface (GUI). A user appreciates consistency in the way user commands are represented because it allows them to quickly identify the sequence of menu transitions required to execute a product feature.

Use the following elements as appropriate when describing a GUI:

<guimenu>, <guisubmenu>, and <guimenuitem> elements can be listed inside a <menuchoice> to provide a simplified notation for traversing the menu hierarchy, as demonstrated in Example 6.10, “GUI elements example”. Alternatively each can be used individually to describe menus and menu items.


This section lists helpful elements for use when describing and documenting the use of applications and utilities. Also refer to Section 6.11, “Menus, Buttons, and Labels” for details on documenting an application or utility with a Graphical User Interface (GUI).

File and Directory Names

Use for files and directories. For packages and modules, use <package>.

Packages and Modules

Use the <package> element for packages and modules, such as those which need to be installed for a particular application.


<package> requirements

The <package> element was introduced in DocBook version 4.4, so documents using older versions will need to update their DOCTYPE declaration to use it. A minimum version of DocBook version 4.5 is recommended. The DOCTYPE declaration can be updated with the following code at the top of the document:



<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
...
]>
Parameter Names and Parameter Values

Use the <parameter> element when referring to the name of a parameter for a command. Use <literal> for the actual value of a parameter.


The <parameter> element can also be used for parameters in a method in a programming language. If both uses appear in the same document it may be necessary to differentiate them using the class attribute, which can be set to command, function, or option.

Program Names

Use the <application> element for software applications, for example, Mozilla Firefox.

Protocols

Use the <systemitem> element for protocols in general, such as SSH, TCP, telnet, CGI, and protocols in general.

User-replaceable Text

Use the <replaceable> element for marking descriptive text in a command or computer output which the user is expected to replace with text specific to their particular application. It describes what the user is expected to use, but not the actual text they should use.


Terminal Commands

Use the <command> element for entered commands, such as ls, top, find, mount, and bash. When referring to applications launched this way, also use <command>, for example, firefox. When describing lengthy commands it may be suitable to mark up additional parameters within the <command> element with the <parameter> element.

Terminal Command Output

Use the <computeroutput> element in-line with text to represent text that is shown on a computer screen, such as output from a command. For displaying output text in a block, use the <screen> element.


Text Displayed On-screen

Use the <screen> element to represent text that is shown on a screen, usually an output from a command. The text is shown in a block. For referring to display text in-line, use the <computeroutput> element.


User Account Names

Use the <systemitem> element for user account names.

Code samples feature prominently throughout JBoss documentation. The correct XML element to use for XML and Java code block examples is the <programlisting> element.

<programlisting> has been used extensively throughout this user guide to highlight the XML structure you need to use in specific situations. There are two ways you will need to use this element within your user documentation.

An advantage of using <programlisting> is that you can specify the way Maven and Publican displays the information to the user. This is achieved using the language and role attribute. When language is defined, Publican will format the code example with highlighting that will assist the reader in understanding the code structure. The role attribute does the same when using Maven.

XML Samples

For XML samples, you must specify "XML" (in uppercase) as the language and role values.

The code for an XML program listing will look similar to the following example.


<programlisting language="XML" role="XML">
  <important>
    <title>Important Summary</title>
    <para>Information that will save the reader unnecessary
      frustration.</para>
  </important>
</programlisting>

When output, the XML elements are highlighted to assist the reader.


<important>
    <title>Important Summary</title>
    <para>Information that will save the reader unnecessary
      frustration.</para>
</important>

If XML is not specified, the output looks far less attractive.

<important>
    <title>Important Summary</title>
    <para>Information that will save the reader unnecessary
      frustration.</para>
</important>
Java Samples

For Java code samples, the same rules apply. Instead of "XML", "JAVA" is specified as the role attribute value and "Java" for the language attribute.



package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
   public static void main(String args[]) 
       throws Exception
   {
      InitialContext iniCtx = new InitialContext();
      Object         ref    = iniCtx.lookup("EchoBean");
      EchoHome       home   = (EchoHome) ref;
      Echo           echo   = home.create();
      System.out.println("Created Echo");
      System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
   }
   
}
Long code samples

For lengthy code samples of more then a couple of lines, it is preferable to use an <xi:include> to an external file which contains only the code sample. These code sample files should end in the relevant extension and should be placed in an extras/ directory located in the source language directory.


In-Line Code Samples

Where <programlisting> presents the code in a separate block, there are multiple elements to use when using code samples in-line with other text.

Attribute, Property, and Parameter Values

Use the <literal> element for values of attributes, properties and parameters. In the Directory Server documentation, for example, the nsslapd-accesslog-level attribute can have values of 0, 4, 256, and beyond. The <literal> elements should be used for these values.

Alternatively, the <option> element can be used for those attributes, properties and parameters with a limited set of possible values, for example, a boolean value of true or false, or an enumerated type.

Use the <parameter> element when referring to the name of the parameter, attribute, or property itself. When writing the parameter and its value together, or the parameter and its method or class together, use the <code> element.

Classes (Java or similar)

Use the <classname> element in-line with text to mark classes or similar objects in programming languages. Typically it refers to a class in an object-oriented language, such as Java.


When writing the class together with a method or parameter, use the <code> element.

Computer Programming Code In-line With Text

Use the <code> element in-line with text to mark computer programming code.

The <code> element does not offer syntax highlighting. To provide sample code in a block, use the <programlisting> element instead.

For simplicity, do not mark individual elements within a <code> element. If you feel identifying elements of the code is necessary for readability, the following elements are available:


Data Types

Use the <type> element for data types, such as int, char, or boolean. Although the markup is not styled by Publican, it clarifies the term's use for translation. For actual values for data types, use the <literal> element.


Method or Constructor Parameter Names

Use the <parameter> element when referring to the name of a parameter for a method or constructor in a programming language. Use <literal> for the actual value of a parameter.

When writing the parameter and its value together, or the parameter and its method or class together, use the <code> element.

The <parameter> element can also be used for parameters in a command. If both uses appear in the same document it may be necessary to differentiate them using the class attribute, which can be set to command, function, or option.

Programming Methods

Use the <methodname> element in-line with text to mark the name of a method in a programming language.

If including the class to clarify the method name, include the whole class in the <methodname> element rather than marking the class part with <classname>.


When writing the method together with its class or parameters, use the <code> element.

Variable and Attributes Names (all languages)

Use the <varname> element when referring to the name of a variable in an object-oriented language such as Java, or the name of an attribute of an XML element. Use <literal> (or <option> if appropriate) for the actual value of a variable or attribute.


XML Elements

Use the <sgmltag> element in-line with text to mark XML elements.

When writing the element together with attributes, use the <code> element.


Cross-references within the book

Use the <xref> element to cross-reference a chapter, section, or other content block. The linkend attribute points to the target block's id attribute.


Links to external URLs

Use the <ulink> element to link to an external URL. The url attribute points to the target link, and must be a complete URL.

Example 6.24. <ulink> example



For further information, refer to <ulink url="http://www.jboss.org" />.

By creating the link without providing a link alias, the reader can see the full URL. This is especially important to consider if you are producing both print-ready and online documentation.


When you need to include a <ulink> that resolves to a lengthy URL, you may wish to supply a link alias so the link is formatted cleanly. The reader can see the full URL, however the information wraps to the next line which can be distracting to the reader. If you

Example 6.25. <ulink> link alias examples

Long URL without an alias:



For further information, refer to <ulink url="http://docs.fedoraproject.org/installation-quick-start-guide/f12/en-US/pdf/Fedora_12_Installation_Quick_Start_Guide.pdf"/>.

PDF documentation handles link aliases by creating a footnote at the bottom of each page. This formatting can distract readers because they have to follow the footnote number and locate the link at the bottom of the page.

Long URL with an alias:



For further information about installing Fedora 12, refer to the <ulink url="http://docs.fedoraproject.org/installation-quick-start-guide/f12/en-US/pdf/Fedora_12_Installation_Quick_Start_Guide.pdf">Installation Quick Start Guide</ulink>.

By constructing the sentence differently, you can include the link for those readers that access the online version of the documentation. Readers who prefer PDF documentation are also supported, because they know what to search for when they are next online.


References to external content

Use the <citetitle> element when referring to another book, article, website, or other form of external content.

Unlike the <xref> element, <citetitle> does not link to the referenced section, so if the name of the referenced book is changed the <citetitle> element will need to be updated manually. External links such as those using the <ulink> element should not be used to reference another book, as an external link may become outdated at a later time.


To ensure that multiple authors can work on different sections of a single guide, procedures governing the way authors contribute content to the guide must be clearly communicated and understood by all contributors.

The following sections detail the procedures that must be followed by all community content authors. Failure to follow these procedures consistently will likely result in wasted writing effort and failed GCode SVN commits.

The process of writing Mobicents documentation changes can be described in the following main phases:

  1. GCode Documentation Ticket

  2. Authoring

  3. Review

  4. Editing

  5. Fixed

All documentation changes must originate from a documentation ticket. Documentation tickets allows changes associated with a product enhancement to be tracked easily from the origins of the enhancement to the completed changes.

When a documentation ticket is closed in the final phase, the ticket remains in the GCode Ticket system for posterity.

Procedure 7.1. Creating a Documentation Ticket

The following procedure details how to create a documentation ticket as a result of a product enhancement.

  1. Search Before Opening a New Issue

    On the Issues page, enter a search query that reflects the issue you have discovered.

    Search Open Issues for [search query]. Click Search to retrieve the results.

    If a suitable match is found, check with the person assigned to the ticket to see if the defect can be appended to the existing ticket.

    If the existing ticket has been closed, raise a new ticket to capture the information.

    Be thorough in your searches; it will save duplicating tickets and unnecessary admin time spent on ticket management.

  2. Open a New Issue

    If you can not find a duplicate ticket, navigate to the Mobicents GCode Issues tab, and click the New Issue link.

  3. Select the Docs Enhancement Template

    From the Issue Template field, select the Docs Enhancement template type.

  4. Complete the Summary field

    Prefix the summary with one of the following codes to clearly identify the affected user guide:

    • [DIA Guide] - Diameter User Guide

    • [JSS Guide] - JAIN SLEE Server User Guide

    • [MSS Guide] - SIP Servlets Server User Guide

    • [MMS Guide] - Media Server User Guide

    • [SPS Guide] - SIP Presence Service User Guide

    • [PLAT Guide] - Platform Installation Guide

    Include a descriptive (but short) summary of the enhancement in the Summary field.

  5. Complete the Description Field

    The description field must contain specific details about the defect. The more detailed the information, the easier it will be for the assignee to complete the ticket with minimal assistance. Follow the headings in the Docs Enhancement template and provide the necessary information.

    Include website links to content for the enhancement.

    Include the developer ticket to which the enhancement relates. If the ticket isn't related to a code change, include a link to the forum discussion history surrounding the enhancement.

    Include a Chapter/Section reference (including the name) to the affected area in the user guide.

  6. Change the Initial Ticket Status

    If you are raising a ticket for another user guide, or you are not a developer, change the status to New.

    If you are raising a ticket for a development change you made, change the status to Accepted.

  7. Complete the Cc field.

    Add the email address of the current Red Hat Technical Writer (RHTW) assigned to the project. The RHTW will be required to edit your work in a later phase.

    If you know the email address of the people responsible for maintaining each guide, include them in the Cc field.

  8. Append Labels

    Labels are critical in a ticket, because they enable the ticket to be searched using consistent tags.

    You will notice that two labels are automatically added; Type-Enhancement, Priority-Medium and Component-Docs. These categories are acceptable by default.

    Append the following extra categories at a minimum to the Labels field:

    • Component-[server_name] - specifies the server to which the ticket relates.

    • Version-[version_number] - specifies the base version number affected by this ticket.

  9. Save the Ticket

    Click Save changes.

The ticket is now saved in the system, and the people in the Owner and Cc fields have been sent a link to the ticket for comment.

Authoring can begin after the GCode ticket has been accepted by the developer/s responsible for the affected server. The Mobicents User Documentation Suite (UDS) is written in XML, and stored in the GCode SVN.

The audience of this guide is primarily Mobicents developers who should already be familiar with SVN usage. The specifics of SVN operation are therefore not described in detail.

The GCode SVN Documentation Repository must be checked out as a working copy prior to making any changes.

Procedure 7.3. Check Out Server Repository

  1. Trunk or Branch

    Determine what version of the server the enhancement relates to. The /trunk directory contains the latest version of the server currently in development.

    Most documentation changes will occur in /trunk, however there may be instances where an enhancement must be appended to previous server releases.

    The GCode Documentation Ticket will indicate which release the changes belongs to from the information added to the Labels section of the ticket.

    For GCode Repository Structure, refer to Chapter 2, Documentation Repository

  2. Check Out a Working Copy

    Check out a working copy of the affected server release to your local hard drive.

    Note

    If you have a working copy of the directory checked-out in another working folder (for example, a server code repository working copy), execute SVN Update on the documentation folder in this directory before changing any XML content.

    The working copy will usually be the /trunk version. If the ticket requires the change to be made in /trunk as well as a /branch, then make the changes in /trunk first and back-port into each affected /branch.

  3. Open the Working Directory

    Navigate to the en-US directory, and open the directory to display the files.

Once a working copy is checked out of the GCode SVN repository, making the changes specified in the GCode Documentation Ticket can begin. Updating the XML details the steps to updating an existing section in a book. The process is the same for any documentation updates.

Procedure 7.4. Updating the XML

  1. Updated the GCode Ticket

    Change the Status field of the GCode Documentation Ticket to Started. This informs other content authors that the ticket is no longer available in the ticket queue.

  2. Open the Chapter or Section XML File

    Navigate to the en-US directory in the User Guide repository.

    Select the XML file to edit, and open it in your preferred XML Authoring Tool.

  3. Locate the Area to Update

    The easiest way to locate the area in an XML file is to search for keywords. Use the information in the GCode Ticket to search for the affected area that requires updating.

  4. Check the XML Comment for the Authoring Status

    To allow other content authors to see what sections of the guide can be edited, XML comments are used.

    Before making a change, you must ensure that the affected area is not being worked on (or 'claimed') by another author.

    Each content author is responsible for updating and maintaining the XML Comment Block at each stage of the authoring process.

    XML comments must be placed at the parent XML level. For example, if a change is required to content contained in a <para> tag within a <section>, the XML comment must be inserted at the <section> level. The XML comment uses the following structure:

    
    
    <!--GCODE TICKET: [Ticket Number] AUTHOR: [Author Name] DATE CHANGED: yyyymmdd STATUS:  Authoring|Review|Editing|Fixed  SUMMARY: [Brief summary of change] -->
  5. Claim the Section for Editing

    If the section is not marked as being changed by another content author, you can proceed to 'claim' the section for editing.

    Change the XML comment to reflect the following information:

    
    <!--GCODE TICKET: [Ticket Number] AUTHOR: [Author Name] DATE CHANGED: yyyymmdd STATUS:  Authoring|Review|Editing|Fixed  SUMMARY: [Brief summary of change]-->
    AUTHOR:

    Your name must be consistent so you can search for other instances within the XML. Consider using your Red Hat email username for the AUTHOR. For example, jmorgan (for Jared Morgan).

    STATUS:

    Change the Status to Authoring.

  6. Make Changes

    Incorporate the information from the GCode Documentation Ticket. When making changes, follow these recommendations.

    Authoring Recommendations

    Validate XML Regularly

    It is easy to make XML structure errors if you are not using an XML Editing program that controls structure for you. Regularly validating your content will identify structure issues early. You will have a better idea about what section might contain the error, based on what section you have recently edited.

    If your XML does not validate, refer to Chapter 4, Publican and Maven for troubleshooting information. If you are not using Publican or a Linux distribution, then you must find another way to validate your content.

    Smaller Changes Result In Trouble-free Commits

    Make smaller, consecutive changes to existing XML chapters, rather than large structural changes. Commit your validated changes regularly.

    GCode SVN can merge small changes from multiple authors effectively. However, larger changes may result in SVN mismatches. You must manually resolve the SVN mismatch conflict. This is often very time consuming, and annoying.

    Strict Validation

    If you are using an XML Authoring Tool to author changes, always enable "Strict Validation". Strict Validation will prevent the introduction of invalid mark-up to your work.

  7. Spell Check Changes

    All changes must be spell checked. The English (US) language is used throughout the Mobicents UDS. Ensure your XML Authoring Tool has the English (US) dictionary set as the default spell checker language.

  8. Publish and Review

    Publish your changes to HTML-Single using Publican and Maven JDocBook.

    Review your changes to check if the display and presentation meets the existing standards of the Mobicents UDS.

    Note

    If you are not using the Publican Tool chain in your daily XML editing tasks, you can still test publish using your XML Authoring tool's Publish feature to get an idea of what the publish might look like.

    The operation will vary between editors, but the main thing is that the book will not publish if it is not structurally valid.

  9. Commit Changes to GCode SVN

    Commit structurally valid XML back into the GCode SVN regularly throughout the day.

    For each commit, make a note of the SVN commit number so it can be added to the GCode Ticket when you update the ticket with your progress.

    Commit Regularly

    For documentation, the risk of SVN merge failure increases the longer you wait between commits. It is much easier to commit regularly than to manually merge your changes into someone else's changes.

The Review phase involves another team member peer reviewing the changes made by the original content author. This important phase provides the opportunity to review the changes for technical accuracy.

Additionally, it provides a chance for your peers to comment on how user-friendly the information is. After all, if the content is not user friendly, then a user probably won't use it.

The Review phase involves the content author and the reviewer in that the content author must discuss and incorporate any feedback provided by the reviewer.

Before sending off the changes for review, there are a few administration tasks that must be completed.

Create Review Document requires the XML changes to be published to HTML-Single format using the mkbk script, the Publican Tool chain, and Maven JDocBook. For this procedure, you must have Publican and Maven JDocBook configured according to the information in Chapter 4, Publican and Maven.

Create Review Document assumes that you are using Fedora or Red Hat Enterprise Linux, which are the currently supported Linux distributions for Publican.

Procedure 7.6. Create Review Document

  1. Navigate to the User Guide Directory

    Open a terminal, and navigate to the directory that contains the en-US documentation directory.

  2. Create Combined XML File

    Run the mkbk script and create the all-[server name].xml file.

    For command-line usage, refer to Chapter 4, Publican and Maven.

  3. Commit all-[server name].xml to GCode SVN

    Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.

  4. Request Hudson to Build a HTML-Single

    Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.

  5. Record the Build ID Number

    After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.

  6. Save and Close the GCode Ticket

    Click Save changes once the link to the review document has been appended to the ticket.

After completing the review preparation tasks, you are ready to send your changes to a project member for review.

The GCode Documentation Ticket contains the review request, and provides the reviewer with the information they need to complete the review.

Requesting Review using GCode Ticket describes the process to request a documentation review.

After the review request has been sent, the peer reviewer is notified that a review is waiting through an email notification from GCode. Thorough ticket review is key contributor to fantastic user documentation because other team members can use the opportunity to read the changes from a customer perspective. The content can be evaluated for technical accuracy and readability before being sent to the editing phase.

The goal of Peer Review is to discuss why your suggestions should be considered by the content author. The better your reasons for suggesting an improvement, the better the chances of having the content incorporated, or reaching a compromise.

Peer Reviewing Documentation Changes describes the process to follow when a review request is received from the GCode Ticket System.

Procedure 7.8. Peer Reviewing Documentation Changes

  1. Open the Ticket

    In the email notification, click the link in the ticket to take you to the GCode Documentation Ticket.

  2. Open the HTML Document

    The ticket should contain a direct link to the affected build version and section of the user guide hosted on the Hudson Build Server.

    Click each link to be taken to the closest section containing each enhancement.

    Refer to the details in the ticket to verify what you should be reviewing.

  3. Review the Enhancements

    For each specified enhancement, ask the following questions:

    Peer Review Questions

    Does It Make Sense?

    Look at readability of the documented enhancement. Does it make sense when you read it? If not, what needs to be changed?

    Is the Information Structured Correctly?

    Is the incorporated information included in the correct position in the User Guide? If not, where should the info be moved to?

    Are the Identified Changes Correctly Incorporated?

    Do the incorporated changes cover the details identified in the Enhancement? If not, what's missing and where should it be incorporated?

    Is Information Missing?

    Is all relevant information incorporated for the particular enhancement? If not, what's missing and where should it be incorporated?

    Is a Diagram or Screenshot Really Needed?

    Diagrams should be present only if the information contained within them is essential for the reader to grasp a concept, or understand a user interface. Well written procedures generally don't require supporting screen shots if the procedure describes the fields a user must complete. Excluding unnecessary screenshots increases the maintainability of the UDS.

  4. Comment on the Enhancements

    When you encounter an area that requires improvement, you must document your suggestions in the XML file so the content author can review your suggestions in context.

    XML comments are used to document Peer Review comments.

    
    <!--Issue #[GCode Issue Number] PR Comment - [describe what needs to be changed or clarified by the content author.]

    In the comment, be as detailed as possible so the content author can effectively evaluate your suggestions.

    Note

    Feedback can sometimes be perceived as criticism. For this reason, it is important to provide only constructive feedback to the contributing content author.

  5. Update the Review Block Information for the Section

    Update the XML Status Block for the Chapter or Section you are reviewing.

    Change STATUS to Review, and update the DATE CHANGED to the date of your review.

  6. Commit Comments to GCode SVN

    Once you have finished providing feedback, commit your changes to GCode SVN.

    Include a meaningful commit message to indicate what was done. For example:

    Issue #666 - PR - Committed comments made as part of Peer Review for this ticket.

    Make note of the commit number.

  7. Update the GCode Ticket

    Once the XML files are committed, you must update the GCode ticket with the following information:

    • GCode SVN commit number.

    • Brief summary of suggestions for the content author.

    • The Peer Review comment syntax you used to mark any changes.

      For example, "I've used "Issue #666 - PR" to mark my review comments"

    • Indicate whether a re-review is required after the recommended changes have been incorporated, or if the changes can go straight to the Mobicents Editor for review.

    Re-review, or straight to editing?

    Generally, a re-review is required when large changes are suggested by the reviewer. It is important to verify that the content author has understood what you meant in your review comments, and has appropriately incorporated your suggestions.

    For smaller changes, you can recommend that the content author make the suggested changes, and forward the enhancement onto Editing.

The responsibility falls to the content author to discuss and incorporate the changes that were recommended by the Peer Reviewer.

Procedure 7.9. Incorporate Changes from Peer Reviewer

  1. Review Comments

    Open the XML User Guide, and review the comments made by the Peer Reviewer.

  2. Incorporate Changes or Discuss

    If the content author agrees with the feedback provided by the Peer Reviewer, the comments can be incorporated.

    It is the responsibility of the content author to discuss any review comments that may require further clarification. After the content author and peer reviewer have reached an agreement, the agreed changes can be documented.

    Note

    Ensure any discussions about content decisions are documented in the GCode Documentation Ticket.

  3. Update XML Comment Block

    Update the XML Comment Block to indicate the status of the chapter or section.

    If changes do not require a re-review, change the STATUS to Editing, and update the date.

    If changes require re-review, leave the STATUS as Review, and update the date.

  4. Create Combined XML File

    Run the mkbk script and create the all-[server name].xml file.

    For command-line usage, refer to Chapter 4, Publican and Maven.

  5. Commit all-[server name].xml to GCode SVN

    Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.

  6. Request Hudson to Build a HTML-Single

    Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.

  7. Record the Build ID Number

    After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.

  8. Update GCode Ticket

    Add a comment to the GCode Documentation Ticket, stating that all review comments have been incorporated and that the enhancement is read for editing.

    If the changes require a re-review, make a comment to this effect.

  9. Send GCode Ticket to Next Phase

    If a re-review is required, notify the Peer Reviewer that the content is ready for re-review.

    If a re-review is not required, the changes can be forwarded to the next phase: Editing.

The role an editor plays in any documentation project is critical to maintaining consistency in the language and tone of the UDS. The Mobicents Editor (the Editor) is responsible for evaluating the content "as is", and is not responsible for the technical accuracy of the information. Therefore, the previous phases of Authoring and Review are essential to ensure that the information presented to the reader is as accurate as possible.

After the Editing request has been sent by the content author, the Editor is notified that an editing review is waiting through an email notification from GCode. Editing Documentation Changes describes the process the Mobicents Editor (the Editor) must follow to ensure the existing standards of the Mobicents UDS are maintained.

Procedure 7.10. Editing Documentation Changes

  1. Open the Ticket

    In the email notification, click the link in the ticket to take you to the GCode Documentation Ticket.

  2. Open the HTML Document

    The ticket should contain a direct link to the affected build version and section of the user guide hosted on the Hudson Build Server.

    Click each link to be taken to the closest section containing each enhancement.

    Refer to the details in the ticket to verify what you should be reviewing.

  3. Make Editorial Changes

    For minor changes relating directly to spelling and punctuation, the Editor must contribute the changes directly to the XML User Guide.

    No Spell Check, No Edit

    It is totally acceptable to send back a GCode Documentation Ticket that has not underdone a basic spelling and grammar check. Recommend to the content author that they spell check the changes before sending the ticket back.

    Editorial Questions

    Does It Make Sense?

    Look at readability of the documented enhancement. Does it make sense when you read it? If not, what needs to be changed?

    Is the "tone" correct?

    Is the content suitable for technical publications? Or does it fall into other genres, such as marketing, or white paper styles? Suggest ways of correcting the tone.

  4. Review the XML Structure

    For issues relating to the organization of the content, including display and general layout, ask the following questions:

    Structural Questions

    Is the XML Structure The Best Choice?

    Are instructions and work flow steps contained in a <procedure> element, with <step> titles?

    Are screenshots contained in a <figure> tag, with an appropriate caption?

    Are <sections> nested too deeply? If so, provide recommendations on how the problem can be fixed.

    Are paragraphs too long? Are there too many concepts per paragraph?

    Is a Diagram or Screenshot Really Needed?

    Diagrams should be present only if the information contained within them is essential for the reader to grasp a concept, or user interface. Well written procedures generally don't require supporting screen shots if the procedure describes the fields a user must complete. Excluding unnecessary screenshots increases the maintainability of the UDS.

    Is the Diagram or Screenshot Correctly Sized?

    Does the image flow outside the boundaries of the page (whether it is a PDF or a HTML page)

  5. Comment on the Enhancements

    When you encounter an area that requires improvement, you must document your suggestions in the XML file so the content author can review your suggestions in context.

    XML comments are used to document Editor comments.

    
    <!--Issue #[GCode Issue Number] Editor Comment - [describe what needs to be changed or clarified by the content author.]

    In the comment, be as detailed as possible so the content author can effectively evaluate your suggestions.

    Note

    Feedback can sometimes be perceived as criticism. For this reason, it is important to provide only constructive feedback to the contributing content author.

  6. Update the Review Block Information for the Section

    Update the XML Status Block for the Chapter or Section you are reviewing.

    Change STATUS to Closure, and update the DATE CHANGED to the date of your review.

  7. Commit Comments to GCode SVN

    Once you have finished providing feedback, commit your XML comments and changes to GCode SVN.

    Include a meaningful commit message to indicate what was done. For example:

    Issue #666 - Editing - Committed comments made as part of Editing for this ticket.

    Make note of the commit number.

  8. Update the GCode Ticket

    Once the XML files are committed, you must update the GCode ticket with the following information:

    • GCode SVN commit number.

    • Brief summary of suggestions for the content author.

    • The Editor comment syntax you used to mark any changes.

      For example, "I've used "Issue #666 - Editor Comment" to mark my editorial comments"

    • Indicate whether a re-review is required after the recommended changes have been incorporated, or if the changes can go straight to the Closure phase.

    Re-review, or Straight to Closure?

    Generally, a re-review is required when large changes are suggested by the Editor. It is important to verify that the content author has understood what you meant in your review comments, and has appropriately incorporated your suggestions.

    For smaller changes, you can recommend that the content author make the suggested changes, and forward the enhancement onto the Fixed phase.

  9. Send GCode Ticket to Next Phase

    If a re-review is required, notify the Peer Reviewer that the content is ready for re-review.

    If a re-review is not required, the changes can be forwarded to the next phase: Fixed.

This phase includes incorporating any changes from the Editor, and closing off the GCode Documentation Ticket.

Procedure 7.11. Incorporate Changes from Peer Reviewer

  1. Review Comments

    Open the XML User Guide, and review the comments made by the Editor.

  2. Incorporate Changes or Discuss

    If the content author agrees with the feedback provided by the Editor, the comments can be incorporated.

    It is the responsibility of the content author to discuss any review comments that may require further clarification. After the content author and Editor have reached an agreement, the agreed changes can be documented.

    Note

    Ensure any discussions about content decisions are documented in the GCode Documentation Ticket.

  3. Update XML Comment Block

    Update the XML Comment Block to indicate the status of the chapter or section.

    If changes do not require a re-review, change the STATUS to Fixed, and update the date.

    If changes require re-review, leave the STATUS as Review, and update the date.

  4. Create Combined XML File

    Run the mkbk script and create the all-[server name].xml file.

    For command-line usage, refer to Chapter 4, Publican and Maven.

  5. Commit all-[server name].xml to GCode SVN

    Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.

  6. Request Hudson to Build a HTML-Single

    Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.

  7. Record the Build ID Number

    After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.

  8. Update GCode Ticket

    Add a comment to the GCode Documentation Ticket, stating that all review comments have been incorporated and that the enhancement is ready for editing.

    If the changes require a re-review, make a comment to this effect.

  9. Send GCode Ticket to Next Phase

    If a re-review is required, notify the Editor that the content is ready for re-review.

    If a re-review is not required, the ticket can be closed off according to the procedures in Ticket Closure Procedures.

Procedure 7.12. Ticket Closure Procedures

This procedure details how to close off the ticket after all phases are satisfactorily completed.

  1. Create Combined XML File

    Run the mkbk script and create the all-[server name].xml file.

    For command-line usage, refer to Chapter 4, Publican and Maven.

  2. Commit all-[server name].xml to GCode SVN

    Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.

  3. Update GCode Ticket

    In the ticket, mention that the change has been completed and the all-[book name].xml file is generated and committed to GCode SVN.

    Update the status to Verified.

    Save and Close the ticket.

Revision History
Revision 2.0Fri 11 Dec 2009Jared Morgan
Contributed back Structure Guidelines from JBoss Documentation Guide.
Revision 1.024 Sep 2009Jared Morgan
First Version of Mobicents Community Documentation User Guide