/
niceSOFT
/
texinfo
Обзор
Документация
Войти
/
niceSOFT
/
texinfo
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
TODO.HTML
240 строк
10 KB
Gavin Smith
* TODO.HTML: discuss possible way forward for use of locally
31 июл 2025, 01:56
31 июл 2025, 01:56
6b69181
Код
Авторство
О чём код?
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/ * 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 could 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. - there was some discussion (December 2024) at https://gitlab.gnome.org/GNOME/yelp/-/issues/220 (although that issue tracker is often inaccessible due to their anti-bot measures). A possible first step is to encourage installation of Texinfo-derived HTML documentation and add support to whatever programs people use to read locally-installed documentation on their systems. (Better support for indices and search paths could be added later.) So that these Info features could be added later, installed HTML manuals should be installed in standardised locations and contain needed information. There should be some degree of stability in the HTML produced by texi2any to allow such features and the Texinfo project should agree and document what this stability entails (e.g. inter-manual links, identifying index nodes). * Location of locally installed HTML files The location of files is needed for users to find a manual by name and to follow cross-references between manuals. 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, 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. We propose that HTML manuals should be sought in a directory named datadir/texinfo/html/MANUAL or datadir/texinfo/html/MANUAL_html, where datadir is as defined in the GNU Coding Standards. (For example, datadir could take the values "/usr/share" or "/usr/local/share".) $XDG_DATA_DIRS/texinfo/html should also be checked where XDG_DATA_DIRS is as defined in the "XDG Base Directory Specification" (https://specifications.freedesktop.org/basedir-spec/latest/). Users or distributions would install manuals by copying/symlinking the manuals to this location. (The /usr/share/texinfo/html directory is akin to the /usr/share/info/dir file in the Info system.) For example, HTML manuals could be symlinked from locations under /usr/share/doc to be accessed by manual name under /use/share/texinfo/html in a standard format. Debian alse has some guidance on where HTML documentation could be installed, specifying /usr/share/doc/PACKAGE or /usr/share/doc/PACKAGE-doc as installation directories: https://www.debian.org/doc/debian-policy/ch-docs.html#additional-documentation 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. * Getting names of manuals from links It was also an issue as to how to get the manual name from a link from one Texinfo manual to another Texinfo manual. 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 * Requirements Simply using the system web browser to access HTML manuals is not a full Info replacement. The following features would be missing: - 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 There have been two browsing systems developed specially for reading the texi2any HTML output: - info.js - webkitgtk-info info.js has acquired a small number of users and is fairly feature-complete. (However, the current Texinfo developers (as of July 2025) have little capacity to push forward development (or adoption) of either system.) On info.js: > 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. > ...All the important keyboard commands that work in the Info viewers are > implemented, including index lookup. This system is contained within the 'info.js' file (under js/ in the Texinfo sources), and is added to texi2any HTML output with the INFO_JS_DIR variable. However, this system is only fully 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. On webkitgtk-info: Another system has been developed using the embedded WebKitGTK browser, under the 'infog' directory in the Texinfo sources. 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.) Use of datadir and XDG directories as described above is (as of July 2025) incomplete, but would be straighforward to add. Currently infog only supports "split" installed HTML manuals (meaning a collection of smaller HTML files rather than one large HTML file).