= Introduction This directory contains the source files needed to build the: - Wireshark User’s Guide - Wireshark Developer’s Guide - Release notes (NEWS) - Lua Reference To build everything, build the `all_guides` target, e.g. `ninja all_guides` or `msbuild all_guides.vcxproj`. Requirements are listed below. The guides and release notes are written in http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[Asciidoctor syntax]. For more information see http://asciidoctor.org. Conversions from Asciidoctor markup to each of our supported output formats is done via the following steps: - HTML: Asciidoctor → DocBook XML → xsltproc + DocBook XSL - Chunked HTML: Asciidoctor → DocBook XML → xsltproc + DocBook XSL - PDF: Asciidoctor - HTMLHelp: Asciidoctor → DocBook XML → xsltproc + DocBook XSL → HHC - Text: [HTML output] → elinks = Requirements Ultimately we'd like to reduce the toolchain requirements to AsciidoctorJ alone, but that's not yet possible. Additional tooling is required for the HTML and HTMLHelp targets. See the Developer's Guide for instructions on installing required packages for your platform. == AsciidoctorJ (recommended) or Asciidoctor Text markup format and publishing toolchain: http://asciidoctor.org/ AsciidoctorJ is a self-contained bundle which includes Asciidoctor and JRuby. It can be installed via Chocolatey on Windows, Homebrew on macOS, or a .zip extraction anywhere (https://bintray.com/asciidoctor/maven/asciidoctorj). == DocBook XML and XSL Converting from DocBook to HTML and CHM requires the DocBook DTD (http://www.sagehill.net/docbookxsl/ToolsSetup.html) and DocBook stylesheets (http://www.sagehill.net/docbookxsl/InstallStylesheets.html). These are available via installable packages on most Linux distributions, and Homebrew. == xsltproc http://xmlsoft.org/xslt/[xsltproc] converts DocBook XML to various formats based on XSL stylesheets. It either ships as part of the operating system or is available via an installable package on most Linux distributions. == HTML Help Workshop (Windows only) The HTML Help compiler is part of the http://www.microsoft.com/en-us/download/details.aspx?id=21138[HTML Help Workshop] from Microsoft. It is used to generate the documentation shipped with the Windows installers. = Asciidoctor Markup The User’s and Developer’s Guides were originally written in DocBook and were later converted to http://asciidoc.org/[AsciiDoc]. We subsequently switched from AsciiDoc to Asciidoctor. As a result we currently use http://asciidoctor.org/docs/migration/[compat mode], but may switch to Asciidoctor’s modern markup at a later date. Please use the following conventions when writing documentation: - Window and dialog box names should be in “curly quotes”. - Use Asciidoctor macros for buttons, keys, and menus. Note that these are currently experimental: -- The button:[Start] button -- Press kbd:[Shift+Ctrl+P] to open the preferences dialog. -- Select menu:File[Open] from the main menu. This ensures that UI elements are shown consistently and lets us apply styles to each type of element. - Command line examples should reflect the OS: + +++ ---- $ echo Linux and UNIX ---- ---- C:\> echo Windows ---- +++ Admonitions ([NOTE], [TIP], and [WARNING]) can be used to highlight important information. Keep in mind that they interrupt the flow of text by design. Too many (especially in a row) are distracting and annoying. = HTML Help Alternatives Ideally we would ship documentation with Wireshark that is pleasant to read, browsable, and searchable. Unfortunately we don't have an easy way to do this. The closest we've been able to come is by shipping an HTML Help (.chm) file on Windows. However, HTML Help a) is limited to Windows, b) crusty on normal displays, and c) really crusty on HiDPI displays. The following alternative formats are available, each with advantages and disadvantages: == WebHelp https://en.wikipedia.org/wiki/Web_help[WebHelp] has three main dependencies: - DocBook XSL, including... - webhelpindexer.jar - The user's local web browser This format generates both HTML pages and JavaScript, which might not run reliably on end user machines. == PDF PDF output is page oriented, with static page sizes. This _usually_ isn't a problem with modern reader software. However it doesn't look like we can reliably load a PDF file and jump to specific section on some platforms. For example, loading +++file:///path/to/user_guide.pdf#location+++ works in Firefox & Chrome, but not in Safari, Preview, or Internet Explorer. == Qt Help Qt provides an extensive http://doc.qt.io/qt-5/qthelp-framework.html[help system]. However, to use it we need to generate a Qt Help Project (.qhp) file, which isn't currently supported by Asciidoctor or via DocBook XSL. The default help application (Qt Assistant) is ugly. We'd probably want to write our own help viewer app or integrate help directly via QHelpEngine.