.\" Copyright ©2014 Free Software Foundation
.\" 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
.\"
.\" Permission is hereby granted, free of charge, to any person
.\" obtaining a copy of this software and associated documentation
.\" files (the "Software"), to deal in the Software without restriction,
.\" including, without limitation, the rights to use, copy, modify,
.\" merge, publish, distribute, sublicense, and sell copies of
.\" the Software, and to permit persons to whom the Software is
.\" furnished to do so, subject to the following conditions:
.\"
.\" The above copyright notice and this permission notice shall be
.\" included in all copies, or substantial portions, of the Software;
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND,
.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
.\" OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
.\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
.\" HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY,
.\" WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING
.\" FROM, OUT OF, OR IN CONNECTION WITH, THE SOFTWARE, OR THE USE OF,
.\" OR OTHER DEALINGS IN, THE SOFTWARE.
.\"
.\" Formatted with the mom macros
.\" .RW (reduce) and .EW (expand) control track kerning
.\" .WS controls word spacing
.\" Hanging punctuation and hyphens are inserted manually
.\"
.INCLUDE mission-statement-strings.mom
.TITLE "\*[Groff-Mission-Statement]
.SUBTITLE "\*[2014]
.INCLUDE mission-statement-style.mom
.PP
As the most widely deployed implementation of troff in use today,
groff holds an important place in the Unix universe. Frequently
and erroneously dismissed as a legacy program for formatting
Unix manuals (manpages), groff is in fact a sophisticated system
for producing high-quality typeset material, from business
correspondence to complex, technical reports and plate-ready books.
\*[BU3]With an impressive record for backward compatibility, it
continues to evolve and play a leading role in the development of
free typesetting software.
.NO_SHIM
.PP
.WS -1
Future development will focus on groff's typesetting capabilities,
the goal being
.EW .05
to improve automatic formatting of documents with no corresponding
loss of
.WS DEFAULT
.EW .2
user control over typographic details. In addition to the core binary,
.RW .03
where much of the work will be done, the system comprises a macro
language, pre-built macro sets, pre- and post-processors, and
drivers for outputting to various formats. \*[BU3]The guiding
principle for changes to these parts will be to improve and extend,
not alter, especially with respect to established usage.
.WS DEFAULT
.PP
.EW .1
A key part of the project's mandate will be to redress issues
that have histori-\h'-\w','u'
.SPREAD
.EW 0
cally discouraged widespread adoption of groff. Issues include the
perceived
.EW .2
superiority of \[TeX] for general-purpose typesetting, the long and
somewhat
.EW 0
unfor\%tunate association with manpages, and the difficulty of
mastering groff's low-level typesetting requests.
.PP
Broadly speaking, development will be channelled into two areas:
.LIST
.SHIFT_LIST 6p
.ITEM
core groff
.LIST DASH
.ITEM
the typesetting backend and low-level formatting requests
.LIST BACK
.ITEM
program usage
.LIST DASH
.ITEM
general-purpose macro sets and manpages
.LIST BACK
.QUIT_LISTS
Improvements and enhancements to other areas of the system will
continue to form a routine part of groff's growth, with active
support for contributions pro-\h'-\w'-'u'
.SPREAD
vided by a team of groff mavens.
.HEADING 1 "Core groff"
.SP -1
.HEADING 2 "The typesetting backend"
.PP
.RW .035
Groff currently uses a greedy algorithm to format paragraphs one
line at a time,\h'-\w','u'
.SPREAD
.EW .15
but the Knuth-Plass algorithm, implemented in \*[BU5]\[TeX], \*[BU4]Heirloom troff
and else-\h'-\w'-'u'
.SPREAD
where,
.RW .06
optimizes linebreaks throughout whole paragraphs and achieves a
more uniform typographic grey. One of the most exciting challenges
facing groff will be implementing an improved formatting algorithm,
the most likely candidate
.EW .1
being Knuth-Plass. It's a big job, but with groff's clean codebase
and helpful
.RW 0
community of experts, it is hoped additional developers will step
forward and contribute their programming skills.
.RW .03
.PP
.WS +.5
Equally important will be instituting native support for TrueType,
\*[BU2]OpenType and other non\*[FU1]-\*[BU3]Type1 PostScript fonts,
and improving Unicode support.
.WS DEFAULT
.HEADING 2 "Low-level formatting requests"
.PP
Supplementary low-level formatting requests will continue to be
added, and the behaviour of some existing requests reviewed, with
care taken to maintain backward compatibility whenever modifications
are deemed worthwhile.
.PP
.RW 0
At the request level, groff's use of integer arithmetic and
linear evaluation of expressions hearkens back to the stone
age. \*[BU3]While not top-priority, these and other historical
encumbrances (read \*[BU4]"\*[BU4]annoyances") will be
addressed\[em]again,\h'-\w','u'
.SPREAD
with a watchful eye toward backward compatibility.
.RW .03
\#.SP .5
.NO_SHIM off
.SP .75v
.HEADING 1 "Program usage"
.NO_SHIM
.SP -1
.HEADING 2 "General-purpose macro sets"
.PP
Macro sets form the primary user interface to groff.
\*[BU3]Well-designed, well-docu-\h'-\w','u'
.SPREAD
.EW .2
mented sets help make groff accessible to users\[em]new users in
particular.\h'-\w'.'u'
.RW .03
Adoption or rejection of the program is often based on whether
available sets meet user needs without requiring mastery of
low-level requests. Learning curve and ease of use are equally
important.
.PP
.WS -1
The most active area of groff development in the past decade has
been in macro sets, with \[mom] alone adding over 1\*[BU4]3,000
lines of code and 1MB of documen-\h'-\w'-'u'
.SPREAD
tation to the project. Support for existing macro sets and the
design of new macro interfaces will therefore play a significant
role in groff's future.
.WS DEFAULT
.HEADING 2 "Manpages"
.PP
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 semanti-\h'-\w','u'
.SPREAD
cally superior alternative, but the use of \[man](7) is deeply
rooted in Unix.
.PP
Future work on manpages will entail improving the semantic clarity
of the \[man](7) macros, decoupling them as much as possible from
low-level presen-\h'-\w','u'
.SPREAD
tational requests. \*[BU3]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.
.PP
Concurrent with work on \[man](7), \[mdoc](7) will be actively
supported and its use promoted.
.PP
To summarize, this two-pronged strategy aims to foster manpage
markup that:
.SP 2p
.LIST
.SHIFT_LIST 6p
.ITEM
renders cleanly to the terminal
.ITEM
respects presentational markup when output to PostScript
.ITEM
allows semantic analysis
.ITEM
is portable
.QUIT_LISTS
.HEADING 1 "Looking forward, looking back"
.SP .15v
.PP
Backward compatibility with existing documents and usage will
remain a top priority, as will avoiding feature-bloat and increased
overheads. Groff's viability and vitality rest as much on these as
on forward-looking development.
.PP
Finally, it is hoped that users of and contributors to groff will
promote its use,\h'-\w','u'
.SPREAD
providing unobtrusive advocacy to encourage more widespread
adoption of the program, thereby increasing the pool of potential
contributors and devel-\h'-\w'-'u'
.SPREAD
opers and furthering the cause of good typography.