You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow tabular data in manpages (Glow does a pretty good job already at displaying Markdown tables)
Allow beautified hyperlinks in terminals (i.e. show clickable label on screen -- achieved through ANSI escape codes)
Allow image in manpages (Some terminal emulators provide ANSI sequences for this, e.g. iTerm2)
Allow responsive manpage layouts whether on terminal, in browser, or in print, from a single source.
Long term objectives:
Provide cross-language utilities to create same-quality manpages
-- one can take inspiration on how documentation has become central to modern RESTful API design tools.
Provide both system and online access to the documentation
-- this could be through a unique version-managed repository.
Allow user feedback, both from the command line or online
-- provide somethings in the likes of PHP's online documentation.
And provide all modern tools for quality assurance and lifecycle management... online.
Background
Manpages are a fundamental component of UNIX. They would not have existed without the Troff typesetting tool -- mostly known as Groff (or GNU Troff) in most UNIX and Linux distributions.
Manpages are, IMHO, a fundamental reason for the success of UNIX as an operating system... hands on access to information when and where you need it. They are simple, structured, cross-referenced, and up to date. Further they address the requirements of all users, be they system administrators, software developers or simply end users.
However the UNIX manpage ecosystem could do with some modernisation -- read this article by the author of mdoc(7).
The need for Unix manuals to render cleanly to multiple output media favours structural rather than presentational markup, however the classical man(7) macros remain almost exclusively presentational. mdoc(7) provides a semantically superior alternative, but the use of man(7) is deeply rooted in Unix.
Future work on manpages will entail improving the semantic clarity of the man(7) macros, decoupling them as much as possible from low-level presentational requests. The aim will be to ease conversion of manpages to markup languages that do not rely on groff for display and printing, e.g. XML, while preserving the full presentational richness of manpages processed with groff.
Concurrent with work on man(7), mdoc(7) will be actively supported and its use promoted.
To summarize, the goal of this two-pronged strategy is to foster manpage markup that:
renders cleanly to the terminal
respects presentational markup when output to PostScript
A proof of concept (POC) can be built using Pandoc (Haskell) for the conversions, and Glow (Go) as the terminal-capable Markdown renderer. Plain KornShell programming is sufficient here to demonstrate the expected output and to model the command line interface of the target utility.
Ultimately this should be a C language utility (Go optionally) based on ncurses(3), CommonMark, and libYAML.
Ideally this shall not be yet another UNIX tool but will be blended into an existing POSIX-compliant tool.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Objectives
Primary objectives:
Other objectives:
Long term objectives:
-- one can take inspiration on how documentation has become central to modern RESTful API design tools.
-- this could be through a unique version-managed repository.
-- provide somethings in the likes of PHP's online documentation.
Background
Manpages are a fundamental component of UNIX. They would not have existed without the Troff typesetting tool -- mostly known as Groff (or GNU Troff) in most UNIX and Linux distributions.
Manpages are, IMHO, a fundamental reason for the success of UNIX as an operating system... hands on access to information when and where you need it. They are simple, structured, cross-referenced, and up to date. Further they address the requirements of all users, be they system administrators, software developers or simply end users.
However the UNIX manpage ecosystem could do with some modernisation -- read this article by the author of mdoc(7).
Roadmap
A proof of concept (POC) can be built using Pandoc (Haskell) for the conversions, and Glow (Go) as the terminal-capable Markdown renderer. Plain KornShell programming is sufficient here to demonstrate the expected output and to model the command line interface of the target utility.
Ultimately this should be a C language utility (Go optionally) based on ncurses(3), CommonMark, and libYAML.
Ideally this shall not be yet another UNIX tool but will be blended into an existing POSIX-compliant tool.
Open source projects of interest
Beta Was this translation helpful? Give feedback.
All reactions