This file discusses issues related to HTML being used alongside or
instead of Info as a documentation format.  As this has been discussed
for many years without much progress being made, it was thought helpful
to create a file like this to collect all the issues in one place.  Then,
we could avoid having the same discussions over and over again.  Anybody
raising the question could be referred to this file so they could be
aware of the current situation.

* Why?

(Excerpt from mail to bug-texinfo@gnu.org in April 2019).

> Documentation for GNU packages and others is often installed in the
> Info format, a plain text format.  Using a plaintext based format for
> documentation does not take advantage of bitmapped displays that have
> been available for decades.  It does not allow styling of text or
> reflowing of text.  Much information is lost in the conversion from
> Texinfo to Info and any attempt in, for example, Emacs to re-add this
> information is unreliable.
> 
> Nonetheless, Info viewers have continued to have advantages over web
> browsers.  They are fast, and have features for searching the manual
> with index lookup.  They allow the use of keyboard commands.

Links to these discussions:
https://lists.gnu.org/archive/html/bug-texinfo/2019-04/msg00001.html
https://lists.gnu.org/archive/html/bug-texinfo/2019-10/msg00010.html
https://lists.gnu.org/archive/html/bug-texinfo/2019-11/msg00003.html

Image support would be another advantage of HTML.

An earlier document on this issue, from Per Bothner in 2016:

http://per.bothner.com/blog/2016/texinfo-roadmap/

* Requirements

Simply using the system web browser to access HTML manuals is not
acceptable as an Info replacement.

Search in the document's indices should be allowed.

There should also be facility for handling intermanual-links and searching
a path for manuals installed in multiple locations on a system.

* Browser software

> In attempt to bring some of the benefits of the Info viewers to HTML
> documentation in web browsers, in 2017, as part of Google Summer of
> Code, Matthieu Lirzin worked on a JavaScript interface that works with
> the HTML that texi2any produces.  His work is substantially complete.
> A manual with this interface added is at
> https://www.gnu.org/software/texinfo/manual/texinfo-html/Overview.html.
> All the important keyboard commands that work in the Info viewers are
> implemented, including index lookup.

However, this system is only appropriate for online manuals, not for
locally installed manuals.  The reason for this is that it only handles
one manual at a time and does not handle searching for a manual.

Another system has been developed using the embedded WebKitGTK browser,
under the js/infog directory in the Texinfo sources.

https://git.savannah.gnu.org/cgit/texinfo.git/log/?h=webkitgtk-info

Video demo https://www.gnu.org/software/texinfo/video/demo.webm
(from November 2019)

From a private email (October 2020):
> The main problem with the two embedded HTML renderers we used (we also
> developed a program with QtWebEngine in this branch:
> https://git.savannah.gnu.org/cgit/texinfo.git/log/?h=qt-info) is their
> segmented architecture, and the difficulty of getting information in and
> out of them.  As web browsers and websites are so complicated and
> unreliable, they make the code which processes and renders the HTML pages
> run in a separate process, so if the renderer crashes or freezes, some
> recovery action can be taken.
> 
> Most of the complexity and code in both programs was to work around
> this, creating and using communications channels between the two halves
> of the program.  If the process displaying the UI wants access to data
> from within the HTML page that the rendering process has displayed,
> for example, HTML elements for index entries in a page, so that
> index entries can be listed in some widget, then it can't simply
> access those data structures in the address space of the process:
> it has to create, send and receive messages over some channel.
> 
> WebKitGTK had an API to access DOM elements in the renderer thread,
> but this API was deprecated in favour of injected JavaScript (I never
> worked out how to use this so am not sure if it is possible to achieve
> the same results).  Hence a two-part architecture would have to be
> replaced with a three-part architecture: instead of
> 
> UI process<--->Browser process
> 
> there would be
> 
> UI process<--->Browser process (native code)<-->Browser process (Javascript)
> 
> (The QtWebEngine program had a similar architecture except it was
> even worse, with a message-passing system between JavaScript code
> running in different contexts.)

(Since that email was written some use has been made of injected
JavaScript.)


* Location of locally installed HTML files


The current code under js/infog looks for MANUAL under
/usr/share/texinfo/html/MANUAL_html and
/usr/local/share/texinfo/html/MANUAL_html.
Users or distributions would need to copy/symlink the manuals to this
location.  The /usr/share/texinfo/html directory is akin to the
/usr/share/info/dir file in the Info system.

Currently infog only supports "split" installed HTML manuals
(meaning a collection of smaller HTML files rather than one large HTML file).

The GNU coding standards specify a 'docdir' directory for a package.  For
example, '/usr/local/share/doc/YOURPKG'.  It would be natural to install
Texinfo HTML documentation under '/usr/local/share/doc/YOURPKG/html'.

However, we did not use /usr/local/share/doc because
manual names are distinct from package names.  For example,
"emacs" would be the package name for many manuals ("tramp",
"org", "calc", etc.).  Hence, a user might not find the tramp
manual under /usr/local/share/doc/tramp/html but somewhere under
/usr/local/share/doc/emacs.

The location of files is needed for users to find a manual by name
and to follow cross-references between manuals.

Debian alse has some guidance on where HTML documentation could
be installed -

https://www.debian.org/doc/debian-policy/ch-docs.html#additional-documentation

- but file locations on Debian are not completely consistent (e.g. the
make manual is under /usr/share/doc/make-doc/make.html, while gdb
is under /usr/share/doc/gdb-doc/html/gdb).


%

It was also an issue as to how to get the manual name from a link.
In recent Texinfo releases, links to other manuals are annotated with the
"data-manual" attribute.  This solves the problem of getting the manual
name.

Texinfo manuals are put on the web with a variety of URL formats and
it is not possible to reliably get a manual name from a URL or even
to tell if a URL is to a Texinfo manual or to some other webpapge.  It's
unlikely we could persuade everybody to change their URL formats to
be something a browser could parse reliably to get the manual name.  Here
are some examples of URL's and the manual names:

https://www.gnu.org/software/trans-coord/manual/cvs/html_node/ - "cvs"
https://gmplib.org/manual/ - "gmp"
http://lilypond.org/doc/v2.22/Documentation/internals/ - "lilypond-internals"
https://gcc.gnu.org/onlinedocs/gfortran/ - "gfortran"


Prior to this, we mooted the idea of outputting links in HTML documents
differently if they were to be installed locally rather than put on the web.
For example, link to "../auth/index.html" instead of
"https://www.gnu.org/software/emacs/manual/html_node/auth/index.html".  With
the right installation standards, this would have allowed inter-manual
links to work in regular web browsers (although only for a single
installation location).

* Where to store non-English manuals

Possibly in a subdirectory named with the language code

* Coordinate with other projects

It's hard to make progress on this due to the need to coordinate with
different projects.  It's a chicken-and-egg problem: an HTML Info
program could not be released until people had documentation installed
where the program could read it, but people are also not motivated
to install documentation in a place that no program would use it.

Changes would be needed in other projects

* Distributions (Guix, Debian...) - Install HTML documentation
* Automake - rules for generating and installing HTML documentation
* Emacs - Info mode
* GNOME/other desktop environments - see if work on webkitgtk-info
or other could be integrated into other help systems like yelp
or DevHelp.

