[neomutt-devel] (Re-)Building the Documentation]
Bo Yu
tsu.yubo at gmail.com
Mon Jun 12 00:53:22 CEST 2017
Hi,
Very sorry about reply to @flatcap only and forget to Cc the mail-list.
So i forward the message from my sent mailbox.
Thanks, Bo
----- Forwarded message from Bo Yu <tsu.yubo at gmail.com> -----
Date: Mon, 12 Jun 2017 06:06:43 +0800
From: Bo Yu <tsu.yubo at gmail.com>
To: Richard Russon <rich at flatcap.org>
Subject: Re: [neomutt-devel] (Re-)Building the Documentation
User-Agent: NeoMutt/20170609-1-62d975 (1.8.3)
Hi,
On Sun, Jun 11, 2017 at 12:47:47PM +0100, Richard Russon wrote:
> Everything in NeoMutt is documented, but...
> If you don't know what you're looking for, you're unlikely to find it.
>
> # The Problem
>
> The docs are:
> - Huge
> - Hard to maintain
> - Hard to search
> - Hard to build
> - Heavily dependent on the code
> - Entirely text
>
> The guide needs to be split up and re-grouped, thematically:
> a chapter on the pager; a chapter on IMAP, ...
>
> Some projects' documentation have handy links: "Click here to improve
> the docs". It would be wonderful if we could do this.
>
> # Document Format
>
> The docs are written in DocBook XML. It's a rich language allowing you
> can make <note>Notes</note>, <example>Examples</example>,
> <chapter>Chapters</chapter> and <section>Sections</section>.
> As well as normal HTML things like titles and paragraphs.
>
> If the docs were stored in a big XML file, things would be easy.
> Open a DocBook-compatible editor and off you go...
> Unfortunately, `manual.xml` isn't the start of the journey, it's the
> middle!
>
> # Generating manual.xml
>
> This diagram shows the NeoMutt build process. It includes the steps
> needed to build manual.xml
>
> https://www.neomutt.org/images/make.png
>
> To reduce the duplication of text, source of the source code is parsed
> to generate the manual.
>
> ## OPS files
>
> These are processed by a perl script `gen-map-doc`
>
> https://github.com/neomutt/neomutt/blob/master/OPS
>
> function ID description
>
> OP_ATTACH_VIEW_MAILCAP "force viewing of attachment using mailcap"
> OP_ATTACH_VIEW_TEXT "view attachment as text"
> OP_ATTACH_COLLAPSE "Toggle display of subparts"
>
> ## functions.h
>
> This is processed by a perl script `gen-map-doc`
>
> https://github.com/neomutt/neomutt/blob/master/functions.h
>
> function name function ID default key
>
> { "top-page", OP_TOP_PAGE, "H" },
> { "next-entry", OP_NEXT_ENTRY, "j" },
> { "previous-entry", OP_PREV_ENTRY, "k" },
>
> ## init.h
>
> This is processed by a program `makedoc`. It reads the variable, its
> type and default value. It also processed the description which is
> written in NROFF (man) format.
>
> https://github.com/neomutt/neomutt/blob/master/init.h
>
> { "ascii_chars", DT_BOOL, R_BOTH, OPTASCIICHARS, 0 },
> /*
> ** .pp
> ** If \fIset\fP, Mutt will use plain ASCII characters when
> ** displaying thread ** and attachment trees, instead of the default
> ** \fIACS\fP characters.
> */
>
> ## Some Assembly Required
>
> Finally we can build `manual.xml`. Take `doc/manual.xml.head` add the
> functions, commands and variables, then add `doc/manual.xml.tail`
>
> `manual.xml` is now complete and valid DocBook.
>
> # Rendering manual.xml
>
> DocBook comes with some standard XSLT files. They define
> transformations from DocBook to HTML. Chapters are turned into separate
> pages. Sections are given \<h1\>, \<h2\> headings, etc.
>
> Also, \<note\> and \<example\> are turned into \<span\> or \<div\> with classes,
> so that they can be themed. This is also where \<quote\>s are turned into
> “smart quoted” strings.
>
> We now have some HTML, that looks machine-generated.
>
> # Generating the Website
>
> NeoMutt's website is hosted by GitHub's Pages. It's a static site which
> uses Jekyll (https://jekyllrb.com) to allow some templating and "magic".
>
> To turn manual.xml into a website requires quite a lot of post-processing.
> The main script is `build` in the docbook repo:
>
> https://github.com/neomutt/docbook
>
> `build` takes the HTML files and tidies them, cuts out the bits we want
> and gives them a YAML header (for Jekyll). It also fixes some of the
> links between documents. Along the way we also fix any formatting
> problems that we introduced (smart quotes).
>
> # The Future
>
> Mutt's re-use strategy means that if you fix one piece of documentation,
> then it will be replicated into all the forms of documentation.
> But, it means you need to know where the source is. This is preventing
> users from helping us.
>
> ## Step 1 - Separation
>
> The docs should be completely separate from the code.
>
> Good:
> - Docs can be maintained by non-technical users
> - Simplifies build process
> - Simplifies website generation
>
> Bad:
> - Requires synchronisation between docs and code
>
> ## Step 2 - Conversion
>
> I like DocBook. It's expressive and capable, but it's not user-friendly.
> A good alternative would be Markdown.
>
> Good:
> - Easy to read and edit
> - Can be converted to HTML
> - Supported by our current website
>
> Bad:
> - Less expressive
> - Initial conversion will take a lot of work
>
> ## Step 3 - Reorganisation
>
> Once the docs are easily editable, then we can encourage users to help.
>
> To do:
> - Split guide into more manageable sections
> - Add more HowTos - simple answers to specific problems
> - More pictures of NeoMutt in action
>
> # Conclusion
>
> NeoMutt is a complex program to use. It's a big problem for new users.
>
> By re-working the docs, we can encourage new users to NeoMutt and make
> sure that all users get the most out of NeoMutt.
>
> These changes won't reduce the amount of work by much, but crucially,
> they will reduce the technical difficulty of the work.
>
> These are jobs what will transform NeoMutt!
> (These are not jobs for the faint-hearted!)
>
> ---
>
> What do you think?
The text is a another wonderfully document about neomutt for newbies.
I think it should put
https://www.neomutt.org/dev/newbie-tutorial
named "Docs/change" or something like this.:)
When all docs return its reasonable location, them can be deleted.
Thanks, Bo
>
> Are *YOU* up for a challenge?
>
> Please help.
>
> Cheers,
> Rich / FlatCap
----- End forwarded message -----
More information about the neomutt-devel
mailing list